diff --git a/DEPS b/DEPS
index c334fff..275beac8 100644
--- a/DEPS
+++ b/DEPS
@@ -174,7 +174,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ANGLE
   # and whatever else without interference from each other.
-  'angle_revision': '26a87516dc1b627a3ad428f6a79e1deea51838c8',
+  'angle_revision': '7e44ec26d6520ce3bce76df687b593b1e6d4b67b',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
@@ -182,7 +182,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
-  'pdfium_revision': 'aea4bca2621bf6c614b9c4c606c4c06e5a968d03',
+  'pdfium_revision': 'a6b07058f9525c42b021f6f01d5e0da3215f46ed',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling BoringSSL
   # and whatever else without interference from each other.
@@ -225,7 +225,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': '030358ed22a40ceb929e00931799d34dc15a6420',
+  'catapult_revision': '53a464d7b4f65aaa5820901a25bd7a236a0e8792',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -293,7 +293,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'shaderc_revision': 'febf7e9ef53660247442dccb1fcf608bf734dead',
+  'shaderc_revision': '3b038fa1c3172c5659df35f700447abf82707e40',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -842,7 +842,7 @@
 
   # Build tools for Chrome OS. Note: This depends on third_party/pyelftools.
   'src/third_party/chromite': {
-      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '7a63ee7f8a8b750b8d228d6b55f9e57e74a4e68c',
+      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '88b1ffcb482ac0af4859b9eb5af11bb55c2c9a4f',
       'condition': 'checkout_linux',
   },
 
@@ -867,7 +867,7 @@
   },
 
   'src/third_party/depot_tools':
-    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'f38bc1796282c61087dcf15abc61b8fd18a68402',
+    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '183971ca2a9fd274336629e598c0c4aa35b37b6a',
 
   'src/third_party/devtools-node-modules':
     Var('chromium_git') + '/external/github.com/ChromeDevTools/devtools-node-modules' + '@' + Var('devtools_node_modules_revision'),
@@ -1120,7 +1120,7 @@
   },
 
   'src/third_party/libphonenumber/dist':
-    Var('chromium_git') + '/external/libphonenumber.git' + '@' + 'a4da30df63a097d67e3c429ead6790ad91d36cf4',
+    Var('chromium_git') + '/external/libphonenumber.git' + '@' + '68eba9d6ee8b11fb58ece36b6c46d07965d7f7ff',
 
   'src/third_party/libprotobuf-mutator/src':
     Var('chromium_git') + '/external/github.com/google/libprotobuf-mutator.git' + '@' +  Var('libprotobuf-mutator'),
@@ -1246,7 +1246,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' + '9d36b1d101b4397c757dced11b22b64142505b8e',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' + '65b7843ab9b687a8c29b286434a577e86d01d1ba',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3',
@@ -1455,7 +1455,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@ed788765ead452bbed3c8608d13f7c27d515d1bb',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@142d30cdaa5845817c7d845883865bff4f981e0a',
     'condition': 'checkout_src_internal',
   },
 
diff --git a/WATCHLISTS b/WATCHLISTS
index 64f4f43..58898e6 100644
--- a/WATCHLISTS
+++ b/WATCHLISTS
@@ -1054,6 +1054,9 @@
                   'testing/buildbot|'\
                   'tools/mb',
     },
+    'infra_docs': {
+      'filepath': 'docs/infra',
+    },
     'ink_drop': {
       'filepath': 'ui/views/animation/test/.*ink_drop.*|' \
                   'ui/views/animation/.*ink_drop.*'
@@ -2358,6 +2361,7 @@
     'incident_reporting': ['grt+watch@chromium.org'],
     'indexed_db': ['jsbell+idb@chromium.org'],
     'infra': ['jbudorick+watch@chromium.org'],
+    'infra_docs': ['martiniss+watch@chromium.org'],
     'ink_drop': ['bruthig+ink_drop@chromium.org'],
     'input': ['dtapuska+chromiumwatch@chromium.org',
               'nzolghadr+chromiumwatch@chromium.org'],
diff --git a/ash/app_list/views/app_list_item_view.cc b/ash/app_list/views/app_list_item_view.cc
index f4f44a55..56200523 100644
--- a/ash/app_list/views/app_list_item_view.cc
+++ b/ash/app_list/views/app_list_item_view.cc
@@ -502,10 +502,10 @@
     run_types |= views::MenuRunner::SEND_GESTURE_EVENTS_TO_OWNER;
 
   gfx::Rect anchor_rect =
-      apps_grid_view_->GetMirroredRect(apps_grid_view_->GetIdealBounds(this));
+      parent()->GetMirroredRect(apps_grid_view_->GetIdealBounds(this));
   // Anchor the menu to the same rect that is used for selection highlight.
   AdaptBoundsForSelectionHighlight(&anchor_rect);
-  views::View::ConvertRectToScreen(apps_grid_view_, &anchor_rect);
+  views::View::ConvertRectToScreen(parent(), &anchor_rect);
 
   AppLaunchedMetricParams metric_params = {
       ash::AppListLaunchedFrom::kLaunchedFromGrid};
diff --git a/ash/app_list/views/apps_container_view.cc b/ash/app_list/views/apps_container_view.cc
index 6ff2bd1..fa25d254 100644
--- a/ash/app_list/views/apps_container_view.cc
+++ b/ash/app_list/views/apps_container_view.cc
@@ -196,6 +196,8 @@
 void AppsContainerView::UpdateControlVisibility(
     ash::AppListViewState app_list_state,
     bool is_in_drag) {
+  if (app_list_state == ash::AppListViewState::kClosed)
+    return;
   apps_grid_view_->UpdateControlVisibility(app_list_state, is_in_drag);
   page_switcher_->SetVisible(app_list_state ==
                                  ash::AppListViewState::kFullscreenAllApps ||
diff --git a/ash/app_list/views/apps_grid_view_unittest.cc b/ash/app_list/views/apps_grid_view_unittest.cc
index 7ca3e49..6d207279 100644
--- a/ash/app_list/views/apps_grid_view_unittest.cc
+++ b/ash/app_list/views/apps_grid_view_unittest.cc
@@ -99,6 +99,42 @@
   DISALLOW_COPY_AND_ASSIGN(PageFlipWaiter);
 };
 
+// WindowDeletionWaiter waits for the specified window to be deleted.
+class WindowDeletionWaiter : aura::WindowObserver {
+ public:
+  explicit WindowDeletionWaiter(aura::Window* window) : window_(window) {
+    window_->AddObserver(this);
+  }
+  ~WindowDeletionWaiter() override = default;
+
+  void Wait() { run_loop_.Run(); }
+
+ private:
+  // WindowObserver:
+  void OnWindowDestroying(aura::Window* window) override {
+    window->RemoveObserver(this);
+    run_loop_.QuitWhenIdle();
+  }
+
+  base::RunLoop run_loop_;
+  aura::Window* window_;
+
+  DISALLOW_COPY_AND_ASSIGN(WindowDeletionWaiter);
+};
+
+// Find the window with type WINDOW_TYPE_MENU and returns the firstly found one.
+// Returns nullptr if no such window exists.
+aura::Window* FindMenuWindow(aura::Window* root) {
+  if (root->type() == aura::client::WINDOW_TYPE_MENU)
+    return root;
+  for (auto* child : root->children()) {
+    auto* menu_in_child = FindMenuWindow(child);
+    if (menu_in_child)
+      return menu_in_child;
+  }
+  return nullptr;
+}
+
 // Dragging task to be run after page flip is observed.
 class DragAfterPageFlipTask : public ash::PaginationModelObserver {
  public:
@@ -788,6 +824,53 @@
   EXPECT_FALSE(apps_grid_view_->IsSelectedView(app));
 }
 
+// Tests that the context menu for app item appears at the right position.
+TEST_P(AppsGridViewTest, MenuAtRightPosition) {
+  const size_t kItemsInPage =
+      apps_grid_view_->cols() * apps_grid_view_->rows_per_page();
+  const size_t kPages = 2;
+  model_->PopulateApps(kItemsInPage * kPages);
+
+  auto* root = apps_grid_view_->GetWidget()->GetNativeWindow()->GetRootWindow();
+  gfx::Rect root_bounds = root->GetBoundsInScreen();
+
+  std::vector<int> pages_to_check = {1, 0};
+  for (int i : pages_to_check) {
+    apps_grid_view_->pagination_model()->SelectPage(i, /*animate=*/false);
+
+    for (size_t j = 0; j < kItemsInPage; ++j) {
+      const size_t idx = kItemsInPage * i + j;
+      AppListItemView* item_view = GetItemViewAt(idx);
+
+      // Send a mouse event which would show a context menu.
+      ui::MouseEvent press_event(ui::ET_MOUSE_PRESSED, gfx::Point(),
+                                 gfx::Point(), ui::EventTimeForNow(),
+                                 ui::EF_RIGHT_MOUSE_BUTTON,
+                                 ui::EF_RIGHT_MOUSE_BUTTON);
+      static_cast<views::View*>(item_view)->OnMouseEvent(&press_event);
+
+      ui::MouseEvent release_event(ui::ET_MOUSE_RELEASED, gfx::Point(),
+                                   gfx::Point(), ui::EventTimeForNow(),
+                                   ui::EF_RIGHT_MOUSE_BUTTON,
+                                   ui::EF_RIGHT_MOUSE_BUTTON);
+      static_cast<views::View*>(item_view)->OnMouseEvent(&release_event);
+
+      // Make sure that the menu is drawn on screen.
+      auto* menu_window = FindMenuWindow(root);
+      gfx::Rect menu_bounds = menu_window->GetBoundsInScreen();
+      EXPECT_TRUE(root_bounds.Contains(menu_bounds))
+          << "menu bounds for " << idx << "-th item " << menu_bounds.ToString()
+          << " is outside of the screen bounds " << root_bounds.ToString();
+
+      // CancelContextMenu doesn't remove the menu window immediately, so wait
+      // for its actual deletion.
+      WindowDeletionWaiter waiter(menu_window);
+      item_view->CancelContextMenu();
+      waiter.Wait();
+    }
+  }
+}
+
 TEST_P(AppsGridViewTest, MouseDragItemIntoFolder) {
   size_t kTotalItems = 3;
   model_->PopulateApps(kTotalItems);
diff --git a/ash/assistant/assistant_state_controller_unittest.cc b/ash/assistant/assistant_state_controller_unittest.cc
index 4bd7e1d..13fc445 100644
--- a/ash/assistant/assistant_state_controller_unittest.cc
+++ b/ash/assistant/assistant_state_controller_unittest.cc
@@ -27,9 +27,15 @@
   void OnAssistantContextEnabled(bool context_enabled) override {
     context_enabled_ = context_enabled;
   }
+  void OnAssistantSettingsEnabled(bool settings_enabled) override {
+    settings_enabled_ = settings_enabled;
+  }
   void OnAssistantHotwordAlwaysOn(bool hotword_always_on) override {
     hotword_always_on_ = hotword_always_on;
   }
+  void OnAssistantHotwordEnabled(bool hotword_enabled) override {
+    hotword_enabled_ = hotword_enabled;
+  }
   void OnAssistantLaunchWithMicOpen(bool launch_with_mic_open) override {
     launch_with_mic_open_ = launch_with_mic_open;
   }
@@ -39,14 +45,18 @@
 
   int consent_status() const { return consent_status_; }
   bool context_enabled() const { return context_enabled_; }
+  bool settings_enabled() const { return settings_enabled_; }
   bool hotword_always_on() const { return hotword_always_on_; }
+  bool hotword_enabled() const { return hotword_enabled_; }
   bool launch_with_mic_open() const { return launch_with_mic_open_; }
   bool notification_enabled() const { return notification_enabled_; }
 
  private:
   int consent_status_ = chromeos::assistant::prefs::ConsentStatus::kUnknown;
   bool context_enabled_ = false;
+  bool settings_enabled_ = false;
   bool hotword_always_on_ = false;
+  bool hotword_enabled_ = false;
   bool launch_with_mic_open_ = false;
   bool notification_enabled_ = false;
 
@@ -85,8 +95,11 @@
       chromeos::assistant::prefs::ConsentStatus::kActivityControlAccepted);
   prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantContextEnabled,
                       true);
+  prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantEnabled, true);
   prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantHotwordAlwaysOn,
                       true);
+  prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantHotwordEnabled,
+                      true);
   prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantLaunchWithMicOpen,
                       true);
   prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantNotificationEnabled,
@@ -98,7 +111,9 @@
   EXPECT_EQ(chromeos::assistant::prefs::ConsentStatus::kActivityControlAccepted,
             observer()->consent_status());
   EXPECT_EQ(observer()->context_enabled(), true);
+  EXPECT_EQ(observer()->settings_enabled(), true);
   EXPECT_EQ(observer()->hotword_always_on(), true);
+  EXPECT_EQ(observer()->hotword_enabled(), true);
   EXPECT_EQ(observer()->launch_with_mic_open(), true);
   EXPECT_EQ(observer()->notification_enabled(), true);
   AssistantState::Get()->RemoveObserver(observer());
@@ -133,6 +148,17 @@
   AssistantState::Get()->RemoveObserver(observer());
 }
 
+TEST_F(AssistantStateControllerTest, NotifySettingsEnabled) {
+  AssistantState::Get()->AddObserver(observer());
+
+  prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantEnabled, false);
+  EXPECT_EQ(observer()->settings_enabled(), false);
+
+  prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantEnabled, true);
+  EXPECT_EQ(observer()->settings_enabled(), true);
+  AssistantState::Get()->RemoveObserver(observer());
+}
+
 TEST_F(AssistantStateControllerTest, NotifyHotwordAlwaysOn) {
   AssistantState::Get()->AddObserver(observer());
 
@@ -146,6 +172,19 @@
   AssistantState::Get()->RemoveObserver(observer());
 }
 
+TEST_F(AssistantStateControllerTest, NotifyHotwordEnabled) {
+  AssistantState::Get()->AddObserver(observer());
+
+  prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantHotwordEnabled,
+                      false);
+  EXPECT_EQ(observer()->hotword_enabled(), false);
+
+  prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantHotwordEnabled,
+                      true);
+  EXPECT_EQ(observer()->hotword_enabled(), true);
+  AssistantState::Get()->RemoveObserver(observer());
+}
+
 TEST_F(AssistantStateControllerTest, NotifyLaunchWithMicOpen) {
   AssistantState::Get()->AddObserver(observer());
 
diff --git a/ash/assistant/test/assistant_ash_test_base.cc b/ash/assistant/test/assistant_ash_test_base.cc
index 46a219d9..1a02cebf 100644
--- a/ash/assistant/test/assistant_ash_test_base.cc
+++ b/ash/assistant/test/assistant_ash_test_base.cc
@@ -12,6 +12,7 @@
 #include "ash/app_list/views/contents_view.h"
 #include "ash/assistant/assistant_controller.h"
 #include "ash/public/cpp/app_list/app_list_features.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ui/compositor/scoped_animation_duration_scale_mode.h"
 
@@ -28,7 +29,8 @@
   AshTestBase::SetUp();
 
   // Enable Assistant in settings.
-  AssistantState::Get()->NotifySettingsEnabled(true);
+  Shell::Get()->session_controller()->GetPrimaryUserPrefService()->SetBoolean(
+      chromeos::assistant::prefs::kAssistantEnabled, true);
 
   // Cache controller.
   controller_ = Shell::Get()->assistant_controller();
diff --git a/ash/assistant/ui/DEPS b/ash/assistant/ui/DEPS
index bea464e..b2ebf4f 100644
--- a/ash/assistant/ui/DEPS
+++ b/ash/assistant/ui/DEPS
@@ -23,6 +23,7 @@
     "+ash/assistant/assistant_controller.h",
     "+ash/assistant/assistant_ui_controller.h",
     "+ash/shell.h",
+    "+ash/session/session_controller_impl.h",
     "+ash/test/ash_test_base.h",
     "+ash/wm/tablet_mode/tablet_mode_controller.h",
     "+base/test/scoped_feature_list.h",
diff --git a/ash/assistant/ui/assistant_container_view_unittest.cc b/ash/assistant/ui/assistant_container_view_unittest.cc
index 581dc8176..cc2cdb6 100644
--- a/ash/assistant/ui/assistant_container_view_unittest.cc
+++ b/ash/assistant/ui/assistant_container_view_unittest.cc
@@ -8,6 +8,7 @@
 
 #include "ash/assistant/assistant_controller.h"
 #include "ash/assistant/assistant_ui_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
 #include "ash/wm/tablet_mode/tablet_mode_controller.h"
@@ -40,7 +41,8 @@
     DCHECK(ui_controller_);
 
     // Enable Assistant in settings.
-    AssistantState::Get()->NotifySettingsEnabled(true);
+    Shell::Get()->session_controller()->GetPrimaryUserPrefService()->SetBoolean(
+        chromeos::assistant::prefs::kAssistantEnabled, true);
 
     // After mocks are set up our Assistant service is ready for use. Indicate
     // this by changing status from NOT_READY to STOPPED.
diff --git a/ash/public/cpp/assistant/assistant_state.cc b/ash/public/cpp/assistant/assistant_state.cc
index 736e804..1f4a3ee 100644
--- a/ash/public/cpp/assistant/assistant_state.cc
+++ b/ash/public/cpp/assistant/assistant_state.cc
@@ -43,26 +43,6 @@
       [state](auto* observer) { observer->OnAssistantStatusChanged(state); });
 }
 
-void AssistantState::NotifySettingsEnabled(bool enabled) {
-  if (settings_enabled_.has_value() && settings_enabled_.value() == enabled)
-    return;
-
-  UpdateSettingsEnabled(enabled);
-  remote_observers_.ForAllPtrs([enabled](auto* observer) {
-    observer->OnAssistantSettingsEnabled(enabled);
-  });
-}
-
-void AssistantState::NotifyHotwordEnabled(bool enabled) {
-  if (hotword_enabled_.has_value() && hotword_enabled_.value() == enabled)
-    return;
-
-  UpdateHotwordEnabled(enabled);
-  remote_observers_.ForAllPtrs([enabled](auto* observer) {
-    observer->OnAssistantHotwordEnabled(enabled);
-  });
-}
-
 void AssistantState::NotifyFeatureAllowed(mojom::AssistantAllowedState state) {
   if (allowed_state_ == state)
     return;
diff --git a/ash/public/cpp/assistant/assistant_state.h b/ash/public/cpp/assistant/assistant_state.h
index 866a167..dd7ae6b 100644
--- a/ash/public/cpp/assistant/assistant_state.h
+++ b/ash/public/cpp/assistant/assistant_state.h
@@ -28,8 +28,6 @@
 
   void BindRequest(mojom::AssistantStateControllerRequest request);
   void NotifyStatusChanged(mojom::VoiceInteractionState state);
-  void NotifySettingsEnabled(bool enabled);
-  void NotifyHotwordEnabled(bool enabled);
   void NotifyFeatureAllowed(mojom::AssistantAllowedState state);
   void NotifyLocaleChanged(const std::string& locale);
   void NotifyArcPlayStoreEnabledChanged(bool enabled);
diff --git a/ash/public/cpp/assistant/assistant_state_base.cc b/ash/public/cpp/assistant/assistant_state_base.cc
index d8b459d..4d7062e 100644
--- a/ash/public/cpp/assistant/assistant_state_base.cc
+++ b/ash/public/cpp/assistant/assistant_state_base.cc
@@ -73,10 +73,18 @@
       base::BindRepeating(&AssistantStateBase::UpdateContextEnabled,
                           base::Unretained(this)));
   pref_change_registrar_->Add(
+      chromeos::assistant::prefs::kAssistantEnabled,
+      base::BindRepeating(&AssistantStateBase::UpdateSettingsEnabled,
+                          base::Unretained(this)));
+  pref_change_registrar_->Add(
       chromeos::assistant::prefs::kAssistantHotwordAlwaysOn,
       base::BindRepeating(&AssistantStateBase::UpdateHotwordAlwaysOn,
                           base::Unretained(this)));
   pref_change_registrar_->Add(
+      chromeos::assistant::prefs::kAssistantHotwordEnabled,
+      base::BindRepeating(&AssistantStateBase::UpdateHotwordEnabled,
+                          base::Unretained(this)));
+  pref_change_registrar_->Add(
       chromeos::assistant::prefs::kAssistantLaunchWithMicOpen,
       base::BindRepeating(&AssistantStateBase::UpdateLaunchWithMicOpen,
                           base::Unretained(this)));
@@ -87,7 +95,9 @@
 
   UpdateConsentStatus();
   UpdateContextEnabled();
+  UpdateSettingsEnabled();
   UpdateHotwordAlwaysOn();
+  UpdateHotwordEnabled();
   UpdateLaunchWithMicOpen();
   UpdateNotificationEnabled();
 }
@@ -97,8 +107,12 @@
     observer->OnAssistantConsentStatusChanged(consent_status_.value());
   if (context_enabled_.has_value())
     observer->OnAssistantContextEnabled(context_enabled_.value());
+  if (settings_enabled_.has_value())
+    observer->OnAssistantSettingsEnabled(settings_enabled_.value());
   if (hotword_always_on_.has_value())
     observer->OnAssistantHotwordAlwaysOn(hotword_always_on_.value());
+  if (hotword_enabled_.has_value())
+    observer->OnAssistantHotwordEnabled(hotword_enabled_.value());
   if (launch_with_mic_open_.has_value())
     observer->OnAssistantLaunchWithMicOpen(launch_with_mic_open_.value());
   if (notification_enabled_.has_value())
@@ -110,10 +124,6 @@
 void AssistantStateBase::InitializeObserverMojom(
     mojom::AssistantStateObserver* observer) {
   observer->OnAssistantStatusChanged(voice_interaction_state_);
-  if (settings_enabled_.has_value())
-    observer->OnAssistantSettingsEnabled(settings_enabled_.value());
-  if (hotword_enabled_.has_value())
-    observer->OnAssistantHotwordEnabled(hotword_enabled_.value());
   if (allowed_state_.has_value())
     observer->OnAssistantFeatureAllowedChanged(allowed_state_.value());
   if (locale_.has_value())
@@ -146,6 +156,18 @@
     observer.OnAssistantContextEnabled(context_enabled_.value());
 }
 
+void AssistantStateBase::UpdateSettingsEnabled() {
+  auto settings_enabled = pref_change_registrar_->prefs()->GetBoolean(
+      chromeos::assistant::prefs::kAssistantEnabled);
+  if (settings_enabled_.has_value() &&
+      settings_enabled_.value() == settings_enabled) {
+    return;
+  }
+  settings_enabled_ = settings_enabled;
+  for (auto& observer : observers_)
+    observer.OnAssistantSettingsEnabled(settings_enabled_.value());
+}
+
 void AssistantStateBase::UpdateHotwordAlwaysOn() {
   auto hotword_always_on = pref_change_registrar_->prefs()->GetBoolean(
       chromeos::assistant::prefs::kAssistantHotwordAlwaysOn);
@@ -158,6 +180,18 @@
     observer.OnAssistantHotwordAlwaysOn(hotword_always_on_.value());
 }
 
+void AssistantStateBase::UpdateHotwordEnabled() {
+  auto hotword_enabled = pref_change_registrar_->prefs()->GetBoolean(
+      chromeos::assistant::prefs::kAssistantHotwordEnabled);
+  if (hotword_enabled_.has_value() &&
+      hotword_enabled_.value() == hotword_enabled) {
+    return;
+  }
+  hotword_enabled_ = hotword_enabled;
+  for (auto& observer : observers_)
+    observer.OnAssistantHotwordEnabled(hotword_enabled_.value());
+}
+
 void AssistantStateBase::UpdateLaunchWithMicOpen() {
   auto launch_with_mic_open = pref_change_registrar_->prefs()->GetBoolean(
       chromeos::assistant::prefs::kAssistantLaunchWithMicOpen);
@@ -189,18 +223,6 @@
     observer.OnAssistantStatusChanged(voice_interaction_state_);
 }
 
-void AssistantStateBase::UpdateSettingsEnabled(bool enabled) {
-  settings_enabled_ = enabled;
-  for (auto& observer : observers_)
-    observer.OnAssistantSettingsEnabled(settings_enabled_.value());
-}
-
-void AssistantStateBase::UpdateHotwordEnabled(bool enabled) {
-  hotword_enabled_ = enabled;
-  for (auto& observer : observers_)
-    observer.OnAssistantHotwordEnabled(hotword_enabled_.value());
-}
-
 void AssistantStateBase::UpdateFeatureAllowedState(
     mojom::AssistantAllowedState state) {
   allowed_state_ = state;
diff --git a/ash/public/cpp/assistant/assistant_state_base.h b/ash/public/cpp/assistant/assistant_state_base.h
index a07ae5d..c9861c8d 100644
--- a/ash/public/cpp/assistant/assistant_state_base.h
+++ b/ash/public/cpp/assistant/assistant_state_base.h
@@ -28,15 +28,15 @@
 
   virtual void OnAssistantConsentStatusChanged(int consent_status) {}
   virtual void OnAssistantContextEnabled(bool enabled) {}
+  virtual void OnAssistantSettingsEnabled(bool enabled) {}
   virtual void OnAssistantHotwordAlwaysOn(bool hotword_always_on) {}
+  virtual void OnAssistantHotwordEnabled(bool enabled) {}
   virtual void OnAssistantLaunchWithMicOpen(bool launch_with_mic_open) {}
   virtual void OnAssistantNotificationEnabled(bool notification_enabled) {}
 
   // mojom::AssistantStateObserver:
   void OnAssistantStatusChanged(
       ash::mojom::VoiceInteractionState state) override {}
-  void OnAssistantSettingsEnabled(bool enabled) override {}
-  void OnAssistantHotwordEnabled(bool enabled) override {}
   void OnAssistantFeatureAllowedChanged(
       ash::mojom::AssistantAllowedState state) override {}
   void OnArcPlayStoreEnabledChanged(bool enabled) override {}
@@ -115,14 +115,14 @@
   // Called when the related preferences are obtained from the pref service.
   void UpdateConsentStatus();
   void UpdateContextEnabled();
+  void UpdateSettingsEnabled();
   void UpdateHotwordAlwaysOn();
+  void UpdateHotwordEnabled();
   void UpdateLaunchWithMicOpen();
   void UpdateNotificationEnabled();
 
   // Called when new values of the listened states are received.
   void UpdateAssistantStatus(mojom::VoiceInteractionState state);
-  void UpdateSettingsEnabled(bool enabled);
-  void UpdateHotwordEnabled(bool enabled);
   void UpdateFeatureAllowedState(mojom::AssistantAllowedState state);
   void UpdateLocale(const std::string& locale);
   void UpdateArcPlayStoreEnabled(bool enabled);
diff --git a/ash/public/mojom/assistant_state_controller.mojom b/ash/public/mojom/assistant_state_controller.mojom
index 07e7cd9..42b924f 100644
--- a/ash/public/mojom/assistant_state_controller.mojom
+++ b/ash/public/mojom/assistant_state_controller.mojom
@@ -11,12 +11,6 @@
   // Called when Assistant state changes.
   OnAssistantStatusChanged(VoiceInteractionState state);
 
-  // Called when the Assistant is enabled/disabled in settings.
-  OnAssistantSettingsEnabled(bool enabled);
-
-  // Called when hotword listening is enabled/disabled.
-  OnAssistantHotwordEnabled(bool enabled);
-
   // Called when assistant feature allowed state has changed.
   OnAssistantFeatureAllowedChanged(AssistantAllowedState state);
 
diff --git a/ash/shelf/home_button_unittest.cc b/ash/shelf/home_button_unittest.cc
index 192518c..fe022017 100644
--- a/ash/shelf/home_button_unittest.cc
+++ b/ash/shelf/home_button_unittest.cc
@@ -66,6 +66,10 @@
 
   AssistantState* assistant_state() const { return AssistantState::Get(); }
 
+  PrefService* prefs() {
+    return Shell::Get()->session_controller()->GetPrimaryUserPrefService();
+  }
+
  private:
   DISALLOW_COPY_AND_ASSIGN(HomeButtonTest);
 };
@@ -174,7 +178,7 @@
   CreateUserSessions(2);
 
   // Enable voice interaction in system settings.
-  assistant_state()->NotifySettingsEnabled(true);
+  prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantEnabled, true);
   assistant_state()->NotifyFeatureAllowed(
       mojom::AssistantAllowedState::ALLOWED);
   assistant_state()->NotifyStatusChanged(mojom::VoiceInteractionState::STOPPED);
@@ -207,7 +211,7 @@
       mojom::AssistantAllowedState::DISALLOWED_BY_NONPRIMARY_USER);
 
   // Enable voice interaction in system settings.
-  assistant_state()->NotifySettingsEnabled(true);
+  prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantEnabled, true);
 
   ui::GestureEvent long_press =
       CreateGestureEvent(ui::GestureEventDetails(ui::ET_GESTURE_LONG_PRESS));
@@ -234,7 +238,7 @@
 
   // Simulate a user who has already completed setup flow, but disabled voice
   // interaction in settings.
-  assistant_state()->NotifySettingsEnabled(false);
+  prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantEnabled, false);
   assistant_state()->NotifyFeatureAllowed(
       mojom::AssistantAllowedState::ALLOWED);
 
diff --git a/ash/system/network/vpn_feature_pod_controller.cc b/ash/system/network/vpn_feature_pod_controller.cc
index 7a16494..de617de 100644
--- a/ash/system/network/vpn_feature_pod_controller.cc
+++ b/ash/system/network/vpn_feature_pod_controller.cc
@@ -32,7 +32,7 @@
 
   // Show the VPN entry in the ash tray bubble if at least one third-party VPN
   // provider is installed.
-  if (Shell::Get()->vpn_list()->HaveExtensionOrArcVPNProviders())
+  if (Shell::Get()->vpn_list()->HaveExtensionOrArcVpnProviders())
     return true;
 
   // Also show the VPN entry if at least one VPN network is configured.
diff --git a/ash/system/network/vpn_list.cc b/ash/system/network/vpn_list.cc
index c791523..8de0437 100644
--- a/ash/system/network/vpn_list.cc
+++ b/ash/system/network/vpn_list.cc
@@ -11,60 +11,6 @@
 
 namespace ash {
 
-VPNProvider::VPNProvider() = default;
-
-VPNProvider VPNProvider::CreateBuiltInVPNProvider() {
-  VPNProvider vpn_provider;
-  vpn_provider.provider_type = BUILT_IN_VPN;
-  return vpn_provider;
-}
-
-VPNProvider VPNProvider::CreateExtensionVPNProvider(
-    const std::string& extension_id,
-    const std::string& third_party_provider_name) {
-  DCHECK(!extension_id.empty());
-  DCHECK(!third_party_provider_name.empty());
-
-  VPNProvider vpn_provider;
-  vpn_provider.provider_type = THIRD_PARTY_VPN;
-  vpn_provider.app_id = extension_id;
-  vpn_provider.provider_name = third_party_provider_name;
-  return vpn_provider;
-}
-
-VPNProvider VPNProvider::CreateArcVPNProvider(
-    const std::string& package_name,
-    const std::string& app_name,
-    const std::string& app_id,
-    const base::Time last_launch_time) {
-  DCHECK(!app_id.empty());
-  DCHECK(!app_name.empty());
-  DCHECK(!package_name.empty());
-  DCHECK(!last_launch_time.is_null());
-
-  VPNProvider vpn_provider;
-  vpn_provider.provider_type = ARC_VPN;
-  vpn_provider.app_id = app_id;
-  vpn_provider.provider_name = app_name;
-  vpn_provider.package_name = package_name;
-  vpn_provider.last_launch_time = last_launch_time;
-  return vpn_provider;
-}
-
-VPNProvider::VPNProvider(const VPNProvider& other) {
-  provider_type = other.provider_type;
-  app_id = other.app_id;
-  provider_name = other.provider_name;
-  package_name = other.package_name;
-  last_launch_time = other.last_launch_time;
-}
-
-bool VPNProvider::operator==(const VPNProvider& other) const {
-  return provider_type == other.provider_type && app_id == other.app_id &&
-         provider_name == other.provider_name &&
-         package_name == other.package_name;
-}
-
 VpnList::Observer::~Observer() = default;
 
 VpnList::VpnList() {
@@ -80,9 +26,9 @@
 
 VpnList::~VpnList() = default;
 
-bool VpnList::HaveExtensionOrArcVPNProviders() const {
-  for (const VPNProvider& extension_provider : extension_vpn_providers_) {
-    if (extension_provider.provider_type == VPNProvider::THIRD_PARTY_VPN)
+bool VpnList::HaveExtensionOrArcVpnProviders() const {
+  for (const VpnProviderPtr& extension_provider : extension_vpn_providers_) {
+    if (extension_provider->type == VpnType::kExtension)
       return true;
   }
   return arc_vpn_providers_.size() > 0;
@@ -112,34 +58,28 @@
       base::BindOnce(&VpnList::OnGetVpnProviders, base::Unretained(this)));
 }
 
-void VpnList::SetVpnProvidersForTest(
-    std::vector<chromeos::network_config::mojom::VpnProviderPtr> providers) {
+void VpnList::SetVpnProvidersForTest(std::vector<VpnProviderPtr> providers) {
   OnGetVpnProviders(std::move(providers));
 }
 
-void VpnList::OnGetVpnProviders(
-    std::vector<chromeos::network_config::mojom::VpnProviderPtr> providers) {
+void VpnList::OnGetVpnProviders(std::vector<VpnProviderPtr> providers) {
   extension_vpn_providers_.clear();
   arc_vpn_providers_.clear();
   // Add the OpenVPN/L2TP provider.
   AddBuiltInProvider();
   // Add Third Party (Extension and Arc) providers.
-  for (const auto& provider : providers) {
+  for (auto& provider : providers) {
     switch (provider->type) {
-      case chromeos::network_config::mojom::VpnType::kL2TPIPsec:
-      case chromeos::network_config::mojom::VpnType::kOpenVPN:
+      case VpnType::kL2TPIPsec:
+      case VpnType::kOpenVPN:
         // Only third party VpnProvider instances should exist.
         NOTREACHED();
         break;
-      case chromeos::network_config::mojom::VpnType::kExtension:
-        extension_vpn_providers_.push_back(
-            VPNProvider::CreateExtensionVPNProvider(provider->provider_id,
-                                                    provider->provider_name));
+      case VpnType::kExtension:
+        extension_vpn_providers_.push_back(std::move(provider));
         break;
-      case chromeos::network_config::mojom::VpnType::kArc:
-        arc_vpn_providers_.push_back(VPNProvider::CreateArcVPNProvider(
-            provider->provider_id, provider->provider_name, provider->app_id,
-            provider->last_launch_time));
+      case VpnType::kArc:
+        arc_vpn_providers_.push_back(std::move(provider));
         break;
     }
   }
@@ -148,13 +88,17 @@
 
 void VpnList::NotifyObservers() {
   for (auto& observer : observer_list_)
-    observer.OnVPNProvidersChanged();
+    observer.OnVpnProvidersChanged();
 }
 
 void VpnList::AddBuiltInProvider() {
-  // The VPNProvider() constructor generates the built-in provider and has no
-  // extension ID.
-  extension_vpn_providers_.push_back(VPNProvider::CreateBuiltInVPNProvider());
+  // Create a VpnProvider with type kOpenVPN for the built-in provider.
+  extension_vpn_providers_.push_back(
+      VpnProvider::New(VpnType::kOpenVPN,
+                       /*provider_id=*/std::string(),
+                       /*provider_name=*/std::string(),
+                       /*app_id=*/std::string(),
+                       /*last_launch_time=*/base::Time()));
 }
 
 }  // namespace ash
diff --git a/ash/system/network/vpn_list.h b/ash/system/network/vpn_list.h
index 28fd5e89..aae73b8 100644
--- a/ash/system/network/vpn_list.h
+++ b/ash/system/network/vpn_list.h
@@ -18,54 +18,6 @@
 
 namespace ash {
 
-// Describes a VPN provider for the UI. TODO(979314): Remove this class and use
-// network_config::mojom::VpnProvider instead.
-struct ASH_EXPORT VPNProvider {
-  enum ProviderType {
-    BUILT_IN_VPN = 0,
-    THIRD_PARTY_VPN,
-    ARC_VPN,
-  };
-
-  VPNProvider();
-
-  static VPNProvider CreateBuiltInVPNProvider();
-  static VPNProvider CreateExtensionVPNProvider(
-      const std::string& extension_id,
-      const std::string& third_party_provider_name);
-  static VPNProvider CreateArcVPNProvider(const std::string& package_name,
-                                          const std::string& app_name,
-                                          const std::string& app_id,
-                                          const base::Time last_launch_time);
-
-  // Explicit copy constructor.
-  VPNProvider(const VPNProvider& other);
-
-  bool operator==(const VPNProvider& other) const;
-
-  // This property represents whether this is a built-in or third-party or Arc
-  // VPN provider.
-  ProviderType provider_type;
-
-  // Properties used by third-party VPN providers and Arc VPN providers. Empty
-  // for built-in VPN.
-
-  // App id of the extension or Arc app that implements this provider.
-  std::string app_id;
-
-  // Human-readable name.
-  std::string provider_name;
-
-  // Properties used by Arc VPN providers. Empty for built-in VPN and
-  // third-party VPN providers.
-
-  // Package name of the Arc VPN provider. e.g. package.name.foo.bar
-  std::string package_name;
-
-  // Last launch time is used to sort Arc VPN providers.
-  base::Time last_launch_time;
-};
-
 // This delegate provides UI code in ash, e.g. |VPNListView|, with access to the
 // list of VPN providers enabled in the primary user's profile. The delegate
 // furthermore allows the UI code to request that a VPN provider show its "add
@@ -73,11 +25,15 @@
 class ASH_EXPORT VpnList
     : public chromeos::network_config::mojom::CrosNetworkConfigObserver {
  public:
+  using VpnProvider = chromeos::network_config::mojom::VpnProvider;
+  using VpnProviderPtr = chromeos::network_config::mojom::VpnProviderPtr;
+  using VpnType = chromeos::network_config::mojom::VpnType;
+
   // An observer that is notified whenever the list of VPN providers enabled in
   // the primary user's profile changes.
   class Observer {
    public:
-    virtual void OnVPNProvidersChanged() = 0;
+    virtual void OnVpnProvidersChanged() = 0;
 
    protected:
     virtual ~Observer();
@@ -89,17 +45,17 @@
   VpnList();
   ~VpnList() override;
 
-  const std::vector<VPNProvider>& extension_vpn_providers() {
+  const std::vector<VpnProviderPtr>& extension_vpn_providers() {
     return extension_vpn_providers_;
   }
-  const std::vector<VPNProvider>& arc_vpn_providers() {
+  const std::vector<VpnProviderPtr>& arc_vpn_providers() {
     return arc_vpn_providers_;
   }
 
   // Returns |true| if at least one third-party VPN provider or at least one Arc
   // VPN provider is enabled in the primary user's profile, in addition to the
   // built-in OpenVPN/L2TP provider.
-  bool HaveExtensionOrArcVPNProviders() const;
+  bool HaveExtensionOrArcVpnProviders() const;
 
   void AddObserver(Observer* observer);
   void RemoveObserver(Observer* observer);
@@ -115,12 +71,10 @@
   void OnDeviceStateListChanged() override;
   void OnVpnProvidersChanged() override;
 
-  void SetVpnProvidersForTest(
-      std::vector<chromeos::network_config::mojom::VpnProviderPtr> providers);
+  void SetVpnProvidersForTest(std::vector<VpnProviderPtr> providers);
 
  private:
-  void OnGetVpnProviders(
-      std::vector<chromeos::network_config::mojom::VpnProviderPtr> providers);
+  void OnGetVpnProviders(std::vector<VpnProviderPtr> providers);
 
   // Notify observers that the list of VPN providers enabled in the primary
   // user's profile has changed.
@@ -136,11 +90,11 @@
 
   // Cache of VPN providers, including the built-in OpenVPN/L2TP provider and
   // other providers added by extensions in the primary user's profile.
-  std::vector<VPNProvider> extension_vpn_providers_;
+  std::vector<VpnProviderPtr> extension_vpn_providers_;
 
   // Cache of Arc VPN providers. Will be sorted based on last launch time when
   // creating vpn list view.
-  std::vector<VPNProvider> arc_vpn_providers_;
+  std::vector<VpnProviderPtr> arc_vpn_providers_;
 
   base::ObserverList<Observer>::Unchecked observer_list_;
 
diff --git a/ash/system/network/vpn_list_unittest.cc b/ash/system/network/vpn_list_unittest.cc
index 5eb41568..b2c908a 100644
--- a/ash/system/network/vpn_list_unittest.cc
+++ b/ash/system/network/vpn_list_unittest.cc
@@ -26,7 +26,7 @@
   ~TestVpnListObserver() override = default;
 
   // VpnList::Observer:
-  void OnVPNProvidersChanged() override { change_count_++; }
+  void OnVpnProvidersChanged() override { change_count_++; }
 
   int change_count_ = 0;
 };
@@ -48,122 +48,98 @@
 
   // The VPN list should only contain the built-in provider.
   ASSERT_EQ(1u, vpn_list.extension_vpn_providers().size());
-  VPNProvider provider = vpn_list.extension_vpn_providers()[0];
-  EXPECT_EQ(provider.provider_type, VPNProvider::BUILT_IN_VPN);
-  EXPECT_TRUE(provider.app_id.empty());
+  const VpnProviderPtr& provider = vpn_list.extension_vpn_providers()[0];
+  EXPECT_EQ(provider->type, VpnType::kOpenVPN);
+  EXPECT_TRUE(provider->app_id.empty());
 }
 
-TEST_F(VpnListTest, ExtensionProviders) {
+TEST_F(VpnListTest, ThirdPartyProviders) {
   VpnList vpn_list;
+  // The VpnList model doesn't sort by launch time or otherwise do anything
+  // with the value, so we use the same value for all instances and di a single
+  // verification that it gets set.
+  base::Time launch_time = base::Time::Now();
 
   // The VPN list should only contain the built-in provider.
   EXPECT_EQ(1u, vpn_list.extension_vpn_providers().size());
 
-  // Add some third party (extension-backed) providers.
+  // Add some third party providers.
+  VpnProviderPtr extension_provider1 =
+      VpnProvider::New(VpnType::kExtension, "extension_id1", "name1",
+                       "extension_id1", launch_time);
+  VpnProviderPtr extension_provider2 =
+      VpnProvider::New(VpnType::kExtension, "extension_id2", "name2",
+                       "extension_id2", launch_time);
+  VpnProviderPtr arc_provider1 =
+      VpnProvider::New(VpnType::kArc, "package.name.foo1", "ArcVPNMonster1",
+                       "arc_app_id1", launch_time);
+
   std::vector<VpnProviderPtr> third_party_providers;
-  VpnProviderPtr third_party1 = VpnProvider::New();
-  third_party1->type = VpnType::kExtension;
-  third_party1->provider_name = "name1";
-  third_party1->provider_id = "extension_id1";
-  third_party_providers.push_back(std::move(third_party1));
+  third_party_providers.push_back(extension_provider1->Clone());
+  third_party_providers.push_back(extension_provider2->Clone());
+  third_party_providers.push_back(arc_provider1->Clone());
+  vpn_list.SetVpnProvidersForTest(CopyProviders(third_party_providers));
 
-  VpnProviderPtr third_party2 = VpnProvider::New();
-  third_party2->type = VpnType::kExtension;
-  third_party2->provider_name = "name2";
-  third_party2->provider_id = "extension_id2";
-  third_party_providers.push_back(std::move(third_party2));
+  // Extension list contains the builtin provider and extension-backed
+  // providers.
+  {
+    const std::vector<VpnProviderPtr>& extension_providers =
+        vpn_list.extension_vpn_providers();
+    ASSERT_EQ(3u, extension_providers.size());
+    EXPECT_EQ(VpnType::kOpenVPN, extension_providers[0]->type);
+    EXPECT_TRUE(extension_providers[1]->Equals(*extension_provider1));
+    EXPECT_TRUE(extension_providers[2]->Equals(*extension_provider2));
+  }
 
-  vpn_list.SetVpnProvidersForTest(std::move(third_party_providers));
+  // Arc list contains the Arc providers.
+  {
+    const std::vector<VpnProviderPtr>& arc_providers =
+        vpn_list.arc_vpn_providers();
+    EXPECT_EQ(1u, arc_providers.size());
+    EXPECT_TRUE(arc_providers[0]->Equals(*arc_provider1));
+    EXPECT_EQ(launch_time, arc_providers[0]->last_launch_time);
+  }
 
-  // Mojo types will be converted to internal ash types.
-  VPNProvider extension_provider1 =
-      VPNProvider::CreateExtensionVPNProvider("extension_id1", "name1");
-  VPNProvider extension_provider2 =
-      VPNProvider::CreateExtensionVPNProvider("extension_id2", "name2");
+  // A second Arc VPN gets installed.
+  VpnProviderPtr arc_provider2 =
+      VpnProvider::New(VpnType::kArc, "package.name.foo2", "ArcVPNMonster2",
+                       "arc_app_id2", launch_time);
+  third_party_providers.push_back(arc_provider2->Clone());
+  vpn_list.SetVpnProvidersForTest(CopyProviders(third_party_providers));
+  {
+    const std::vector<VpnProviderPtr>& arc_providers =
+        vpn_list.arc_vpn_providers();
+    EXPECT_EQ(2u, arc_providers.size());
+    EXPECT_TRUE(arc_providers[0]->Equals(*arc_provider1));
+    EXPECT_TRUE(arc_providers[1]->Equals(*arc_provider2));
+  }
 
-  // List contains the extension-backed providers. Order doesn't matter.
-  std::vector<VPNProvider> extension_providers =
-      vpn_list.extension_vpn_providers();
-  EXPECT_EQ(3u, extension_providers.size());
-  EXPECT_EQ(1u, std::count(extension_providers.begin(),
-                           extension_providers.end(), extension_provider1));
-  EXPECT_EQ(1u, std::count(extension_providers.begin(),
-                           extension_providers.end(), extension_provider2));
-}
-
-TEST_F(VpnListTest, ArcProviders) {
-  VpnList vpn_list;
-
-  // Initial refresh.
-  base::Time launchTime1 = base::Time::Now();
-  std::vector<VpnProviderPtr> arc_vpn_providers;
-  VpnProviderPtr arc_vpn_provider1 = VpnProvider::New();
-  arc_vpn_provider1->type = VpnType::kArc;
-  arc_vpn_provider1->provider_id = "package.name.foo1";
-  arc_vpn_provider1->provider_name = "ArcVPNMonster1";
-  arc_vpn_provider1->app_id = "arc_app_id1";
-  arc_vpn_provider1->last_launch_time = launchTime1;
-  arc_vpn_providers.push_back(std::move(arc_vpn_provider1));
-
-  vpn_list.SetVpnProvidersForTest(CopyProviders(arc_vpn_providers));
-
-  VPNProvider arc_provider1 = VPNProvider::CreateArcVPNProvider(
-      "package.name.foo1", "ArcVPNMonster1", "arc_app_id1", launchTime1);
-
-  std::vector<VPNProvider> arc_providers = vpn_list.arc_vpn_providers();
-  EXPECT_EQ(1u, arc_providers.size());
-  EXPECT_EQ(1u, std::count(arc_providers.begin(), arc_providers.end(),
-                           arc_provider1));
-  EXPECT_EQ(launchTime1, arc_providers[0].last_launch_time);
-
-  // package.name.foo2 gets installed.
-  VpnProviderPtr arc_vpn_provider2 = VpnProvider::New();
-  arc_vpn_provider2->type = VpnType::kArc;
-  arc_vpn_provider2->provider_id = "package.name.foo2";
-  arc_vpn_provider2->provider_name = "ArcVPNMonster2";
-  arc_vpn_provider2->app_id = "arc_app_id2";
-  arc_vpn_provider2->last_launch_time = base::Time::Now();
-  arc_vpn_providers.push_back(std::move(arc_vpn_provider2));
-
-  vpn_list.SetVpnProvidersForTest(CopyProviders(arc_vpn_providers));
-
-  VPNProvider arc_provider2 = VPNProvider::CreateArcVPNProvider(
-      "package.name.foo2", "ArcVPNMonster2", "arc_app_id2", base::Time::Now());
-  arc_providers = vpn_list.arc_vpn_providers();
-  EXPECT_EQ(2u, arc_providers.size());
-  EXPECT_EQ(1u, std::count(arc_providers.begin(), arc_providers.end(),
-                           arc_provider1));
-  EXPECT_EQ(1u, std::count(arc_providers.begin(), arc_providers.end(),
-                           arc_provider2));
-
-  // package.name.foo1 gets uninstalled.
-  arc_vpn_providers.erase(arc_vpn_providers.begin());
-  vpn_list.SetVpnProvidersForTest(CopyProviders(arc_vpn_providers));
-
-  arc_providers = vpn_list.arc_vpn_providers();
-  EXPECT_EQ(1u, arc_providers.size());
-  EXPECT_EQ(1u, std::count(arc_providers.begin(), arc_providers.end(),
-                           arc_provider2));
+  // The first Arc VPN gets uninstalled.
+  auto iter = std::find_if(
+      third_party_providers.begin(), third_party_providers.end(),
+      [](const auto& p) { return p->provider_id == "package.name.foo1"; });
+  ASSERT_NE(iter, third_party_providers.end());
+  third_party_providers.erase(iter);
+  vpn_list.SetVpnProvidersForTest(CopyProviders(third_party_providers));
+  {
+    const std::vector<VpnProviderPtr>& arc_providers =
+        vpn_list.arc_vpn_providers();
+    EXPECT_EQ(1u, arc_providers.size());
+    ASSERT_TRUE(arc_providers[0]);
+    ASSERT_TRUE(arc_provider2);
+    EXPECT_TRUE(arc_providers[0]->Equals(*arc_provider2));
+  }
 
   // package.name.foo2 changes due to update or system language change.
-  base::Time launchTime2 = base::Time::Now();
-  VpnProviderPtr arc_vpn_provider2_rename = VpnProvider::New();
-  arc_vpn_provider2_rename->type = VpnType::kArc;
-  arc_vpn_provider2_rename->provider_id = "package.name.foo2";
-  arc_vpn_provider2_rename->provider_name = "ArcVPNMonster2Rename";
-  arc_vpn_provider2_rename->app_id = "arc_app_id2_rename";
-  arc_vpn_provider2_rename->last_launch_time = launchTime2;
-  arc_vpn_providers[0] = std::move(arc_vpn_provider2_rename);
-  vpn_list.SetVpnProvidersForTest(CopyProviders(arc_vpn_providers));
-
-  arc_provider2.provider_name = "ArcVPNMonster2Rename";
-  arc_provider2.app_id = "arc_app_id2_rename";
-
-  arc_providers = vpn_list.arc_vpn_providers();
-  EXPECT_EQ(1u, arc_providers.size());
-  EXPECT_EQ(1u, std::count(arc_providers.begin(), arc_providers.end(),
-                           arc_provider2));
-  EXPECT_EQ(launchTime2, arc_providers[0].last_launch_time);
+  arc_provider2->provider_name = "ArcVPNMonster2Rename";
+  arc_provider2->app_id = "arc_app_id2_rename";
+  third_party_providers[2] = arc_provider2->Clone();
+  vpn_list.SetVpnProvidersForTest(CopyProviders(third_party_providers));
+  {
+    const std::vector<VpnProviderPtr>& arc_providers =
+        vpn_list.arc_vpn_providers();
+    EXPECT_TRUE(arc_providers[0]->Equals(*arc_provider2));
+  }
 }
 
 TEST_F(VpnListTest, Observers) {
diff --git a/ash/system/network/vpn_list_view.cc b/ash/system/network/vpn_list_view.cc
index 05c21df..2f380356 100644
--- a/ash/system/network/vpn_list_view.cc
+++ b/ash/system/network/vpn_list_view.cc
@@ -54,36 +54,37 @@
 using chromeos::network_config::mojom::NetworkStateProperties;
 using chromeos::network_config::mojom::NetworkStatePropertiesPtr;
 using chromeos::network_config::mojom::NetworkType;
+using chromeos::network_config::mojom::VpnProvider;
+using chromeos::network_config::mojom::VpnProviderPtr;
 using chromeos::network_config::mojom::VpnType;
 
 namespace ash {
 namespace tray {
 namespace {
 
-struct CompareArcVPNProviderByLastLaunchTime {
-  bool operator()(const VPNProvider& provider1, const VPNProvider& provider2) {
-    return provider1.last_launch_time > provider2.last_launch_time;
+struct CompareArcVpnProviderByLastLaunchTime {
+  bool operator()(const VpnProviderPtr& provider1,
+                  const VpnProviderPtr& provider2) {
+    return provider1->last_launch_time > provider2->last_launch_time;
   }
 };
 
 // Indicates whether |network| belongs to this VPN provider.
-bool VpnProviderMatchesNetwork(const VPNProvider& provider,
+bool VpnProviderMatchesNetwork(const VpnProvider* provider,
                                const NetworkStateProperties* network) {
   DCHECK(network);
   // Never display non-VPN networks or VPNs with no provider info.
   if (network->type != NetworkType::kVPN)
     return false;
 
-  // Package name is the vpn provider id for ArcVPNProvider in network state.
-  if (network->vpn->type == VpnType::kArc) {
-    return provider.provider_type == VPNProvider::ARC_VPN &&
-           network->vpn->provider_id == provider.package_name;
+  if (network->vpn->type == VpnType::kArc ||
+      network->vpn->type == VpnType::kExtension) {
+    return network->vpn->type == provider->type &&
+           network->vpn->provider_id == provider->provider_id;
   }
-  if (network->vpn->type == VpnType::kExtension) {
-    return provider.provider_type == VPNProvider::THIRD_PARTY_VPN &&
-           network->vpn->provider_id == provider.app_id;
-  }
-  return provider.provider_type == VPNProvider::BUILT_IN_VPN;
+
+  // Internal provider types all match the default internal provider.
+  return provider->type == VpnType::kOpenVPN;
 }
 
 // Returns the PrefService that should be used for kVpnConfigAllowed, which is
@@ -104,11 +105,11 @@
 // A list entry that represents a VPN provider.
 class VPNListProviderEntry : public views::ButtonListener, public views::View {
  public:
-  VPNListProviderEntry(const VPNProvider& vpn_provider,
+  VPNListProviderEntry(const VpnProviderPtr& vpn_provider,
                        bool top_item,
                        const std::string& name,
                        int button_accessible_name_id)
-      : vpn_provider_(vpn_provider) {
+      : vpn_provider_(vpn_provider->Clone()) {
     TrayPopupUtils::ConfigureAsStickyHeader(this);
     SetLayoutManager(std::make_unique<views::FillLayout>());
     TriView* tri_view = TrayPopupUtils::CreateSubHeaderRowView(true);
@@ -143,15 +144,15 @@
   void ButtonPressed(views::Button* sender, const ui::Event& event) override {
     // If the user clicks on a provider entry, request that the "add network"
     // dialog for this provider be shown.
-    if (vpn_provider_.provider_type == VPNProvider::THIRD_PARTY_VPN) {
+    if (vpn_provider_->type == VpnType::kExtension) {
       Shell::Get()->metrics()->RecordUserMetricsAction(
           UMA_STATUS_AREA_VPN_ADD_THIRD_PARTY_CLICKED);
       Shell::Get()->system_tray_model()->client()->ShowThirdPartyVpnCreate(
-          vpn_provider_.app_id);
-    } else if (vpn_provider_.provider_type == VPNProvider::ARC_VPN) {
+          vpn_provider_->app_id);
+    } else if (vpn_provider_->type == VpnType::kArc) {
       // TODO(lgcheng@) Add UMA status if needed.
       Shell::Get()->system_tray_model()->client()->ShowArcVpnCreate(
-          vpn_provider_.app_id);
+          vpn_provider_->app_id);
     } else {
       Shell::Get()->metrics()->RecordUserMetricsAction(
           UMA_STATUS_AREA_VPN_ADD_BUILT_IN_CLICKED);
@@ -161,7 +162,7 @@
   }
 
  private:
-  const VPNProvider vpn_provider_;
+  VpnProviderPtr vpn_provider_;
 
   DISALLOW_COPY_AND_ASSIGN(VPNListProviderEntry);
 };
@@ -297,12 +298,12 @@
 void VPNListView::OnGetNetworkStateList(NetworkStateList networks) {
   // Before updating the list, determine whether the user was hovering over one
   // of the VPN provider or network entries.
-  std::unique_ptr<VPNProvider> hovered_provider;
+  VpnProviderPtr hovered_provider;
   std::string hovered_network_guid;
-  for (const std::pair<const views::View* const, VPNProvider>& provider :
+  for (const std::pair<const views::View* const, VpnProviderPtr>& entry :
        provider_view_map_) {
-    if (provider.first->IsMouseHovered()) {
-      hovered_provider.reset(new VPNProvider(provider.second));
+    if (entry.first->IsMouseHovered()) {
+      hovered_provider = entry.second->Clone();
       break;
     }
   }
@@ -330,10 +331,10 @@
   // will be scrolled to ensure the entry is visible.
   const views::View* scroll_to_show_view = nullptr;
   if (hovered_provider) {
-    for (const std::pair<const views::View* const, VPNProvider>& provider :
+    for (const std::pair<const views::View* const, VpnProviderPtr>& entry :
          provider_view_map_) {
-      if (provider.second == *hovered_provider) {
-        scroll_to_show_view = provider.first;
+      if (entry.second->Equals(*hovered_provider)) {
+        scroll_to_show_view = entry.first;
         break;
       }
     }
@@ -365,7 +366,7 @@
   return true;
 }
 
-void VPNListView::OnVPNProvidersChanged() {
+void VPNListView::OnVpnProvidersChanged() {
   UpdateNetworkList();
 }
 
@@ -385,32 +386,29 @@
   list_empty_ = false;
 }
 
-void VPNListView::AddProviderAndNetworks(const VPNProvider& vpn_provider) {
-  AddProviderAndNetworks(vpn_provider, {});
-}
-
-void VPNListView::AddProviderAndNetworks(const VPNProvider& vpn_provider,
+void VPNListView::AddProviderAndNetworks(VpnProviderPtr vpn_provider,
                                          const NetworkStateList& networks) {
   // Add a visual separator, unless this is the topmost entry in the list.
   if (!list_empty_) {
     scroll_content()->AddChildView(CreateListSubHeaderSeparator());
   }
   std::string vpn_name =
-      vpn_provider.provider_type == VPNProvider::BUILT_IN_VPN
+      vpn_provider->type == VpnType::kOpenVPN
           ? l10n_util::GetStringUTF8(IDS_ASH_STATUS_TRAY_VPN_BUILT_IN_PROVIDER)
-          : vpn_provider.provider_name;
+          : vpn_provider->provider_name;
 
   // Add a list entry for the VPN provider.
   views::View* provider_view = nullptr;
   provider_view = new VPNListProviderEntry(vpn_provider, list_empty_, vpn_name,
                                            IDS_ASH_STATUS_TRAY_ADD_CONNECTION);
   scroll_content()->AddChildView(provider_view);
-  provider_view_map_[provider_view] = vpn_provider;
+  const VpnProvider* vpn_providerp = vpn_provider.get();
+  provider_view_map_[provider_view] = std::move(vpn_provider);
   list_empty_ = false;
   // Add the networks belonging to this provider, in the priority order returned
   // by shill.
   for (const auto& network : networks) {
-    if (VpnProviderMatchesNetwork(vpn_provider, network.get()))
+    if (VpnProviderMatchesNetwork(vpn_providerp, network.get()))
       AddNetwork(network.get());
   }
 }
@@ -418,12 +416,12 @@
 bool VPNListView::ProcessProviderForNetwork(
     const NetworkStateProperties* network,
     const NetworkStateList& networks,
-    std::vector<VPNProvider>* providers) {
+    std::vector<VpnProviderPtr>* providers) {
   for (auto provider_iter = providers->begin();
        provider_iter != providers->end(); ++provider_iter) {
-    if (!VpnProviderMatchesNetwork(*provider_iter, network))
+    if (!VpnProviderMatchesNetwork(provider_iter->get(), network))
       continue;
-    AddProviderAndNetworks(*provider_iter, networks);
+    AddProviderAndNetworks(std::move(*provider_iter), networks);
     providers->erase(provider_iter);
     return true;
   }
@@ -431,14 +429,22 @@
 }
 
 void VPNListView::AddProvidersAndNetworks(const NetworkStateList& networks) {
-  // Get the list of VPN providers enabled in the primary user's profile.
-  std::vector<VPNProvider> extension_providers =
-      Shell::Get()->vpn_list()->extension_vpn_providers();
-  // Get the list of Arc VPN providers installed in the primary user's profile.
-  std::vector<VPNProvider> arc_providers =
-      Shell::Get()->vpn_list()->arc_vpn_providers();
+  // Copy the list of Extension VPN providers enabled in the primary user's
+  // profile.
+  std::vector<VpnProviderPtr> extension_providers;
+  for (const VpnProviderPtr& provider :
+       Shell::Get()->vpn_list()->extension_vpn_providers()) {
+    extension_providers.push_back(provider->Clone());
+  }
+  // Copy the list of Arc VPN providers installed in the primary user's profile.
+  std::vector<VpnProviderPtr> arc_providers;
+  for (const VpnProviderPtr& provider :
+       Shell::Get()->vpn_list()->arc_vpn_providers()) {
+    arc_providers.push_back(provider->Clone());
+  }
+
   std::sort(arc_providers.begin(), arc_providers.end(),
-            CompareArcVPNProviderByLastLaunchTime());
+            CompareArcVpnProviderByLastLaunchTime());
 
   // Add connected ARCVPN network. If we can find the correct provider, nest
   // the network under the provider. Otherwise list it unnested.
@@ -462,13 +468,13 @@
 
   // Add providers without any configured networks, in the order that the
   // providers were returned by the extensions system.
-  for (const VPNProvider& extension_provider : extension_providers)
-    AddProviderAndNetworks(extension_provider);
+  for (VpnProviderPtr& extension_provider : extension_providers)
+    AddProviderAndNetworks(std::move(extension_provider), {});
 
   // Add Arc VPN providers without any connected or connecting networks. These
   // providers are sorted by last launch time.
-  for (const VPNProvider& arc_provider : arc_providers) {
-    AddProviderAndNetworks(arc_provider);
+  for (VpnProviderPtr& arc_provider : arc_providers) {
+    AddProviderAndNetworks(std::move(arc_provider), {});
   }
 }
 
diff --git a/ash/system/network/vpn_list_view.h b/ash/system/network/vpn_list_view.h
index 9d9d9b0f..1f6e1af 100644
--- a/ash/system/network/vpn_list_view.h
+++ b/ash/system/network/vpn_list_view.h
@@ -39,6 +39,8 @@
 class VPNListView : public NetworkStateListDetailedView,
                     public VpnList::Observer {
  public:
+  using VpnProviderPtr = chromeos::network_config::mojom::VpnProviderPtr;
+
   VPNListView(DetailedViewDelegate* delegate, LoginStatus login);
   ~VPNListView() override;
 
@@ -51,7 +53,7 @@
   bool IsNetworkEntry(views::View* view, std::string* guid) const override;
 
   // VpnList::Observer:
-  void OnVPNProvidersChanged() override;
+  void OnVpnProvidersChanged() override;
 
   // See Shell::RegisterProfilePrefs().
   static void RegisterProfilePrefs(PrefRegistrySimple* registry);
@@ -69,12 +71,9 @@
       const chromeos::network_config::mojom::NetworkStateProperties* network);
 
   // Adds the VPN provider identified by |vpn_provider| to the list, along with
-  // no networks that belong to this provider.
-  void AddProviderAndNetworks(const VPNProvider& vpn_provider);
-
-  // Adds the VPN provider identified by |vpn_provider| to the list, along with
-  // any networks that belong to this provider.
-  void AddProviderAndNetworks(const VPNProvider& vpn_provider,
+  // any networks that may belong to this provider. Takes ownership of
+  // |vpn_provider|.
+  void AddProviderAndNetworks(VpnProviderPtr vpn_provider,
                               const NetworkStateList& networks);
 
   // Finds VPN provider from |providers| that matches given |network|. Then adds
@@ -85,13 +84,13 @@
   bool ProcessProviderForNetwork(
       const chromeos::network_config::mojom::NetworkStateProperties* network,
       const NetworkStateList& networks,
-      std::vector<VPNProvider>* providers);
+      std::vector<VpnProviderPtr>* providers);
 
   // Adds all available VPN providers and networks to the list.
   void AddProvidersAndNetworks(const NetworkStateList& networks);
 
   // A mapping from each VPN provider's list entry to the provider.
-  std::map<const views::View* const, VPNProvider> provider_view_map_;
+  std::map<const views::View* const, VpnProviderPtr> provider_view_map_;
 
   // A mapping from each network's list entry to the network's guid.
   std::map<const views::View* const, std::string> network_view_guid_map_;
diff --git a/ash/system/palette/palette_tray_unittest.cc b/ash/system/palette/palette_tray_unittest.cc
index f4ccafa7..85cbc0f 100644
--- a/ash/system/palette/palette_tray_unittest.cc
+++ b/ash/system/palette/palette_tray_unittest.cc
@@ -339,7 +339,7 @@
   ui::ScopedAnimationDurationScaleMode animation_duration_mode(
       ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION);
   assistant_state()->NotifyStatusChanged(mojom::VoiceInteractionState::RUNNING);
-  assistant_state()->NotifySettingsEnabled(true);
+  prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantEnabled, true);
   prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantContextEnabled,
                       true);
 
@@ -419,7 +419,7 @@
       ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION);
   assistant_state()->NotifyStatusChanged(
       mojom::VoiceInteractionState::NOT_READY);
-  assistant_state()->NotifySettingsEnabled(false);
+  prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantEnabled, false);
   prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantContextEnabled,
                       false);
 
@@ -448,7 +448,7 @@
                              false /* no highlighter on press */);
 
   // Enable the other user pref, still not sufficient.
-  assistant_state()->NotifySettingsEnabled(true);
+  prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantEnabled, true);
   WaitDragAndAssertMetalayer("two prefs enabled", origin,
                              ui::EF_LEFT_MOUSE_BUTTON, false /* no metalayer */,
                              false /* no highlighter on press */);
diff --git a/ash/system/palette/tools/metalayer_mode.cc b/ash/system/palette/tools/metalayer_mode.cc
index 5a2139d..4360b41e 100644
--- a/ash/system/palette/tools/metalayer_mode.cc
+++ b/ash/system/palette/tools/metalayer_mode.cc
@@ -157,7 +157,7 @@
 }
 
 void MetalayerMode::OnAssistantSettingsEnabled(bool enabled) {
-  voice_interaction_enabled_ = enabled;
+  assistant_enabled_ = enabled;
   UpdateState();
 }
 
diff --git a/ash/system/palette/tools/metalayer_mode.h b/ash/system/palette/tools/metalayer_mode.h
index d7d21c9..4df15b6 100644
--- a/ash/system/palette/tools/metalayer_mode.h
+++ b/ash/system/palette/tools/metalayer_mode.h
@@ -33,7 +33,7 @@
   // from |enabled| which means that the palette tool is currently selected by
   // the user.
   bool feature_enabled() const {
-    return voice_interaction_enabled_ && assistant_context_enabled_ &&
+    return assistant_enabled_ && assistant_context_enabled_ &&
            assistant_allowed_state_ == mojom::AssistantAllowedState::ALLOWED;
   }
 
@@ -86,7 +86,7 @@
   mojom::VoiceInteractionState voice_interaction_state_ =
       mojom::VoiceInteractionState::NOT_READY;
 
-  bool voice_interaction_enabled_ = false;
+  bool assistant_enabled_ = false;
 
   bool assistant_context_enabled_ = false;
 
diff --git a/ash/system/palette/tools/metalayer_unittest.cc b/ash/system/palette/tools/metalayer_unittest.cc
index 1687205..e382c90 100644
--- a/ash/system/palette/tools/metalayer_unittest.cc
+++ b/ash/system/palette/tools/metalayer_unittest.cc
@@ -96,7 +96,8 @@
           const bool selectable = allowed && enabled && context && ready;
 
           assistant_state()->NotifyStatusChanged(state);
-          assistant_state()->NotifySettingsEnabled(enabled);
+          prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantEnabled,
+                              enabled);
           assistant_state()->NotifyFeatureAllowed(allowed_state);
           prefs()->SetBoolean(
               chromeos::assistant::prefs::kAssistantContextEnabled, context);
@@ -146,7 +147,7 @@
 // Verifies that disabling the metalayer support disables the tool.
 TEST_F(MetalayerToolTest, MetalayerUnsupportedDisablesPaletteTool) {
   assistant_state()->NotifyStatusChanged(mojom::VoiceInteractionState::RUNNING);
-  assistant_state()->NotifySettingsEnabled(true);
+  prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantEnabled, true);
   prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantContextEnabled,
                       true);
 
@@ -154,9 +155,9 @@
   tool_->OnEnable();
   EXPECT_CALL(*palette_tool_delegate_.get(),
               DisableTool(PaletteToolId::METALAYER));
-  assistant_state()->NotifySettingsEnabled(false);
+  prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantEnabled, false);
   testing::Mock::VerifyAndClearExpectations(palette_tool_delegate_.get());
-  assistant_state()->NotifySettingsEnabled(true);
+  prefs()->SetBoolean(chromeos::assistant::prefs::kAssistantEnabled, true);
 
   tool_->OnEnable();
   EXPECT_CALL(*palette_tool_delegate_.get(),
diff --git a/ash/wm/overview/overview_session_unittest.cc b/ash/wm/overview/overview_session_unittest.cc
index 700da890..9275183 100644
--- a/ash/wm/overview/overview_session_unittest.cc
+++ b/ash/wm/overview/overview_session_unittest.cc
@@ -2369,7 +2369,8 @@
 
 // Test that the mask that is applied to add rounded corners in overview mode
 // is removed during animations.
-TEST_F(OverviewSessionRoundedCornerTest, RoundedEdgeMaskVisibility) {
+// TODO(https://crbug.com/1000730): Re-enable this test.
+TEST_F(OverviewSessionRoundedCornerTest, DISABLED_RoundedEdgeMaskVisibility) {
   std::unique_ptr<aura::Window> window1(CreateTestWindow());
   std::unique_ptr<aura::Window> window2(CreateTestWindow());
 
diff --git a/ash/wm/tablet_mode/tablet_mode_controller.cc b/ash/wm/tablet_mode/tablet_mode_controller.cc
index 42601a1..c693eb5 100644
--- a/ash/wm/tablet_mode/tablet_mode_controller.cc
+++ b/ash/wm/tablet_mode/tablet_mode_controller.cc
@@ -17,6 +17,7 @@
 #include "ash/shell.h"
 #include "ash/shell_delegate.h"
 #include "ash/wm/overview/overview_controller.h"
+#include "ash/wm/splitview/split_view_utils.h"
 #include "ash/wm/tablet_mode/internal_input_devices_event_blocker.h"
 #include "ash/wm/tablet_mode/tablet_mode_window_manager.h"
 #include "ash/wm/window_state.h"
@@ -688,13 +689,21 @@
     state_ = State::kEnteringTabletMode;
 
     // Take a screenshot if there is a top window that will get animated.
+    // Since with ash::features::kDragToSnapInClamshellMode enabled, we'll keep
+    // overview active after clamshell <-> tablet mode transition if it was
+    // active before transition, do not take screenshot if overview is active
+    // in this case.
     // TODO(sammiequon): Handle the case where the top window is not on the
     // primary display.
     aura::Window* top_window = TabletModeWindowManager::GetTopWindow();
-    bool top_window_on_primary_display =
+    const bool top_window_on_primary_display =
         top_window &&
         top_window->GetRootWindow() == Shell::GetPrimaryRootWindow();
-    if (use_screenshot_for_test && top_window_on_primary_display) {
+    const bool overview_remain_active =
+        IsClamshellSplitViewModeEnabled() &&
+        Shell::Get()->overview_controller()->InOverviewSession();
+    if (use_screenshot_for_test && top_window_on_primary_display &&
+        !overview_remain_active) {
       TakeScreenshot(top_window);
     } else {
       FinishInitTabletMode();
diff --git a/base/android/java/src/org/chromium/base/LifetimeAssert.java b/base/android/java/src/org/chromium/base/LifetimeAssert.java
index 6154b1b..1784bbe4 100644
--- a/base/android/java/src/org/chromium/base/LifetimeAssert.java
+++ b/base/android/java/src/org/chromium/base/LifetimeAssert.java
@@ -6,8 +6,6 @@
 
 import android.support.annotation.VisibleForTesting;
 
-import org.chromium.base.annotations.CheckDiscard;
-
 import java.lang.ref.PhantomReference;
 import java.lang.ref.ReferenceQueue;
 import java.util.Collections;
@@ -28,7 +26,6 @@
  *     }
  * }
  */
-@CheckDiscard
 public class LifetimeAssert {
     interface TestHook {
         void onCleaned(WrappedReference ref, String msg);
diff --git a/base/android/java/src/org/chromium/base/library_loader/LegacyLinker.java b/base/android/java/src/org/chromium/base/library_loader/LegacyLinker.java
index 7b857b21..75c50f5 100644
--- a/base/android/java/src/org/chromium/base/library_loader/LegacyLinker.java
+++ b/base/android/java/src/org/chromium/base/library_loader/LegacyLinker.java
@@ -33,13 +33,14 @@
 
     @Override
     @GuardedBy("sLock")
-    void loadLibraryImplLocked(String libFilePath, boolean isFixedAddressPermitted) {
+    void loadLibraryImplLocked(String library, boolean isFixedAddressPermitted) {
         ensureInitializedLocked();
         assert mState == State.INITIALIZED; // Only one successful call.
 
         boolean provideRelro = mInBrowserProcess;
         long loadAddress = isFixedAddressPermitted ? mBaseLoadAddress : 0;
 
+        String libFilePath = System.mapLibraryName(library);
         final String sharedRelRoName = libFilePath;
         LibInfo libInfo = new LibInfo();
         if (!nativeLoadLibrary(libFilePath, loadAddress, libInfo)) {
diff --git a/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java b/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java
index 3ee374e..fca7cbb2 100644
--- a/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java
+++ b/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java
@@ -36,6 +36,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Locale;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 
@@ -294,21 +295,20 @@
 
     // Helper for loadAlreadyLocked(). Load a native shared library with the Chromium linker.
     // Records UMA histograms depending on the results of loading.
-    @GuardedBy("mLock")
-    private void loadLibraryWithCustomLinkerAlreadyLocked(
-            Linker linker, String libFilePath, boolean isFirstAttempt) {
+    private static void loadLibraryWithCustomLinker(
+            Linker linker, String library, boolean isFirstAttempt) {
         // Attempt shared RELROs, and if that fails then retry without.
         boolean loadAtFixedAddress = true;
         boolean success = true;
         try {
-            linker.loadLibrary(libFilePath, true /* isFixedAddressPermitted */);
+            linker.loadLibrary(library, true /* isFixedAddressPermitted */);
         } catch (UnsatisfiedLinkError e) {
             Log.w(TAG, "Failed to load native library with shared RELRO, retrying without");
             sLoadStatusRecorder.recordLoadAttempt(
                     false /* success */, isFirstAttempt, true /* loadAtFixedAddress */);
             loadAtFixedAddress = false;
             success = false;
-            linker.loadLibrary(libFilePath, false /* isFixedAddressPermitted */);
+            linker.loadLibrary(library, false /* isFixedAddressPermitted */);
             success = true;
         } finally {
             sLoadStatusRecorder.recordLoadAttempt(success, isFirstAttempt, loadAtFixedAddress);
@@ -326,93 +326,89 @@
         return extractFileIfStale(appInfo, libraryEntry, makeLibraryDirAndSetPermission());
     }
 
+    private static void loadWithChromiumLinker(ApplicationInfo appInfo, String library) {
+        Linker linker = Linker.getInstance();
+
+        if (isInZipFile()) {
+            String sourceDir = appInfo.sourceDir;
+            linker.setApkFilePath(sourceDir);
+            Log.i(TAG, " Loading %s from within %s", library, sourceDir);
+        } else {
+            Log.i(TAG, "Loading %s", library);
+        }
+
+        try {
+            // Load the library using this Linker. May throw UnsatisfiedLinkError.
+            loadLibraryWithCustomLinker(linker, library, true /* isFirstAttempt */);
+        } catch (UnsatisfiedLinkError e) {
+            if (!isInZipFile() && PLATFORM_REQUIRES_NATIVE_FALLBACK_EXTRACTION) {
+                loadLibraryWithCustomLinker(linker, getExtractedLibraryPath(appInfo, library),
+                        false /* isFirstAttempt */);
+            } else {
+                throw e;
+            }
+        }
+    }
+
+    @GuardedBy("mLock")
+    @SuppressLint("UnsafeDynamicallyLoadedCode")
+    private void loadWithSystemLinkerAlreadyLocked(ApplicationInfo appInfo) {
+        setEnvForNative();
+        preloadAlreadyLocked(appInfo);
+
+        // If the libraries are located in the zip file, assert that the device API level is M or
+        // higher. On devices <=M, the libraries should always be loaded by LegacyLinker.
+        assert !isInZipFile() || Build.VERSION.SDK_INT >= VERSION_CODES.M;
+
+        // Load libraries using the system linker.
+        for (String library : NativeLibraries.LIBRARIES) {
+            if (!isInZipFile()) {
+                // The extract and retry logic isn't needed because this path is used only for local
+                // development.
+                System.loadLibrary(library);
+            } else {
+                // Load directly from the APK.
+                boolean is64Bit = ApiHelperForM.isProcess64Bit();
+                String zipFilePath = appInfo.sourceDir;
+                String fullPath =
+                        zipFilePath + "!/" + makeLibraryPathInZipFile(library, false, is64Bit);
+
+                Log.i(TAG, "libraryName: %s", fullPath);
+                System.load(fullPath);
+            }
+        }
+    }
+
     // Invoke either Linker.loadLibrary(...), System.loadLibrary(...) or System.load(...),
     // triggering JNI_OnLoad in native code.
-    // TODO(crbug.com/635567): Fix this properly.
-    @SuppressLint({"DefaultLocale", "UnsafeDynamicallyLoadedCode"})
     @GuardedBy("mLock")
     private void loadAlreadyLocked(ApplicationInfo appInfo, boolean inZygote)
             throws ProcessInitException {
         try (TraceEvent te = TraceEvent.scoped("LibraryLoader.loadAlreadyLocked")) {
             if (mLoaded) return;
-
             assert !mInitialized;
 
             long startTime = SystemClock.uptimeMillis();
 
             if (useChromiumLinker() && !inZygote) {
-                Linker linker = Linker.getInstance();
-
-                // See base/android/linker/config.gni, the chromium linker is only enabled when we
-                // have a single library.
+                // See base/android/linker/config.gni, the chromium linker is only enabled when
+                // we have a single library.
                 assert NativeLibraries.LIBRARIES.length == 1;
                 String library = NativeLibraries.LIBRARIES[0];
-
-                if (isInZipFile()) {
-                    String sourceDir = appInfo.sourceDir;
-                    linker.setApkFilePath(sourceDir);
-                    Log.i(TAG, " Loading %s from within %s", library, sourceDir);
-                } else {
-                    Log.i(TAG, "Loading %s", library);
-                }
-
-                try {
-                    // Load the library using this Linker. May throw UnsatisfiedLinkError.
-                    loadLibraryWithCustomLinkerAlreadyLocked(
-                            linker, System.mapLibraryName(library), true /* isFirstAttempt */);
-                } catch (UnsatisfiedLinkError e) {
-                    if (!isInZipFile() && PLATFORM_REQUIRES_NATIVE_FALLBACK_EXTRACTION) {
-                        loadLibraryWithCustomLinkerAlreadyLocked(linker,
-                                getExtractedLibraryPath(appInfo, library),
-                                false /* isFirstAttempt */);
-                    } else {
-                        Log.e(TAG, "Unable to load library: " + library);
-                        throw(e);
-                    }
-                }
+                loadWithChromiumLinker(appInfo, library);
             } else {
-                setEnvForNative();
-                preloadAlreadyLocked(appInfo);
-
-                // If the libraries are located in the zip file, assert that the device API level is
-                // M or higher. On devices lower than M, the libraries should always be loaded by
-                // LegacyLinker.
-                assert !isInZipFile() || Build.VERSION.SDK_INT >= VERSION_CODES.M;
-
-                // Load libraries using the system linker.
-                for (String library : NativeLibraries.LIBRARIES) {
-                    try {
-                        if (!isInZipFile()) {
-                            // The extract and retry logic isn't needed because this path is used
-                            // only for local development.
-                            System.loadLibrary(library);
-                        } else {
-                            // Load directly from the APK.
-                            boolean is64Bit = ApiHelperForM.isProcess64Bit();
-                            String zipFilePath = appInfo.sourceDir;
-                            // In API level 23 and above, it’s possible to open a .so file directly
-                            // from the APK of the path form
-                            // "my_zip_file.zip!/libs/libstuff.so". See:
-                            // https://android.googlesource.com/platform/bionic/+/master/android-changes-for-ndk-developers.md#opening-shared-libraries-directly-from-an-apk
-                            String libraryName = zipFilePath + "!/"
-                                    + makeLibraryPathInZipFile(library, true, is64Bit);
-                            Log.i(TAG, "libraryName: " + libraryName);
-                            System.load(libraryName);
-                        }
-                    } catch (UnsatisfiedLinkError e) {
-                        Log.e(TAG, "Unable to load library: " + library);
-                        throw(e);
-                    }
-                }
+                loadWithSystemLinkerAlreadyLocked(appInfo);
             }
 
             long stopTime = SystemClock.uptimeMillis();
             mLibraryLoadTimeMs = stopTime - startTime;
-            Log.i(TAG, "Time to load native libraries: %d ms (timestamps %d-%d)",
-                    mLibraryLoadTimeMs, startTime % 10000, stopTime % 10000);
+            Log.i(TAG, "Time to load native libraries: %d ms", mLibraryLoadTimeMs);
 
             mLoaded = true;
         } catch (UnsatisfiedLinkError e) {
+            // Callers typically call System.exit() when catching this exception, make sure that it
+            // doesn't get lost.
+            Log.e(TAG, "Unable to load library.", e);
             throw new ProcessInitException(LoaderErrors.LOADER_ERROR_NATIVE_LIBRARY_LOAD_FAILED, e);
         }
     }
@@ -453,7 +449,8 @@
         // to the /data directory. The libraries can still be accessed directly by the Chromium
         // linker from the APK.
         String crazyPart = crazyPrefix ? "crazy." : "";
-        return String.format("lib/%s/%s%s", cpuAbi, crazyPart, System.mapLibraryName(library));
+        return String.format(
+                Locale.US, "lib/%s/%s%s", cpuAbi, crazyPart, System.mapLibraryName(library));
     }
 
     // The WebView requires the Command Line to be switched over before
@@ -508,9 +505,9 @@
 
         // Check that the version of the library we have loaded matches the version we expect
         Log.i(TAG,
-                String.format("Expected native library version number \"%s\", "
-                                + "actual native library version number \"%s\"",
-                        NativeLibraries.sVersionNumber, LibraryLoaderJni.get().getVersionNumber()));
+                "Expected native library version number \"%s\", "
+                        + "actual native library version number \"%s\"",
+                NativeLibraries.sVersionNumber, LibraryLoaderJni.get().getVersionNumber());
         if (!NativeLibraries.sVersionNumber.equals(LibraryLoaderJni.get().getVersionNumber())) {
             throw new ProcessInitException(LoaderErrors.LOADER_ERROR_NATIVE_LIBRARY_WRONG_VERSION);
         }
@@ -558,11 +555,10 @@
 
     // Called after all native initializations are complete.
     public void onBrowserNativeInitializationComplete() {
+        if (!useChromiumLinker()) return;
         synchronized (mLock) {
-            if (useChromiumLinker()) {
-                RecordHistogram.recordTimesHistogram(
-                        "ChromiumAndroidLinker.BrowserLoadTime", mLibraryLoadTimeMs);
-            }
+            RecordHistogram.recordTimesHistogram(
+                    "ChromiumAndroidLinker.BrowserLoadTime", mLibraryLoadTimeMs);
         }
     }
 
@@ -571,10 +567,9 @@
     // time they are captured. This function stores a pending value, so that a later call to
     // RecordChromiumAndroidLinkerRendererHistogram() will record it correctly.
     public void registerRendererProcessHistogram() {
+        if (!useChromiumLinker()) return;
         synchronized (mLock) {
-            if (useChromiumLinker()) {
-                LibraryLoaderJni.get().recordRendererLibraryLoadTime(mLibraryLoadTimeMs);
-            }
+            LibraryLoaderJni.get().recordRendererLibraryLoadTime(mLibraryLoadTimeMs);
         }
     }
 
@@ -639,8 +634,9 @@
             try {
                 zipFile = new ZipFile(apkPath);
                 ZipEntry zipEntry = zipFile.getEntry(pathWithinApk);
-                if (zipEntry == null)
+                if (zipEntry == null) {
                     throw new RuntimeException("Cannot find ZipEntry" + pathWithinApk);
+                }
                 InputStream inputStream = zipFile.getInputStream(zipEntry);
 
                 FileUtils.copyStreamToFile(inputStream, libraryFile);
diff --git a/base/android/java/src/org/chromium/base/library_loader/Linker.java b/base/android/java/src/org/chromium/base/library_loader/Linker.java
index 92570e27..cfb70b3 100644
--- a/base/android/java/src/org/chromium/base/library_loader/Linker.java
+++ b/base/android/java/src/org/chromium/base/library_loader/Linker.java
@@ -5,7 +5,6 @@
 package org.chromium.base.library_loader;
 
 import android.annotation.SuppressLint;
-import android.os.Build;
 import android.os.Bundle;
 import android.os.Parcel;
 import android.os.ParcelFileDescriptor;
@@ -217,11 +216,10 @@
      * fails to provide the library, the system linker is used as a fallback.
      *
      * LegacyLinker can run on all Android releases, but is unused on P+ as it may cause issues.
-     * LegacyLinker is preferred on N- because it does not write the shared RELRO to disk at
+     * LegacyLinker is preferred on M- because it does not write the shared RELRO to disk at
      * almost every cold startup.
      *
-     * Finally, ModernLinker is used on Android N+ when installing Chrome{,Modern}.apk, which is not
-     * a configuration shipped through the play store, but kept here temporarily to ease testing.
+     * Finally, ModernLinker is used on Android Q+ with Trichrome.
      *
      * @return the Linker implementation instance.
      */
@@ -240,10 +238,7 @@
         // regular library loading. See http://crbug.com/980304 as example.
         //
         // This is only called if LibraryLoader.useChromiumLinker() returns true, meaning this is
-        // either Chrome{,Modern} or the linker tests.
-        //
-        // TODO(lizeb): Also check that this is a local build to avoid shipping ModernLinker
-        // accidentally.
+        // either Chrome{,Modern}, the linker tests or Trichrome.
         synchronized (sLock) {
             if (sSingleton == null) {
                 // With incremental install, it's important to fall back to the "normal"
@@ -252,9 +247,7 @@
                         ContextUtils.getApplicationContext().getApplicationInfo().className;
                 boolean isIncrementalInstall =
                         appClass != null && appClass.contains("incrementalinstall");
-                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && !isIncrementalInstall) {
-                    // This is not hit for shipping versions, as the Chrome flavor on N+ is
-                    // MonoChrome, and this requires both Chrome.apk and N+.
+                if (NativeLibraries.sUseModernLinker && !isIncrementalInstall) {
                     sSingleton = new ModernLinker();
                 } else {
                     sSingleton = new LegacyLinker();
@@ -306,22 +299,22 @@
     }
 
     /** Tell the linker about the APK path, if the library is loaded from the APK. */
-    abstract void setApkFilePath(String path);
+    void setApkFilePath(String path) {}
 
     /**
      * Load a native shared library with the Chromium linker. Note the crazy linker treats
      * libraries and files as equivalent, so you can only open one library in a given zip
      * file. The library must not be the Chromium linker library.
      *
-     * @param libFilePath The path of the library (possibly in the zip file).
+     * @param library The library name to load.
      * @param isFixesAddressPermitted Whether the library can be loaded at a fixed address for RELRO
      * sharing.
      */
-    final void loadLibrary(String libFilePath, boolean isFixedAddressPermitted) {
-        if (DEBUG) Log.i(TAG, "loadLibrary: %s", libFilePath);
-        assert !libFilePath.equals(LINKER_JNI_LIBRARY);
+    final void loadLibrary(String library, boolean isFixedAddressPermitted) {
+        if (DEBUG) Log.i(TAG, "loadLibrary: %s", library);
+        assert !library.equals(LINKER_JNI_LIBRARY);
         synchronized (sLock) {
-            loadLibraryImplLocked(libFilePath, isFixedAddressPermitted);
+            loadLibraryImplLocked(library, isFixedAddressPermitted);
         }
     }
 
diff --git a/base/android/java/src/org/chromium/base/library_loader/ModernLinker.java b/base/android/java/src/org/chromium/base/library_loader/ModernLinker.java
index 656b530..c0e62f4 100644
--- a/base/android/java/src/org/chromium/base/library_loader/ModernLinker.java
+++ b/base/android/java/src/org/chromium/base/library_loader/ModernLinker.java
@@ -23,32 +23,24 @@
     // Log tag for this class.
     private static final String TAG = "ModernLinker";
 
-    @GuardedBy("sLock")
-    private boolean mLoadFromApk;
-
     ModernLinker() {}
 
     @Override
-    void setApkFilePath(String path) {
-        synchronized (sLock) {
-            mLoadFromApk = true;
-        }
-    }
-
-    @Override
     @GuardedBy("sLock")
-    void loadLibraryImplLocked(String libFilePath, boolean isFixedAddressPermitted) {
-        if (DEBUG) Log.i(TAG, "loadLibraryImpl: " + libFilePath + ", " + isFixedAddressPermitted);
+    void loadLibraryImplLocked(String library, boolean isFixedAddressPermitted) {
+        // We expect to load monochrome, if it's not the case, log.
+        if (!"monochrome".equals(library) || DEBUG) {
+            Log.i(TAG, "loadLibraryImpl: %s, %b", library, isFixedAddressPermitted);
+        }
 
         ensureInitializedLocked();
         assert mState == State.INITIALIZED; // Only one successful call.
 
+        String libFilePath = System.mapLibraryName(library);
         boolean loadNoRelro = !isFixedAddressPermitted;
         boolean provideRelro = isFixedAddressPermitted && mInBrowserProcess;
         long loadAddress = isFixedAddressPermitted ? mBaseLoadAddress : 0;
 
-        if (mLoadFromApk) libFilePath = "crazy." + libFilePath;
-
         if (loadNoRelro) {
             // Cannot use System.loadLibrary(), as the library name is transformed (adding the "lib"
             // prefix and ".so" suffix), making the name incorrect.
@@ -85,6 +77,20 @@
             mLibInfo = null;
             mState = State.DONE;
         }
+
+        // Load the library a second time, in order to keep using lazy JNI registration.  When
+        // loading the library with the Chromium linker, ART doesn't know about our library, so
+        // cannot resolve JNI methods lazily. Loading the library a second time makes sure it
+        // knows about us.
+        //
+        // This is not wasteful though, as libraries are reference-counted, and as a consequence the
+        // library is not really loaded a second time, and we keep relocation sharing.
+        try {
+            System.loadLibrary(library);
+        } catch (UnsatisfiedLinkError e) {
+            throw new UnsatisfiedLinkError(
+                    "Unable to load the library a second time with the system linker");
+        }
     }
 
     @GuardedBy("sLock")
diff --git a/base/android/linker/modern_linker_jni.cc b/base/android/linker/modern_linker_jni.cc
index 75091df6..62139a5 100644
--- a/base/android/linker/modern_linker_jni.cc
+++ b/base/android/linker/modern_linker_jni.cc
@@ -96,8 +96,9 @@
   android_dlextinfo ext = dlextinfo->extinfo;
   LOG_INFO(
       "android_dlopen_ext:"
-      " flags=0x%llx, reserved_addr=%p, reserved_size=%d, relro_fd=%d",
-      static_cast<long long>(ext.flags), ext.reserved_addr,
+      " filename=%s, flags=0x%llx, reserved_addr=%p, reserved_size=%d,"
+      " relro_fd=%d",
+      filename, static_cast<long long>(ext.flags), ext.reserved_addr,
       static_cast<int>(ext.reserved_size), ext.relro_fd);
 
   *status = android_dlopen_ext(filename, flag, &ext);
@@ -341,6 +342,7 @@
 // Calls JNI_OnLoad() in the library referenced by |handle|.
 // Returns true for success.
 bool CallJniOnLoad(void* handle) {
+  LOG_INFO("Entering");
   // Locate and if found then call the loaded library's JNI_OnLoad() function.
   using JNI_OnLoadFunctionPtr = int (*)(void* vm, void* reserved);
   auto jni_onload =
@@ -353,6 +355,7 @@
       return false;
     }
   }
+
   return true;
 }
 
@@ -394,7 +397,7 @@
   ResizeMapping(mapping);
   if (!CallJniOnLoad(handle)) {
     unlink(relocations_path.c_str());
-    return false;
+    return -1;
   }
   relro_fd.ReopenReadOnly(relocations_path);
   return relro_fd.Release();
diff --git a/base/util/memory_pressure/multi_source_memory_pressure_monitor.cc b/base/util/memory_pressure/multi_source_memory_pressure_monitor.cc
index 867bd32..14b61807 100644
--- a/base/util/memory_pressure/multi_source_memory_pressure_monitor.cc
+++ b/base/util/memory_pressure/multi_source_memory_pressure_monitor.cc
@@ -73,4 +73,10 @@
   system_evaluator_.reset();
 }
 
+void MultiSourceMemoryPressureMonitor::SetSystemEvaluator(
+    std::unique_ptr<SystemMemoryPressureEvaluator> evaluator) {
+  DCHECK(!system_evaluator_);
+  system_evaluator_ = std::move(evaluator);
+}
+
 }  // namespace util
diff --git a/base/util/memory_pressure/multi_source_memory_pressure_monitor.h b/base/util/memory_pressure/multi_source_memory_pressure_monitor.h
index 55aab52f..ed08b6d8 100644
--- a/base/util/memory_pressure/multi_source_memory_pressure_monitor.h
+++ b/base/util/memory_pressure/multi_source_memory_pressure_monitor.h
@@ -44,6 +44,9 @@
 
   void ResetSystemEvaluatorForTesting();
 
+  void SetSystemEvaluator(
+      std::unique_ptr<SystemMemoryPressureEvaluator> evaluator);
+
  protected:
   void StartMetricsTimer();
   void StopMetricsTimer();
diff --git a/base/util/memory_pressure/system_memory_pressure_evaluator_mac.cc b/base/util/memory_pressure/system_memory_pressure_evaluator_mac.cc
index f5f62ef..3b7ab5eb 100644
--- a/base/util/memory_pressure/system_memory_pressure_evaluator_mac.cc
+++ b/base/util/memory_pressure/system_memory_pressure_evaluator_mac.cc
@@ -16,6 +16,7 @@
 #include "base/logging.h"
 #include "base/mac/mac_util.h"
 #include "base/memory/memory_pressure_monitor.h"
+#include "base/threading/sequenced_task_runner_handle.h"
 
 // Redeclare for partial 10.9 availability.
 DISPATCH_EXPORT const struct dispatch_source_type_s
@@ -46,11 +47,23 @@
           0,
           DISPATCH_MEMORYPRESSURE_WARN | DISPATCH_MEMORYPRESSURE_CRITICAL |
               DISPATCH_MEMORYPRESSURE_NORMAL,
-          dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0))) {
+          dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0))),
+      weak_ptr_factory_(this) {
+  // WeakPtr needed because there is no guarantee that |this| is still be alive
+  // when the task posted to the TaskRunner or event handler runs.
+  base::WeakPtr<SystemMemoryPressureEvaluator> weak_this =
+      weak_ptr_factory_.GetWeakPtr();
+  scoped_refptr<base::TaskRunner> task_runner =
+      base::SequencedTaskRunnerHandle::Get();
+
   // Attach an event handler to the memory pressure event source.
   if (memory_level_event_source_.get()) {
     dispatch_source_set_event_handler(memory_level_event_source_, ^{
-      OnMemoryPressureChanged(memory_level_event_source_.get());
+      task_runner->PostTask(
+          FROM_HERE,
+          base::BindRepeating(
+              &SystemMemoryPressureEvaluator::OnMemoryPressureChanged,
+              weak_this));
     });
 
     // Start monitoring the event source.
@@ -84,8 +97,7 @@
       GetMacMemoryPressureLevel()));
 }
 
-void SystemMemoryPressureEvaluator::OnMemoryPressureChanged(
-    dispatch_source_s* event_source) {
+void SystemMemoryPressureEvaluator::OnMemoryPressureChanged() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   // The OS has sent a notification that the memory pressure level has changed.
   // Go through the normal memory pressure level checking mechanism so that
diff --git a/base/util/memory_pressure/system_memory_pressure_evaluator_mac.h b/base/util/memory_pressure/system_memory_pressure_evaluator_mac.h
index 4d1320d2..751784c 100644
--- a/base/util/memory_pressure/system_memory_pressure_evaluator_mac.h
+++ b/base/util/memory_pressure/system_memory_pressure_evaluator_mac.h
@@ -8,7 +8,6 @@
 #include <CoreFoundation/CFDate.h>
 #include <dispatch/dispatch.h>
 
-#include "base/base_export.h"
 #include "base/mac/scoped_cftyperef.h"
 #include "base/mac/scoped_dispatch_object.h"
 #include "base/macros.h"
@@ -45,13 +44,15 @@
   void UpdatePressureLevel();
 
   // Run |dispatch_callback| on memory pressure notifications from the OS.
-  void OnMemoryPressureChanged(dispatch_source_s* event_source);
+  void OnMemoryPressureChanged();
 
   // The dispatch source that generates memory pressure change notifications.
   base::ScopedDispatchObject<dispatch_source_t> memory_level_event_source_;
 
   SEQUENCE_CHECKER(sequence_checker_);
 
+  base::WeakPtrFactory<SystemMemoryPressureEvaluator> weak_ptr_factory_;
+
   DISALLOW_COPY_AND_ASSIGN(SystemMemoryPressureEvaluator);
 };
 
diff --git a/base/util/memory_pressure/system_memory_pressure_evaluator_mac_unittest.cc b/base/util/memory_pressure/system_memory_pressure_evaluator_mac_unittest.cc
index 9561b1e..70f24b51 100644
--- a/base/util/memory_pressure/system_memory_pressure_evaluator_mac_unittest.cc
+++ b/base/util/memory_pressure/system_memory_pressure_evaluator_mac_unittest.cc
@@ -73,6 +73,8 @@
 }
 
 TEST(MacSystemMemoryPressureEvaluatorTest, CurrentMemoryPressure) {
+  base::test::TaskEnvironment task_environment(
+      base::test::TaskEnvironment::MainThreadType::UI);
   TestSystemMemoryPressureEvaluator evaluator(nullptr);
 
   base::MemoryPressureListener::MemoryPressureLevel memory_pressure =
@@ -87,6 +89,8 @@
 }
 
 TEST(MacSystemMemoryPressureEvaluatorTest, MemoryPressureConversion) {
+  base::test::TaskEnvironment task_environment(
+      base::test::TaskEnvironment::MainThreadType::UI);
   TestSystemMemoryPressureEvaluator evaluator(nullptr);
 
   evaluator.macos_pressure_level_for_testing_ = DISPATCH_MEMORYPRESSURE_NORMAL;
diff --git a/build/android/gyp/apkbuilder.py b/build/android/gyp/apkbuilder.py
index b3996c4..a6a5dd95 100755
--- a/build/android/gyp/apkbuilder.py
+++ b/build/android/gyp/apkbuilder.py
@@ -203,20 +203,23 @@
 
 def _AddNativeLibraries(out_apk, native_libs, android_abi, uncompress):
   """Add native libraries to APK."""
-  has_crazy_linker = any('android_linker' in os.path.basename(p)
-                         for p in native_libs)
+  has_crazy_linker = any(
+      'android_linker' in os.path.basename(p) for p in native_libs)
+  has_monochrome = any('monochrome' in os.path.basename(p) for p in native_libs)
+
   for path in native_libs:
     basename = os.path.basename(path)
-
     compress = None
-    if (uncompress and os.path.splitext(basename)[1] == '.so'
-        and 'android_linker' not in basename
-        and (not has_crazy_linker or 'clang_rt' not in basename)
-        and (not has_crazy_linker or 'crashpad_handler' not in basename)):
-      compress = False
-      # Add prefix to prevent android install from extracting upon install.
-      if has_crazy_linker:
-        basename = 'crazy.' + basename
+    if uncompress and os.path.splitext(basename)[1] == '.so':
+      # Trichrome
+      if has_crazy_linker and has_monochrome:
+        compress = False
+      elif ('android_linker' not in basename
+            and (not has_crazy_linker or 'clang_rt' not in basename)
+            and (not has_crazy_linker or 'crashpad_handler' not in basename)):
+        compress = False
+        if has_crazy_linker and not has_monochrome:
+          basename = 'crazy.' + basename
 
     apk_path = 'lib/%s/%s' % (android_abi, basename)
     build_utils.AddToZipHermetic(out_apk,
diff --git a/build/android/gyp/native_libraries_template.py b/build/android/gyp/native_libraries_template.py
index 52ba0872..0a70d95 100644
--- a/build/android/gyp/native_libraries_template.py
+++ b/build/android/gyp/native_libraries_template.py
@@ -19,6 +19,7 @@
     public static {MAYBE_FINAL}boolean sUseLinker{USE_LINKER};
     public static {MAYBE_FINAL}boolean sUseLibraryInZipFile{USE_LIBRARY_IN_ZIP_FILE};
     public static {MAYBE_FINAL}boolean sEnableLinkerTests{ENABLE_LINKER_TESTS};
+    public static {MAYBE_FINAL}boolean sUseModernLinker{USE_MODERN_LINKER};
 
     // This is the list of native libraries to be loaded (in the correct order)
     // by LibraryLoader.java.
diff --git a/build/android/gyp/write_native_libraries_java.py b/build/android/gyp/write_native_libraries_java.py
index 1bd542f..244113a1 100755
--- a/build/android/gyp/write_native_libraries_java.py
+++ b/build/android/gyp/write_native_libraries_java.py
@@ -30,6 +30,8 @@
   parser.add_argument(
       '--enable-chromium-linker-tests', action='store_true', help='Run tests.')
   parser.add_argument(
+      '--use-modern-linker', action='store_true', help='To use ModernLinker.')
+  parser.add_argument(
       '--native-libraries-list', help='File with list of native libraries.')
   parser.add_argument(
       '--version-number',
@@ -77,6 +79,7 @@
       'USE_LINKER': bool_str(options.enable_chromium_linker),
       'USE_LIBRARY_IN_ZIP_FILE': bool_str(options.load_library_from_apk),
       'ENABLE_LINKER_TESTS': bool_str(options.enable_chromium_linker_tests),
+      'USE_MODERN_LINKER': bool_str(options.use_modern_linker),
       'LIBRARIES': ','.join(native_libraries_list),
       'VERSION_NUMBER': options.version_number,
       'CPU_FAMILY': options.cpu_family,
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni
index 412864d..7e8306a 100644
--- a/build/config/android/internal_rules.gni
+++ b/build/config/android/internal_rules.gni
@@ -786,6 +786,19 @@
     } else {
       wrapper_script = "$root_build_dir/bin/run_${_test_name}"
     }
+
+    if (defined(invoker.modules)) {
+      foreach(module, invoker.modules) {
+        executable_args += [
+          "--module",
+          module,
+        ]
+      }
+    }
+
+    if (defined(invoker.command_line_args)) {
+      executable_args += invoker.command_line_args
+    }
   }
 }
 
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni
index ae6ad99..c99d782 100644
--- a/build/config/android/rules.gni
+++ b/build/config/android/rules.gni
@@ -785,6 +785,9 @@
             invoker.enable_chromium_linker_tests) {
           args += [ "--enable-chromium-linker-tests" ]
         }
+        if (defined(invoker.use_modern_linker) && invoker.use_modern_linker) {
+          args += [ "--use-modern-linker" ]
+        }
       }
     }
   }
@@ -2252,11 +2255,14 @@
 
     _use_chromium_linker =
         defined(invoker.use_chromium_linker) && invoker.use_chromium_linker
+    _use_modern_linker =
+        defined(invoker.use_modern_linker) && invoker.use_modern_linker
 
     _load_library_from_apk =
         defined(invoker.load_library_from_apk) && invoker.load_library_from_apk
 
     assert(_use_chromium_linker || true)  # Mark as used.
+    assert(_use_modern_linker || true)  # Mark as used.
     assert(!_load_library_from_apk || _use_chromium_linker,
            "load_library_from_apk requires use_chromium_linker")
 
@@ -2660,6 +2666,7 @@
         }
         enable_chromium_linker = _use_chromium_linker
         load_library_from_apk = _load_library_from_apk
+        use_modern_linker = _use_modern_linker
         use_final_fields = true
       }
       _srcjar_deps += [ ":${_template_name}__native_libraries" ]
@@ -3367,6 +3374,7 @@
                                "generate_buildconfig_java",
                                "generate_final_jni",
                                "input_jars_paths",
+                               "use_modern_linker",
                                "jacoco_never_instrument",
                                "java_files",
                                "javac_args",
@@ -3559,10 +3567,13 @@
   #   The following args are optional:
   #   apk_under_test: The target being tested.
   #   additional_apks: Additional targets to install on device.
+  #   command_line_args: Command line arguments to set for APK under test.
   #   data: List of runtime data file dependencies.
   #   data_deps: List of non-linked dependencies.
   #   deps: List of private dependencies.
   #   ignore_all_data_deps: Don't build data_deps and additional_apks.
+  #   modules: Extra dynamic feature modules to install for test target. Can
+  #     only be used if |apk_under_test| is an Android app bundle.
   #   never_incremental: Disable incremental builds.
   #   proguard_enabled: Enable proguard
   #   public_deps: List of public dependencies
@@ -3602,10 +3613,12 @@
                                [
                                  "additional_apks",
                                  "apk_under_test",
+                                 "command_line_args",
                                  "data",
                                  "data_deps",
                                  "deps",
                                  "ignore_all_data_deps",
+                                 "modules",
                                  "proguard_enabled",
                                  "public_deps",
                                ])
@@ -3793,7 +3806,8 @@
 
   # Declare an Android instrumentation test apk with wrapper script.
   #
-  # This target creates an Android instrumentation test apk with wrapper script to run the test.
+  # This target creates an Android instrumentation test apk with wrapper script
+  # to run the test.
   #
   # Supports all variables of android_test_apk.
   template("instrumentation_test_apk") {
@@ -3807,10 +3821,12 @@
                              [
                                "additional_apks",
                                "apk_under_test",
+                               "command_line_args",
                                "data",
                                "data_deps",
                                "deps",
                                "ignore_all_data_deps",
+                               "modules",
                                "never_incremental",
                                "proguard_enabled",
                                "public_deps",
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
index 73e2707..fbd84eda 100644
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -2113,9 +2113,7 @@
   android_test_apk_name = "ChromeSmokeTest"
 }
 
-# TODO(crbug.com/989654): Add Chrome bundle as test target once the test runner
-# knows how to install bundles.
-instrumentation_test_apk("chrome_bundle_smoke_test") {
+android_test_apk("chrome_bundle_smoke_test_apk") {
   apk_name = "ChromeBundleSmokeTest"
   android_manifest =
       "javatests/src/org/chromium/chrome/test/smoke/AndroidManifest_bundle.xml"
@@ -2134,6 +2132,18 @@
   ]
 }
 
+instrumentation_test_runner("monochrome_public_bundle_smoke_test") {
+  apk_under_test = "//chrome/android:monochrome_public_bundle_apks"
+  android_test_apk = ":chrome_bundle_smoke_test_apk"
+  android_test_apk_name = "ChromeBundleSmokeTest"
+  never_incremental = true
+  modules = [ "test_dummy" ]
+  command_line_args = [
+    "--enable-test-dummy-module",
+    "--no-fre",
+  ]
+}
+
 if (defined(expected_static_initializer_count)) {
   action_with_pydeps("monochrome_static_initializers") {
     script = "//build/android/gyp/assert_static_initializers.py"
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
index 4a43870..065acfb 100644
--- a/chrome/android/chrome_java_sources.gni
+++ b/chrome/android/chrome_java_sources.gni
@@ -1234,6 +1234,7 @@
   "java/src/org/chromium/chrome/browser/permissions/PermissionDialogModel.java",
   "java/src/org/chromium/chrome/browser/permissions/PermissionDialogController.java",
   "java/src/org/chromium/chrome/browser/permissions/PermissionDialogDelegate.java",
+  "java/src/org/chromium/chrome/browser/permissions/PermissionFieldTrial.java",
   "java/src/org/chromium/chrome/browser/permissions/PermissionUmaUtil.java",
   "java/src/org/chromium/chrome/browser/photo_picker/BitmapScalerTask.java",
   "java/src/org/chromium/chrome/browser/photo_picker/BitmapUtils.java",
@@ -1468,6 +1469,7 @@
   "java/src/org/chromium/chrome/browser/signin/SyncPromoView.java",
   "java/src/org/chromium/chrome/browser/signin/UnifiedConsentServiceBridge.java",
   "java/src/org/chromium/chrome/browser/sms/SmsReceiverInfoBar.java",
+  "java/src/org/chromium/chrome/browser/sms/SmsReceiverUma.java",
   "java/src/org/chromium/chrome/browser/snackbar/BottomContainer.java",
   "java/src/org/chromium/chrome/browser/snackbar/Snackbar.java",
   "java/src/org/chromium/chrome/browser/snackbar/SnackbarCollection.java",
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceLayoutTest.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceLayoutTest.java
index 63ea0d0..74e1e5a 100644
--- a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceLayoutTest.java
+++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceLayoutTest.java
@@ -13,6 +13,7 @@
 import static org.chromium.content_public.browser.test.util.CriteriaHelper.DEFAULT_MAX_TIME_TO_POLL;
 import static org.chromium.content_public.browser.test.util.CriteriaHelper.DEFAULT_POLLING_INTERVAL;
 
+import android.animation.ValueAnimator;
 import android.graphics.Bitmap;
 import android.os.Build;
 import android.provider.Settings;
@@ -115,8 +116,11 @@
 
     @Test
     @MediumTest
+    // clang-format off
+    @Features.DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION)
     @CommandLineFlags.Add({BASE_PARAMS})
     public void testTabToGridFromLiveTab() throws InterruptedException {
+        // clang-format on
         TabSwitcher.TabListDelegate delegate =
                 mStartSurfaceLayout.getStartSurfaceForTesting().getTabListDelegate();
         assertEquals(0, delegate.getSoftCleanupDelayForTesting());
@@ -145,8 +149,11 @@
 
     @Test
     @MediumTest
+    // clang-format off
+    @Features.DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION)
     @CommandLineFlags.Add({BASE_PARAMS + "/soft-cleanup-delay/10000/cleanup-delay/10000"})
     public void testTabToGridFromLiveTabWarm() throws InterruptedException {
+        // clang-format on
         TabSwitcher.TabListDelegate delegate =
                 mStartSurfaceLayout.getStartSurfaceForTesting().getTabListDelegate();
         assertEquals(10000, delegate.getSoftCleanupDelayForTesting());
@@ -170,8 +177,11 @@
 
     @Test
     @MediumTest
+    // clang-format off
+    @Features.DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION)
     @CommandLineFlags.Add({BASE_PARAMS + "/cleanup-delay/10000"})
     public void testTabToGridFromLiveTabSoft() throws InterruptedException {
+        // clang-format on
         prepareTabs(2, NTP_URL);
         testTabToGrid(mUrl);
     }
@@ -309,6 +319,7 @@
 
     @Test
     @MediumTest
+    @Features.DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION)
     public void testGridToTabToCurrentLive() throws InterruptedException {
         prepareTabs(1, mUrl);
         testGridToTab(false, false);
@@ -316,6 +327,7 @@
 
     @Test
     @MediumTest
+    @Features.DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION)
     @DisabledTest(message = "crbug.com/986047. This works on emulators but not on real devices.")
     public void testGridToTabToCurrentLiveDetached() throws Exception {
         for (int i = 0; i < 10; i++) {
@@ -359,6 +371,7 @@
 
     @Test
     @MediumTest
+    @Features.DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION)
     public void testGridToTabToOtherLive() throws InterruptedException {
         prepareTabs(2, mUrl);
         testGridToTab(true, false);
@@ -376,6 +389,7 @@
 
     @Test
     @MediumTest
+    @Features.DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION)
     public void testGridToTabToOtherFrozen() throws InterruptedException {
         prepareTabs(2, mUrl);
         testGridToTab(true, true);
diff --git a/chrome/android/java/res/drawable-hdpi/ic_dialer_not_found_red_40dp.png b/chrome/android/java/res/drawable-hdpi/ic_dialer_not_found_red_40dp.png
new file mode 100644
index 0000000..db21547
--- /dev/null
+++ b/chrome/android/java/res/drawable-hdpi/ic_dialer_not_found_red_40dp.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/ic_dialer_not_found_red_40dp.png b/chrome/android/java/res/drawable-mdpi/ic_dialer_not_found_red_40dp.png
new file mode 100644
index 0000000..ab12141
--- /dev/null
+++ b/chrome/android/java/res/drawable-mdpi/ic_dialer_not_found_red_40dp.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/ic_dialer_not_found_red_40dp.png b/chrome/android/java/res/drawable-xhdpi/ic_dialer_not_found_red_40dp.png
new file mode 100644
index 0000000..c7cb3cd6
--- /dev/null
+++ b/chrome/android/java/res/drawable-xhdpi/ic_dialer_not_found_red_40dp.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xxhdpi/ic_dialer_not_found_red_40dp.png b/chrome/android/java/res/drawable-xxhdpi/ic_dialer_not_found_red_40dp.png
new file mode 100644
index 0000000..6c49901
--- /dev/null
+++ b/chrome/android/java/res/drawable-xxhdpi/ic_dialer_not_found_red_40dp.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xxxhdpi/ic_dialer_not_found_red_40dp.png b/chrome/android/java/res/drawable-xxxhdpi/ic_dialer_not_found_red_40dp.png
new file mode 100644
index 0000000..7a85b99
--- /dev/null
+++ b/chrome/android/java/res/drawable-xxxhdpi/ic_dialer_not_found_red_40dp.png
Binary files differ
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
index a1e43aea..278e30a5 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
@@ -302,6 +302,7 @@
             "PredictivePrefetchingAllowedOnAllConnectionTypes";
     public static final String PRIORITIZE_BOOTSTRAP_TASKS = "PrioritizeBootstrapTasks";
     public static final String QUERY_IN_OMNIBOX = "QueryInOmnibox";
+    public static final String QUIET_NOTIFICATION_PROMPTS = "QuietNotificationPrompts";
     public static final String REACHED_CODE_PROFILER = "ReachedCodeProfiler";
     public static final String READER_MODE_IN_CCT = "ReaderModeInCCT";
     public static final String REMOVE_NAVIGATION_HISTORY = "RemoveNavigationHistory";
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
index 309e5da..a84b2c6 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -87,6 +87,7 @@
 import org.chromium.chrome.browser.incognito.IncognitoUtils;
 import org.chromium.chrome.browser.infobar.DataReductionPromoInfoBar;
 import org.chromium.chrome.browser.language.LanguageAskPrompt;
+import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
 import org.chromium.chrome.browser.locale.LocaleManager;
 import org.chromium.chrome.browser.metrics.ActivityStopMetrics;
 import org.chromium.chrome.browser.metrics.LaunchMetrics;
@@ -285,6 +286,9 @@
      */
     private boolean mCreatedTabOnStartup;
 
+    // Whether or not the initial tab is being created.
+    private boolean mPendingInitialTabCreation;
+
     /**
      *  Keeps track of the pref for the last time since this activity was stopped.
      */
@@ -983,7 +987,9 @@
         mMainIntentMetrics.logLaunchBehavior();
         super.onStartWithNative();
 
-        setInitialOverviewState();
+        // Don't call setInitialOverviewState if we're waiting for the tab's creation or we risk
+        // showing a glimpse of the tab selector during start up.
+        if (!mPendingInitialTabCreation) setInitialOverviewState();
 
         if (isMainIntentFromLauncher(getIntent()) && isInOverviewMode()) {
             RecordUserAction.record("MobileStartup.UserEnteredTabSwitcher");
@@ -1237,6 +1243,8 @@
                 // If homepage URI is not determined, due to PartnerBrowserCustomizations provider
                 // async reading, then create a tab at the async reading finished. If it takes
                 // too long, just create NTP.
+
+                mPendingInitialTabCreation = true;
                 PartnerBrowserCustomizations.setOnInitializeAsyncFinished(
                         () -> {
                             mMainIntentMetrics.setIgnoreEvents(true);
@@ -1252,10 +1260,18 @@
         }
     }
 
+    private boolean hasStartWithNativeBeenCalled() {
+        int activity_state = getLifecycleDispatcher().getCurrentActivityState();
+        return activity_state == ActivityLifecycleDispatcher.ActivityState.STARTED_WITH_NATIVE
+                || activity_state == ActivityLifecycleDispatcher.ActivityState.RESUMED_WITH_NATIVE;
+    }
+
     /**
      * Create an initial tab for cold start without restored tabs.
      */
     private void createInitialTab() {
+        mPendingInitialTabCreation = false;
+
         // If the grid tab switcher is enabled and the tab switcher will be shown on start,
         //  do not create a new tab. With the grid, creating a new tab is now a one tap action.
         if (shouldShowTabSwitcherOnStart() && FeatureUtilities.isGridTabSwitcherEnabled()) return;
@@ -1276,6 +1292,10 @@
         }
 
         getTabCreator(false).launchUrl(url, TabLaunchType.FROM_CHROME_UI);
+
+        // If we didn't call setInitialOverviewState() in startWithNative() because
+        // mPendingInitialTabCreation was true then do so now.
+        if (hasStartWithNativeBeenCalled()) setInitialOverviewState();
     }
 
     @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
index 89ba5ac..77c35d8 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
@@ -209,7 +209,7 @@
                     "MobileDownload.ContextMenu.SaveImage", type, TypeSaveImage.NUM_ENTRIES);
         }
 
-        // Note: these values must match the ContextMenuSaveImage enum in enums.xml.
+        // Note: these values must match the ContextMenuLensSupportStatus enum in enums.xml.
         // Only add new values at the end, right before NUM_ENTRIES.
         @IntDef({LensSupportStatus.LENS_SUPPORTED, LensSupportStatus.NON_GOOGLE_SEARCH_ENGINE,
                 LensSupportStatus.ACTIVITY_NOT_ACCESSIBLE, LensSupportStatus.OUT_OF_DATE,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarCompactLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarCompactLayout.java
index d6be09c6..1d4cb22 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarCompactLayout.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarCompactLayout.java
@@ -139,12 +139,11 @@
             return this;
         }
 
-        /** The link will be appended after the main message. */
-        public MessageBuilder withLink(@StringRes int textResId, Callback<View> onTapCallback) {
+        /** Appends a link after the main message, its displayed text being the specified string. */
+        public MessageBuilder withLink(CharSequence label, Callback<View> onTapCallback) {
             assert mLink == null;
 
             final Resources resources = mLayout.getResources();
-            String label = resources.getString(textResId);
             SpannableString link = new SpannableString(label);
             link.setSpan(new NoUnderlineClickableSpan(resources, onTapCallback), 0, label.length(),
                     Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
@@ -153,6 +152,16 @@
             return this;
         }
 
+        /**
+         * Appends a link after the main message, its displayed text being constructed from the
+         * given resource ID.
+         */
+        public MessageBuilder withLink(@StringRes int textResId, Callback<View> onTapCallback) {
+            final Resources resources = mLayout.getResources();
+            String label = resources.getString(textResId);
+            return withLink(label, onTapCallback);
+        }
+
         /** Finalizes the message view as set up in the builder and inserts it into the layout. */
         public void buildAndInsert() {
             mLayout.addContent(build(), 1f);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/PermissionInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/PermissionInfoBar.java
index 7f18c88..4804232 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/PermissionInfoBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/PermissionInfoBar.java
@@ -4,12 +4,15 @@
 
 package org.chromium.chrome.browser.infobar;
 
-import android.graphics.Bitmap;
+import android.os.Bundle;
 
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ResourceId;
 import org.chromium.chrome.browser.permissions.AndroidPermissionRequester;
+import org.chromium.chrome.browser.preferences.PreferencesLauncher;
+import org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences;
+import org.chromium.chrome.browser.preferences.website.SiteSettingsCategory;
 import org.chromium.chrome.browser.tab.Tab;
 
 /**
@@ -24,18 +27,90 @@
     /** The content settings types corresponding to the permission requested in this infobar. */
     protected int[] mContentSettingsTypes;
 
+    /** Whether the last clicked button was the "Manage" (secondary) button. */
+    protected boolean mManageButtonLastClicked;
+
+    /** Whether the infobar should be shown as a compact mini-infobar or a classic expanded one. */
+    private boolean mIsExpanded;
+
+    /** The text of the link shown in the compact state. */
+    private String mCompactLinkText;
+
+    /** The message text in the compact state. */
+    private String mCompactMessage;
+
+    /** The secondary text shown below the message in the expanded state. */
+    private String mDescription;
+
     protected PermissionInfoBar(Tab tab, int[] contentSettingsTypes, int iconDrawableId,
-            Bitmap iconBitmap, String message, String linkText, String primaryButtonText,
-            String secondaryButtonText) {
-        super(iconDrawableId, R.color.infobar_icon_drawable_color, iconBitmap, message, linkText,
-                primaryButtonText, secondaryButtonText);
+            String compactMessage, String compactLinkText, String message, String description,
+            String primaryButtonText, String secondaryButtonText) {
+        super(iconDrawableId, R.color.infobar_icon_drawable_color, null /* iconBitmap */, message,
+                null /* linkText */, primaryButtonText, secondaryButtonText);
         mTab = tab;
         mContentSettingsTypes = contentSettingsTypes;
+        mManageButtonLastClicked = false;
+        mIsExpanded = false;
+        mCompactLinkText = compactLinkText;
+        mCompactMessage = compactMessage;
+        mDescription = description;
+    }
+
+    @Override
+    protected boolean usesCompactLayout() {
+        return !mIsExpanded;
+    }
+
+    @Override
+    protected void createCompactLayoutContent(InfoBarCompactLayout layout) {
+        new InfoBarCompactLayout.MessageBuilder(layout)
+                .withText(mCompactMessage)
+                .withLink(mCompactLinkText, view -> onLinkClicked())
+                .buildAndInsert();
+    }
+
+    @Override
+    public boolean areControlsEnabled() {
+        // The controls need to be enbled after the user clicks `manage` since they will return to
+        // the page and the infobar still needs to be kept active.
+        return super.areControlsEnabled() || mManageButtonLastClicked;
+    }
+
+    @Override
+    public void onButtonClicked(final boolean isPrimaryButton) {
+        mManageButtonLastClicked = !isPrimaryButton;
+        if (getContext() == null) {
+            onButtonClickedInternal(isPrimaryButton);
+            return;
+        }
+
+        if (isPrimaryButton) {
+            // requestAndroidPermissions will call back into this class to finalize the action if it
+            // returns true.
+            if (AndroidPermissionRequester.requestAndroidPermissions(
+                        mTab, mContentSettingsTypes.clone(), this)) {
+                return;
+            }
+        } else {
+            launchNotificationsSettingsPage();
+        }
+        onButtonClickedInternal(isPrimaryButton);
+    }
+
+    @Override
+    public void onLinkClicked() {
+        if (!mIsExpanded) {
+            mIsExpanded = true;
+            replaceView(createView());
+        }
+
+        super.onLinkClicked();
     }
 
     @Override
     public void createContent(InfoBarLayout layout) {
         super.createContent(layout);
+        layout.getMessageLayout().addDescription(mDescription);
     }
 
     @Override
@@ -48,44 +123,40 @@
         onCloseButtonClicked();
     }
 
-    @Override
-    public void onButtonClicked(final boolean isPrimaryButton) {
-        // requestAndroidPermissions will call back into this class to finalize the action if it
-        // returns true.
-        if (!isPrimaryButton || getContext() == null
-                || !AndroidPermissionRequester.requestAndroidPermissions(
-                           mTab, mContentSettingsTypes.clone(), this)) {
-            onButtonClickedInternal(isPrimaryButton);
-            return;
-        }
-    }
-
     private void onButtonClickedInternal(boolean isPrimaryButton) {
         super.onButtonClicked(isPrimaryButton);
     }
 
+    private void launchNotificationsSettingsPage() {
+        Bundle fragmentArguments = new Bundle();
+        fragmentArguments.putString(SingleCategoryPreferences.EXTRA_CATEGORY,
+                SiteSettingsCategory.preferenceKey(SiteSettingsCategory.Type.NOTIFICATIONS));
+        PreferencesLauncher.launchSettingsPage(
+                getContext(), SingleCategoryPreferences.class, fragmentArguments);
+    }
+
     /**
      * Creates and begins the process for showing a PermissionInfoBar.
      * @param tab                   The owning tab for the infobar.
+     * @param contentSettingsTypes  The list of ContentSettingTypes being requested by this infobar.
      * @param enumeratedIconId      ID corresponding to the icon that will be shown for the infobar.
      *                              The ID must have been mapped using the ResourceMapper class
      *                              before passing it to this function.
-     * @param iconBitmap            Bitmap to use if there is no equivalent Java resource for
-     *                              enumeratedIconId.
-     * @param message               Message to tell the user the purpose of the infobar.
-     * @param linkText              Link text to display in addition to the message.
+     * @param compactMessage        Message to show in the compact state.
+     * @param compactLinkText       Text of link displayed right to the message in compact state.
+     * @param message               Primary message in the extended state.
+     * @param description           Secondary message (description) in the expanded state.
      * @param buttonOk              String to display on the OK button.
-     * @param buttonCancel          String to display on the Cancel button.
-     * @param contentSettingsTypes  The list of ContentSettingTypes being requested by this infobar.
+     * @param buttonManage          String to display on the Manage button.
      */
     @CalledByNative
-    private static PermissionInfoBar create(Tab tab, int enumeratedIconId, Bitmap iconBitmap,
-            String message, String linkText, String buttonOk, String buttonCancel,
-            int[] contentSettingsTypes) {
+    private static PermissionInfoBar create(Tab tab, int[] contentSettingsTypes,
+            int enumeratedIconId, String compactMessage, String compactLinkText, String message,
+            String description, String buttonOk, String buttonManage) {
         int drawableId = ResourceId.mapToDrawableId(enumeratedIconId);
 
         PermissionInfoBar infoBar = new PermissionInfoBar(tab, contentSettingsTypes, drawableId,
-                iconBitmap, message, linkText, buttonOk, buttonCancel);
+                compactMessage, compactLinkText, message, description, buttonOk, buttonManage);
 
         return infoBar;
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationConstants.java b/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationConstants.java
index f23f448..0f873ba 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationConstants.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationConstants.java
@@ -111,6 +111,11 @@
     public static final int NOTIFICATION_ID_SHARED_CLIPBOARD_OUTGOING = 11;
 
     /**
+     * Unique identifier for ClickToCall error notification.
+     */
+    public static final int NOTIFICATION_ID_CLICK_TO_CALL_ERROR = 12;
+
+    /**
      * Separator used to separate the notification origin from additional data such as the
      * developer specified tag. This and the prefix following it need to be the same as the one
      * specified in notification_id_generator.cc.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridge.java
index 1f0c8d6..e768d26 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridge.java
@@ -36,6 +36,7 @@
 import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
 import org.chromium.chrome.browser.notifications.channels.ChannelDefinitions;
 import org.chromium.chrome.browser.notifications.channels.SiteChannelsManager;
+import org.chromium.chrome.browser.permissions.PermissionFieldTrial;
 import org.chromium.chrome.browser.preferences.PrefServiceBridge;
 import org.chromium.chrome.browser.preferences.PreferencesLauncher;
 import org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences;
@@ -548,12 +549,15 @@
                 notificationBuilder, notificationType, notificationId, origin, actions, image);
 
         // Store notification if its origin is suspended.
+        // TODO(knollr): By-pass the NotificationSuspender for non-site notifications.
         NotificationSuspender.maybeSuspendNotification(notification).then((suspended) -> {
             if (suspended) return;
             // Display notification as Chrome.
             mNotificationManager.notify(notification);
             NotificationUmaTracker.getInstance().onNotificationShown(
-                    NotificationUmaTracker.SystemNotificationType.SITES,
+                    notificationType == NotificationType.PERMISSION_REQUEST
+                            ? PermissionFieldTrial.systemNotificationTypeToUse()
+                            : NotificationUmaTracker.SystemNotificationType.SITES,
                     notification.getNotification());
         });
     }
@@ -592,7 +596,16 @@
                         .setHideLargeIcon(notificationType == NotificationType.PERMISSION_REQUEST);
 
         if (notificationType == NotificationType.PERMISSION_REQUEST) {
-            notificationBuilder.setChannelId(ChannelDefinitions.ChannelId.BROWSER);
+            @PermissionFieldTrial.UIFlavor
+            int ui_flavor = PermissionFieldTrial.uiFlavorToUse();
+
+            assert ui_flavor != PermissionFieldTrial.UIFlavor.MINI_INFOBAR;
+            assert ui_flavor != PermissionFieldTrial.UIFlavor.NONE;
+
+            // Notification priority is used before Android O instead of channel importance to
+            // determine how to display the notification.
+            notificationBuilder.setPriority(PermissionFieldTrial.notificationPriorityToUse());
+            notificationBuilder.setChannelId(PermissionFieldTrial.notificationChannelIdToUse());
         } else if (shouldSetChannelId(forWebApk)) {
             // TODO(crbug.com/773738): Channel ID should be retrieved from cache in native and
             // passed through to here with other notification parameters.
@@ -675,7 +688,9 @@
         notificationBuilder.addSettingsAction(settingsIconId, settingsTitle, pendingSettingsIntent);
 
         return notificationBuilder.build(
-                new NotificationMetadata(NotificationUmaTracker.SystemNotificationType.SITES,
+                new NotificationMetadata(notificationType == NotificationType.PERMISSION_REQUEST
+                                ? PermissionFieldTrial.systemNotificationTypeToUse()
+                                : NotificationUmaTracker.SystemNotificationType.SITES,
                         notificationId /* notificationTag */, PLATFORM_ID /* notificationId */));
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationUmaTracker.java b/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationUmaTracker.java
index 23e6435b..b18dd9c5c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationUmaTracker.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationUmaTracker.java
@@ -49,7 +49,9 @@
             SystemNotificationType.OFFLINE_CONTENT_SUGGESTION,
             SystemNotificationType.TRUSTED_WEB_ACTIVITY_SITES, SystemNotificationType.OFFLINE_PAGES,
             SystemNotificationType.SEND_TAB_TO_SELF, SystemNotificationType.UPDATES,
-            SystemNotificationType.CLICK_TO_CALL, SystemNotificationType.SHARED_CLIPBOARD})
+            SystemNotificationType.CLICK_TO_CALL, SystemNotificationType.SHARED_CLIPBOARD,
+            SystemNotificationType.PERMISSION_REQUESTS,
+            SystemNotificationType.PERMISSION_REQUESTS_HIGH})
     @Retention(RetentionPolicy.SOURCE)
     public @interface SystemNotificationType {
         int UNKNOWN = -1;
@@ -72,8 +74,10 @@
         int UPDATES = 16;
         int CLICK_TO_CALL = 17;
         int SHARED_CLIPBOARD = 18;
+        int PERMISSION_REQUESTS = 19;
+        int PERMISSION_REQUESTS_HIGH = 20;
 
-        int NUM_ENTRIES = 19;
+        int NUM_ENTRIES = 21;
     }
 
     /*
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/notifications/channels/ChannelDefinitions.java b/chrome/android/java/src/org/chromium/chrome/browser/notifications/channels/ChannelDefinitions.java
index 23a0e48f0..23eebd17 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/notifications/channels/ChannelDefinitions.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/notifications/channels/ChannelDefinitions.java
@@ -55,7 +55,8 @@
      */
     @StringDef({ChannelId.BROWSER, ChannelId.DOWNLOADS, ChannelId.INCOGNITO, ChannelId.MEDIA,
             ChannelId.SCREEN_CAPTURE, ChannelId.CONTENT_SUGGESTIONS, ChannelId.WEBAPP_ACTIONS,
-            ChannelId.SITES, ChannelId.SHARING, ChannelId.UPDATES, ChannelId.COMPLETED_DOWNLOADS})
+            ChannelId.SITES, ChannelId.SHARING, ChannelId.UPDATES, ChannelId.COMPLETED_DOWNLOADS,
+            ChannelId.PERMISSION_REQUESTS, ChannelId.PERMISSION_REQUESTS_HIGH})
     @Retention(RetentionPolicy.SOURCE)
     public @interface ChannelId {
         String BROWSER = "browser";
@@ -71,6 +72,8 @@
         String SHARING = "sharing";
         String UPDATES = "updates";
         String COMPLETED_DOWNLOADS = "completed_downloads";
+        String PERMISSION_REQUESTS = "permission_requests";
+        String PERMISSION_REQUESTS_HIGH = "permission_requests_high";
     }
 
     @StringDef({
@@ -175,6 +178,16 @@
                             NotificationManager.IMPORTANCE_LOW, ChannelGroupId.GENERAL,
                             true /* showNotificationBadges */));
 
+            map.put(ChannelId.PERMISSION_REQUESTS,
+                    new PredefinedChannel(ChannelId.PERMISSION_REQUESTS,
+                            R.string.notification_category_permission_requests,
+                            NotificationManager.IMPORTANCE_LOW, ChannelGroupId.GENERAL));
+
+            map.put(ChannelId.PERMISSION_REQUESTS_HIGH,
+                    new PredefinedChannel(ChannelId.PERMISSION_REQUESTS_HIGH,
+                            R.string.notification_category_permission_requests,
+                            NotificationManager.IMPORTANCE_HIGH, ChannelGroupId.GENERAL));
+
             MAP = Collections.unmodifiableMap(map);
             STARTUP = Collections.unmodifiableSet(startup);
         }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionFieldTrial.java b/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionFieldTrial.java
new file mode 100644
index 0000000..d112bda
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionFieldTrial.java
@@ -0,0 +1,83 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.permissions;
+
+import android.support.annotation.IntDef;
+import android.support.v4.app.NotificationCompat;
+
+import org.chromium.chrome.browser.ChromeFeatureList;
+import org.chromium.chrome.browser.notifications.NotificationUmaTracker;
+import org.chromium.chrome.browser.notifications.channels.ChannelDefinitions;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Provides Field Trial support for the permissions field trial
+ */
+public class PermissionFieldTrial {
+    // Keep in sync with "chrome/browser/permissions/permission_features.h"
+    private static final String QUIET_NOTIFICATION_PROMPTS_UI_FLAVOUR_PARAMETER_NAME = "ui_flavour";
+    private static final String QUIET_NOTIFICATION_PROMPTS_HEADS_UP_NOTIFICATION =
+            "heads_up_notification";
+    private static final String QUIET_NOTIFICATION_PROMPTS_MINI_INFOBAR = "mini_infobar";
+
+    @IntDef({UIFlavor.NONE, UIFlavor.QUIET_NOTIFICATION, UIFlavor.HEADS_UP_NOTIFICATION,
+            UIFlavor.MINI_INFOBAR})
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface UIFlavor {
+        int NONE = 0;
+        int QUIET_NOTIFICATION = 1;
+        int HEADS_UP_NOTIFICATION = 2;
+        int MINI_INFOBAR = 3;
+    }
+
+    public static @UIFlavor int uiFlavorToUse() {
+        if (!ChromeFeatureList.isEnabled(ChromeFeatureList.QUIET_NOTIFICATION_PROMPTS)) {
+            return UIFlavor.NONE;
+        }
+
+        switch (ChromeFeatureList.getFieldTrialParamByFeature(
+                ChromeFeatureList.QUIET_NOTIFICATION_PROMPTS,
+                PermissionFieldTrial.QUIET_NOTIFICATION_PROMPTS_UI_FLAVOUR_PARAMETER_NAME)) {
+            case PermissionFieldTrial.QUIET_NOTIFICATION_PROMPTS_HEADS_UP_NOTIFICATION:
+                return UIFlavor.HEADS_UP_NOTIFICATION;
+            case PermissionFieldTrial.QUIET_NOTIFICATION_PROMPTS_MINI_INFOBAR:
+                return UIFlavor.MINI_INFOBAR;
+            default:
+                return UIFlavor.QUIET_NOTIFICATION;
+        }
+    }
+
+    public static @ChannelDefinitions.ChannelId String notificationChannelIdToUse() {
+        switch (uiFlavorToUse()) {
+            case UIFlavor.QUIET_NOTIFICATION:
+                return ChannelDefinitions.ChannelId.PERMISSION_REQUESTS;
+            case UIFlavor.HEADS_UP_NOTIFICATION:
+                return ChannelDefinitions.ChannelId.PERMISSION_REQUESTS_HIGH;
+            default:
+                return ChannelDefinitions.ChannelId.BROWSER;
+        }
+    }
+
+    public static int notificationPriorityToUse() {
+        if (uiFlavorToUse() == UIFlavor.HEADS_UP_NOTIFICATION) {
+            return NotificationCompat.PRIORITY_MAX;
+        }
+
+        return NotificationCompat.PRIORITY_LOW;
+    }
+
+    public static @NotificationUmaTracker.SystemNotificationType int systemNotificationTypeToUse() {
+        switch (uiFlavorToUse()) {
+            case UIFlavor.QUIET_NOTIFICATION:
+                return NotificationUmaTracker.SystemNotificationType.PERMISSION_REQUESTS;
+            case UIFlavor.HEADS_UP_NOTIFICATION:
+                return NotificationUmaTracker.SystemNotificationType.PERMISSION_REQUESTS_HIGH;
+            default:
+                return NotificationUmaTracker.SystemNotificationType.UNKNOWN;
+        }
+    }
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils.java
index e7c9661..b597a6db 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils.java
@@ -13,6 +13,7 @@
 import android.text.TextUtils;
 
 import org.chromium.base.ContextUtils;
+import org.chromium.chrome.browser.ChromeFeatureList;
 import org.chromium.chrome.browser.IntentHandler;
 
 /**
@@ -21,6 +22,7 @@
 public class LensUtils {
     private static final String LENS_CONTRACT_URI = "googleapp://lens";
     private static final String LENS_BITMAP_URI_KEY = "LensBitmapUriKey";
+    private static final String MIN_AGSA_VERSION_FEATURE_PARAM_NAME = "minAgsaVersionName";
     private static final String MIN_AGSA_VERSION_NAME_FOR_LENS_POSTCAPTURE = "8.19";
 
     /**
@@ -47,18 +49,45 @@
     }
 
     /**
+     * Gets the minimum AGSA version required to support the Lens context menu integration
+     * on this device.  Takes the value from a server provided value if a field trial is
+     * active but otherwise will take the value from a client side default (unless the
+     * lens feature is not enabled at all, in which case return an empty string).
+     *
+     * @return The minimum version name string or an empty string if not available.
+     */
+    private static String getMinimumAgsaVersionForLensSupport() {
+        if (ChromeFeatureList.isEnabled(ChromeFeatureList.CONTEXT_MENU_SEARCH_WITH_GOOGLE_LENS)) {
+            final String serverProvidedMinAgsaVersion =
+                    ChromeFeatureList.getFieldTrialParamByFeature(
+                            ChromeFeatureList.CONTEXT_MENU_SEARCH_WITH_GOOGLE_LENS,
+                            MIN_AGSA_VERSION_FEATURE_PARAM_NAME);
+            if (TextUtils.isEmpty(serverProvidedMinAgsaVersion)) {
+                // Falls into this block if the user enabled the feature using chrome://flags and
+                // the param was not set by the server.
+                return MIN_AGSA_VERSION_NAME_FOR_LENS_POSTCAPTURE;
+            }
+            return serverProvidedMinAgsaVersion;
+        }
+        // The feature is disabled so no need to return a minimum version.
+        return "";
+    }
+
+    /**
      * Checks if the AGSA version is below a certain {@code String} version name
      * which denotes support for the Lens postcapture experience.
      * @param installedVersionName The AGSA version installed on this device,
      * @return Whether the AGSA version on the device is high enough.
      */
     public static boolean isAgsaVersionBelowMinimum(String installedVersionName) {
-        if (TextUtils.isEmpty(installedVersionName)) {
+        String minimumAllowedAgsaVersionName = getMinimumAgsaVersionForLensSupport();
+        if (TextUtils.isEmpty(installedVersionName)
+                || TextUtils.isEmpty(minimumAllowedAgsaVersionName)) {
             return true;
         }
 
         String[] agsaNumbers = installedVersionName.split("\\.", -1);
-        String[] targetAgsaNumbers = MIN_AGSA_VERSION_NAME_FOR_LENS_POSTCAPTURE.split("\\.", -1);
+        String[] targetAgsaNumbers = minimumAllowedAgsaVersionName.split("\\.", -1);
 
         // To avoid IndexOutOfBounds
         int maxIndex = Math.min(agsaNumbers.length, targetAgsaNumbers.length);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sharing/SharingNotificationUtil.java b/chrome/android/java/src/org/chromium/chrome/browser/sharing/SharingNotificationUtil.java
index a73866e..76e4769 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/sharing/SharingNotificationUtil.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/sharing/SharingNotificationUtil.java
@@ -38,7 +38,9 @@
     private static final String EXTRA_NOTIFICATION_ID = "notification_id";
     private static final String EXTRA_NOTIFICATION_TOKEN = "notification_token";
     private static final int REQUEST_CODE_DISMISS = 100;
-    private static final @DrawableRes int SMALL_ICON_ID = R.drawable.ic_devices_16dp;
+
+    // TODO(himanshujaju) - We have only two small icons, one for error and one for non error. We
+    // could avoid passing them around.
 
     private static HashSet<Integer> sDismissedSendingNotifications = new HashSet<>();
     private static int sSendingNotificationCount;
@@ -72,10 +74,11 @@
      * @param contentTitle  The notification title text.
      * @param contentText   The notification content text.
      * @param largeIconId   The large notification icon resource id, 0 if not used.
+     * @param color         The color to be used for the notification.
      */
     public static void showNotification(@SystemNotificationType int type, String group, int id,
             PendingIntentProvider contentIntent, String contentTitle, String contentText,
-            @DrawableRes int largeIconId) {
+            @DrawableRes int smallIconId, @DrawableRes int largeIconId, int color) {
         Context context = ContextUtils.getApplicationContext();
         Resources resources = context.getResources();
         ChromeNotificationBuilder builder =
@@ -87,12 +90,11 @@
                         .setContentIntent(contentIntent)
                         .setContentTitle(contentTitle)
                         .setContentText(contentText)
-                        .setColor(ApiCompatibilityUtils.getColor(
-                                context.getResources(), R.color.default_icon_color_blue))
+                        .setColor(ApiCompatibilityUtils.getColor(context.getResources(), color))
                         .setGroup(group)
                         .setPriorityBeforeO(NotificationCompat.PRIORITY_HIGH)
                         .setVibrate(new long[0])
-                        .setSmallIcon(SMALL_ICON_ID)
+                        .setSmallIcon(smallIconId)
                         .setAutoCancel(true)
                         .setDefaults(Notification.DEFAULT_ALL);
         if (largeIconId != 0) {
@@ -149,7 +151,7 @@
                                 context.getResources(), R.color.default_icon_color_blue))
                         .setPriorityBeforeO(NotificationCompat.PRIORITY_HIGH)
                         .setVibrate(new long[0])
-                        .setSmallIcon(SMALL_ICON_ID)
+                        .setSmallIcon(R.drawable.ic_devices_16dp)
                         .setProgress(/*max=*/0, /*percentage=*/0, true)
                         .setOngoing(true)
                         .addAction(R.drawable.ic_cancel_circle, dismissTitle, dismissIntent,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sharing/click_to_call/ClickToCallMessageHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/sharing/click_to_call/ClickToCallMessageHandler.java
index 55f2a6e..f451e7c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/sharing/click_to_call/ClickToCallMessageHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/sharing/click_to_call/ClickToCallMessageHandler.java
@@ -50,12 +50,32 @@
             ClickToCallUma.recordDialerPresent(true);
             ClickToCallUma.recordDialerShown(TextUtils.isEmpty(phoneNumber));
         } catch (ActivityNotFoundException activityNotFound) {
-            // TODO(crbug.com/996644): Add error dialog when no dialer app is available.
+            // Notify the user that no dialer app was available.
             ClickToCallUma.recordDialerPresent(false);
+            displayDialerNotFoundNotification();
         }
     }
 
     /**
+     * Shows an error notification suggesting the user to enable a dialer app to
+     * use click to call.
+     */
+    public static void displayDialerNotFoundNotification() {
+        Context context = ContextUtils.getApplicationContext();
+
+        SharingNotificationUtil.showNotification(
+                NotificationUmaTracker.SystemNotificationType.CLICK_TO_CALL,
+                NotificationConstants.GROUP_CLICK_TO_CALL,
+                NotificationConstants.NOTIFICATION_ID_CLICK_TO_CALL_ERROR, /*contentIntent=*/null,
+                context.getResources().getString(
+                        R.string.click_to_call_dialer_absent_notification_title),
+                context.getResources().getString(
+                        R.string.click_to_call_dialer_absent_notification_text),
+                R.drawable.ic_error_outline_red_24dp, R.drawable.ic_dialer_not_found_red_40dp,
+                R.color.google_red_600);
+    }
+
+    /**
      * Handles the tapping of a notification by opening the dialer with the
      * phone number specified in the notification.
      */
@@ -99,7 +119,8 @@
                 NotificationConstants.GROUP_CLICK_TO_CALL,
                 NotificationConstants.NOTIFICATION_ID_CLICK_TO_CALL, contentIntent, phoneNumber,
                 context.getResources().getString(R.string.click_to_call_notification_text),
-                R.drawable.ic_dialer_icon_blue_40dp);
+                R.drawable.ic_devices_16dp, R.drawable.ic_dialer_icon_blue_40dp,
+                R.color.default_icon_color_blue);
     }
 
     /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardMessageHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardMessageHandler.java
index 21277fa..9603aae 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardMessageHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardMessageHandler.java
@@ -52,6 +52,7 @@
                 NotificationConstants.GROUP_SHARED_CLIPBOARD,
                 NotificationConstants.NOTIFICATION_ID_SHARED_CLIPBOARD_INCOMING, contentIntent,
                 notificationTitle, resources.getString(R.string.shared_clipboard_notification_text),
-                R.drawable.shared_clipboard_40dp);
+                R.drawable.ic_devices_16dp, R.drawable.shared_clipboard_40dp,
+                R.color.default_icon_color_blue);
     }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sms/SmsReceiverInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/sms/SmsReceiverInfoBar.java
index ffc05e14..e6e4c99 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/sms/SmsReceiverInfoBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/sms/SmsReceiverInfoBar.java
@@ -6,6 +6,7 @@
 
 import android.app.Activity;
 import android.content.Context;
+import android.os.SystemClock;
 import android.view.View;
 
 import org.chromium.base.Log;
@@ -27,6 +28,7 @@
     private static final boolean DEBUG = false;
     private String mMessage;
     private WindowAndroid mWindowAndroid;
+    private Long mKeyboardDismissedTime;
 
     @VisibleForTesting
     @CalledByNative
@@ -49,6 +51,7 @@
     @Override
     public void createContent(InfoBarLayout layout) {
         super.createContent(layout);
+        SmsReceiverUma.recordInfobarAction(SmsReceiverUma.InfobarAction.SHOWN);
 
         Activity activity = mWindowAndroid.getActivity().get();
         if (activity != null) {
@@ -58,6 +61,8 @@
             if (focusedView != null
                     && keyboardVisibilityDelegate.isKeyboardShowing(activity, focusedView)) {
                 keyboardVisibilityDelegate.hideKeyboard(focusedView);
+                SmsReceiverUma.recordInfobarAction(SmsReceiverUma.InfobarAction.KEYBOARD_DISMISSED);
+                mKeyboardDismissedTime = SystemClock.uptimeMillis();
             }
         }
 
@@ -65,4 +70,14 @@
         InfoBarControlLayout control = layout.addControlLayout();
         control.addDescription(mMessage);
     }
+
+    @Override
+    public void onCloseButtonClicked() {
+        super.onCloseButtonClicked();
+
+        if (mKeyboardDismissedTime != null) {
+            SmsReceiverUma.recordCancelTimeAfterKeyboardDismissal(
+                    SystemClock.uptimeMillis() - mKeyboardDismissedTime);
+        }
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sms/SmsReceiverUma.java b/chrome/android/java/src/org/chromium/chrome/browser/sms/SmsReceiverUma.java
new file mode 100644
index 0000000..fc173ed
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/sms/SmsReceiverUma.java
@@ -0,0 +1,37 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.sms;
+
+import android.support.annotation.IntDef;
+
+import org.chromium.base.metrics.RecordHistogram;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Helper Class for Sms Receiver UMA Collection.
+ */
+final class SmsReceiverUma {
+    // Note: these values must match the SMSReceiverInfobar enum in enums.xml.
+    // Only add new values at the end, right before NUM_ENTRIES.
+    @IntDef({InfobarAction.SHOWN, InfobarAction.KEYBOARD_DISMISSED})
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface InfobarAction {
+        int SHOWN = 0;
+        int KEYBOARD_DISMISSED = 1;
+        int NUM_ENTRIES = 2;
+    }
+
+    static void recordInfobarAction(int action) {
+        RecordHistogram.recordEnumeratedHistogram(
+                "Blink.Sms.Receive.Infobar", action, InfobarAction.NUM_ENTRIES);
+    }
+
+    static void recordCancelTimeAfterKeyboardDismissal(long durationMs) {
+        RecordHistogram.recordMediumTimesHistogram(
+                "Blink.Sms.Receive.TimeCancelOnKeyboardDismissal", durationMs);
+    }
+}
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
index c387f8c..93c5e2ad 100644
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -337,11 +337,9 @@
       <message name="IDS_NOTIFICATION_CATEGORY_COMPLETED_DOWNLOADS" desc="Label for completed download notifications, within a list of notification categories. [CHAR-LIMIT=32]">
        Completed downloads
       </message>
-      <if expr="False">
-        <message name="IDS_NOTIFICATION_CATEGORY_PERMISSION_REQUESTS" desc="Label for permission requests, within a list of notification categories. [CHAR-LIMIT=32]">
-         Permission requests
-        </message>
-      </if>
+      <message name="IDS_NOTIFICATION_CATEGORY_PERMISSION_REQUESTS" desc="Label for permission requests, within a list of notification categories. [CHAR-LIMIT=32]">
+       Permission requests
+      </message>
 
       <!-- Sign-in, sync and personalization preferences -->
       <message name="IDS_PREFS_SECTION_ACCOUNT" desc="Title for the group of account-related entries in Settings. [CHAR-LIMIT=32]">
@@ -3888,9 +3886,15 @@
       </message>
 
       <!-- ClickToCall -->
-      <message name="IDS_CLICK_TO_CALL_NOTIFICATION_TEXT" desc="Text displayed in a click to call notification.">
+      <message name="IDS_CLICK_TO_CALL_NOTIFICATION_TEXT" desc="Text displayed in a click to call notification to call on a number.">
         Tap to make call
       </message>
+      <message name="IDS_CLICK_TO_CALL_DIALER_ABSENT_NOTIFICATION_TITLE" desc="Title of click to call notification when there is no dialer on device.">
+        Can't make calls
+      </message>
+      <message name="IDS_CLICK_TO_CALL_DIALER_ABSENT_NOTIFICATION_TEXT" desc="Text displayed in a click to call notification when there is no dialer on device.">
+        Make sure a phone app is enabled on this device
+      </message>
 
       <!-- Shared Clipboard -->
       <message name="IDS_SHARED_CLIPBOARD_NOTIFICATION_TITLE_UNKNOWN_DEVICE" desc="Title text displayed in a shared clipboard notification when the source device name is unknown.">
diff --git a/chrome/android/java/strings/android_chrome_strings_grd/IDS_CLICK_TO_CALL_DIALER_ABSENT_NOTIFICATION_TEXT.png.sha1 b/chrome/android/java/strings/android_chrome_strings_grd/IDS_CLICK_TO_CALL_DIALER_ABSENT_NOTIFICATION_TEXT.png.sha1
new file mode 100644
index 0000000..1c1bf53
--- /dev/null
+++ b/chrome/android/java/strings/android_chrome_strings_grd/IDS_CLICK_TO_CALL_DIALER_ABSENT_NOTIFICATION_TEXT.png.sha1
@@ -0,0 +1 @@
+8ea6724244a81229308d4307c429c51892062bcc
\ No newline at end of file
diff --git a/chrome/android/java/strings/android_chrome_strings_grd/IDS_CLICK_TO_CALL_DIALER_ABSENT_NOTIFICATION_TITLE.png.sha1 b/chrome/android/java/strings/android_chrome_strings_grd/IDS_CLICK_TO_CALL_DIALER_ABSENT_NOTIFICATION_TITLE.png.sha1
new file mode 100644
index 0000000..1c1bf53
--- /dev/null
+++ b/chrome/android/java/strings/android_chrome_strings_grd/IDS_CLICK_TO_CALL_DIALER_ABSENT_NOTIFICATION_TITLE.png.sha1
@@ -0,0 +1 @@
+8ea6724244a81229308d4307c429c51892062bcc
\ No newline at end of file
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/notifications/channels/ChannelsInitializerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/notifications/channels/ChannelsInitializerTest.java
index 469a1b0..506e60f 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/notifications/channels/ChannelsInitializerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/notifications/channels/ChannelsInitializerTest.java
@@ -327,6 +327,43 @@
         assertThat(getChannelsIgnoringDefault(), hasSize(2));
     }
 
+    @Test
+    @SmallTest
+    @MinAndroidSdkLevel(Build.VERSION_CODES.O)
+    @TargetApi(Build.VERSION_CODES.O)
+    @Feature({"Browser", "Notifications"})
+    public void testEnsureInitialized_permissionRequests() throws Exception {
+        mChannelsInitializer.ensureInitialized(ChannelDefinitions.ChannelId.PERMISSION_REQUESTS);
+
+        assertThat(getChannelsIgnoringDefault(), hasSize(1));
+        NotificationChannel channel = getChannelsIgnoringDefault().get(0);
+        assertThat(channel.getId(), is(ChannelDefinitions.ChannelId.PERMISSION_REQUESTS));
+        assertThat(channel.getName().toString(),
+                is(mContext.getString(
+                        org.chromium.chrome.R.string.notification_category_permission_requests)));
+        assertThat(channel.getImportance(), is(NotificationManager.IMPORTANCE_LOW));
+        assertThat(channel.getGroup(), is(ChannelDefinitions.ChannelGroupId.GENERAL));
+    }
+
+    @Test
+    @SmallTest
+    @MinAndroidSdkLevel(Build.VERSION_CODES.O)
+    @TargetApi(Build.VERSION_CODES.O)
+    @Feature({"Browser", "Notifications"})
+    public void testEnsureInitialized_permissionRequestsHigh() throws Exception {
+        mChannelsInitializer.ensureInitialized(
+                ChannelDefinitions.ChannelId.PERMISSION_REQUESTS_HIGH);
+
+        assertThat(getChannelsIgnoringDefault(), hasSize(1));
+        NotificationChannel channel = getChannelsIgnoringDefault().get(0);
+        assertThat(channel.getId(), is(ChannelDefinitions.ChannelId.PERMISSION_REQUESTS_HIGH));
+        assertThat(channel.getName().toString(),
+                is(mContext.getString(
+                        org.chromium.chrome.R.string.notification_category_permission_requests)));
+        assertThat(channel.getImportance(), is(NotificationManager.IMPORTANCE_HIGH));
+        assertThat(channel.getGroup(), is(ChannelDefinitions.ChannelGroupId.GENERAL));
+    }
+
     /**
      * Gets the current notification channels from the notification manager, except for any with
      * the default ID, which will be removed from the list before returning.
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/share/LensUtilsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/share/LensUtilsTest.java
index 59ba184..2e03983 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/share/LensUtilsTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/share/LensUtilsTest.java
@@ -9,27 +9,86 @@
 import android.support.test.filters.SmallTest;
 
 import org.junit.Assert;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.chrome.browser.ChromeFeatureList;
+import org.chromium.chrome.browser.ChromeSwitches;
+import org.chromium.chrome.test.ChromeBrowserTestRule;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.chrome.test.util.browser.Features;
 
 /**
  * Tests of {@link LensUtils}.
  */
 @RunWith(ChromeJUnit4ClassRunner.class)
+@CommandLineFlags.Add(ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE)
 public class LensUtilsTest {
+    @Rule
+    public final ChromeBrowserTestRule mBrowserTestRule = new ChromeBrowserTestRule();
+
     /**
-     * Test {@link LensUtils#isAgsaVersionBelowMinimum()} method.
+     * Test {@link LensUtils#isAgsaVersionBelowMinimum()} method if the
+     * feature is disabled.
      */
     @Test
     @SmallTest
-    public void isAgsaVersionBelowMinimumTest() {
+    @Features.DisableFeatures({ChromeFeatureList.CONTEXT_MENU_SEARCH_WITH_GOOGLE_LENS})
+    public void isAgsaVersionBelowMinimumFeatureDisabledTest() {
+        Assert.assertTrue(LensUtils.isAgsaVersionBelowMinimum("8.19"));
+        Assert.assertTrue(LensUtils.isAgsaVersionBelowMinimum("8.19.1"));
+        Assert.assertTrue(LensUtils.isAgsaVersionBelowMinimum("8.30"));
+        Assert.assertTrue(LensUtils.isAgsaVersionBelowMinimum("9.30"));
+        Assert.assertTrue(LensUtils.isAgsaVersionBelowMinimum(""));
+        Assert.assertTrue(LensUtils.isAgsaVersionBelowMinimum("8.1"));
+        Assert.assertTrue(LensUtils.isAgsaVersionBelowMinimum("7.30"));
+        Assert.assertTrue(LensUtils.isAgsaVersionBelowMinimum("8"));
+    }
+
+    /**
+     * Test {@link LensUtils#isAgsaVersionBelowMinimum()} method if the
+     * feature was enabled using chrome://flags.
+     */
+    @Test
+    @SmallTest
+    @Features.EnableFeatures({ChromeFeatureList.CONTEXT_MENU_SEARCH_WITH_GOOGLE_LENS})
+    public void isAgsaVersionBelowMinimumFeatureEnabledByClientTest() {
         Assert.assertFalse(LensUtils.isAgsaVersionBelowMinimum("8.19"));
         Assert.assertFalse(LensUtils.isAgsaVersionBelowMinimum("8.19.1"));
+        Assert.assertFalse(LensUtils.isAgsaVersionBelowMinimum("8.24"));
+        Assert.assertFalse(LensUtils.isAgsaVersionBelowMinimum("8.25"));
         Assert.assertFalse(LensUtils.isAgsaVersionBelowMinimum("8.30"));
         Assert.assertFalse(LensUtils.isAgsaVersionBelowMinimum("9.30"));
 
+        Assert.assertTrue(LensUtils.isAgsaVersionBelowMinimum(""));
+        Assert.assertTrue(LensUtils.isAgsaVersionBelowMinimum("8.1"));
+        Assert.assertTrue(LensUtils.isAgsaVersionBelowMinimum("7.30"));
+        Assert.assertTrue(LensUtils.isAgsaVersionBelowMinimum("8"));
+    }
+
+    /**
+     * Test {@link LensUtils#isAgsaVersionBelowMinimum()} method if the
+     * feature was enabled by the server (using a 8.25 as the minimum which is
+     * higher than the 8.19 version required by default).
+     */
+    @Test
+    @SmallTest
+    @CommandLineFlags.Add({"enable-features="
+                    + ChromeFeatureList.CONTEXT_MENU_SEARCH_WITH_GOOGLE_LENS + "<FakeStudyName",
+            "force-fieldtrials=FakeStudyName/Enabled",
+            "force-fieldtrial-params=FakeStudyName.Enabled:minAgsaVersionName/8.25"})
+    public void
+    isAgsaVersionBelowMinimumFeatureEnabledByServerTest() {
+        Assert.assertFalse(LensUtils.isAgsaVersionBelowMinimum("8.25"));
+        Assert.assertFalse(LensUtils.isAgsaVersionBelowMinimum("8.30"));
+        Assert.assertFalse(LensUtils.isAgsaVersionBelowMinimum("9.30"));
+
+        Assert.assertTrue(LensUtils.isAgsaVersionBelowMinimum(""));
+        Assert.assertTrue(LensUtils.isAgsaVersionBelowMinimum("8.19"));
+        Assert.assertTrue(LensUtils.isAgsaVersionBelowMinimum("8.19.1"));
+        Assert.assertTrue(LensUtils.isAgsaVersionBelowMinimum("8.24"));
         Assert.assertTrue(LensUtils.isAgsaVersionBelowMinimum("8.1"));
         Assert.assertTrue(LensUtils.isAgsaVersionBelowMinimum("7.30"));
         Assert.assertTrue(LensUtils.isAgsaVersionBelowMinimum("8"));
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sms/SmsReceiverInfoBarTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sms/SmsReceiverInfoBarTest.java
index 2155f1f..f0c69346 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/sms/SmsReceiverInfoBarTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sms/SmsReceiverInfoBarTest.java
@@ -13,6 +13,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.Feature;
 import org.chromium.chrome.browser.ChromeActivity;
@@ -41,6 +42,9 @@
             new ChromeActivityTestRule<>(ChromeActivity.class);
 
     private ChromeActivity mActivity;
+    private final static String INFOBAR_HISTOGRAM = "Blink.Sms.Receive.Infobar";
+    private final static String TIME_CANCEL_ON_KEYBOARD_DISMISSAL_HISTOGRAM =
+            "Blink.Sms.Receive.TimeCancelOnKeyboardDismissal";
 
     @Before
     public void setUp() throws Exception {
@@ -59,6 +63,15 @@
         });
     }
 
+    private void assertHistogramRecordedCount(String name, int expectedCount) {
+        Assert.assertEquals(expectedCount, RecordHistogram.getHistogramTotalCountForTesting(name));
+    }
+
+    private void assertHistogramRecordedCount(String name, int sample, int expectedCount) {
+        Assert.assertEquals(
+                expectedCount, RecordHistogram.getHistogramValueCountForTesting(name, sample));
+    }
+
     @Test
     @MediumTest
     @Feature({"InfoBars", "UiCatalogue"})
@@ -69,6 +82,10 @@
 
         // Click primary button.
         Assert.assertTrue(InfoBarUtil.clickPrimaryButton(infoBar));
+
+        assertHistogramRecordedCount(INFOBAR_HISTOGRAM, SmsReceiverUma.InfobarAction.SHOWN, 1);
+        assertHistogramRecordedCount(
+                INFOBAR_HISTOGRAM, SmsReceiverUma.InfobarAction.KEYBOARD_DISMISSED, 0);
     }
 
     @Test
@@ -81,6 +98,10 @@
 
         // Close infobar.
         Assert.assertTrue(InfoBarUtil.clickCloseButton(infoBar));
+
+        assertHistogramRecordedCount(INFOBAR_HISTOGRAM, SmsReceiverUma.InfobarAction.SHOWN, 1);
+        assertHistogramRecordedCount(
+                INFOBAR_HISTOGRAM, SmsReceiverUma.InfobarAction.KEYBOARD_DISMISSED, 0);
     }
 
     @Test
@@ -106,5 +127,43 @@
         // Keyboard is hidden after info bar is created and shown.
         CriteriaHelper.pollUiThread(Criteria.equals(
                 false, () -> keyboardVisibilityDelegate.isKeyboardShowing(mActivity, editText)));
+
+        assertHistogramRecordedCount(INFOBAR_HISTOGRAM, SmsReceiverUma.InfobarAction.SHOWN, 1);
+        assertHistogramRecordedCount(
+                INFOBAR_HISTOGRAM, SmsReceiverUma.InfobarAction.KEYBOARD_DISMISSED, 1);
+        assertHistogramRecordedCount(TIME_CANCEL_ON_KEYBOARD_DISMISSAL_HISTOGRAM, 0);
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"InfoBars", "UiCatalogue"})
+    public void testUMARecordedWhenInfobarDismissedAfterHidingKeyboard() {
+        KeyboardVisibilityDelegate keyboardVisibilityDelegate =
+                mActivityTestRule.getKeyboardDelegate();
+        EditText editText = new EditText(mActivity);
+
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            mActivity.setContentView(editText);
+            editText.requestFocus();
+            keyboardVisibilityDelegate.showKeyboard(editText);
+        });
+
+        // Wait until the keyboard is showing.
+        CriteriaHelper.pollUiThread(Criteria.equals(
+                true, () -> keyboardVisibilityDelegate.isKeyboardShowing(mActivity, editText)));
+
+        SmsReceiverInfoBar infoBar = createInfoBar();
+
+        // Keyboard is hidden after info bar is created and shown.
+        CriteriaHelper.pollUiThread(Criteria.equals(
+                false, () -> keyboardVisibilityDelegate.isKeyboardShowing(mActivity, editText)));
+
+        // Close info bar.
+        InfoBarUtil.clickCloseButton(infoBar);
+
+        assertHistogramRecordedCount(INFOBAR_HISTOGRAM, SmsReceiverUma.InfobarAction.SHOWN, 1);
+        assertHistogramRecordedCount(
+                INFOBAR_HISTOGRAM, SmsReceiverUma.InfobarAction.KEYBOARD_DISMISSED, 1);
+        assertHistogramRecordedCount(TIME_CANCEL_ON_KEYBOARD_DISMISSAL_HISTOGRAM, 1);
     }
 }
diff --git a/chrome/android/trichrome.gni b/chrome/android/trichrome.gni
index 3f6ca2b..a58b8b09 100644
--- a/chrome/android/trichrome.gni
+++ b/chrome/android/trichrome.gni
@@ -71,7 +71,9 @@
       r_java_root_package_name = "trichrome_lib"
       app_as_shared_lib = true
     }
-    use_chromium_linker = false
+    use_chromium_linker = chromium_linker_supported
+    use_modern_linker = use_chromium_linker
+
     uncompress_shared_libraries = true
     uncompress_dex = use_uncompressed_dex
     version_name = chrome_version_name
diff --git a/chrome/app/chromeos_strings.grdp b/chrome/app/chromeos_strings.grdp
index ef561a7..84a73e1 100644
--- a/chrome/app/chromeos_strings.grdp
+++ b/chrome/app/chromeos_strings.grdp
@@ -1235,6 +1235,12 @@
   <message name="IDS_SIGNIN_ERROR_SECONDARY_ACCOUNT_MIGRATION_BUBBLE_VIEW_MESSAGE" desc="Message in the sign-in error bubble view for Chrome OS Secondary Accounts that have not been migrated to Chrome OS Account Manager.">
     Account update required
   </message>
+  <message name="IDS_CHALLENGE_RESPONSE_AUTH_MULTIPLE_CLIENT_CERTS_ERROR" desc="Error message shown when multiple client certificates were used during the challenge-response based authentication.">
+    Multiple client certificates are not supported
+  </message>
+  <message name="IDS_CHALLENGE_RESPONSE_AUTH_INVALID_CLIENT_CERT_ERROR" desc="Error message shown when client certificate attributes extraction failed during the challenge-response based authentication.">
+    Invalid client certificate
+  </message>
 
   <!-- Strings used in <cr-network-list>, used in Settings and OOBE -->
   <message name="IDS_NETWORK_LIST_INITIALIZING" desc="Text in the network list element when a Cellular network is initiailizing.">
diff --git a/chrome/app/chromium_strings.grd b/chrome/app/chromium_strings.grd
index 34d2a62b..47318c3 100644
--- a/chrome/app/chromium_strings.grd
+++ b/chrome/app/chromium_strings.grd
@@ -321,7 +321,7 @@
         Chromium can help you remember your passwords so you don't have to.
       </message>
       <message name="IDS_PASSWORD_MANAGER_ONBOARDING_DETAILS_B" desc="The explanation text that is shown below the title in the password manager onboarding dialog.">
-        Save your passwords to Chromium to access them on all your devices. 
+        Save your passwords to Chromium to access them on all your devices.
       </message>
       <message name="IDS_PASSWORD_MANAGER_ONBOARDING_DETAILS_C" desc="The explanation text that is shown below the title in the password manager onboarding dialog.">
         Chromium can help you remember your passwords so you don't have to.
@@ -1055,7 +1055,7 @@
          other {Chromium will restart in # seconds}}
       </message>
       <message name="IDS_CRITICAL_NOTIFICATION_TITLE_ALTERNATE" desc="The title for a bubble that appears when there is a critical update and Chromium must restart to install it. The title was previously countng down to an automatic restart and now it has finished. Will only be seen if a web page stops the shutdown process.">
-        You should restart Chromium now
+        Please restart Chromium now
       </message>
       <message name="IDS_CRITICAL_NOTIFICATION_TEXT" desc="Explanation text for the bubble that appears when there is a critical update and Chromium must restart to install it.">
         A special security update for Chromium was just applied. Restart now and we'll restore your tabs.
diff --git a/chrome/app/google_chrome_strings.grd b/chrome/app/google_chrome_strings.grd
index ac42b27..44ce38e 100644
--- a/chrome/app/google_chrome_strings.grd
+++ b/chrome/app/google_chrome_strings.grd
@@ -1074,7 +1074,7 @@
          other {Google Chrome will restart in # seconds}}
       </message>
       <message name="IDS_CRITICAL_NOTIFICATION_TITLE_ALTERNATE" desc="The title for a bubble that appears when there is a critical update and Chrome must restart to install it. The title was previously countng down to an automatic restart and now it has finished. Will only be seen if a web page stops the shutdown process.">
-        You should restart Google Chrome now
+        Please restart Chrome now
       </message>
       <message name="IDS_CRITICAL_NOTIFICATION_TEXT" desc="Explanation text for the bubble that appears when there is a critical update and Chrome must restart to install it.">
         A special security update for Google Chrome was just applied. Restart now and we'll restore your tabs.
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 1209dbc..e0d99c9 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -1075,6 +1075,8 @@
     "performance_manager/chrome_browser_main_extra_parts_performance_manager.h",
     "performance_manager/chrome_content_browser_client_performance_manager_part.cc",
     "performance_manager/chrome_content_browser_client_performance_manager_part.h",
+    "performance_manager/decorators/freeze_origin_trial_policy_aggregator.cc",
+    "performance_manager/decorators/freeze_origin_trial_policy_aggregator.h",
     "performance_manager/decorators/frozen_frame_aggregator.cc",
     "performance_manager/decorators/frozen_frame_aggregator.h",
     "performance_manager/decorators/page_almost_idle_decorator.cc",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 95078a0..e8cbe5d 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -2648,9 +2648,6 @@
      flag_descriptions::kCrostiniUsbAllowUnsupportedName,
      flag_descriptions::kCrostiniUsbAllowUnsupportedDescription, kOsCrOS,
      FEATURE_VALUE_TYPE(chromeos::features::kCrostiniUsbAllowUnsupported)},
-    {"crostini-usb-support", flag_descriptions::kCrostiniUsbSupportName,
-     flag_descriptions::kCrostiniUsbSupportDescription, kOsCrOS,
-     FEATURE_VALUE_TYPE(chromeos::features::kCrostiniUsbSupport)},
     {"file-manager-feedback-panel",
      flag_descriptions::kFileManagerFeedbackPanelName,
      flag_descriptions::kFileManagerFeedbackPanelDescription, kOsCrOS,
@@ -3882,6 +3879,11 @@
      flag_descriptions::kAshEnableOverviewRoundedCornersName,
      flag_descriptions::kAshEnableOverviewRoundedCornersDescription, kOsCrOS,
      FEATURE_VALUE_TYPE(ash::features::kEnableOverviewRoundedCorners)},
+
+    {"use-fake-device-for-media-stream",
+     flag_descriptions::kUseFakeDeviceForMediaStreamName,
+     flag_descriptions::kUseFakeDeviceForMediaStreamDescription, kOsCrOS,
+     FEATURE_VALUE_TYPE(media::kUseFakeDeviceForMediaStream)},
 #endif  // defined(OS_CHROMEOS)
 
 #if defined(OS_WIN)
diff --git a/chrome/browser/about_flags_browsertest.cc b/chrome/browser/about_flags_browsertest.cc
index cc00a28..46fc2c13 100644
--- a/chrome/browser/about_flags_browsertest.cc
+++ b/chrome/browser/about_flags_browsertest.cc
@@ -222,7 +222,13 @@
             GetOriginListText(contents, kSwitchName));
 }
 
-IN_PROC_BROWSER_TEST_P(AboutFlagsBrowserTest, OriginFlagEnabled) {
+#if defined(OS_CHROMEOS) && !defined(NDEBUG)
+// TODO(https://crbug.com/1000714): Re-enable this test.
+#define MAYBE_OriginFlagEnabled DISABLED_OriginFlagEnabled
+#else
+#define MAYBE_OriginFlagEnabled OriginFlagEnabled
+#endif
+IN_PROC_BROWSER_TEST_P(AboutFlagsBrowserTest, MAYBE_OriginFlagEnabled) {
 #if !defined(OS_CHROMEOS)
   // On non-ChromeOS, the command line is modified after restart.
   EXPECT_EQ(
diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
index 5da7c8e8..27b7f452 100644
--- a/chrome/browser/android/chrome_feature_list.cc
+++ b/chrome/browser/android/chrome_feature_list.cc
@@ -75,6 +75,7 @@
     &features::kPermissionDelegation,
     &features::kPredictivePrefetchingAllowedOnAllConnectionTypes,
     &features::kPrioritizeBootstrapTasks,
+    &features::kQuietNotificationPrompts,
     &features::kServiceWorkerPaymentApps,
     &features::kShowTrustedPublisherURL,
     &features::kUserActivationV2,
diff --git a/chrome/browser/android/download/download_manager_service.cc b/chrome/browser/android/download/download_manager_service.cc
index fea54a9..89a0b87 100644
--- a/chrome/browser/android/download/download_manager_service.cc
+++ b/chrome/browser/android/download/download_manager_service.cc
@@ -36,7 +36,6 @@
 #include "components/download/public/common/download_item.h"
 #include "components/download/public/common/download_item_impl.h"
 #include "components/download/public/common/download_stats.h"
-#include "components/download/public/common/download_url_loader_factory_getter_impl.h"
 #include "components/download/public/common/simple_download_manager_coordinator.h"
 #include "components/download/public/common/url_download_handler_factory.h"
 #include "components/download/public/task/task_manager_impl.h"
diff --git a/chrome/browser/android/vr/arcore_device/arcore_device.cc b/chrome/browser/android/vr/arcore_device/arcore_device.cc
index 7761e706..c359ed7 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_device.cc
+++ b/chrome/browser/android/vr/arcore_device/arcore_device.cc
@@ -59,7 +59,6 @@
   left_eye->field_of_view->right_degrees = horizontal_degrees;
   left_eye->field_of_view->up_degrees = vertical_degrees;
   left_eye->field_of_view->down_degrees = vertical_degrees;
-  left_eye->offset = {0.0f, 0.0f, 0.0f};
   left_eye->render_width = width;
   left_eye->render_height = height;
   return device;
diff --git a/chrome/browser/apps/app_shim/app_shim_host_mac.cc b/chrome/browser/apps/app_shim/app_shim_host_mac.cc
index 9ed6d8ee..d798200 100644
--- a/chrome/browser/apps/app_shim/app_shim_host_mac.cc
+++ b/chrome/browser/apps/app_shim/app_shim_host_mac.cc
@@ -11,6 +11,7 @@
 #include "base/logging.h"
 #include "chrome/browser/apps/app_shim/app_shim_host_bootstrap_mac.h"
 #include "chrome/browser/apps/app_shim/app_shim_host_mac.h"
+#include "chrome/common/chrome_features.h"
 #include "components/remote_cocoa/browser/application_host.h"
 #include "components/remote_cocoa/common/application.mojom.h"
 #include "content/public/browser/browser_thread.h"
@@ -31,7 +32,8 @@
       launch_weak_factory_(this) {
   // Create the interfaces used to host windows, so that browser windows may be
   // created before the host process finishes launching.
-  if (uses_remote_views_) {
+  if (uses_remote_views_ &&
+      base::FeatureList::IsEnabled(features::kAppShimRemoteCocoa)) {
     // Create the interface that will be used by views::NativeWidgetMac to
     // create NSWindows hosted in the app shim process.
     remote_cocoa::mojom::ApplicationAssociatedRequest views_application_request;
diff --git a/chrome/browser/apps/app_shim/extension_app_shim_handler_mac.cc b/chrome/browser/apps/app_shim/extension_app_shim_handler_mac.cc
index c43f1058..4b95780 100644
--- a/chrome/browser/apps/app_shim/extension_app_shim_handler_mac.cc
+++ b/chrome/browser/apps/app_shim/extension_app_shim_handler_mac.cc
@@ -41,7 +41,6 @@
 #include "chrome/browser/web_applications/components/web_app_helpers.h"
 #include "chrome/browser/web_applications/components/web_app_shortcut_mac.h"
 #include "chrome/browser/web_applications/extensions/web_app_extension_shortcut.h"
-#include "chrome/common/chrome_features.h"
 #include "chrome/common/extensions/extension_constants.h"
 #include "chrome/common/extensions/extension_metrics.h"
 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h"
@@ -59,7 +58,6 @@
 #include "extensions/browser/extension_registry.h"
 #include "extensions/common/constants.h"
 #include "ui/base/cocoa/focus_window_set.h"
-#include "ui/base/ui_base_features.h"
 
 using extensions::AppWindow;
 using extensions::AppWindowRegistry;
@@ -411,8 +409,6 @@
 }
 
 AppShimHost* ExtensionAppShimHandler::GetHostForBrowser(Browser* browser) {
-  if (!features::HostWindowsInAppShimProcess())
-    return nullptr;
   Profile* profile = Profile::FromBrowserContext(browser->profile());
   const Extension* extension =
       apps::ExtensionAppShimHandler::MaybeGetAppForBrowser(browser);
diff --git a/chrome/browser/apps/guest_view/web_view_browsertest.cc b/chrome/browser/apps/guest_view/web_view_browsertest.cc
index 2c89f92..945f1bb 100644
--- a/chrome/browser/apps/guest_view/web_view_browsertest.cc
+++ b/chrome/browser/apps/guest_view/web_view_browsertest.cc
@@ -2950,14 +2950,14 @@
   content::EnsureCookiesFlushed(profile());
 }
 
-// TODO(crbug.com/994789): Flaky on MSan.
-#if defined(MEMORY_SANITIZER)
+// TODO(crbug.com/994789): Flaky on ChromeOS. Fix and re-enable the test.
+#if defined(OS_CHROMEOS)
 #define MAYBE_DownloadCookieIsolation_CrossSession \
   DISABLED_DownloadCookieIsolation_CrossSession
 #else
 #define MAYBE_DownloadCookieIsolation_CrossSession \
   DownloadCookieIsolation_CrossSession
-#endif  // !defined(MEMORY_SANITIZER)
+#endif  // !defined(OS_CHROMEOS)
 
 IN_PROC_BROWSER_TEST_F(WebViewTest,
                        MAYBE_DownloadCookieIsolation_CrossSession) {
diff --git a/chrome/browser/autofill/automated_tests/cache_replayer.cc b/chrome/browser/autofill/automated_tests/cache_replayer.cc
index ba42c0c..9364d21 100644
--- a/chrome/browser/autofill/automated_tests/cache_replayer.cc
+++ b/chrome/browser/autofill/automated_tests/cache_replayer.cc
@@ -570,9 +570,10 @@
   VLOG(1) << "Intercepted in-flight request to Autofill Server: "
           << resource_request.url.spec();
 
-  // TODO(crbug/958158): Extract URL content for GET Query requests.
-  // Look if the body has data.
-  if (resource_request.request_body == nullptr) {
+  bool is_post_request =
+      GetRequestTypeFromURL(request_url) == RequestType::kLegacyQueryProtoPOST;
+  // Look if the body has data if it is a POST request.
+  if (is_post_request && resource_request.request_body == nullptr) {
     constexpr char kNoBodyHTTPErrorHeaders[] = "HTTP/2.0 400 Bad Request";
     constexpr char kNoBodyHTTPErrorBody[] =
         "there is no body data in the request";
@@ -584,7 +585,7 @@
   }
 
   StatusOr<AutofillQueryContents> query_request_statusor =
-      GetRequestTypeFromURL(request_url) == RequestType::kLegacyQueryProtoPOST
+      is_post_request
           ? GetAutofillQueryContentsFromPOSTQuery(resource_request)
           : GetAutofillQueryContentsFromGETQueryURL(resource_request.url);
   // Using CHECK is fine here since ServerCacheReplayer will only be used for
diff --git a/chrome/browser/browser_switcher/bho/BUILD.gn b/chrome/browser/browser_switcher/bho/BUILD.gn
index f81f61e..05568ae 100644
--- a/chrome/browser/browser_switcher/bho/BUILD.gn
+++ b/chrome/browser/browser_switcher/bho/BUILD.gn
@@ -4,10 +4,17 @@
 
 import("//build/config/compiler/compiler.gni")
 import("//build/toolchain/win/midl.gni")
+import("//testing/test.gni")
 
 assert(is_win)
 assert(target_cpu == "x86" || target_cpu == "x64")
 
+declare_args() {
+  # If true, compile a BHO that doesn't depend on the CRT to significantly
+  # minimize binary size.
+  use_mini_bho = false
+}
+
 shared_library("browser_switcher_bho") {
   if (current_cpu == "x64") {
     # Name the 32-bit and 64-bit output differently, since they'll be copied to
@@ -25,30 +32,61 @@
     "_WINDLL",
   ]
 
-  # TODO(nicolaso): Reduce binary size as much as possible.
-  #
-  # TODO(nicolaso): Use ie_bho.def and ie_bho.rc.
-  #
+  if (use_mini_bho) {
+    configs += [ "//build/config/win:sdk_link" ]
+
+    no_default_deps = true
+
+    libs = [
+      # For buffer overflow checks with the /GS flag.
+      "bufferoverflowU.lib",
+    ]
+    ldflags = [
+      "/NODEFAULTLIB",
+      "/ENTRY:DllMain",
+    ]
+  }
+
   # TODO(nicolaso): avoid code duplication, by using BrowserSwitcherSitelist and
   # AlternativeBrowserDriver classes from chrome/browser_switcher/.
-  sources = [
-    "//base/win/atl.h",
-    "bho.cc",
-    "bho.h",
-    "browser_switcher_core.cc",
-    "browser_switcher_core.h",
-    "ie_bho.cc",
-    "ie_bho.def",
-    "ie_bho.h",
-    "logging.cc",
-    "logging.h",
-    "resource.h",
-  ]
+  if (use_mini_bho) {
+    sources = [
+      "mini_bho.cc",
+      "mini_bho.def",
+      "mini_bho_util.cc",
+      "mini_bho_util.h",
+    ]
+  } else {
+    sources = [
+      "//base/win/atl.h",
+      "bho.cc",
+      "bho.h",
+      "browser_switcher_core.cc",
+      "browser_switcher_core.h",
+      "ie_bho.cc",
+      "ie_bho.def",
+      "logging.cc",
+      "logging.h",
+      "resource.h",
+    ]
+  }
   deps = [
     ":ie_bho_idl",
   ]
 }
 
+test("browser_switcher_bho_unittests") {
+  sources = [
+    "mini_bho_util.cc",
+    "mini_bho_util.h",
+    "mini_bho_util_unittest.cc",
+  ]
+  deps = [
+    "//base",
+    "//testing/gtest",
+  ]
+}
+
 if (is_clang) {
   browser_switcher_x64_toolchain = "//build/toolchain/win:win_clang_x64"
   browser_switcher_x86_toolchain = "//build/toolchain/win:win_clang_x86"
diff --git a/chrome/browser/browser_switcher/bho/mini_bho.cc b/chrome/browser/browser_switcher/bho/mini_bho.cc
new file mode 100644
index 0000000..54a6d31
--- /dev/null
+++ b/chrome/browser/browser_switcher/bho/mini_bho.cc
@@ -0,0 +1,806 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <windows.h>
+
+#include <combaseapi.h>
+#include <exdisp.h>
+#include <exdispid.h>
+#include <guiddef.h>
+#include <objbase.h>
+#include <oleauto.h>
+#include <processthreadsapi.h>
+#include <shellapi.h>
+#include <shlobj.h>
+#include <shlwapi.h>
+#include <strsafe.h>
+#include <wininet.h>
+
+#include "chrome/browser/browser_switcher/bho/ie_bho_idl.h"
+#include "chrome/browser/browser_switcher/bho/mini_bho_util.h"
+
+// memset() and memcmp() needed for debug builds.
+void* memset(void* ptr, int value, size_t num) {
+  // Naive, but only used in debug builds.
+  char* bytes = (char*)ptr;
+  for (size_t i = 0; i < num; i++)
+    bytes[i] = value;
+  return ptr;
+}
+
+int memcmp(const void* p1, const void* p2, size_t num) {
+  // Naive, but only used in debug builds.
+  char* bytes1 = (char*)p1;
+  char* bytes2 = (char*)p2;
+  for (size_t i = 0; i < num; i++) {
+    if (bytes1[i] != bytes2[i])
+      return bytes1[i] - bytes2[i];
+  }
+  return 0;
+}
+
+void* operator new(size_t num) {
+  return ::HeapAlloc(::GetProcessHeap(), 0, num);
+}
+
+void* operator new[](size_t num) {
+  return operator new(num);
+}
+
+void operator delete(void* ptr) {
+  ::HeapFree(::GetProcessHeap(), 0, ptr);
+}
+
+void operator delete[](void* ptr) {
+  return operator delete(ptr);
+}
+
+const wchar_t kHttpPrefix[] = L"http://";
+const wchar_t kHttpsPrefix[] = L"https://";
+const wchar_t kFilePrefix[] = L"file://";
+
+const wchar_t kChromeKey[] =
+    L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\chrome.exe";
+
+// TODO(crbug/950039): Add other varnames (${firefox}, ${opera}, ...)
+const wchar_t kChromeVarName[] = L"${chrome}";
+const wchar_t kUrlVarName[] = L"${url}";
+
+const char kWildcardUrl[] = "*";
+
+const int kMinSupportedFileVersion = 1;
+const int kCurrentFileVersion = 1;
+
+// Puts "AppData\Local\Google\BrowserSwitcher" in |out|. Returns false on
+// failure.
+//
+// Make sure |out| is at least |MAX_PATH| long.
+bool GetConfigPath(wchar_t* out) {
+  if (!::SHGetSpecialFolderPath(0, out, CSIDL_LOCAL_APPDATA, false)) {
+    util::puts("Error locating %LOCAL_APPDATA%!");
+    return false;
+  }
+  return S_OK == ::StringCchCatW(out, MAX_PATH, L"\\Google\\BrowserSwitcher");
+}
+
+// Puts "<config_path>\cache.dat" in |out|. Returns false on failure.
+//
+// Make sure |out| is at least |MAX_PATH| long.
+bool GetConfigFileLocation(wchar_t* out) {
+  if (!GetConfigPath(out))
+    return false;
+  return S_OK == ::StringCchCatW(out, MAX_PATH, L"\\cache.dat");
+}
+
+// Puts "<config_path>\sitelistcache.dat" in |out|. Returns false on failure.
+//
+// Make sure |out| is at least |MAX_PATH| long.
+bool GetIESitelistCacheLocation(wchar_t* out) {
+  if (!GetConfigPath(out))
+    return false;
+  return S_OK == ::StringCchCatW(out, MAX_PATH, L"\\sitelistcache.dat");
+}
+
+// Reads the contents of the text file and returns them as a null-terminated
+// string.
+//
+// Returns an empty string (with capacity=1 and str[0]='\0') if the file is
+// empty or doesn't exist.
+util::string ReadFileToString(const wchar_t* path) {
+  HANDLE file = ::CreateFile(path, GENERIC_READ, FILE_SHARE_READ, nullptr,
+                             OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr);
+  size_t file_size = 0;
+  if (file != INVALID_HANDLE_VALUE)
+    file_size = GetFileSize(file, nullptr);
+  util::string contents(file_size + 1);
+  contents[file_size] = '\0';
+  if (file_size != 0)
+    ::ReadFile(file, contents.data(), file_size, nullptr, nullptr);
+  return contents;
+}
+
+// Checks if the omitted prefix for a non-fully specified prefix rule is one of
+// the expected parts that are allowed to be omitted.
+bool IsValidPrefix(const char* prefix, size_t prefix_len) {
+  static const char* kValidPrefixes[] = {
+      "https://", "https:", "http://", "http:", "file://", "file:",
+  };
+  for (const char* candidate : kValidPrefixes) {
+    if (!::StrCmpNA(prefix, candidate, prefix_len))
+      return true;
+  }
+  return false;
+}
+
+bool StringContainsInsensitiveASCII(const char* str, const char* target) {
+  size_t len = ::lstrlenA(target);
+  while (*str) {
+    if (!::StrCmpNA(str, target, len))
+      return true;
+    str++;
+  }
+  return false;
+}
+
+bool UrlMatchesPattern(const char* url,
+                       const char* hostname,
+                       const char* pattern) {
+  if (!::StrCmpA(pattern, kWildcardUrl)) {
+    // Wildcard, always match.
+    return true;
+  }
+  if (::StrChrA(pattern, '/') != nullptr) {
+    // Check prefix using the normalized URL. Case sensitive, but with
+    // case-insensitive scheme/hostname.
+    const char* pos = ::StrStrA(url, pattern);
+    if (pos == nullptr)
+      return false;
+    return IsValidPrefix(url, (pos - url));
+  }
+  // Compare hosts, case-insensitive.
+  return StringContainsInsensitiveASCII(hostname, pattern);
+}
+
+bool IsInverted(const char* rule) {
+  return *rule == '!';
+}
+
+util::wstring ReadRegValue(HKEY key, const wchar_t* name) {
+  DWORD length = 0;
+  if (ERROR_SUCCESS !=
+      ::RegQueryValueEx(key, name, nullptr, nullptr, nullptr, &length)) {
+    util::printf(ERR, "Could not get the size of the value! %d\n",
+                 ::GetLastError());
+    return util::empty_wstring();
+  }
+  util::wstring value(length);
+  if (ERROR_SUCCESS != ::RegQueryValueEx(key, name, nullptr, nullptr,
+                                         reinterpret_cast<LPBYTE>(value.data()),
+                                         &length)) {
+    util::printf(ERR, "Could not get the value! %d\n", ::GetLastError());
+    return util::empty_wstring();
+  }
+  return value;
+}
+
+util::wstring GetChromeLocation() {
+  HKEY key;
+  if (ERROR_SUCCESS != ::RegOpenKey(HKEY_LOCAL_MACHINE, kChromeKey, &key) &&
+      ERROR_SUCCESS != ::RegOpenKey(HKEY_CURRENT_USER, kChromeKey, &key)) {
+    util::printf(ERR, "Could not open registry key %S! Error Code: %d\n",
+                 kChromeKey, ::GetLastError());
+    return util::empty_wstring();
+  }
+  return ReadRegValue(key, nullptr);
+}
+
+util::wstring SanitizeUrl(const wchar_t* url) {
+  // In almost every case should this be enough for the sanitization because
+  // any ASCII char will expand to at most 3 chars - %[0-9A-F][0-9A-F].
+  const wchar_t untranslated_chars[] = L".:/\\_-@~();";
+  util::wstring sanitized_url(::lstrlenW(url) * 3 + 1);
+
+  const wchar_t* it = url;
+  wchar_t* output = sanitized_url.data();
+  while (*it) {
+    if (::IsCharAlphaNumeric(*it) ||
+        ::StrChrW(untranslated_chars, *it) != nullptr) {
+      *output++ = *it;
+    } else {
+      // Will only work for ASCII chars but hey it's at least something.
+      // Any unicode char will be truncated to its first 8 bits and encoded.
+      *output++ = '%';
+      int nibble = (*it & 0xf0) >> 4;
+      *output++ = nibble > 9 ? nibble - 10 + 'A' : nibble + '0';
+      nibble = *it & 0xf;
+      *output++ = nibble > 9 ? nibble - 10 + 'A' : nibble + '0';
+    }
+    it++;
+  }
+  *output = '\0';
+  return sanitized_url;
+}
+
+util::wstring ExpandEnvironmentVariables(const wchar_t* str) {
+  util::wstring output;
+  DWORD expanded_size = 0;
+  expanded_size = ::ExpandEnvironmentStrings(str, nullptr, expanded_size);
+  if (expanded_size != 0) {
+    // The expected buffer length as defined in MSDN is chars + null + 1.
+    output = util::wstring(util::max(expanded_size, ::lstrlenW(str)) + 2);
+    expanded_size =
+        ::ExpandEnvironmentStrings(str, output.data(), expanded_size);
+  }
+  return output;
+}
+
+util::wstring CanonicalizeUrl(const wchar_t* url) {
+  // In almost every case should this be enough for the sanitization because
+  // any ASCII char will expand to at most 3 chars - %[0-9A-F][0-9A-F].
+  DWORD capacity = static_cast<DWORD>(::lstrlenW(url) * 3 + 1);
+  util::wstring sanitized_url(capacity);
+  if (!::InternetCanonicalizeUrl(url, sanitized_url.data(), &capacity, 0)) {
+    DWORD error = ::GetLastError();
+    if (error == ERROR_INSUFFICIENT_BUFFER) {
+      // If we get this error it means that the buffer is too small to hold
+      // the canoncial url. In that case resize the buffer to what the
+      // requested size is (returned in |capacity|) and try again.
+      sanitized_url = util::wstring(capacity);
+      if (!::InternetCanonicalizeUrl(url, sanitized_url.data(), &capacity, 0))
+        sanitized_url = util::empty_wstring();
+    }
+  }
+  // If the API failed, do some poor man's sanitizing at least.
+  if (sanitized_url[0] == '\0') {
+    util::printf(WARNING, "::InternetCanonicalizeUrl failed : %d\n",
+                 ::GetLastError());
+    sanitized_url = SanitizeUrl(url);
+  }
+  return sanitized_url;
+}
+
+util::wstring CompileCommandLine(const wchar_t* raw_command_line,
+                                 const wchar_t* url) {
+  util::wstring sanitized_url = CanonicalizeUrl(url);
+
+  // +2 for the extra space we might insert, plus the terminating null char.
+  const size_t max_possible_size =
+      ::lstrlenW(sanitized_url.data()) + ::lstrlenW(raw_command_line) + 2;
+  util::wstring command_line(max_possible_size);
+  ::StringCchCopyW(command_line.data(), max_possible_size, raw_command_line);
+
+  bool had_url_placeholder = util::wcs_replace_s(
+      command_line.data(), max_possible_size, kUrlVarName, url);
+  if (!had_url_placeholder) {
+    if (*raw_command_line == '\0') {
+      ::StringCchCatW(command_line.data(), max_possible_size,
+                      sanitized_url.data());
+    } else {
+      ::StringCchCatW(command_line.data(), max_possible_size, L" ");
+      ::StringCchCatW(command_line.data(), max_possible_size,
+                      sanitized_url.data());
+    }
+  }
+  return ExpandEnvironmentVariables(command_line.data());
+}
+
+util::wstring ExpandChromePath(const char* orig) {
+  util::wstring path = util::utf8_to_utf16(orig);
+  if (path[0] == '\0' || !::StrCmpW(path.data(), kChromeVarName))
+    path = GetChromeLocation();
+  path = ExpandEnvironmentVariables(path.data());
+  return path;
+}
+
+enum TransitionDecision {
+  NONE,
+  CHROME,
+  ALT_BROWSER,
+};
+
+class BrowserSwitcherCore {
+ public:
+  // Initializes configuration by parsing the file contents.
+  explicit BrowserSwitcherCore(util::string&& cache_file_contents,
+                               util::string&& sitelistcache_file_contents) {
+    cache_file_contents_ = std::move(cache_file_contents);
+    sitelistcache_file_contents_ = std::move(sitelistcache_file_contents);
+
+    ParseCacheFile();
+    ParseSitelistCacheFile();
+
+    util::printf(DEBUG, "configuration_valid = %s\n",
+                 (configuration_valid_ ? "true" : "false"));
+  }
+
+  bool ShouldOpenInChrome(const wchar_t* url) {
+    return (GetDecision(url) == CHROME);
+  }
+
+  bool InvokeChrome(const wchar_t* url) {
+    util::wstring path = ExpandChromePath(chrome_path_);
+    util::wstring command_line = util::utf8_to_utf16(chrome_parameters_);
+    command_line = CompileCommandLine(command_line.data(), url);
+    HINSTANCE browser_instance =
+        ::ShellExecute(nullptr, nullptr, path.data(), command_line.data(),
+                       nullptr, SW_SHOWNORMAL);
+    if (reinterpret_cast<int>(browser_instance) <= 32) {
+      util::printf(ERR, "Could not start Chrome! Handle: %d %d\n",
+                   reinterpret_cast<int>(browser_instance), ::GetLastError());
+      return false;
+    }
+    return true;
+  }
+
+ private:
+  // Initiates the parsing of |str| and returns the first line of the file, as a
+  // null-terminated string (without LF/CRLF).
+  //
+  // If there is no such line, returns nullptr and flips |configuration_valid_|
+  // to false.
+  char* GetFirstLine(char* str) {
+    char* line = util::strtok(str, "\n");
+    if (!line)
+      configuration_valid_ = false;
+    size_t len = ::lstrlenA(line);
+    // Remove '\r' if it was '\r\n'.
+    if (line[len - 1] == '\r')
+      line[len - 1] = '\0';
+    return line;
+  }
+
+  // Like GetNextLine(char*), but gets the next line instead of the first one.
+  char* GetNextLine() { return GetNextLine(nullptr); }
+
+  // Read a line that contains a number, and then read that number of lines into
+  // a vector (one element for each line).
+  util::vector<const char*> ReadList() {
+    char* line = GetNextLine();
+    if (!line)
+      return util::vector<const char*>();
+    int list_size;
+    bool success = ::StrToIntExA(line, 0, &list_size);
+    if (!success) {
+      configuration_valid_ = false;
+      return util::vector<const char*>();
+    }
+    util::printf(INFO, "list size : '%d'\n", list_size);
+    util::vector<const char*> list = util::vector<const char*>(list_size);
+    for (int i = 0; i < list_size; i++) {
+      list[i] = GetNextLine();
+      util::printf(INFO, "url : '%s'\n", list[i]);
+    }
+    return list;
+  }
+
+  // Parses cache.dat. Sets |configuration_valid_| to false if it fails.
+  void ParseCacheFile() {
+    util::puts(INFO, "Loading cache.dat");
+    char* line = GetFirstLine(cache_file_contents_.data());
+    if (!line)
+      return;
+    int version;
+    bool success = ::StrToIntExA(line, 0, &version);
+    if (!success || version < kMinSupportedFileVersion ||
+        version > kCurrentFileVersion) {
+      configuration_valid_ = false;
+      return;
+    }
+
+    GetNextLine();  // Skip IE path.
+    GetNextLine();  // Skip IE parameters.
+
+    chrome_path_ = GetNextLine();
+    util::printf(INFO, "chrome_path : '%s'\n", chrome_path_);
+    chrome_parameters_ = GetNextLine();
+    util::printf(INFO, "chrome_parameters : '%s'\n", chrome_parameters_);
+    util::puts(INFO, "Reading url list...");
+    cache_.sitelist = ReadList();
+    util::puts(INFO, "Reading grey list...");
+    cache_.greylist = ReadList();
+  }
+
+  // Parses |sitelistcache.dat|. Sets |configuration_valid_| to false if it
+  // fails.
+  void ParseSitelistCacheFile() {
+    util::puts(INFO, "Loading sitelistcache.dat");
+    // Special case: don't set |configuration_valid_| to false if the file is
+    // straight-up empty or doesn't exist.
+    if (sitelistcache_file_contents_[0] == '\0')
+      return;
+
+    char* line = GetFirstLine(sitelistcache_file_contents_.data());
+    if (!line)
+      return;
+    int version;
+    bool success = StrToIntExA(line, 0, &version);
+    if (!success || version < kMinSupportedFileVersion ||
+        version > kCurrentFileVersion) {
+      configuration_valid_ = false;
+      return;
+    }
+    sitelistcache_.sitelist = ReadList();
+    sitelistcache_.greylist = util::vector<const char*>();
+  }
+
+  TransitionDecision GetDecision(const wchar_t* url) {
+    // Switch to Chrome by default.
+    TransitionDecision decision = CHROME;
+
+    // Since we cannot decide in this case we should assume it is ok to use
+    // Chrome.
+    //
+    // XXX: this might be incorrect, and cause redirect loops...
+    if (!configuration_valid_)
+      return ALT_BROWSER;
+
+    // Only verify the url if is http[s] or file link.
+    if (::StrCmpNW(url, kHttpPrefix, ::lstrlenW(kHttpPrefix)) &&
+        ::StrCmpNW(url, kHttpsPrefix, ::lstrlenW(kHttpsPrefix)) &&
+        ::StrCmpNW(url, kFilePrefix, ::lstrlenW(kFilePrefix))) {
+      return NONE;
+    }
+
+    util::string utf8_url = util::utf16_to_utf8(url);
+    util::string hostname(utf8_url.capacity());
+    ::StringCchCopyA(hostname.data(), hostname.capacity(), utf8_url.data());
+
+    URL_COMPONENTS parsed_url = {0};
+    parsed_url.dwStructSize = sizeof(parsed_url);
+    parsed_url.dwHostNameLength = static_cast<DWORD>(-1);
+    parsed_url.dwSchemeLength = static_cast<DWORD>(-1);
+    parsed_url.dwUrlPathLength = static_cast<DWORD>(-1);
+    parsed_url.dwExtraInfoLength = static_cast<DWORD>(-1);
+    if (::InternetCrackUrl(url, 0, 0, &parsed_url)) {
+      hostname = util::utf16_to_utf8(parsed_url.lpszHostName);
+      hostname[parsed_url.dwHostNameLength] = '\0';
+    } else {
+      util::puts(ERR, "URL Parsing failed!");
+    }
+
+    const RuleSet* rulesets[] = {&cache_, &sitelistcache_};
+
+    size_t decision_rule_length = 0;
+    for (const auto* ruleset : rulesets) {
+      for (const char* pattern : ruleset->sitelist) {
+        size_t pattern_length = ::lstrlenA(pattern);
+        if (pattern_length <= decision_rule_length)
+          continue;
+        bool inverted = IsInverted(pattern);
+        // Skip "!" in the pattern.
+        if (inverted)
+          pattern++;
+        if (UrlMatchesPattern(utf8_url.data(), hostname.data(), pattern)) {
+          decision = (inverted ? CHROME : ALT_BROWSER);
+          decision_rule_length = pattern_length;
+        }
+      }
+    }
+
+    // If the sitelist matches, no need to check the greylist.
+    if (decision == ALT_BROWSER)
+      return decision;
+
+    for (const auto* ruleset : rulesets) {
+      for (const char* pattern : ruleset->greylist) {
+        size_t pattern_length = ::lstrlenA(pattern);
+        if (pattern_length <= decision_rule_length)
+          continue;
+        if (UrlMatchesPattern(utf8_url.data(), hostname.data(), pattern)) {
+          decision = NONE;
+          decision_rule_length = pattern_length;
+        }
+      }
+    }
+
+    return decision;
+  }
+
+  // Buffers containing the contents of the config files. Other fields are
+  // pointers inside these strings, so keep them in memory.
+  util::string cache_file_contents_;
+  util::string sitelistcache_file_contents_;
+
+  const char* chrome_path_;
+  const char* chrome_parameters_;
+
+  // Each rule is a pointer to a null-terminated string inside
+  // |[sitelist_]cache_file_contents_|.
+  struct RuleSet {
+    util::vector<const char*> sitelist;
+    util::vector<const char*> greylist;
+  };
+
+  RuleSet cache_;
+  RuleSet sitelistcache_;
+
+  // Tracks the validity of the cached configuration. Gets flipped to false if
+  // parsing fails during construction.
+  bool configuration_valid_ = true;
+};
+
+class CBrowserSwitcherBHO final : public IBrowserSwitcherBHO,
+                                  public IObjectWithSite {
+ public:
+  explicit CBrowserSwitcherBHO(BrowserSwitcherCore* core) : core_(core) {
+    util::puts(DEBUG, "CBrowserSwitcherBHO()");
+  }
+  ~CBrowserSwitcherBHO() {
+    // Useful for finding leaks.
+    util::puts(DEBUG, "~CBrowserSwitcherBHO()");
+  }
+
+  //////////////////////////////
+  // IDispatch:
+  //////////////////////////////
+  HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT* pctinfo) override {
+    // TypeInfo is for chumps.
+    *pctinfo = 0;
+    return S_OK;
+  }
+
+  HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo,
+                                        LCID lcid,
+                                        ITypeInfo** ppTInfo) override {
+    if (iTInfo != 0)
+      return DISP_E_BADINDEX;
+    *ppTInfo = nullptr;
+    return S_OK;
+  }
+
+  HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid,
+                                          LPOLESTR* rgszNames,
+                                          UINT cNames,
+                                          LCID lcid,
+                                          DISPID* rgDispId) override {
+    return E_NOTIMPL;
+  }
+
+  HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember,
+                                   REFIID riid,
+                                   LCID lcid,
+                                   WORD wFlags,
+                                   DISPPARAMS* pDispParams,
+                                   VARIANT* pVarResult,
+                                   EXCEPINFO* pExcepInfo,
+                                   UINT* puArgErr) override {
+    if (dispIdMember != DISPID_BEFORENAVIGATE2)
+      return S_OK;
+    BeforeNavigate(
+        pDispParams->rgvarg[6].pdispVal, pDispParams->rgvarg[5].pvarVal,
+        pDispParams->rgvarg[4].pvarVal, pDispParams->rgvarg[3].pvarVal,
+        pDispParams->rgvarg[2].pvarVal, pDispParams->rgvarg[1].pvarVal,
+        pDispParams->rgvarg[0].pboolVal);
+    return S_OK;
+  }
+
+  //////////////////////////////
+  // IObjectWithSite:
+  //////////////////////////////
+  STDMETHODIMP(SetSite(IUnknown* site)) override {
+    HRESULT hr = S_OK;
+    if (site != nullptr) {
+      hr = site->QueryInterface(IID_IWebBrowser2,
+                                reinterpret_cast<void**>(&web_browser_));
+      if (SUCCEEDED(hr))
+        hr = Advise();
+    } else {
+      Unadvise();
+      web_browser_->Release();
+    }
+    if (site_ != nullptr)
+      site_->Release();
+    site_ = site;
+    if (site_ != nullptr)
+      site_->AddRef();
+    return hr;
+  }
+
+  STDMETHODIMP(GetSite(REFIID riid, void** ppvSite)) override {
+    if (site_ == nullptr) {
+      *ppvSite = nullptr;
+      return E_FAIL;
+    }
+    return site_->QueryInterface(riid, ppvSite);
+  }
+
+  //////////////////////////////
+  // IUnknown:
+  //////////////////////////////
+  STDMETHODIMP(QueryInterface)(REFIID riid, LPVOID* ppv) override {
+    if (ppv == nullptr)
+      return E_POINTER;
+    if (IsEqualIID(riid, IID_IUnknown) ||
+        IsEqualIID(riid, IID_IBrowserSwitcherBHO)) {
+      *ppv = this;
+      AddRef();
+      return S_OK;
+    }
+    if (IsEqualIID(riid, IID_IDispatch)) {
+      *ppv = static_cast<IDispatch*>(this);
+      AddRef();
+      return S_OK;
+    }
+    if (IsEqualIID(riid, IID_IObjectWithSite)) {
+      *ppv = static_cast<IObjectWithSite*>(this);
+      AddRef();
+      return S_OK;
+    }
+    *ppv = nullptr;
+    return E_NOINTERFACE;
+  }
+
+  ULONG STDMETHODCALLTYPE AddRef() override { return ++refcount_; }
+
+  ULONG STDMETHODCALLTYPE Release() override {
+    refcount_--;
+    if (refcount_ <= 0)
+      delete this;
+    return refcount_;
+  }
+
+ private:
+  void STDMETHODCALLTYPE BeforeNavigate(IDispatch* disp,
+                                        VARIANT* url,
+                                        VARIANT* flags,
+                                        VARIANT* target_frame_name,
+                                        VARIANT* post_data,
+                                        VARIANT* headers,
+                                        VARIANT_BOOL* cancel) {
+    if (web_browser_ == nullptr || disp == nullptr)
+      return;
+    IUnknown* unknown1 = nullptr;
+    IUnknown* unknown2 = nullptr;
+    if (SUCCEEDED(web_browser_->QueryInterface(
+            IID_IUnknown, reinterpret_cast<void**>(&unknown1))) &&
+        SUCCEEDED(disp->QueryInterface(IID_IUnknown,
+                                       reinterpret_cast<void**>(&unknown2)))) {
+      // Check if this is the outer frame.
+      if (unknown1 == unknown2) {
+        bool result = core_->ShouldOpenInChrome(url->bstrVal);
+        if (result) {
+          if (!core_->InvokeChrome(url->bstrVal)) {
+            util::puts(ERR,
+                       "Could not invoke alternative browser! "
+                       "Will resume loading in IE!");
+          } else {
+            *cancel = VARIANT_TRUE;
+            web_browser_->Quit();
+          }
+        }
+      }
+    }
+    if (unknown1)
+      unknown1->Release();
+    if (unknown2)
+      unknown2->Release();
+  }
+
+  HRESULT GetConnectionPoint(IConnectionPoint** cp) {
+    IConnectionPointContainer* cp_container;
+    HRESULT hr = web_browser_->QueryInterface(
+        IID_IConnectionPointContainer, reinterpret_cast<void**>(&cp_container));
+    if (SUCCEEDED(hr))
+      hr = cp_container->FindConnectionPoint(DIID_DWebBrowserEvents2, cp);
+    return hr;
+  }
+
+  HRESULT Advise() {
+    IConnectionPoint* cp;
+    HRESULT hr = GetConnectionPoint(&cp);
+    if (SUCCEEDED(hr))
+      hr = cp->Advise(
+          static_cast<IUnknown*>(static_cast<IObjectWithSite*>(this)),
+          &event_cookie_);
+    advised_ = true;
+    return hr;
+  }
+
+  void Unadvise() {
+    if (!advised_)
+      return;
+    IConnectionPoint* cp;
+    HRESULT hr = GetConnectionPoint(&cp);
+    if (SUCCEEDED(hr))
+      hr = cp->Unadvise(event_cookie_);
+    advised_ = false;
+  }
+
+  BrowserSwitcherCore* core_;
+
+  DWORD event_cookie_;
+  bool advised_ = false;
+  IWebBrowser2* web_browser_ = nullptr;
+  IUnknown* site_ = nullptr;
+  size_t refcount_ = 0;
+};
+
+BrowserSwitcherCore* g_browser_switcher_core = nullptr;
+
+class CBrowserSwitcherBHOClass final : public IClassFactory {
+ public:
+  static CBrowserSwitcherBHOClass* GetInstance() { return &instance_; }
+
+  //////////////////////////////
+  // IClassFactory:
+  //////////////////////////////
+  STDMETHODIMP(CreateInstance)
+  (IUnknown* pUnkOuter, REFIID riid, LPVOID* ppvObject) override {
+    if (ppvObject == nullptr)
+      return E_POINTER;
+    auto* bho = new CBrowserSwitcherBHO(g_browser_switcher_core);
+    return bho->QueryInterface(riid, ppvObject);
+  }
+
+  STDMETHODIMP(LockServer)(BOOL fLock) override { return S_OK; }
+
+  //////////////////////////////
+  // IUnknown:
+  //////////////////////////////
+  STDMETHODIMP(QueryInterface)(REFIID riid, LPVOID* ppv) override {
+    if (ppv == nullptr)
+      return E_POINTER;
+    if (IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_IClassFactory)) {
+      *ppv = this;
+      return S_OK;
+    }
+    *ppv = nullptr;
+    return E_NOINTERFACE;
+  }
+
+  ULONG STDMETHODCALLTYPE AddRef() override {
+    // Not actually refcounted, just a singleton.
+    return 1;
+  }
+
+  ULONG STDMETHODCALLTYPE Release() override { return 1; }
+
+ private:
+  CBrowserSwitcherBHOClass() = default;
+
+  static CBrowserSwitcherBHOClass instance_;
+};
+
+CBrowserSwitcherBHOClass CBrowserSwitcherBHOClass::instance_;
+
+extern "C" BOOL WINAPI DllMain(HINSTANCE instance,
+                               DWORD reason,
+                               LPVOID reserved) {
+  switch (reason) {
+    case DLL_PROCESS_ATTACH:
+      util::InitLog();
+      util::puts(DEBUG, "DLL_PROCESS_ATTACH");
+      {
+        wchar_t config_file[MAX_PATH];
+        GetConfigFileLocation(config_file);
+        wchar_t sitelist_file[MAX_PATH];
+        GetIESitelistCacheLocation(sitelist_file);
+        if (g_browser_switcher_core != nullptr)
+          delete g_browser_switcher_core;
+        g_browser_switcher_core = new BrowserSwitcherCore(
+            ReadFileToString(config_file), ReadFileToString(sitelist_file));
+      }
+      break;
+    case DLL_PROCESS_DETACH:
+      util::puts(DEBUG, "DLL_PROCESS_DETACH");
+      util::CloseLog();
+      delete g_browser_switcher_core;
+      g_browser_switcher_core = nullptr;
+      break;
+    case DLL_THREAD_ATTACH:
+    case DLL_THREAD_DETACH:
+    default:
+      break;
+  }
+  return true;
+}
+
+STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) {
+  if (ppv == nullptr)
+    return E_POINTER;
+  if (!IsEqualCLSID(rclsid, CLSID_BrowserSwitcherBHO))
+    return E_INVALIDARG;
+  *ppv = nullptr;
+  return CBrowserSwitcherBHOClass::GetInstance()->QueryInterface(riid, ppv);
+}
diff --git a/chrome/browser/browser_switcher/bho/mini_bho.def b/chrome/browser/browser_switcher/bho/mini_bho.def
new file mode 100644
index 0000000..a088cbb
--- /dev/null
+++ b/chrome/browser/browser_switcher/bho/mini_bho.def
@@ -0,0 +1,10 @@
+; Copyright 2019 The Chromium Authors. All rights reserved.
+; Use of this source code is governed by a BSD-style license that can be
+; found in the LICENSE file.
+
+; Declares the module parameters.
+
+LIBRARY      BROWSER_SWITCHER_BHO.DLL
+
+EXPORTS
+  DllGetClassObject    PRIVATE
diff --git a/chrome/browser/browser_switcher/bho/mini_bho_util.cc b/chrome/browser/browser_switcher/bho/mini_bho_util.cc
new file mode 100644
index 0000000..c2bac8da
--- /dev/null
+++ b/chrome/browser/browser_switcher/bho/mini_bho_util.cc
@@ -0,0 +1,223 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/browser_switcher/bho/mini_bho_util.h"
+
+#include <shlobj.h>
+#include <shlwapi.h>
+#include <strsafe.h>
+#include <windows.h>
+
+namespace util {
+
+const char* kLogPrefixes[] = {
+    "[*ERROR!*] : ",
+    "[WARN] : ",
+    "[info] : ",
+    "[debug] : ",
+};
+
+// Points to "AppData\LocalLow\Google\BrowserSwitcher\ie_bho_log2.txt".
+HANDLE g_log_file = 0;
+
+const wchar_t* g_log_file_path_for_testing = nullptr;
+
+void GetLogFilePath(wchar_t* log_file_path) {
+  if (g_log_file_path_for_testing != nullptr) {
+    ::StringCchCopyW(log_file_path, MAX_PATH, g_log_file_path_for_testing);
+    return;
+  }
+
+  OSVERSIONINFO info = {0};
+  info.dwOSVersionInfoSize = sizeof(info);
+  GetVersionEx(&info);
+  if (info.dwMajorVersion >= 6) {
+    wchar_t* path;
+    // On modern Windows versions there is a special AppData folder for
+    // processes with lowered execution rights, however older versions lack
+    // this folder so be prepared to back off to the usual AppData folder.
+    if (S_OK !=
+        ::SHGetKnownFolderPath(FOLDERID_LocalAppDataLow, 0, nullptr, &path)) {
+      if (S_OK !=
+          ::SHGetKnownFolderPath(FOLDERID_LocalAppData, 0, nullptr, &path)) {
+        return;
+      }
+    }
+    ::StringCchCopyW(log_file_path, MAX_PATH, path);
+    ::CoTaskMemFree(path);
+  } else {
+    // Old windows version only support SHGetSpecialFolderPath.
+    if (!::SHGetSpecialFolderPath(0, log_file_path, CSIDL_LOCAL_APPDATA, false))
+      return;
+  }
+  ::StringCchCatW(log_file_path, MAX_PATH, L"\\Google");
+  ::CreateDirectory(log_file_path, nullptr);
+  ::StringCchCatW(log_file_path, MAX_PATH, L"\\BrowserSwitcher");
+  ::CreateDirectory(log_file_path, nullptr);
+  ::StringCchCatW(log_file_path, MAX_PATH, L"\\ie_bho_log2.txt");
+}
+
+void InitLog() {
+  wchar_t log_file_path[MAX_PATH] = L"";
+  GetLogFilePath(log_file_path);
+  if (*log_file_path == '\0')
+    return;
+  g_log_file =
+      ::CreateFile(log_file_path, GENERIC_WRITE, FILE_SHARE_READ, nullptr,
+                   CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr);
+}
+
+void CloseLog() {
+  ::CloseHandle(g_log_file);
+}
+
+void SetLogFilePathForTesting(const wchar_t* log_file_path) {
+  g_log_file_path_for_testing = log_file_path;
+}
+
+void write(const char* s, size_t num) {
+  if (g_log_file)
+    ::WriteFile(g_log_file, s, num, nullptr, nullptr);
+}
+
+void vprintf(const char* fmt, va_list arglist) {
+  // wvsprintfA() is limited to 1024 chars. The rest is truncated.
+  char buffer[1025];
+  wvsprintfA(buffer, fmt, arglist);
+  write(buffer, ::lstrlenA(buffer));
+}
+
+void printf(const char* fmt, ...) {
+  va_list arglist;
+  va_start(arglist, fmt);
+  vprintf(fmt, arglist);
+  va_end(arglist);
+}
+
+void printf(LogLevel lvl, const char* fmt, ...) {
+  if (kLogLevel < lvl)
+    return;
+  printf("%s", kLogPrefixes[lvl]);
+  va_list arglist;
+  va_start(arglist, fmt);
+  vprintf(fmt, arglist);
+  va_end(arglist);
+}
+
+void puts(const char* s) {
+  printf("%s\n", s);
+}
+
+void puts(LogLevel lvl, const char* s) {
+  if (kLogLevel < lvl)
+    return;
+  printf("%s", kLogPrefixes[lvl]);
+  puts(s);
+}
+
+util::string empty_string() {
+  util::string empty(1);
+  empty[0] = '\0';
+  return empty;
+}
+
+util::wstring empty_wstring() {
+  util::wstring empty(1);
+  empty[0] = '\0';
+  return empty;
+}
+
+int max(int a, int b) {
+  return (a < b) ? b : a;
+}
+
+int min(int a, int b) {
+  return (a < b) ? a : b;
+}
+
+void* memmove(void* dest, const void* src, size_t num) {
+  if (dest == src)
+    return dest;
+  // Copy backwards if src < dest.
+  int dir = (src < dest) ? -1 : 1;
+  char* dest_bytes = reinterpret_cast<char*>(dest);
+  const char* src_bytes = reinterpret_cast<const char*>(src);
+  if (src < dest) {
+    dest_bytes += (num - 1);
+    src_bytes += (num - 1);
+  }
+  for (size_t i = 0; i < num; i++) {
+    *dest_bytes = *src_bytes;
+    dest_bytes += dir;
+    src_bytes += dir;
+  }
+  return dest;
+}
+
+char* strtok(char* str, const char* delimiters) {
+  static char* last_str = nullptr;
+  if (str == nullptr && last_str == nullptr)
+    return nullptr;
+  if (str == nullptr)
+    str = last_str;
+  size_t i = 0;
+  for (; ::StrChrA(delimiters, str[i]) == nullptr; i++) {
+    if (str[i] == '\0') {
+      last_str = nullptr;
+      return str;
+    }
+  }
+  str[i] = '\0';
+  last_str = str + i + 1;
+  return str;
+}
+
+bool wcs_replace_s(wchar_t* str,
+                   size_t strsz,
+                   const wchar_t* orig,
+                   const wchar_t* repl) {
+  wchar_t* pos = ::StrStrW(str, orig);
+  if (pos == nullptr)
+    return false;
+
+  size_t str_length = ::lstrlenW(str);
+  size_t repl_length = ::lstrlenW(repl);
+  size_t orig_length = ::lstrlenW(orig);
+  size_t new_length = str_length + repl_length - orig_length;
+
+  wchar_t* dest = pos + repl_length;
+  wchar_t* src = pos + orig_length;
+
+  size_t src_length = ::lstrlenW(src);
+
+  // Move the rest of the string to the new position, making space for |repl|.
+  memmove(dest, src,
+          max(0, min(src_length, strsz - (dest - str))) * sizeof(*str));
+  // Insert |repl| inside the string, writing over |orig|.
+  memmove(pos, repl,
+          max(0, min(repl_length, strsz - (pos - str))) * sizeof(*str));
+  str[min(strsz - 1, new_length)] = '\0';
+
+  return true;
+}
+
+string utf16_to_utf8(const wchar_t* utf16) {
+  const size_t buffer_size = max(
+      1,
+      WideCharToMultiByte(CP_UTF8, 0, utf16, -1, nullptr, 0, nullptr, nullptr));
+  string utf8(buffer_size);
+  WideCharToMultiByte(CP_UTF8, 0, utf16, -1, utf8.data(), buffer_size, nullptr,
+                      nullptr);
+  return utf8;
+}
+
+wstring utf8_to_utf16(const char* utf8) {
+  const size_t buffer_size =
+      max(1, MultiByteToWideChar(CP_UTF8, 0, utf8, -1, nullptr, 0));
+  wstring utf16(buffer_size);
+  MultiByteToWideChar(CP_UTF8, 0, utf8, -1, utf16.data(), buffer_size);
+  return utf16;
+}
+
+}  // namespace util
diff --git a/chrome/browser/browser_switcher/bho/mini_bho_util.h b/chrome/browser/browser_switcher/bho/mini_bho_util.h
new file mode 100644
index 0000000..d9ecc0a
--- /dev/null
+++ b/chrome/browser/browser_switcher/bho/mini_bho_util.h
@@ -0,0 +1,115 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_BROWSER_SWITCHER_BHO_MINI_BHO_UTIL_H_
+#define CHROME_BROWSER_BROWSER_SWITCHER_BHO_MINI_BHO_UTIL_H_
+
+#include <stdarg.h>
+
+enum LogLevel {
+  ERR,
+  WARNING,
+  INFO,
+  DEBUG,
+};
+
+// Basically a fake stdlib. Most functions have the same name & signature as the
+// ones in libc (mostly from string.h).
+namespace util {
+
+constexpr LogLevel kLogLevel = DEBUG;
+
+extern const char* kLogPrefixes[];
+
+// write(), puts(), and printf() log to this file:
+// "AppData\LocalLow\Google\BrowserSwitcher\ie_bho_log2.txt"
+void InitLog();
+void CloseLog();
+void SetLogFilePathForTesting(const wchar_t* log_path);
+
+void write(const char* s, size_t num);
+void puts(const char* s);
+void puts(LogLevel lvl, const char* s);
+
+void vprintf(const char* fmt, va_list arglist);
+void printf(const char* fmt, ...);
+void printf(LogLevel lvl, const char* fmt, ...);
+
+// Fixed-sized vector of |T| that lives on the heap. Frees memory when deleted.
+template <typename T>
+class vector {
+ public:
+  vector() : vector(0) {}
+  explicit vector(size_t size) {
+    data_ = (size == 0) ? nullptr : new T[size];
+    capacity_ = size;
+  }
+  ~vector() {
+    if (data_ != nullptr)
+      delete[] data_;
+  }
+
+  // Avoid accidental copy.
+  vector(vector<T>&) = delete;
+
+  vector(vector<T>&& that) : vector() { swap(that); }
+  vector<T>& operator=(vector<T>&& that) {
+    swap(that);
+    return *this;
+  }
+
+  void swap(vector<T>& that) {
+    T* tmp_data = data_;
+    size_t tmp_capacity = capacity_;
+    data_ = that.data_;
+    capacity_ = that.capacity_;
+    that.data_ = tmp_data;
+    that.capacity_ = tmp_capacity;
+  }
+
+  size_t capacity() { return capacity_; }
+  T* data() { return data_; }
+
+  T* begin() { return data_; }
+  const T* begin() const { return data_; }
+  // This iterator is incorrect for strings. It'll include the terminating '\0'.
+  T* end() { return data_ + capacity_; }
+  const T* end() const { return data_ + capacity_; }
+
+  // No bounds-checking.
+  T& operator[](size_t pos) { return data_[pos]; }
+
+ private:
+  T* data_;
+  size_t capacity_;
+};
+
+// A vector of bytes = poor man's string.
+using string = vector<char>;
+using wstring = vector<wchar_t>;
+
+util::string empty_string();
+util::wstring empty_wstring();
+
+int max(int a, int b);
+int min(int a, int b);
+
+// Unlike strcpy(), etc., this can copy to overlapping memory areas.
+void* memmove(void* dest, const void* src, size_t num);
+
+char* strtok(char* str, const char* delimiters);
+
+// Replaces the first occurrence of |orig| with |repl|. Returns true if a
+// replacement was done.
+bool wcs_replace_s(wchar_t* str,
+                   size_t strsz,
+                   const wchar_t* orig,
+                   const wchar_t* repl);
+
+string utf16_to_utf8(const wchar_t* utf16);
+wstring utf8_to_utf16(const char* utf8);
+
+}  // namespace util
+
+#endif  // CHROME_BROWSER_BROWSER_SWITCHER_BHO_MINI_BHO_UTIL_H_
diff --git a/chrome/browser/browser_switcher/bho/mini_bho_util_unittest.cc b/chrome/browser/browser_switcher/bho/mini_bho_util_unittest.cc
new file mode 100644
index 0000000..10c5592
--- /dev/null
+++ b/chrome/browser/browser_switcher/bho/mini_bho_util_unittest.cc
@@ -0,0 +1,187 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/browser_switcher/bho/mini_bho_util.h"
+
+#include <string.h>
+
+#include "base/files/file.h"
+#include "base/files/file_util.h"
+#include "base/files/scoped_temp_dir.h"
+#include "base/strings/string16.h"
+#include "base/strings/utf_string_conversions.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+// Default buffer size used for most tests.
+const size_t BUFSZ = 10;
+
+template <typename T>
+void FillWithBogus(T* buffer, size_t size = BUFSZ) {
+  memset(buffer, 0xAA, size * sizeof(*buffer));
+}
+
+template <typename T>
+std::basic_string<T> GetBytes(T* buffer, size_t size = BUFSZ) {
+  return std::basic_string<T>(buffer, size);
+}
+
+}  // namespace
+
+TEST(MiniBhoUtil, Logging) {
+  base::ScopedTempDir temp_dir;
+  ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
+  base::FilePath log_path = temp_dir.GetPath().AppendASCII("log.txt");
+
+  util::SetLogFilePathForTesting(log_path.value().c_str());
+  util::InitLog();
+
+  util::puts(DEBUG, "hello world");
+  util::printf(ERR, "n = %d\n", 34);
+
+  util::CloseLog();
+
+  const char expected[] =
+      "[debug] : hello world\n"
+      "[*ERROR!*] : n = 34\n";
+
+  EXPECT_TRUE(base::PathExists(log_path));
+  base::File file(log_path, base::File::FLAG_OPEN | base::File::FLAG_READ);
+  std::unique_ptr<char[]> buffer(new char[file.GetLength() + 1]);
+  buffer.get()[file.GetLength()] = '\0';
+  EXPECT_GT(file.Read(0, buffer.get(), file.GetLength()), -1);
+  EXPECT_EQ(std::string(expected), std::string(buffer.get()));
+}
+
+TEST(MiniBhoUtil, VectorMove) {
+  util::vector<double> vec1(10);
+  util::vector<double> vec2;
+  ASSERT_NE(nullptr, vec1.data());
+  ASSERT_EQ(10u, vec1.capacity());
+  ASSERT_EQ(nullptr, vec2.data());
+  ASSERT_EQ(0u, vec2.capacity());
+
+  vec2 = std::move(vec1);
+  EXPECT_EQ(nullptr, vec1.data());
+  EXPECT_EQ(0u, vec1.capacity());
+  EXPECT_NE(nullptr, vec2.data());
+  EXPECT_EQ(10u, vec2.capacity());
+
+  util::vector<double> vec3(std::move(vec2));
+  EXPECT_EQ(nullptr, vec2.data());
+  EXPECT_EQ(0u, vec2.capacity());
+  EXPECT_NE(nullptr, vec3.data());
+  EXPECT_EQ(10u, vec3.capacity());
+}
+
+TEST(MiniBhoUtil, memmove) {
+  char data[BUFSZ] = {
+      '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+  };
+  char buffer[BUFSZ];
+
+  // Copy backwards.
+  ::memcpy(buffer, data, BUFSZ);
+  util::memmove(buffer + 5, buffer, 5);
+  char expected[BUFSZ] = {
+      '0', '1', '2', '3', '4', '0', '1', '2', '3', '4',
+  };
+  EXPECT_EQ(GetBytes(expected), GetBytes(buffer));
+
+  // Copy forwards.
+  ::memcpy(buffer, data, BUFSZ);
+  util::memmove(buffer, buffer + 5, 5);
+  char expected2[BUFSZ] = {
+      '5', '6', '7', '8', '9', '5', '6', '7', '8', '9',
+  };
+  EXPECT_EQ(GetBytes(expected2), GetBytes(buffer));
+}
+
+TEST(MiniBhoUtil, strtok) {
+  char str[] = "many,punctuation;separated:values";
+  const char delim[] = ",;:";
+
+  EXPECT_EQ("many", std::string(util::strtok(str, delim)));
+  EXPECT_EQ("punctuation", std::string(util::strtok(nullptr, delim)));
+  EXPECT_EQ("separated", std::string(util::strtok(nullptr, delim)));
+  EXPECT_EQ("values", std::string(util::strtok(nullptr, delim)));
+  EXPECT_EQ(nullptr, util::strtok(nullptr, delim));
+
+  char str2[] = "no punctuation";
+  EXPECT_EQ("no punctuation", std::string(util::strtok(str2, delim)));
+  EXPECT_EQ(nullptr, util::strtok(nullptr, delim));
+
+  char str3[] = "";
+  EXPECT_EQ("", std::string(util::strtok(str3, delim)));
+  EXPECT_EQ(nullptr, util::strtok(nullptr, delim));
+}
+
+TEST(MiniBhoUtil, wcs_replace_s) {
+  // No match = no replacement.
+  wchar_t buffer[BUFSZ];
+  FillWithBogus(buffer);
+  ::wcscpy(buffer, L"hello");
+  EXPECT_FALSE(util::wcs_replace_s(buffer, BUFSZ, L"x", L"y"));
+  EXPECT_EQ(std::wstring(L"hello"), std::wstring(buffer));
+  wchar_t expected[] = {
+      'h', 'e', 'l', 'l', 'o', '\0', 0xAAAA, 0xAAAA, 0xAAAA, 0xAAAA,
+  };
+  EXPECT_EQ(GetBytes(expected), GetBytes(buffer));
+
+  // Replace in string, same length.
+  FillWithBogus(buffer);
+  ::wcscpy(buffer, L"hello");
+  EXPECT_TRUE(util::wcs_replace_s(buffer, BUFSZ, L"ll", L"yy"));
+  EXPECT_EQ(L"heyyo", std::wstring(buffer));
+  wchar_t expected2[] = {
+      'h', 'e', 'y', 'y', 'o', '\0', 0xAAAA, 0xAAAA, 0xAAAA, 0xAAAA,
+  };
+  EXPECT_EQ(GetBytes(expected2), GetBytes(buffer));
+
+  // Replace in string, different length.
+  FillWithBogus(buffer);
+  ::wcscpy(buffer, L"hello");
+  EXPECT_TRUE(util::wcs_replace_s(buffer, BUFSZ, L"e", L"ayy"));
+  EXPECT_EQ(L"hayyllo", std::wstring(buffer));
+  wchar_t expected3[] = {
+      'h', 'a', 'y', 'y', 'l', 'l', 'o', '\0', 0xAAAA, 0xAAAA,
+  };
+  EXPECT_EQ(GetBytes(expected3), GetBytes(buffer));
+
+  FillWithBogus(buffer);
+  ::wcscpy(buffer, L"hello");
+  EXPECT_TRUE(util::wcs_replace_s(buffer, BUFSZ, L"ell", L"ai"));
+  EXPECT_EQ(L"haio", std::wstring(buffer));
+  wchar_t expected4[] = {
+      'h', 'a', 'i', 'o', '\0', '\0', 0xAAAA, 0xAAAA, 0xAAAA, 0xAAAA,
+  };
+  EXPECT_EQ(GetBytes(expected4), GetBytes(buffer));
+
+  // Would cause a buffer overflow.
+  FillWithBogus(buffer);
+  ::wcscpy(buffer, L"hello");
+  EXPECT_TRUE(util::wcs_replace_s(buffer, 7, L"ell", L"i there friend"));
+  EXPECT_EQ(L"hi the", std::wstring(buffer));
+  wchar_t expected5[] = {
+      'h', 'i', ' ', 't', 'h', 'e', '\0', 0xAAAA, 0xAAAA, 0xAAAA,
+  };
+  EXPECT_EQ(GetBytes(expected5), GetBytes(buffer));
+}
+
+TEST(MiniBhoUtil, utf_conversions) {
+  base::string16 expected_utf16 = STRING16_LITERAL("홍길동");
+  std::string expected_utf8 = base::UTF16ToUTF8(expected_utf16);
+
+  util::string utf8 = util::utf16_to_utf8(expected_utf16.c_str());
+  util::wstring utf16 = util::utf8_to_utf16(expected_utf8.c_str());
+
+  EXPECT_EQ(expected_utf8, std::string(utf8.data()));
+  EXPECT_EQ(expected_utf16, std::wstring(utf16.data()));
+}
+
+int main(int argc, char** argv) {
+  testing::InitGoogleTest(&argc, argv);
+  return RUN_ALL_TESTS();
+}
diff --git a/chrome/browser/chrome_notification_types.h b/chrome/browser/chrome_notification_types.h
index b5993b6..d6f87fb 100644
--- a/chrome/browser/chrome_notification_types.h
+++ b/chrome/browser/chrome_notification_types.h
@@ -160,14 +160,6 @@
   // The details are a Profile object.
   NOTIFICATION_LOGIN_USER_PROFILE_PREPARED,
 
-  // Sent when the chromium session of a particular user is started.
-  // If this is a new user on the machine this will not be sent until a profile
-  // picture has been selected, unlike NOTIFICATION_LOGIN_USER_CHANGED
-  // (obsolete) which was sent immediately after the user has logged in. This
-  // will be sent again if the browser crashes and restarts. The details are a
-  // chromeos::User object.
-  NOTIFICATION_SESSION_STARTED,
-
   // Sent when a network error message is displayed on the WebUI login screen.
   // First paint event of this fires NOTIFICATION_LOGIN_OR_LOCK_WEBUI_VISIBLE.
   NOTIFICATION_LOGIN_NETWORK_ERROR_SHOWN,
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index 4d02301b..23d97fb 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -1508,6 +1508,8 @@
     "login/users/user_manager_interface.h",
     "login/version_info_updater.cc",
     "login/version_info_updater.h",
+    "login/version_updater/version_updater.cc",
+    "login/version_updater/version_updater.h",
     "login/wizard_controller.cc",
     "login/wizard_controller.h",
     "mobile/mobile_activator.cc",
@@ -2326,6 +2328,8 @@
     "login/test/test_condition_waiter.h",
     "login/test/test_predicate_waiter.cc",
     "login/test/test_predicate_waiter.h",
+    "login/version_updater/mock_version_updater_delegate.cc",
+    "login/version_updater/mock_version_updater_delegate.h",
     "printing/printing_stubs.cc",
     "printing/printing_stubs.h",
     "scoped_set_running_on_chromeos_for_testing.cc",
@@ -2618,6 +2622,7 @@
     "login/users/affiliation_unittest.cc",
     "login/users/multi_profile_user_controller_unittest.cc",
     "login/users/user_manager_unittest.cc",
+    "login/version_updater/version_updater_unittest.cc",
     "mobile/mobile_activator_unittest.cc",
     "net/client_cert_store_chromeos_unittest.cc",
     "net/network_portal_detector_impl_unittest.cc",
diff --git a/chrome/browser/chromeos/accessibility/accessibility_manager.cc b/chrome/browser/chromeos/accessibility/accessibility_manager.cc
index 19fc56c6..ecebe48 100644
--- a/chrome/browser/chromeos/accessibility/accessibility_manager.cc
+++ b/chrome/browser/chromeos/accessibility/accessibility_manager.cc
@@ -1165,22 +1165,13 @@
   SetProfile(profile);
 }
 
-void AccessibilityManager::ActiveUserChanged(
-    const user_manager::User* active_user) {
+void AccessibilityManager::ActiveUserChanged(user_manager::User* active_user) {
   if (!active_user)
     return;
 
-  if (active_user->is_profile_created()) {
-    SetProfileByUser(active_user);
-  } else {
-    // |active_user| is unfortunately const.
-    user_manager::User* user =
-        user_manager::UserManager::Get()->GetActiveUser();
-    DCHECK_EQ(user, active_user);
-    user->AddProfileCreatedObserver(
-        base::BindOnce(&AccessibilityManager::SetProfileByUser,
-                       weak_ptr_factory_.GetWeakPtr(), user));
-  }
+  active_user->AddProfileCreatedObserver(
+      base::BindOnce(&AccessibilityManager::SetProfileByUser,
+                     weak_ptr_factory_.GetWeakPtr(), active_user));
 }
 
 base::TimeDelta AccessibilityManager::PlayShutdownSound() {
diff --git a/chrome/browser/chromeos/accessibility/accessibility_manager.h b/chrome/browser/chromeos/accessibility/accessibility_manager.h
index 0917fdb..8e772e1 100644
--- a/chrome/browser/chromeos/accessibility/accessibility_manager.h
+++ b/chrome/browser/chromeos/accessibility/accessibility_manager.h
@@ -222,7 +222,7 @@
   bool IsBrailleDisplayConnected() const;
 
   // user_manager::UserManager::UserSessionStateObserver overrides:
-  void ActiveUserChanged(const user_manager::User* active_user) override;
+  void ActiveUserChanged(user_manager::User* active_user) override;
 
   // Initiates play of shutdown sound and returns it's duration.
   base::TimeDelta PlayShutdownSound();
diff --git a/chrome/browser/chromeos/accessibility/magnification_manager.cc b/chrome/browser/chromeos/accessibility/magnification_manager.cc
index 0d16bf9..c5b32b2 100644
--- a/chrome/browser/chromeos/accessibility/magnification_manager.cc
+++ b/chrome/browser/chromeos/accessibility/magnification_manager.cc
@@ -101,18 +101,18 @@
 MagnificationManager::MagnificationManager() {
   registrar_.Add(this, chrome::NOTIFICATION_LOGIN_OR_LOCK_WEBUI_VISIBLE,
                  content::NotificationService::AllSources());
-  registrar_.Add(this, chrome::NOTIFICATION_SESSION_STARTED,
-                 content::NotificationService::AllSources());
   registrar_.Add(this, chrome::NOTIFICATION_PROFILE_DESTROYED,
                  content::NotificationService::AllSources());
   // TODO(warx): observe focus changed in page notification when either
   // fullscreen magnifier or docked magnifier is enabled.
   registrar_.Add(this, content::NOTIFICATION_FOCUS_CHANGED_IN_PAGE,
                  content::NotificationService::AllSources());
+  user_manager::UserManager::Get()->AddSessionStateObserver(this);
 }
 
 MagnificationManager::~MagnificationManager() {
   CHECK(this == g_magnification_manager);
+  user_manager::UserManager::Get()->RemoveSessionStateObserver(this);
 }
 
 void MagnificationManager::Observe(
@@ -127,15 +127,6 @@
         SetProfile(profile);
       break;
     }
-    case chrome::NOTIFICATION_SESSION_STARTED:
-      // Update |profile_| when entering a session.
-      SetProfile(ProfileManager::GetActiveUserProfile());
-
-      // Add a session state observer to be able to monitor session changes.
-      if (!session_state_observer_.get())
-        session_state_observer_.reset(
-            new user_manager::ScopedUserSessionStateObserver(this));
-      break;
     case chrome::NOTIFICATION_PROFILE_DESTROYED: {
       // Update |profile_| when exiting a session or shutting down.
       Profile* profile = content::Source<Profile>(source).ptr();
@@ -150,10 +141,17 @@
   }
 }
 
-void MagnificationManager::ActiveUserChanged(
-    const user_manager::User* active_user) {
-  if (active_user && active_user->is_profile_created())
-    SetProfile(ProfileManager::GetActiveUserProfile());
+void MagnificationManager::ActiveUserChanged(user_manager::User* active_user) {
+  if (!active_user)
+    return;
+
+  active_user->AddProfileCreatedObserver(
+      base::BindOnce(&MagnificationManager::SetProfileByUser,
+                     weak_ptr_factory_.GetWeakPtr(), active_user));
+}
+
+void MagnificationManager::SetProfileByUser(const user_manager::User* user) {
+  SetProfile(ProfileHelper::Get()->GetProfileByUser(user));
 }
 
 void MagnificationManager::SetProfile(Profile* profile) {
diff --git a/chrome/browser/chromeos/accessibility/magnification_manager.h b/chrome/browser/chromeos/accessibility/magnification_manager.h
index 2f8b8ae..4aec427 100644
--- a/chrome/browser/chromeos/accessibility/magnification_manager.h
+++ b/chrome/browser/chromeos/accessibility/magnification_manager.h
@@ -6,6 +6,7 @@
 #define CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_MAGNIFICATION_MANAGER_H_
 
 #include "base/macros.h"
+#include "base/memory/weak_ptr.h"
 #include "components/user_manager/user_manager.h"
 #include "content/public/browser/notification_observer.h"
 #include "content/public/browser/notification_registrar.h"
@@ -70,8 +71,9 @@
                const content::NotificationDetails& details) override;
 
   // user_manager::UserManager::UserSessionStateObserver overrides:
-  void ActiveUserChanged(const user_manager::User* active_user) override;
+  void ActiveUserChanged(user_manager::User* active_user) override;
 
+  void SetProfileByUser(const user_manager::User* user);
   void SetProfile(Profile* profile);
 
   void SetMagnifierEnabledInternal(bool enabled);
@@ -91,8 +93,7 @@
 
   content::NotificationRegistrar registrar_;
   std::unique_ptr<PrefChangeRegistrar> pref_change_registrar_;
-  std::unique_ptr<user_manager::ScopedUserSessionStateObserver>
-      session_state_observer_;
+  base::WeakPtrFactory<MagnificationManager> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(MagnificationManager);
 };
diff --git a/chrome/browser/chromeos/arc/voice_interaction/voice_interaction_controller_client.cc b/chrome/browser/chromeos/arc/voice_interaction/voice_interaction_controller_client.cc
index b0d0b0a..affaab8 100644
--- a/chrome/browser/chromeos/arc/voice_interaction/voice_interaction_controller_client.cc
+++ b/chrome/browser/chromeos/arc/voice_interaction/voice_interaction_controller_client.cc
@@ -10,18 +10,15 @@
 #include "ash/public/cpp/ash_pref_names.h"
 #include "ash/public/cpp/assistant/assistant_state.h"
 #include "base/bind.h"
-#include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
 #include "chrome/browser/chromeos/assistant/assistant_util.h"
+#include "chrome/browser/chromeos/profiles/profile_helper.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/profiles/profile_manager.h"
 #include "chromeos/constants/chromeos_features.h"
-#include "components/arc/arc_prefs.h"
 #include "components/arc/arc_util.h"
 #include "components/language/core/browser/pref_names.h"
 #include "components/prefs/pref_service.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_source.h"
 #include "content/public/common/service_manager_connection.h"
 #include "services/service_manager/public/cpp/connector.h"
 
@@ -37,17 +34,10 @@
 
 VoiceInteractionControllerClient::VoiceInteractionControllerClient() {
   DCHECK(!g_voice_interaction_controller_client_instance);
-
-  notification_registrar_.Add(this,
-                              chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED,
-                              content::NotificationService::AllSources());
-  notification_registrar_.Add(this, chrome::NOTIFICATION_SESSION_STARTED,
-                              content::NotificationService::AllSources());
-  notification_registrar_.Add(this, chrome::NOTIFICATION_PROFILE_DESTROYED,
-                              content::NotificationService::AllSources());
+  g_voice_interaction_controller_client_instance = this;
 
   arc::ArcSessionManager::Get()->AddObserver(this);
-  g_voice_interaction_controller_client_instance = this;
+  user_manager::UserManager::Get()->AddSessionStateObserver(this);
 
   voice_interaction_state_ = ash::mojom::VoiceInteractionState::NOT_READY;
 }
@@ -55,6 +45,8 @@
 VoiceInteractionControllerClient::~VoiceInteractionControllerClient() {
   DCHECK_EQ(g_voice_interaction_controller_client_instance, this);
   g_voice_interaction_controller_client_instance = nullptr;
+
+  user_manager::UserManager::Get()->RemoveSessionStateObserver(this);
   arc::ArcSessionManager::Get()->RemoveObserver(this);
 }
 
@@ -84,20 +76,6 @@
   ash::AssistantState::Get()->NotifyLockedFullScreenStateChanged(enabled);
 }
 
-void VoiceInteractionControllerClient::NotifySettingsEnabled() {
-  DCHECK(profile_);
-  PrefService* prefs = profile_->GetPrefs();
-  bool enabled = prefs->GetBoolean(prefs::kVoiceInteractionEnabled);
-  ash::AssistantState::Get()->NotifySettingsEnabled(enabled);
-}
-
-void VoiceInteractionControllerClient::NotifyHotwordEnabled() {
-  DCHECK(profile_);
-  PrefService* prefs = profile_->GetPrefs();
-  bool enabled = prefs->GetBoolean(prefs::kVoiceInteractionHotwordEnabled);
-  ash::AssistantState::Get()->NotifyHotwordEnabled(enabled);
-}
-
 void VoiceInteractionControllerClient::NotifyFeatureAllowed() {
   DCHECK(profile_);
   ash::mojom::AssistantAllowedState state =
@@ -117,16 +95,26 @@
 }
 
 void VoiceInteractionControllerClient::ActiveUserChanged(
-    const user_manager::User* active_user) {
-  if (active_user && active_user->is_profile_created())
-    SetProfile(ProfileManager::GetActiveUserProfile());
+    user_manager::User* active_user) {
+  if (!active_user)
+    return;
+
+  active_user->AddProfileCreatedObserver(
+      base::BindOnce(&VoiceInteractionControllerClient::SetProfileByUser,
+                     weak_ptr_factory_.GetWeakPtr(), active_user));
+}
+
+void VoiceInteractionControllerClient::OnArcPlayStoreEnabledChanged(
+    bool enabled) {
+  ash::AssistantState::Get()->NotifyArcPlayStoreEnabledChanged(enabled);
+}
+
+void VoiceInteractionControllerClient::SetProfileByUser(
+    const user_manager::User* user) {
+  SetProfile(chromeos::ProfileHelper::Get()->GetProfileByUser(user));
 }
 
 void VoiceInteractionControllerClient::SetProfile(Profile* profile) {
-  // Do nothing if this is called for the current profile. This can happen. For
-  // example, ChromeSessionManager fires both
-  // NOTIFICATION_LOGIN_USER_PROFILE_PREPARED and NOTIFICATION_SESSION_STARTED,
-  // and we are observing both events.
   if (profile_ == profile)
     return;
 
@@ -145,51 +133,9 @@
       base::BindRepeating(
           &VoiceInteractionControllerClient::NotifyLocaleChanged,
           base::Unretained(this)));
-  pref_change_registrar_->Add(
-      prefs::kVoiceInteractionEnabled,
-      base::BindRepeating(
-          &VoiceInteractionControllerClient::NotifySettingsEnabled,
-          base::Unretained(this)));
-  pref_change_registrar_->Add(
-      prefs::kVoiceInteractionHotwordEnabled,
-      base::BindRepeating(
-          &VoiceInteractionControllerClient::NotifyHotwordEnabled,
-          base::Unretained(this)));
 
-  NotifySettingsEnabled();
   NotifyLocaleChanged();
-  NotifyHotwordEnabled();
   OnArcPlayStoreEnabledChanged(IsArcPlayStoreEnabledForProfile(profile_));
 }
 
-void VoiceInteractionControllerClient::Observe(
-    int type,
-    const content::NotificationSource& source,
-    const content::NotificationDetails& details) {
-  switch (type) {
-    case chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED:
-      // Update |profile_| when login user profile is prepared.
-      // NOTIFICATION_SESSION_STARTED is not fired from UserSessionManager, but
-      // profile may be changed by UserSessionManager in OOBE flow.
-      SetProfile(ProfileManager::GetActiveUserProfile());
-      break;
-    case chrome::NOTIFICATION_SESSION_STARTED:
-      // Update |profile_| when entering a session.
-      SetProfile(ProfileManager::GetActiveUserProfile());
-
-      // Add a session state observer to be able to monitor session changes.
-      if (!session_state_observer_.get()) {
-        session_state_observer_ =
-            std::make_unique<user_manager::ScopedUserSessionStateObserver>(
-                this);
-      }
-      break;
-  }
-}
-
-void VoiceInteractionControllerClient::OnArcPlayStoreEnabledChanged(
-    bool enabled) {
-  ash::AssistantState::Get()->NotifyArcPlayStoreEnabledChanged(enabled);
-}
-
 }  // namespace arc
diff --git a/chrome/browser/chromeos/arc/voice_interaction/voice_interaction_controller_client.h b/chrome/browser/chromeos/arc/voice_interaction/voice_interaction_controller_client.h
index 4cac867..12937b6 100644
--- a/chrome/browser/chromeos/arc/voice_interaction/voice_interaction_controller_client.h
+++ b/chrome/browser/chromeos/arc/voice_interaction/voice_interaction_controller_client.h
@@ -8,11 +8,10 @@
 #include <memory>
 
 #include "ash/public/mojom/voice_interaction_controller.mojom.h"
+#include "base/memory/weak_ptr.h"
 #include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "components/prefs/pref_change_registrar.h"
 #include "components/user_manager/user_manager.h"
-#include "content/public/browser/notification_observer.h"
-#include "content/public/browser/notification_registrar.h"
 
 namespace arc {
 
@@ -21,8 +20,7 @@
 // states and notifies Ash side.  It can also be used to notify some specific
 // state changes that does not have an observer interface.
 class VoiceInteractionControllerClient
-    : public content::NotificationObserver,
-      public user_manager::UserManager::UserSessionStateObserver,
+    : public user_manager::UserManager::UserSessionStateObserver,
       public ArcSessionManager::Observer {
  public:
   class Observer {
@@ -51,28 +49,19 @@
   friend class VoiceInteractionControllerClientTest;
 
   // Notify the controller about state changes.
-  void NotifySettingsEnabled();
-  void NotifyHotwordEnabled();
   void NotifyFeatureAllowed();
   void NotifyLocaleChanged();
 
   // user_manager::UserManager::UserSessionStateObserver overrides:
-  void ActiveUserChanged(const user_manager::User* active_user) override;
-
-  // content::NotificationObserver:
-  void Observe(int type,
-               const content::NotificationSource& source,
-               const content::NotificationDetails& details) override;
+  void ActiveUserChanged(user_manager::User* active_user) override;
 
   // Override ArcSessionManager::Observer
   void OnArcPlayStoreEnabledChanged(bool enabled) override;
 
+  void SetProfileByUser(const user_manager::User* user);
   void SetProfile(Profile* profile);
 
-  content::NotificationRegistrar notification_registrar_;
   std::unique_ptr<PrefChangeRegistrar> pref_change_registrar_;
-  std::unique_ptr<user_manager::ScopedUserSessionStateObserver>
-      session_state_observer_;
 
   Profile* profile_ = nullptr;
 
@@ -81,6 +70,9 @@
 
   base::ObserverList<Observer>::Unchecked observers_;
 
+  base::WeakPtrFactory<VoiceInteractionControllerClient> weak_ptr_factory_{
+      this};
+
   DISALLOW_COPY_AND_ASSIGN(VoiceInteractionControllerClient);
 };
 
diff --git a/chrome/browser/chromeos/arc/voice_interaction/voice_interaction_controller_client_unittest.cc b/chrome/browser/chromeos/arc/voice_interaction/voice_interaction_controller_client_unittest.cc
index 5c347bb..fafd85d 100644
--- a/chrome/browser/chromeos/arc/voice_interaction/voice_interaction_controller_client_unittest.cc
+++ b/chrome/browser/chromeos/arc/voice_interaction/voice_interaction_controller_client_unittest.cc
@@ -11,7 +11,6 @@
 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
 #include "chrome/test/base/chrome_ash_test_base.h"
 #include "chrome/test/base/testing_profile.h"
-#include "components/arc/arc_prefs.h"
 #include "components/arc/arc_util.h"
 #include "components/arc/test/fake_arc_session.h"
 #include "components/language/core/browser/pref_names.h"
@@ -87,16 +86,6 @@
 TEST_F(VoiceInteractionControllerClientTest, PrefChangeSendsNotification) {
   PrefService* prefs = profile()->GetPrefs();
 
-  ASSERT_EQ(false, prefs->GetBoolean(prefs::kVoiceInteractionEnabled));
-  prefs->SetBoolean(prefs::kVoiceInteractionEnabled, true);
-  ASSERT_EQ(true, prefs->GetBoolean(prefs::kVoiceInteractionEnabled));
-  EXPECT_EQ(true, ash::AssistantState::Get()->settings_enabled());
-
-  ASSERT_EQ(false, prefs->GetBoolean(prefs::kVoiceInteractionHotwordEnabled));
-  prefs->SetBoolean(prefs::kVoiceInteractionHotwordEnabled, true);
-  ASSERT_EQ(true, prefs->GetBoolean(prefs::kVoiceInteractionHotwordEnabled));
-  EXPECT_EQ(true, ash::AssistantState::Get()->hotword_enabled());
-
   ASSERT_EQ("", prefs->GetString(language::prefs::kApplicationLocale));
   prefs->SetString(language::prefs::kApplicationLocale, "en-CA");
   ASSERT_EQ("en-CA", prefs->GetString(language::prefs::kApplicationLocale));
diff --git a/chrome/browser/chromeos/certificate_provider/certificate_provider_service.cc b/chrome/browser/chromeos/certificate_provider/certificate_provider_service.cc
index 99f7155..476a69f 100644
--- a/chrome/browser/chromeos/certificate_provider/certificate_provider_service.cc
+++ b/chrome/browser/chromeos/certificate_provider/certificate_provider_service.cc
@@ -370,7 +370,8 @@
   if (!sign_requests_.RemoveRequest(extension_id, sign_request_id, &certificate,
                                     &callback)) {
     LOG(ERROR) << "request id unknown.";
-    // Maybe multiple replies to the same request.
+    // The request was aborted before, or the extension replied multiple times
+    // to the same request.
     return;
   }
 
@@ -463,6 +464,30 @@
   return true;
 }
 
+void CertificateProviderService::AbortSignatureRequestsForAuthenticatingUser(
+    const AccountId& authenticating_user_account_id) {
+  using ExtensionNameRequestIdPair =
+      certificate_provider::SignRequests::ExtensionNameRequestIdPair;
+
+  const std::vector<ExtensionNameRequestIdPair> sign_requests_to_abort =
+      sign_requests_.FindRequestsForAuthenticatingUser(
+          authenticating_user_account_id);
+
+  for (const ExtensionNameRequestIdPair& sign_request :
+       sign_requests_to_abort) {
+    const std::string& extension_id = sign_request.first;
+    const int sign_request_id = sign_request.second;
+    pin_dialog_manager_.AbortSignRequest(extension_id, sign_request_id);
+
+    scoped_refptr<net::X509Certificate> certificate;
+    net::SSLPrivateKey::SignCallback sign_callback;
+    if (sign_requests_.RemoveRequest(extension_id, sign_request_id,
+                                     &certificate, &sign_callback)) {
+      std::move(sign_callback).Run(net::ERR_FAILED, std::vector<uint8_t>());
+    }
+  }
+}
+
 void CertificateProviderService::GetCertificatesFromExtensions(
     base::OnceCallback<void(net::ClientCertIdentityList)> callback) {
   DCHECK(thread_checker_.CalledOnValidThread());
@@ -531,8 +556,9 @@
     net::SSLPrivateKey::SignCallback callback) {
   DCHECK(thread_checker_.CalledOnValidThread());
 
-  const int sign_request_id =
-      sign_requests_.AddRequest(extension_id, certificate, std::move(callback));
+  const int sign_request_id = sign_requests_.AddRequest(
+      extension_id, certificate, authenticating_user_account_id,
+      std::move(callback));
   pin_dialog_manager_.AddSignRequestId(extension_id, sign_request_id,
                                        authenticating_user_account_id);
   if (!delegate_->DispatchSignRequestToExtension(
diff --git a/chrome/browser/chromeos/certificate_provider/certificate_provider_service.h b/chrome/browser/chromeos/certificate_provider/certificate_provider_service.h
index b02fdd74..9d43b2f 100644
--- a/chrome/browser/chromeos/certificate_provider/certificate_provider_service.h
+++ b/chrome/browser/chromeos/certificate_provider/certificate_provider_service.h
@@ -189,6 +189,11 @@
       const std::string& subject_public_key_info,
       std::vector<uint16_t>* supported_algorithms);
 
+  // Aborts all signature requests and related PIN dialogs that are associated
+  // with the authentication of the given user.
+  void AbortSignatureRequestsForAuthenticatingUser(
+      const AccountId& authenticating_user_account_id);
+
   PinDialogManager* pin_dialog_manager() { return &pin_dialog_manager_; }
 
  private:
diff --git a/chrome/browser/chromeos/certificate_provider/pin_dialog_manager.cc b/chrome/browser/chromeos/certificate_provider/pin_dialog_manager.cc
index 429b56a..788f2ad2 100644
--- a/chrome/browser/chromeos/certificate_provider/pin_dialog_manager.cc
+++ b/chrome/browser/chromeos/certificate_provider/pin_dialog_manager.cc
@@ -28,6 +28,18 @@
                                            authenticating_user_account_id)));
 }
 
+void PinDialogManager::AbortSignRequest(const std::string& extension_id,
+                                        int sign_request_id) {
+  if (active_dialog_state_ &&
+      active_dialog_state_->extension_id == extension_id &&
+      active_dialog_state_->sign_request_id == sign_request_id) {
+    CloseActiveDialog();
+  }
+
+  ExtensionNameRequestIdPair key(extension_id, sign_request_id);
+  sign_requests_.erase(key);
+}
+
 PinDialogManager::RequestPinResult PinDialogManager::RequestPin(
     const std::string& extension_id,
     const std::string& extension_name,
diff --git a/chrome/browser/chromeos/certificate_provider/pin_dialog_manager.h b/chrome/browser/chromeos/certificate_provider/pin_dialog_manager.h
index 9b99f8ad..67069c3a 100644
--- a/chrome/browser/chromeos/certificate_provider/pin_dialog_manager.h
+++ b/chrome/browser/chromeos/certificate_provider/pin_dialog_manager.h
@@ -55,6 +55,10 @@
       int sign_request_id,
       const base::Optional<AccountId>& authenticating_user_account_id);
 
+  // Removes the specified sign request, aborting both the current and the
+  // future PIN dialogs related to it.
+  void AbortSignRequest(const std::string& extension_id, int sign_request_id);
+
   // Creates and displays a new PIN dialog, or reuses the old dialog with just
   // updating the parameters if active one exists.
   // |extension_id| - the ID of the extension requesting the dialog.
diff --git a/chrome/browser/chromeos/certificate_provider/sign_requests.cc b/chrome/browser/chromeos/certificate_provider/sign_requests.cc
index fcf3fed..f088ec8 100644
--- a/chrome/browser/chromeos/certificate_provider/sign_requests.cc
+++ b/chrome/browser/chromeos/certificate_provider/sign_requests.cc
@@ -4,15 +4,16 @@
 
 #include "chrome/browser/chromeos/certificate_provider/sign_requests.h"
 
-#include <utility>
-
 namespace chromeos {
 namespace certificate_provider {
 
 SignRequests::Request::Request(
     const scoped_refptr<net::X509Certificate>& certificate,
+    const base::Optional<AccountId>& authenticating_user_account_id,
     net::SSLPrivateKey::SignCallback callback)
-    : certificate(certificate), callback(std::move(callback)) {}
+    : certificate(certificate),
+      authenticating_user_account_id(authenticating_user_account_id),
+      callback(std::move(callback)) {}
 
 SignRequests::Request::Request(Request&& other) = default;
 
@@ -33,14 +34,35 @@
 int SignRequests::AddRequest(
     const std::string& extension_id,
     const scoped_refptr<net::X509Certificate>& certificate,
+    const base::Optional<AccountId>& authenticating_user_account_id,
     net::SSLPrivateKey::SignCallback callback) {
   RequestsState& state = extension_to_requests_[extension_id];
   const int request_id = state.next_free_id++;
-  state.pending_requests.emplace(request_id,
-                                 Request(certificate, std::move(callback)));
+  state.pending_requests.emplace(
+      request_id, Request(certificate, authenticating_user_account_id,
+                          std::move(callback)));
   return request_id;
 }
 
+std::vector<SignRequests::ExtensionNameRequestIdPair>
+SignRequests::FindRequestsForAuthenticatingUser(
+    const AccountId& authenticating_user_account_id) const {
+  std::vector<ExtensionNameRequestIdPair> found_requests;
+  for (const auto& extension_entry : extension_to_requests_) {
+    const std::string& extension_id = extension_entry.first;
+    const RequestsState& extension_requests = extension_entry.second;
+    for (const auto& entry : extension_requests.pending_requests) {
+      const int request_id = entry.first;
+      const Request& request = entry.second;
+      if (request.authenticating_user_account_id ==
+          authenticating_user_account_id) {
+        found_requests.emplace_back(extension_id, request_id);
+      }
+    }
+  }
+  return found_requests;
+}
+
 bool SignRequests::RemoveRequest(
     const std::string& extension_id,
     int request_id,
diff --git a/chrome/browser/chromeos/certificate_provider/sign_requests.h b/chrome/browser/chromeos/certificate_provider/sign_requests.h
index c01427e..1948e98 100644
--- a/chrome/browser/chromeos/certificate_provider/sign_requests.h
+++ b/chrome/browser/chromeos/certificate_provider/sign_requests.h
@@ -7,11 +7,14 @@
 
 #include <map>
 #include <string>
+#include <utility>
 #include <vector>
 
 #include "base/callback.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
+#include "base/optional.h"
+#include "components/account_id/account_id.h"
 #include "net/cert/x509_certificate.h"
 #include "net/ssl/ssl_private_key.h"
 
@@ -20,14 +23,23 @@
 
 class SignRequests {
  public:
+  using ExtensionNameRequestIdPair = std::pair<std::string, int>;
+
   SignRequests();
   ~SignRequests();
 
   // Returns the id of the new request. The returned request id is specific to
   // the given extension.
-  int AddRequest(const std::string& extension_id,
-                 const scoped_refptr<net::X509Certificate>& certificate,
-                 net::SSLPrivateKey::SignCallback callback);
+  int AddRequest(
+      const std::string& extension_id,
+      const scoped_refptr<net::X509Certificate>& certificate,
+      const base::Optional<AccountId>& authenticating_user_account_id,
+      net::SSLPrivateKey::SignCallback callback);
+
+  // Returns the list of requests that correspond to the authentication of the
+  // given user.
+  std::vector<ExtensionNameRequestIdPair> FindRequestsForAuthenticatingUser(
+      const AccountId& authenticating_user_account_id) const;
 
   // Returns false if no request with the given id for |extension_id|
   // could be found. Otherwise removes the request and sets |certificate| and
@@ -45,12 +57,14 @@
  private:
   struct Request {
     Request(const scoped_refptr<net::X509Certificate>& certificate,
+            const base::Optional<AccountId>& authenticating_user_account_id,
             net::SSLPrivateKey::SignCallback callback);
     Request(Request&& other);
     ~Request();
     Request& operator=(Request&&);
 
     scoped_refptr<net::X509Certificate> certificate;
+    base::Optional<AccountId> authenticating_user_account_id;
     net::SSLPrivateKey::SignCallback callback;
 
    private:
diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
index 1b87b10..8949c13 100644
--- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
+++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
@@ -692,14 +692,6 @@
       new NetworkThrottlingObserver(g_browser_process->local_state()));
 
   arc_service_launcher_ = std::make_unique<arc::ArcServiceLauncher>();
-  arc_voice_interaction_controller_client_ =
-      std::make_unique<arc::VoiceInteractionControllerClient>();
-
-#if BUILDFLAG(ENABLE_CROS_ASSISTANT)
-  // Assistant has to be initialized before session_controller_client to avoid
-  // race of SessionChanged event and assistant_client initialization.
-  assistant_client_ = std::make_unique<AssistantClient>();
-#endif
 
   ResourceReporter::GetInstance()->StartMonitoring(
       task_manager::TaskManagerInterface::GetTaskManager());
@@ -779,9 +771,21 @@
   AccessibilityManager::Initialize();
 
   // Initialize magnification manager before ash tray is created. And this
-  // must be placed after UserManager::SessionStarted();
+  // must be placed after UserManager initialization.
   MagnificationManager::Initialize();
 
+  // Requires UserManager.
+  arc_voice_interaction_controller_client_ =
+      std::make_unique<arc::VoiceInteractionControllerClient>();
+
+#if BUILDFLAG(ENABLE_CROS_ASSISTANT)
+  // Assistant has to be initialized before
+  // ChromeBrowserMainExtraPartsAsh::session_controller_client_ to avoid race of
+  // SessionChanged event and assistant_client initialization. It must come
+  // after VoiceInteractionControllerClient.
+  assistant_client_ = std::make_unique<AssistantClient>();
+#endif
+
   base::PostTaskAndReplyWithResult(
       FROM_HERE,
       {base::ThreadPool(), base::MayBlock(), base::TaskPriority::BEST_EFFORT},
@@ -1068,11 +1072,9 @@
   auto_screen_brightness_controller_ =
       std::make_unique<power::auto_screen_brightness::Controller>();
 
-  // Enable Chrome OS USB detection only if a USB feature is turned on.
-  if (base::FeatureList::IsEnabled(features::kCrostiniUsbSupport)) {
-    cros_usb_detector_ = std::make_unique<CrosUsbDetector>();
-    cros_usb_detector_->ConnectToDeviceManager();
-  }
+  // Enable Chrome OS USB detection.
+  cros_usb_detector_ = std::make_unique<CrosUsbDetector>();
+  cros_usb_detector_->ConnectToDeviceManager();
 
   crostini_unsupported_action_notifier_ =
       std::make_unique<crostini::CrostiniUnsupportedActionNotifier>();
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 3903e86..5a412f6 100644
--- a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
+++ b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
@@ -75,6 +75,7 @@
 #include "chromeos/dbus/dbus_thread_manager.h"
 #include "chromeos/dbus/session_manager/session_manager_client.h"
 #include "chromeos/printing/printer_configuration.h"
+#include "chromeos/services/assistant/public/cpp/assistant_prefs.h"
 #include "chromeos/services/machine_learning/public/cpp/service_connection.h"
 #include "components/arc/arc_prefs.h"
 #include "components/arc/metrics/arc_metrics_constants.h"
@@ -293,8 +294,8 @@
 std::string SetWhitelistedPref(Profile* profile,
                                const std::string& pref_name,
                                const base::Value& value) {
-  if (pref_name == arc::prefs::kVoiceInteractionEnabled ||
-      pref_name == arc::prefs::kVoiceInteractionHotwordEnabled) {
+  if (pref_name == chromeos::assistant::prefs::kAssistantEnabled ||
+      pref_name == chromeos::assistant::prefs::kAssistantHotwordEnabled) {
     DCHECK(value.is_bool());
     ash::mojom::AssistantAllowedState allowed_state =
         assistant::IsAssistantAllowedForProfile(profile);
@@ -390,6 +391,8 @@
     case ash::WindowStateType::kRightSnapped:
       return api::autotest_private::WindowStateType::
           WINDOW_STATE_TYPE_RIGHTSNAPPED;
+    case ash::WindowStateType::kPip:
+      return api::autotest_private::WindowStateType::WINDOW_STATE_TYPE_PIP;
     default:
       NOTREACHED();
       return api::autotest_private::WindowStateType::WINDOW_STATE_TYPE_NONE;
@@ -1578,7 +1581,7 @@
 
   Profile* profile = Profile::FromBrowserContext(browser_context());
   const std::string& err_msg =
-      SetWhitelistedPref(profile, arc::prefs::kVoiceInteractionEnabled,
+      SetWhitelistedPref(profile, chromeos::assistant::prefs::kAssistantEnabled,
                          base::Value(params->enabled));
   if (!err_msg.empty())
     return RespondNow(Error(err_msg));
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_mode_resources_remover.cc b/chrome/browser/chromeos/login/demo_mode/demo_mode_resources_remover.cc
index 63fef9d..4b7d6df1 100644
--- a/chrome/browser/chromeos/login/demo_mode/demo_mode_resources_remover.cc
+++ b/chrome/browser/chromeos/login/demo_mode/demo_mode_resources_remover.cc
@@ -145,8 +145,7 @@
   AttemptRemoval(RemovalReason::kLowDiskSpace, RemovalCallback());
 }
 
-void DemoModeResourcesRemover::ActiveUserChanged(
-    const user_manager::User* user) {
+void DemoModeResourcesRemover::ActiveUserChanged(user_manager::User* user) {
   // Ignore user activity in guest sessions.
   if (user->GetType() == user_manager::USER_TYPE_GUEST)
     return;
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_mode_resources_remover.h b/chrome/browser/chromeos/login/demo_mode/demo_mode_resources_remover.h
index 42a8d1c..a43214cd 100644
--- a/chrome/browser/chromeos/login/demo_mode/demo_mode_resources_remover.h
+++ b/chrome/browser/chromeos/login/demo_mode/demo_mode_resources_remover.h
@@ -139,7 +139,7 @@
   void LowDiskSpace(uint64_t free_disk_space) override;
 
   // user_manager::UserManager::UserSessionStateObserver:
-  void ActiveUserChanged(const user_manager::User* user) override;
+  void ActiveUserChanged(user_manager::User* user) override;
 
   // ui::UserActivityObserver:
   void OnUserActivity(const ui::Event* event) override;
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_mode_resources_remover_unittest.cc b/chrome/browser/chromeos/login/demo_mode/demo_mode_resources_remover_unittest.cc
index d8e8871..291d113d8 100644
--- a/chrome/browser/chromeos/login/demo_mode/demo_mode_resources_remover_unittest.cc
+++ b/chrome/browser/chromeos/login/demo_mode/demo_mode_resources_remover_unittest.cc
@@ -118,7 +118,7 @@
   void AddAndLogInUser(TestUserType type, DemoModeResourcesRemover* remover) {
     FakeChromeUserManager* user_manager =
         static_cast<FakeChromeUserManager*>(user_manager::UserManager::Get());
-    const user_manager::User* user = nullptr;
+    user_manager::User* user = nullptr;
     switch (type) {
       case TestUserType::kRegular:
         user =
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_session.cc b/chrome/browser/chromeos/login/demo_mode/demo_session.cc
index 4d09b5d..4721762e 100644
--- a/chrome/browser/chromeos/login/demo_mode/demo_session.cc
+++ b/chrome/browser/chromeos/login/demo_mode/demo_session.cc
@@ -412,19 +412,12 @@
   return remove_splash_screen_fallback_timer_.get();
 }
 
-void DemoSession::ActiveUserChanged(const user_manager::User* user) {
+void DemoSession::ActiveUserChanged(user_manager::User* active_user) {
   const base::RepeatingClosure hide_web_store_icon = base::BindRepeating([]() {
     ProfileManager::GetActiveUserProfile()->GetPrefs()->SetBoolean(
         prefs::kHideWebStoreIcon, true);
   });
-  user_manager::User* active_user =
-      user_manager::UserManager::Get()->GetActiveUser();
-  DCHECK_NE(active_user, user);
-  if (!active_user->is_profile_created()) {
-    active_user->AddProfileCreatedObserver(hide_web_store_icon);
-    return;
-  }
-  hide_web_store_icon.Run();
+  active_user->AddProfileCreatedObserver(hide_web_store_icon);
 }
 
 DemoSession::DemoSession()
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_session.h b/chrome/browser/chromeos/login/demo_mode/demo_session.h
index d181f6c..1a2750b5 100644
--- a/chrome/browser/chromeos/login/demo_mode/demo_session.h
+++ b/chrome/browser/chromeos/login/demo_mode/demo_session.h
@@ -155,7 +155,7 @@
   base::OneShotTimer* GetTimerForTesting();
 
   // user_manager::UserManager::UserSessionStateObserver:
-  void ActiveUserChanged(const user_manager::User* user) override;
+  void ActiveUserChanged(user_manager::User* active_user) override;
 
   // extensions::AppWindowRegistry::Observer:
   void OnAppWindowActivated(extensions::AppWindow* app_window) override;
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.cc
index 82000d1..82da098 100644
--- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.cc
+++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.cc
@@ -192,14 +192,7 @@
       shut_down_(false),
       tpm_key_checked_(false) {}
 
-EasyUnlockService::~EasyUnlockService() {
-  // TODO(crbug.com/969135): Remove this once crbug.com/969135 is resolved.
-  // This CHECK ensures that EasyUnlockService is shutdown before it's deleted.
-  // This is added because the stack trace of the crash in question implies
-  // that a deleted member variable of EasyUnlockService is being touched during
-  // EasyUnlockService::Shutdown().
-  CHECK(shut_down_);
-}
+EasyUnlockService::~EasyUnlockService() = default;
 
 // static
 void EasyUnlockService::RegisterProfilePrefs(
diff --git a/chrome/browser/chromeos/login/lock/screen_locker.cc b/chrome/browser/chromeos/login/lock/screen_locker.cc
index a2592e4..28e73e4 100644
--- a/chrome/browser/chromeos/login/lock/screen_locker.cc
+++ b/chrome/browser/chromeos/login/lock/screen_locker.cc
@@ -155,12 +155,10 @@
 
 ScreenLockObserver* g_screen_lock_observer = nullptr;
 
-PinDialogManager* GetLoginScreenPinDialogManager() {
+CertificateProviderService* GetLoginScreenCertProviderService() {
   DCHECK(ProfileHelper::IsSigninProfileInitialized());
-  CertificateProviderService* certificate_provider_service =
-      CertificateProviderServiceFactory::GetForBrowserContext(
-          ProfileHelper::GetSigninProfile());
-  return certificate_provider_service->pin_dialog_manager();
+  return CertificateProviderServiceFactory::GetForBrowserContext(
+      ProfileHelper::GetSigninProfile());
 }
 
 }  // namespace
@@ -196,7 +194,7 @@
   fingerprint_observer_binding_.Bind(mojo::MakeRequest(&observer));
   fp_service_->AddFingerprintObserver(std::move(observer));
 
-  GetLoginScreenPinDialogManager()->AddPinDialogHost(
+  GetLoginScreenCertProviderService()->pin_dialog_manager()->AddPinDialogHost(
       &security_token_pin_dialog_host_ash_impl_);
 }
 
@@ -253,8 +251,13 @@
   if (auth_status_consumer_)
     auth_status_consumer_->OnAuthFailure(error);
 
-  if (on_auth_complete_)
-    std::move(on_auth_complete_).Run(false);
+  if (pending_auth_state_) {
+    GetLoginScreenCertProviderService()
+        ->AbortSignatureRequestsForAuthenticatingUser(
+            pending_auth_state_->account_id);
+    std::move(pending_auth_state_->callback).Run(false);
+    pending_auth_state_.reset();
+  }
 }
 
 void ScreenLocker::OnAuthSuccess(const UserContext& user_context) {
@@ -302,8 +305,10 @@
     NOTREACHED() << "Logged in user not found.";
   }
 
-  if (on_auth_complete_)
-    std::move(on_auth_complete_).Run(true);
+  if (pending_auth_state_) {
+    std::move(pending_auth_state_->callback).Run(true);
+    pending_auth_state_.reset();
+  }
 
   if (auth_status_consumer_)
     auth_status_consumer_->OnAuthSuccess(user_context);
@@ -359,8 +364,9 @@
     return;
   }
 
-  DCHECK(!on_auth_complete_);
-  on_auth_complete_ = std::move(callback);
+  DCHECK(!pending_auth_state_);
+  pending_auth_state_ = std::make_unique<AuthState>(user_context.GetAccountId(),
+                                                    std::move(callback));
   unlock_attempt_type_ = AUTH_PASSWORD;
 
   authentication_start_time_ = base::Time::Now();
@@ -410,8 +416,9 @@
     return;
   }
 
-  DCHECK(!on_auth_complete_);
-  on_auth_complete_ = std::move(callback);
+  DCHECK(!pending_auth_state_);
+  pending_auth_state_ =
+      std::make_unique<AuthState>(account_id, std::move(callback));
 
   unlock_attempt_type_ = AUTH_CHALLENGE_RESPONSE;
   challenge_response_auth_keys_loader_.LoadAvailableKeys(
@@ -425,8 +432,10 @@
     std::vector<ChallengeResponseKey> challenge_response_keys) {
   if (challenge_response_keys.empty()) {
     // TODO(crbug.com/826417): Indicate the error in the UI.
-    if (on_auth_complete_)
-      std::move(on_auth_complete_).Run(false /* auth_success */);
+    if (pending_auth_state_) {
+      std::move(pending_auth_state_->callback).Run(/*auth_success=*/false);
+      pending_auth_state_.reset();
+    }
     return;
   }
 
@@ -682,12 +691,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 // ScreenLocker, private:
 
+ScreenLocker::AuthState::AuthState(AccountId account_id,
+                                   base::OnceCallback<void(bool)> callback)
+    : account_id(account_id), callback(std::move(callback)) {}
+
+ScreenLocker::AuthState::~AuthState() = default;
+
 ScreenLocker::~ScreenLocker() {
   VLOG(1) << "Destroying ScreenLocker " << this;
   DCHECK(base::MessageLoopCurrentForUI::IsSet());
 
-  GetLoginScreenPinDialogManager()->RemovePinDialogHost(
-      &security_token_pin_dialog_host_ash_impl_);
+  GetLoginScreenCertProviderService()
+      ->pin_dialog_manager()
+      ->RemovePinDialogHost(&security_token_pin_dialog_host_ash_impl_);
 
   if (authenticator_)
     authenticator_->SetConsumer(nullptr);
diff --git a/chrome/browser/chromeos/login/lock/screen_locker.h b/chrome/browser/chromeos/login/lock/screen_locker.h
index 63cc0ed..bbd8ac1 100644
--- a/chrome/browser/chromeos/login/lock/screen_locker.h
+++ b/chrome/browser/chromeos/login/lock/screen_locker.h
@@ -130,9 +130,9 @@
   // the same login events that ScreenLocker does.
   void SetLoginStatusConsumer(chromeos::AuthStatusConsumer* consumer);
 
-  // Initialize or uninitialize the ScreenLocker class. It listens to
-  // NOTIFICATION_SESSION_STARTED so that the screen locker accepts lock
-  // requests only after a user has logged in.
+  // Initialize or uninitialize the ScreenLocker class. It observes
+  // SessionManager so that the screen locker accepts lock requests only after a
+  // user has logged in.
   static void InitClass();
   static void ShutDownClass();
 
@@ -187,6 +187,17 @@
     AUTH_COUNT
   };
 
+  // State associated with a pending authentication attempt.
+  struct AuthState {
+    AuthState(AccountId account_id, base::OnceCallback<void(bool)> callback);
+    ~AuthState();
+
+    // Account that is being authenticated.
+    AccountId account_id;
+    // Callback that should be executed the authentication result is available.
+    base::OnceCallback<void(bool)> callback;
+  };
+
   ~ScreenLocker() override;
 
   void OnFingerprintAuthFailure(const user_manager::User& user);
@@ -269,8 +280,8 @@
   // Type of the last unlock attempt.
   UnlockType unlock_attempt_type_ = AUTH_PASSWORD;
 
-  // Callback to run, if any, when authentication is done.
-  AuthenticateCallback on_auth_complete_;
+  // State associated with a pending authentication attempt.
+  std::unique_ptr<AuthState> pending_auth_state_;
 
   scoped_refptr<input_method::InputMethodManager::State> saved_ime_state_;
 
diff --git a/chrome/browser/chromeos/login/screens/assistant_optin_flow_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/assistant_optin_flow_screen_browsertest.cc
index b15b4408..4fe9328 100644
--- a/chrome/browser/chromeos/login/screens/assistant_optin_flow_screen_browsertest.cc
+++ b/chrome/browser/chromeos/login/screens/assistant_optin_flow_screen_browsertest.cc
@@ -34,7 +34,6 @@
 #include "chromeos/services/assistant/public/mojom/settings.mojom.h"
 #include "chromeos/services/assistant/public/proto/settings_ui.pb.h"
 #include "chromeos/services/assistant/service.h"
-#include "components/arc/arc_prefs.h"
 #include "components/prefs/pref_service.h"
 #include "mojo/public/cpp/bindings/binding_set.h"
 #include "net/dns/mock_host_resolver.h"
@@ -508,7 +507,7 @@
   PrefService* const prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
   EXPECT_EQ(assistant::prefs::ConsentStatus::kActivityControlAccepted,
             prefs->GetInteger(assistant::prefs::kAssistantConsentStatus));
-  EXPECT_TRUE(prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled));
+  EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantHotwordEnabled));
   EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantContextEnabled));
 }
 
@@ -548,7 +547,7 @@
   PrefService* const prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
   EXPECT_EQ(assistant::prefs::ConsentStatus::kActivityControlAccepted,
             prefs->GetInteger(assistant::prefs::kAssistantConsentStatus));
-  EXPECT_TRUE(prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled));
+  EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantHotwordEnabled));
   EXPECT_FALSE(prefs->GetBoolean(assistant::prefs::kAssistantContextEnabled));
 }
 
@@ -588,7 +587,7 @@
   PrefService* const prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
   EXPECT_EQ(assistant::prefs::ConsentStatus::kActivityControlAccepted,
             prefs->GetInteger(assistant::prefs::kAssistantConsentStatus));
-  EXPECT_TRUE(prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled));
+  EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantHotwordEnabled));
   EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantContextEnabled));
 }
 
@@ -628,7 +627,7 @@
   PrefService* const prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
   EXPECT_EQ(assistant::prefs::ConsentStatus::kActivityControlAccepted,
             prefs->GetInteger(assistant::prefs::kAssistantConsentStatus));
-  EXPECT_TRUE(prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled));
+  EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantHotwordEnabled));
   EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantContextEnabled));
 }
 
@@ -652,7 +651,7 @@
   PrefService* const prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
   EXPECT_EQ(assistant::prefs::ConsentStatus::kUnknown,
             prefs->GetInteger(assistant::prefs::kAssistantConsentStatus));
-  EXPECT_FALSE(prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled));
+  EXPECT_FALSE(prefs->GetBoolean(assistant::prefs::kAssistantHotwordEnabled));
   EXPECT_FALSE(prefs->GetBoolean(assistant::prefs::kAssistantContextEnabled));
 }
 
@@ -693,7 +692,7 @@
   PrefService* const prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
   EXPECT_EQ(assistant::prefs::ConsentStatus::kActivityControlAccepted,
             prefs->GetInteger(assistant::prefs::kAssistantConsentStatus));
-  EXPECT_TRUE(prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled));
+  EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantHotwordEnabled));
   EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantContextEnabled));
 }
 
@@ -737,7 +736,7 @@
   PrefService* const prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
   EXPECT_EQ(assistant::prefs::ConsentStatus::kActivityControlAccepted,
             prefs->GetInteger(assistant::prefs::kAssistantConsentStatus));
-  EXPECT_TRUE(prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled));
+  EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantHotwordEnabled));
   EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantContextEnabled));
 }
 
@@ -770,7 +769,7 @@
   PrefService* const prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
   EXPECT_EQ(assistant::prefs::ConsentStatus::kActivityControlAccepted,
             prefs->GetInteger(assistant::prefs::kAssistantConsentStatus));
-  EXPECT_TRUE(prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled));
+  EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantHotwordEnabled));
   EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantContextEnabled));
 }
 
@@ -802,7 +801,7 @@
   PrefService* const prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
   EXPECT_EQ(assistant::prefs::ConsentStatus::kActivityControlAccepted,
             prefs->GetInteger(assistant::prefs::kAssistantConsentStatus));
-  EXPECT_TRUE(prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled));
+  EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantHotwordEnabled));
   EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantContextEnabled));
 }
 
@@ -891,7 +890,7 @@
   PrefService* const prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
   EXPECT_EQ(assistant::prefs::ConsentStatus::kActivityControlAccepted,
             prefs->GetInteger(assistant::prefs::kAssistantConsentStatus));
-  EXPECT_TRUE(prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled));
+  EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantHotwordEnabled));
   EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantContextEnabled));
 }
 
@@ -943,7 +942,7 @@
   PrefService* const prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
   EXPECT_EQ(assistant::prefs::ConsentStatus::kActivityControlAccepted,
             prefs->GetInteger(assistant::prefs::kAssistantConsentStatus));
-  EXPECT_FALSE(prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled));
+  EXPECT_FALSE(prefs->GetBoolean(assistant::prefs::kAssistantHotwordEnabled));
   EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantContextEnabled));
 }
 
@@ -999,7 +998,7 @@
   PrefService* const prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
   EXPECT_EQ(assistant::prefs::ConsentStatus::kActivityControlAccepted,
             prefs->GetInteger(assistant::prefs::kAssistantConsentStatus));
-  EXPECT_TRUE(prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled));
+  EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantHotwordEnabled));
   EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantContextEnabled));
 }
 
@@ -1016,8 +1015,8 @@
 
   ExpectCollectedOptIns({});
   PrefService* const prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
-  EXPECT_TRUE(prefs->GetBoolean(arc::prefs::kVoiceInteractionEnabled));
-  EXPECT_FALSE(prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled));
+  EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantEnabled));
+  EXPECT_FALSE(prefs->GetBoolean(assistant::prefs::kAssistantHotwordEnabled));
   EXPECT_FALSE(prefs->GetBoolean(assistant::prefs::kAssistantContextEnabled));
 }
 
@@ -1035,8 +1034,8 @@
   ExpectCollectedOptIns({});
   PrefService* const prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
   EXPECT_TRUE(prefs->GetBoolean(assistant::prefs::kAssistantDisabledByPolicy));
-  EXPECT_FALSE(prefs->GetBoolean(arc::prefs::kVoiceInteractionEnabled));
-  EXPECT_FALSE(prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled));
+  EXPECT_FALSE(prefs->GetBoolean(assistant::prefs::kAssistantEnabled));
+  EXPECT_FALSE(prefs->GetBoolean(assistant::prefs::kAssistantHotwordEnabled));
   EXPECT_FALSE(prefs->GetBoolean(assistant::prefs::kAssistantContextEnabled));
 }
 
diff --git a/chrome/browser/chromeos/login/screens/update_screen.cc b/chrome/browser/chromeos/login/screens/update_screen.cc
index 7c917442..5609dd51 100644
--- a/chrome/browser/chromeos/login/screens/update_screen.cc
+++ b/chrome/browser/chromeos/login/screens/update_screen.cc
@@ -8,29 +8,12 @@
 
 #include "base/bind.h"
 #include "base/files/file_util.h"
-#include "base/location.h"
 #include "base/logging.h"
-#include "base/no_destructor.h"
-#include "base/single_thread_task_runner.h"
-#include "base/threading/sequenced_task_runner_handle.h"
-#include "base/threading/thread_restrictions.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "base/time/default_tick_clock.h"
 #include "chrome/browser/chromeos/login/error_screens_histogram_helper.h"
 #include "chrome/browser/chromeos/login/screen_manager.h"
-#include "chrome/browser/chromeos/login/screens/error_screen.h"
 #include "chrome/browser/chromeos/login/screens/network_error.h"
-#include "chrome/browser/chromeos/login/startup_utils.h"
-#include "chrome/browser/chromeos/login/wizard_controller.h"
 #include "chrome/browser/ui/webui/chromeos/login/update_screen_handler.h"
-#include "chrome/grit/chromium_strings.h"
-#include "chrome/grit/generated_resources.h"
-#include "chromeos/dbus/dbus_thread_manager.h"
 #include "chromeos/network/network_state.h"
-#include "content/public/browser/browser_thread.h"
-#include "ui/base/l10n/l10n_util.h"
-
-using content::BrowserThread;
 
 namespace chromeos {
 
@@ -41,49 +24,18 @@
 constexpr const char kUserActionRejectUpdateOverCellular[] =
     "update-reject-cellular";
 
-#if !defined(OFFICIAL_BUILD)
 constexpr const char kUserActionCancelUpdateShortcut[] = "cancel-update";
-#endif
-
-// If reboot didn't happen, ask user to reboot device manually.
-const int kWaitForRebootTimeSec = 3;
-
-// Progress bar stages. Each represents progress bar value
-// at the beginning of each stage.
-// TODO(nkostylev): Base stage progress values on approximate time.
-// TODO(nkostylev): Animate progress during each state.
-const int kBeforeUpdateCheckProgress = 7;
-const int kBeforeDownloadProgress = 14;
-const int kBeforeVerifyingProgress = 74;
-const int kBeforeFinalizingProgress = 81;
-const int kProgressComplete = 100;
-
-// Defines what part of update progress does download part takes.
-const int kDownloadProgressIncrement = 60;
 
 const char kUpdateDeadlineFile[] = "/tmp/update-check-response-deadline";
 
-// Minimum timestep between two consecutive measurements for the download rates.
-const int kMinTimeStepInSeconds = 1;
-
-// Smooth factor that is used for the average downloading speed
-// estimation.
-// avg_speed = smooth_factor * cur_speed + (1.0 - smooth_factor) *
-// avg_speed.
-const double kDownloadSpeedSmoothFactor = 0.1;
-
-// Minumum allowed value for the average downloading speed.
-const double kDownloadAverageSpeedDropBound = 1e-8;
-
-// An upper bound for possible downloading time left estimations.
-const double kMaxTimeLeft = 24 * 60 * 60;
-
 // Delay before showing error message if captive portal is detected.
 // We wait for this delay to let captive portal to perform redirect and show
 // its login page before error message appears.
-const int kDelayErrorMessageSec = 10;
+constexpr const base::TimeDelta kDelayErrorMessage =
+    base::TimeDelta::FromSeconds(10);
 
-const int kShowDelayMs = 400;
+constexpr const base::TimeDelta kShowDelay =
+    base::TimeDelta::FromMicroseconds(400);
 
 }  // anonymous namespace
 
@@ -96,12 +48,12 @@
                            ErrorScreen* error_screen,
                            const ScreenExitCallback& exit_callback)
     : BaseScreen(UpdateView::kScreenId),
-      tick_clock_(base::DefaultTickClock::GetInstance()),
-      reboot_check_delay_(kWaitForRebootTimeSec),
       view_(view),
       error_screen_(error_screen),
       exit_callback_(exit_callback),
-      histogram_helper_(new ErrorScreensHistogramHelper("Update")) {
+      histogram_helper_(
+          std::make_unique<ErrorScreensHistogramHelper>("Update")),
+      version_updater_(std::make_unique<VersionUpdater>(this)) {
   if (view_)
     view_->Bind(this);
 }
@@ -109,9 +61,6 @@
 UpdateScreen::~UpdateScreen() {
   if (view_)
     view_->Unbind();
-
-  DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver(this);
-  network_portal_detector::GetInstance()->RemoveObserver(this);
 }
 
 void UpdateScreen::OnViewDestroyed(UpdateView* view) {
@@ -119,253 +68,19 @@
     view_ = nullptr;
 }
 
-void UpdateScreen::StartNetworkCheck() {
-  // If portal detector is enabled and portal detection before AU is
-  // allowed, initiate network state check. Otherwise, directly
-  // proceed to update.
-  if (!network_portal_detector::GetInstance()->IsEnabled()) {
-    StartUpdateCheck();
-    return;
-  }
-  state_ = State::STATE_FIRST_PORTAL_CHECK;
-  is_first_detection_notification_ = true;
-  is_first_portal_notification_ = true;
-  network_portal_detector::GetInstance()->AddAndFireObserver(this);
-}
-
-void UpdateScreen::SetIgnoreIdleStatus(bool ignore_idle_status) {
-  ignore_idle_status_ = ignore_idle_status;
-}
-
-void UpdateScreen::ExitUpdate(Result result) {
-  DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver(this);
-  network_portal_detector::GetInstance()->RemoveObserver(this);
-  show_timer_.Stop();
-
-  exit_callback_.Run(result);
-}
-
-void UpdateScreen::UpdateStatusChanged(
-    const UpdateEngineClient::Status& status) {
-  if (is_checking_for_update_ &&
-      status.status > UpdateEngineClient::UPDATE_STATUS_CHECKING_FOR_UPDATE &&
-      status.status != UpdateEngineClient::UPDATE_STATUS_ERROR &&
-      status.status !=
-          UpdateEngineClient::UPDATE_STATUS_REPORTING_ERROR_EVENT) {
-    is_checking_for_update_ = false;
-  }
-  if (ignore_idle_status_ &&
-      status.status > UpdateEngineClient::UPDATE_STATUS_IDLE) {
-    ignore_idle_status_ = false;
-  }
-
-  switch (status.status) {
-    case UpdateEngineClient::UPDATE_STATUS_CHECKING_FOR_UPDATE:
-      // Do nothing in these cases, we don't want to notify the user of the
-      // check unless there is an update.
-      break;
-    case UpdateEngineClient::UPDATE_STATUS_UPDATE_AVAILABLE:
-      MakeSureScreenIsShown();
-      if (view_) {
-        view_->SetProgress(kBeforeDownloadProgress);
-        view_->SetShowEstimatedTimeLeft(false);
-      }
-      if (!HasCriticalUpdate()) {
-        VLOG(1) << "Noncritical update available: " << status.new_version;
-        ExitUpdate(Result::UPDATE_NOT_REQUIRED);
-      } else {
-        VLOG(1) << "Critical update available: " << status.new_version;
-        if (view_) {
-          view_->SetProgressMessage(
-              l10n_util::GetStringUTF16(IDS_UPDATE_AVAILABLE));
-          view_->SetShowCurtain(false);
-        }
-      }
-      break;
-    case UpdateEngineClient::UPDATE_STATUS_DOWNLOADING:
-      MakeSureScreenIsShown();
-      if (!is_downloading_update_) {
-        // Because update engine doesn't send UPDATE_STATUS_UPDATE_AVAILABLE
-        // we need to is update critical on first downloading notification.
-        is_downloading_update_ = true;
-        download_start_time_ = download_last_time_ = tick_clock_->NowTicks();
-        download_start_progress_ = status.download_progress;
-        download_last_progress_ = status.download_progress;
-        is_download_average_speed_computed_ = false;
-        download_average_speed_ = 0.0;
-        if (!HasCriticalUpdate()) {
-          VLOG(1) << "Non-critical update available: " << status.new_version;
-          ExitUpdate(Result::UPDATE_NOT_REQUIRED);
-        } else {
-          VLOG(1) << "Critical update available: " << status.new_version;
-          if (view_) {
-            view_->SetProgressMessage(
-                l10n_util::GetStringUTF16(IDS_INSTALLING_UPDATE));
-            view_->SetShowCurtain(false);
-          }
-        }
-      }
-      UpdateDownloadingStats(status);
-      break;
-    case UpdateEngineClient::UPDATE_STATUS_VERIFYING:
-      MakeSureScreenIsShown();
-      if (view_) {
-        view_->SetProgress(kBeforeVerifyingProgress);
-        view_->SetProgressMessage(
-            l10n_util::GetStringUTF16(IDS_UPDATE_VERIFYING));
-      }
-      break;
-    case UpdateEngineClient::UPDATE_STATUS_FINALIZING:
-      MakeSureScreenIsShown();
-      if (view_) {
-        view_->SetProgress(kBeforeFinalizingProgress);
-        view_->SetProgressMessage(
-            l10n_util::GetStringUTF16(IDS_UPDATE_FINALIZING));
-      }
-      break;
-    case UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT:
-      MakeSureScreenIsShown();
-      if (view_) {
-        view_->SetProgress(kProgressComplete);
-        view_->SetShowEstimatedTimeLeft(false);
-      }
-      if (HasCriticalUpdate()) {
-        if (view_)
-          view_->SetShowCurtain(false);
-        VLOG(1) << "Initiate reboot after update";
-        DBusThreadManager::Get()->GetUpdateEngineClient()->RebootAfterUpdate();
-        reboot_timer_.Start(FROM_HERE,
-                            base::TimeDelta::FromSeconds(reboot_check_delay_),
-                            this, &UpdateScreen::OnWaitForRebootTimeElapsed);
-      } else {
-        ExitUpdate(Result::UPDATE_NOT_REQUIRED);
-      }
-      break;
-    case UpdateEngineClient::UPDATE_STATUS_NEED_PERMISSION_TO_UPDATE:
-      VLOG(1) << "Update requires user permission to proceed.";
-      state_ = State::STATE_REQUESTING_USER_PERMISSION;
-      pending_update_version_ = status.new_version;
-      pending_update_size_ = status.new_size;
-
-      DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver(this);
-
-      MakeSureScreenIsShown();
-      if (view_) {
-        view_->SetRequiresPermissionForCellular(true);
-        view_->SetShowCurtain(false);
-      }
-      break;
-    case UpdateEngineClient::UPDATE_STATUS_ATTEMPTING_ROLLBACK:
-      VLOG(1) << "Attempting rollback";
-      break;
-    case UpdateEngineClient::UPDATE_STATUS_IDLE:
-      // Exit update only if update engine was in non-idle status before.
-      // Otherwise, it's possible that the update request has not yet been
-      // started.
-      if (!ignore_idle_status_)
-        ExitUpdate(Result::UPDATE_NOT_REQUIRED);
-      break;
-    case UpdateEngineClient::UPDATE_STATUS_ERROR:
-    case UpdateEngineClient::UPDATE_STATUS_REPORTING_ERROR_EVENT:
-      // Ignore update errors for non-critical updates to prevent blocking the
-      // user from getting to login screen during OOBE if the pending update is
-      // not critical.
-      if (is_checking_for_update_ || !HasCriticalUpdate()) {
-        ExitUpdate(Result::UPDATE_NOT_REQUIRED);
-      } else {
-        ExitUpdate(Result::UPDATE_ERROR);
-      }
-      break;
-  }
-}
-
-void UpdateScreen::OnPortalDetectionCompleted(
-    const NetworkState* network,
-    const NetworkPortalDetector::CaptivePortalState& state) {
-  VLOG(1) << "UpdateScreen::OnPortalDetectionCompleted(): "
-          << "network=" << (network ? network->path() : "") << ", "
-          << "state.status=" << state.status << ", "
-          << "state.response_code=" << state.response_code;
-
-  // Wait for sane detection results.
-  if (network &&
-      state.status == NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_UNKNOWN) {
-    return;
-  }
-
-  // Restart portal detection for the first notification about offline state.
-  if ((!network ||
-       state.status == NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_OFFLINE) &&
-      is_first_detection_notification_) {
-    is_first_detection_notification_ = false;
-    base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce([]() {
-          network_portal_detector::GetInstance()->StartPortalDetection(
-              false /* force */);
-        }));
-    return;
-  }
-  is_first_detection_notification_ = false;
-
-  NetworkPortalDetector::CaptivePortalStatus status = state.status;
-  if (state_ == State::STATE_ERROR) {
-    // In the case of online state hide error message and proceed to
-    // the update stage. Otherwise, update error message content.
-    if (status == NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE)
-      StartUpdateCheck();
-    else
-      UpdateErrorMessage(network, status);
-  } else if (state_ == State::STATE_FIRST_PORTAL_CHECK) {
-    // In the case of online state immediately proceed to the update
-    // stage. Otherwise, prepare and show error message.
-    if (status == NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE) {
-      StartUpdateCheck();
-    } else {
-      UpdateErrorMessage(network, status);
-
-      // StartUpdateCheck, which gets called when the error clears up,  will add
-      // the update engine observer back.
-      DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver(this);
-
-      if (status == NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL)
-        DelayErrorMessage();
-      else
-        ShowErrorMessage();
-    }
-  }
-}
-
-void UpdateScreen::CancelUpdate() {
-  VLOG(1) << "Forced update cancel";
-  ExitUpdate(Result::UPDATE_NOT_REQUIRED);
-}
-
-base::OneShotTimer* UpdateScreen::GetShowTimerForTesting() {
-  return &show_timer_;
-}
-
-base::OneShotTimer* UpdateScreen::GetErrorMessageTimerForTesting() {
-  return &error_message_timer_;
-}
-
-base::OneShotTimer* UpdateScreen::GetRebootTimerForTesting() {
-  return &reboot_timer_;
-}
-
 void UpdateScreen::Show() {
-  if (view_) {
 #if !defined(OFFICIAL_BUILD)
+  if (view_) {
     view_->SetCancelUpdateShortcutEnabled(true);
-#endif
-    view_->SetProgress(kBeforeUpdateCheckProgress);
-    view_->SetRequiresPermissionForCellular(false);
   }
+#endif
+  RefreshView(version_updater_->update_info());
 
-  show_timer_.Start(FROM_HERE, base::TimeDelta::FromMilliseconds(kShowDelayMs),
+  show_timer_.Start(FROM_HERE, kShowDelay,
                     base::BindOnce(&UpdateScreen::MakeSureScreenIsShown,
                                    weak_factory_.GetWeakPtr()));
 
-  StartNetworkCheck();
+  version_updater_->StartNetworkCheck();
 }
 
 void UpdateScreen::Hide() {
@@ -376,97 +91,174 @@
 }
 
 void UpdateScreen::OnUserAction(const std::string& action_id) {
-#if !defined(OFFICIAL_BUILD)
-  if (action_id == kUserActionCancelUpdateShortcut)
-    CancelUpdate();
-  else
+  bool is_official_build = false;
+#if defined(OFFICIAL_BUILD)
+  is_official_build = true;
 #endif
-      if (action_id == kUserActionAcceptUpdateOverCellular) {
-    DBusThreadManager::Get()
-        ->GetUpdateEngineClient()
-        ->SetUpdateOverCellularOneTimePermission(
-            pending_update_version_, pending_update_size_,
-            base::BindRepeating(
-                &UpdateScreen::RetryUpdateWithUpdateOverCellularPermissionSet,
-                weak_factory_.GetWeakPtr()));
+
+  if (!is_official_build && action_id == kUserActionCancelUpdateShortcut) {
+    // Skip update UI, usually used only in debug builds/tests.
+    VLOG(1) << "Forced update cancel";
+    ExitUpdate(Result::UPDATE_NOT_REQUIRED);
+  } else if (action_id == kUserActionAcceptUpdateOverCellular) {
+    version_updater_->SetUpdateOverCellularOneTimePermission();
   } else if (action_id == kUserActionRejectUpdateOverCellular) {
-    // Reset UI context to show curtain again when the user goes back to the
-    // update screen.
-    if (view_) {
-      view_->SetShowCurtain(true);
-      view_->SetRequiresPermissionForCellular(false);
-    }
+    version_updater_->RejectUpdateOverCellular();
     ExitUpdate(Result::UPDATE_ERROR);
   } else {
     BaseScreen::OnUserAction(action_id);
   }
 }
 
-void UpdateScreen::RetryUpdateWithUpdateOverCellularPermissionSet(
-    bool success) {
-  if (success) {
-    if (view_)
-      view_->SetRequiresPermissionForCellular(false);
-    StartUpdateCheck();
-  } else {
-    // Reset UI context to show curtain again when the user goes back to the
-    // update screen.
-    if (view_) {
-      view_->SetShowCurtain(true);
-      view_->SetRequiresPermissionForCellular(false);
+base::OneShotTimer* UpdateScreen::GetShowTimerForTesting() {
+  return &show_timer_;
+}
+
+base::OneShotTimer* UpdateScreen::GetErrorMessageTimerForTesting() {
+  return &error_message_timer_;
+}
+
+VersionUpdater* UpdateScreen::GetVersionUpdaterForTesting() {
+  return version_updater_.get();
+}
+
+void UpdateScreen::ExitUpdate(Result result) {
+  version_updater_->StartExitUpdate(result);
+}
+
+void UpdateScreen::OnWaitForRebootTimeElapsed() {
+  LOG(ERROR) << "Unable to reboot - asking user for a manual reboot.";
+  MakeSureScreenIsShown();
+  if (view_)
+    view_->SetUpdateCompleted(true);
+}
+
+void UpdateScreen::PrepareForUpdateCheck() {
+  error_message_timer_.Stop();
+  error_screen_->HideCaptivePortal();
+
+  connect_request_subscription_.reset();
+  if (version_updater_->update_info().state ==
+      VersionUpdater::State::STATE_ERROR)
+    HideErrorMessage();
+}
+
+void UpdateScreen::ShowErrorMessage() {
+  LOG(WARNING) << "UpdateScreen::ShowErrorMessage()";
+
+  error_message_timer_.Stop();
+
+  is_shown_ = false;
+  show_timer_.Stop();
+
+  connect_request_subscription_ =
+      error_screen_->RegisterConnectRequestCallback(base::BindRepeating(
+          &UpdateScreen::OnConnectRequested, weak_factory_.GetWeakPtr()));
+  error_screen_->SetUIState(NetworkError::UI_STATE_UPDATE);
+  error_screen_->SetParentScreen(UpdateView::kScreenId);
+  error_screen_->SetHideCallback(base::BindRepeating(
+      &UpdateScreen::OnErrorScreenHidden, weak_factory_.GetWeakPtr()));
+  error_screen_->Show();
+  histogram_helper_->OnErrorShow(error_screen_->GetErrorState());
+}
+
+void UpdateScreen::UpdateErrorMessage(
+    const NetworkPortalDetector::CaptivePortalStatus status,
+    const NetworkError::ErrorState& error_state,
+    const std::string& network_name) {
+  error_screen_->SetErrorState(error_state, network_name);
+  if (status == NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL) {
+    if (is_first_portal_notification_) {
+      is_first_portal_notification_ = false;
+      error_screen_->FixCaptivePortal();
     }
-    ExitUpdate(Result::UPDATE_ERROR);
   }
 }
 
-void UpdateScreen::UpdateDownloadingStats(
-    const UpdateEngineClient::Status& status) {
-  base::TimeTicks download_current_time = tick_clock_->NowTicks();
-  if (download_current_time >=
-      download_last_time_ +
-          base::TimeDelta::FromSeconds(kMinTimeStepInSeconds)) {
-    // Estimate downloading rate.
-    double progress_delta =
-        std::max(status.download_progress - download_last_progress_, 0.0);
-    double time_delta =
-        (download_current_time - download_last_time_).InSecondsF();
-    double download_rate = status.new_size * progress_delta / time_delta;
+void UpdateScreen::DelayErrorMessage() {
+  if (error_message_timer_.IsRunning())
+    return;
 
-    download_last_time_ = download_current_time;
-    download_last_progress_ = status.download_progress;
+  error_message_timer_.Start(FROM_HERE, kDelayErrorMessage, this,
+                             &UpdateScreen::ShowErrorMessage);
+}
 
-    // Estimate time left.
-    double progress_left = std::max(1.0 - status.download_progress, 0.0);
-    if (!is_download_average_speed_computed_) {
-      download_average_speed_ = download_rate;
-      is_download_average_speed_computed_ = true;
-    }
-    download_average_speed_ =
-        kDownloadSpeedSmoothFactor * download_rate +
-        (1.0 - kDownloadSpeedSmoothFactor) * download_average_speed_;
-    if (download_average_speed_ < kDownloadAverageSpeedDropBound) {
-      time_delta = (download_current_time - download_start_time_).InSecondsF();
-      download_average_speed_ =
-          status.new_size *
-          (status.download_progress - download_start_progress_) / time_delta;
-    }
-    double work_left = progress_left * status.new_size;
-    // time_left is in seconds.
-    double time_left = work_left / download_average_speed_;
-    // |time_left| may be large enough or even +infinity. So we must
-    // |bound possible estimations.
-    time_left = std::min(time_left, kMaxTimeLeft);
-
-    if (view_) {
-      view_->SetShowEstimatedTimeLeft(true);
-      view_->SetEstimatedTimeLeft(static_cast<int>(time_left));
-    }
+void UpdateScreen::UpdateInfoChanged(
+    const VersionUpdater::UpdateInfo& update_info) {
+  const UpdateEngineClient::Status& status = update_info.status;
+  hide_progress_on_exit_ = false;
+  bool need_refresh_view = true;
+  switch (status.status) {
+    case UpdateEngineClient::UPDATE_STATUS_CHECKING_FOR_UPDATE:
+      // Do nothing in this case, we don't want to notify the user of the
+      // check unless there is an update.
+    case UpdateEngineClient::UPDATE_STATUS_ATTEMPTING_ROLLBACK:
+    case UpdateEngineClient::UPDATE_STATUS_IDLE:
+      need_refresh_view = false;
+      break;
+    case UpdateEngineClient::UPDATE_STATUS_UPDATE_AVAILABLE:
+    case UpdateEngineClient::UPDATE_STATUS_DOWNLOADING:
+      MakeSureScreenIsShown();
+      if (!is_critical_checked_) {
+        // Because update engine doesn't send UPDATE_STATUS_UPDATE_AVAILABLE we
+        // need to check if update is critical on first downloading
+        // notification.
+        is_critical_checked_ = true;
+        if (!HasCriticalUpdate()) {
+          VLOG(1) << "Non-critical update available: " << status.new_version;
+          hide_progress_on_exit_ = true;
+          ExitUpdate(Result::UPDATE_NOT_REQUIRED);
+        } else {
+          VLOG(1) << "Critical update available: " << status.new_version;
+        }
+      }
+      break;
+    case UpdateEngineClient::UPDATE_STATUS_VERIFYING:
+    case UpdateEngineClient::UPDATE_STATUS_FINALIZING:
+    case UpdateEngineClient::UPDATE_STATUS_NEED_PERMISSION_TO_UPDATE:
+      MakeSureScreenIsShown();
+      break;
+    case UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT:
+      MakeSureScreenIsShown();
+      if (HasCriticalUpdate()) {
+        version_updater_->RebootAfterUpdate();
+      } else {
+        hide_progress_on_exit_ = true;
+        ExitUpdate(Result::UPDATE_NOT_REQUIRED);
+      }
+      break;
+    case UpdateEngineClient::UPDATE_STATUS_ERROR:
+    case UpdateEngineClient::UPDATE_STATUS_REPORTING_ERROR_EVENT:
+      // Ignore update errors for non-critical updates to prevent blocking the
+      // user from getting to login screen during OOBE if the pending update is
+      // not critical.
+      if (update_info.is_checking_for_update || !HasCriticalUpdate()) {
+        ExitUpdate(Result::UPDATE_NOT_REQUIRED);
+      } else {
+        ExitUpdate(Result::UPDATE_ERROR);
+      }
+      need_refresh_view = false;
+      break;
   }
+  if (need_refresh_view)
+    RefreshView(update_info);
+}
 
+void UpdateScreen::FinishExitUpdate(Result result) {
+  show_timer_.Stop();
+  exit_callback_.Run(result);
+}
+
+void UpdateScreen::RefreshView(const VersionUpdater::UpdateInfo& update_info) {
   if (view_) {
-    int download_progress =
-        static_cast<int>(status.download_progress * kDownloadProgressIncrement);
-    view_->SetProgress(kBeforeDownloadProgress + download_progress);
+    view_->SetProgress(update_info.progress);
+    view_->SetProgressMessage(update_info.progress_message);
+    view_->SetEstimatedTimeLeft(update_info.estimated_time_left_in_secs);
+    view_->SetShowEstimatedTimeLeft(update_info.show_estimated_time_left);
+    view_->SetShowCurtain(update_info.progress_unavailable ||
+                          hide_progress_on_exit_);
+    view_->SetRequiresPermissionForCellular(
+        update_info.requires_permission_for_cellular);
   }
 }
 
@@ -489,13 +281,6 @@
   return true;
 }
 
-void UpdateScreen::OnWaitForRebootTimeElapsed() {
-  LOG(ERROR) << "Unable to reboot - asking user for a manual reboot.";
-  MakeSureScreenIsShown();
-  if (view_)
-    view_->SetUpdateCompleted(true);
-}
-
 void UpdateScreen::MakeSureScreenIsShown() {
   show_timer_.Stop();
 
@@ -508,104 +293,17 @@
   view_->Show();
 }
 
-void UpdateScreen::StartUpdateCheck() {
-  error_message_timer_.Stop();
-  error_screen_->HideCaptivePortal();
-
-  network_portal_detector::GetInstance()->RemoveObserver(this);
-  connect_request_subscription_.reset();
-  if (state_ == State::STATE_ERROR)
-    HideErrorMessage();
-
-  pending_update_version_ = std::string();
-  pending_update_size_ = 0;
-
-  state_ = State::STATE_UPDATE;
-  DBusThreadManager::Get()->GetUpdateEngineClient()->AddObserver(this);
-  VLOG(1) << "Initiate update check";
-  DBusThreadManager::Get()->GetUpdateEngineClient()->RequestUpdateCheck(
-      base::BindRepeating(&UpdateScreen::OnUpdateCheckStarted,
-                          weak_factory_.GetWeakPtr()));
-}
-
-void UpdateScreen::ShowErrorMessage() {
-  LOG(WARNING) << "UpdateScreen::ShowErrorMessage()";
-
-  error_message_timer_.Stop();
-
-  is_shown_ = false;
-  show_timer_.Stop();
-
-  state_ = State::STATE_ERROR;
-  connect_request_subscription_ =
-      error_screen_->RegisterConnectRequestCallback(base::BindRepeating(
-          &UpdateScreen::OnConnectRequested, base::Unretained(this)));
-  error_screen_->SetUIState(NetworkError::UI_STATE_UPDATE);
-  error_screen_->SetParentScreen(UpdateView::kScreenId);
-  error_screen_->SetHideCallback(base::BindRepeating(
-      &UpdateScreen::OnErrorScreenHidden, weak_factory_.GetWeakPtr()));
-  error_screen_->Show();
-  histogram_helper_->OnErrorShow(error_screen_->GetErrorState());
-}
-
 void UpdateScreen::HideErrorMessage() {
   LOG(WARNING) << "UpdateScreen::HideErrorMessage()";
   error_screen_->Hide();
   histogram_helper_->OnErrorHide();
 }
 
-void UpdateScreen::UpdateErrorMessage(
-    const NetworkState* network,
-    const NetworkPortalDetector::CaptivePortalStatus status) {
-  switch (status) {
-    case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE:
-      NOTREACHED();
-      break;
-    case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_UNKNOWN:
-    case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_OFFLINE:
-      error_screen_->SetErrorState(NetworkError::ERROR_STATE_OFFLINE,
-                                   std::string());
-      break;
-    case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL:
-      DCHECK(network);
-      error_screen_->SetErrorState(NetworkError::ERROR_STATE_PORTAL,
-                                   network->name());
-      if (is_first_portal_notification_) {
-        is_first_portal_notification_ = false;
-        error_screen_->FixCaptivePortal();
-      }
-      break;
-    case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED:
-      error_screen_->SetErrorState(NetworkError::ERROR_STATE_PROXY,
-                                   std::string());
-      break;
-    default:
-      NOTREACHED();
-      break;
-  }
-}
-
-void UpdateScreen::DelayErrorMessage() {
-  if (error_message_timer_.IsRunning())
-    return;
-
-  state_ = State::STATE_ERROR;
-  error_message_timer_.Start(
-      FROM_HERE, base::TimeDelta::FromSeconds(kDelayErrorMessageSec), this,
-      &UpdateScreen::ShowErrorMessage);
-}
-
-void UpdateScreen::OnUpdateCheckStarted(
-    UpdateEngineClient::UpdateCheckResult result) {
-  VLOG(1) << "Callback from RequestUpdateCheck, result " << result;
-  if (result != UpdateEngineClient::UPDATE_RESULT_SUCCESS)
-    ExitUpdate(Result::UPDATE_NOT_REQUIRED);
-}
-
 void UpdateScreen::OnConnectRequested() {
-  if (state_ == State::STATE_ERROR) {
+  if (version_updater_->update_info().state ==
+      VersionUpdater::State::STATE_ERROR) {
     LOG(WARNING) << "Hiding error message since AP was reselected";
-    StartUpdateCheck();
+    version_updater_->StartUpdateCheck();
   }
 }
 
diff --git a/chrome/browser/chromeos/login/screens/update_screen.h b/chrome/browser/chromeos/login/screens/update_screen.h
index 663f7f5..7279b4de 100644
--- a/chrome/browser/chromeos/login/screens/update_screen.h
+++ b/chrome/browser/chromeos/login/screens/update_screen.h
@@ -5,17 +5,17 @@
 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_UPDATE_SCREEN_H_
 #define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_UPDATE_SCREEN_H_
 
+#include <memory>
+#include <string>
+
 #include "base/callback.h"
-#include "base/compiler_specific.h"
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
-#include "base/time/time.h"
 #include "base/timer/timer.h"
 #include "chrome/browser/chromeos/login/screens/base_screen.h"
 #include "chrome/browser/chromeos/login/screens/error_screen.h"
-#include "chromeos/dbus/update_engine_client.h"
-#include "chromeos/network/portal_detector/network_portal_detector.h"
+#include "chrome/browser/chromeos/login/version_updater/version_updater.h"
 
 namespace base {
 class TickClock;
@@ -23,9 +23,7 @@
 
 namespace chromeos {
 
-class ErrorScreen;
 class ErrorScreensHistogramHelper;
-class NetworkState;
 class ScreenManager;
 class UpdateView;
 
@@ -55,16 +53,11 @@
 // has network connectivity - if the current network is not online (e.g. behind
 // a protal), it will request an ErrorScreen to be shown. Update check will be
 // delayed until the Internet connectivity is established.
-class UpdateScreen : public BaseScreen,
-                     public UpdateEngineClient::Observer,
-                     public NetworkPortalDetector::Observer {
+class UpdateScreen : public BaseScreen, public VersionUpdater::Delegate {
  public:
-  static UpdateScreen* Get(ScreenManager* manager);
+  using Result = VersionUpdater::Result;
 
-  enum class Result {
-    UPDATE_NOT_REQUIRED,
-    UPDATE_ERROR,
-  };
+  static UpdateScreen* Get(ScreenManager* manager);
 
   using ScreenExitCallback = base::RepeatingCallback<void(Result result)>;
   UpdateScreen(UpdateView* view,
@@ -76,19 +69,6 @@
   // associated View if this class is destroyed before it.
   void OnViewDestroyed(UpdateView* view);
 
-  void SetIgnoreIdleStatus(bool ignore_idle_status);
-
-  // UpdateEngineClient::Observer implementation:
-  void UpdateStatusChanged(const UpdateEngineClient::Status& status) override;
-
-  // NetworkPortalDetector::Observer implementation:
-  void OnPortalDetectionCompleted(
-      const NetworkState* network,
-      const NetworkPortalDetector::CaptivePortalState& state) override;
-
-  // Skip update UI, usually used only in debug builds/tests.
-  void CancelUpdate();
-
   // BaseScreen:
   void Show() override;
   void Hide() override;
@@ -96,18 +76,26 @@
 
   base::OneShotTimer* GetShowTimerForTesting();
   base::OneShotTimer* GetErrorMessageTimerForTesting();
-  base::OneShotTimer* GetRebootTimerForTesting();
+  VersionUpdater* GetVersionUpdaterForTesting();
 
   void set_ignore_update_deadlines_for_testing(bool ignore_update_deadlines) {
     ignore_update_deadlines_ = ignore_update_deadlines;
   }
 
-  void set_tick_clock_for_testing(const base::TickClock* tick_clock) {
-    tick_clock_ = tick_clock;
-  }
+  // VersionUpdater::Delegate:
+  void OnWaitForRebootTimeElapsed() override;
+  void PrepareForUpdateCheck() override;
+  void ShowErrorMessage() override;
+  void UpdateErrorMessage(
+      const NetworkPortalDetector::CaptivePortalStatus status,
+      const NetworkError::ErrorState& error_state,
+      const std::string& network_name) override;
+  void DelayErrorMessage() override;
+  void UpdateInfoChanged(
+      const VersionUpdater::UpdateInfo& update_info) override;
+  void FinishExitUpdate(VersionUpdater::Result result) override;
 
  protected:
-  // Reports update results.
   void ExitUpdate(Result result);
 
  private:
@@ -116,49 +104,16 @@
   FRIEND_TEST_ALL_PREFIXES(UpdateScreenTest, TestAPReselection);
   friend class UpdateScreenUnitTest;
 
-  enum class State {
-    STATE_IDLE = 0,
-    STATE_FIRST_PORTAL_CHECK,
-    STATE_REQUESTING_USER_PERMISSION,
-    STATE_UPDATE,
-    STATE_ERROR
-  };
-
-  // Starts network check.
-  void StartNetworkCheck();
-
-  // Callback to UpdateEngineClient::SetUpdateOverCellularOneTimePermission
-  // called in response to user confirming that the OS update can proceed
-  // despite being over cellular charges.
-  // |success|: whether the update engine accepted the user permission.
-  void RetryUpdateWithUpdateOverCellularPermissionSet(bool success);
-
-  // Updates downloading stats (remaining time and downloading
-  // progress) on the AU screen.
-  void UpdateDownloadingStats(const UpdateEngineClient::Status& status);
+  void RefreshView(const VersionUpdater::UpdateInfo& update_info);
 
   // Returns true if there is critical system update that requires installation
   // and immediate reboot.
   bool HasCriticalUpdate();
 
-  // Timer notification handlers.
-  void OnWaitForRebootTimeElapsed();
-
   // Checks that screen is shown, shows if not.
   void MakeSureScreenIsShown();
 
-  void StartUpdateCheck();
-  void ShowErrorMessage();
   void HideErrorMessage();
-  void UpdateErrorMessage(
-      const NetworkState* network,
-      const NetworkPortalDetector::CaptivePortalStatus status);
-
-  void DelayErrorMessage();
-
-  // Callback for UpdateEngineClient::RequestUpdateCheck() called fomr
-  // StartUpdateCheck().
-  void OnUpdateCheckStarted(UpdateEngineClient::UpdateCheckResult result);
 
   // The user requested an attempt to connect to the network should be made.
   void OnConnectRequested();
@@ -167,64 +122,33 @@
   // screen gets hidden.
   void OnErrorScreenHidden();
 
-  // Timer for the interval to wait for the reboot.
-  // If reboot didn't happen - ask user to reboot manually.
-  base::OneShotTimer reboot_timer_;
+  UpdateView* view_;
+  ErrorScreen* error_screen_;
+  ScreenExitCallback exit_callback_;
 
-  // Current state of the update screen.
-  State state_ = State::STATE_IDLE;
-
-  const base::TickClock* tick_clock_;
-
-  // Time in seconds after which we decide that the device has not rebooted
-  // automatically. If reboot didn't happen during this interval, ask user to
-  // reboot device manually.
-  int reboot_check_delay_ = 0;
-
-  // True if in the process of checking for update.
-  bool is_checking_for_update_ = true;
-  // Flag that is used to detect when update download has just started.
-  bool is_downloading_update_ = false;
   // If true, update deadlines are ignored.
   // Note, this is false by default.
   bool ignore_update_deadlines_ = false;
   // Whether the update screen is shown.
   bool is_shown_ = false;
-  // Ignore fist IDLE status that is sent before update screen initiated check.
-  bool ignore_idle_status_ = true;
-
-  UpdateView* view_;
-  ErrorScreen* error_screen_;
-  ScreenExitCallback exit_callback_;
-
-  // Time of the first notification from the downloading stage.
-  base::TimeTicks download_start_time_;
-  double download_start_progress_ = 0;
-
-  // Time of the last notification from the downloading stage.
-  base::TimeTicks download_last_time_;
-  double download_last_progress_ = 0;
-
-  bool is_download_average_speed_computed_ = false;
-  double download_average_speed_ = 0;
-
-  // True if there was no notification from NetworkPortalDetector
-  // about state for the default network.
-  bool is_first_detection_notification_ = true;
 
   // True if there was no notification about captive portal state for
   // the default network.
   bool is_first_portal_notification_ = true;
 
-  // Information about a pending update. Set if a user permission is required to
-  // proceed with the update. The values have to be passed to the update engine
-  // in SetUpdateOverCellularOneTimePermission method in order to enable update
-  // over cellular network.
-  std::string pending_update_version_;
-  int64_t pending_update_size_ = 0;
+  // True if already checked that update is critical.
+  bool is_critical_checked_ = false;
+
+  // True if the update progress should be hidden even if update_info suggests
+  // the opposite.
+  bool hide_progress_on_exit_ = false;
+  // True if it is possible for user to skip update check.
+  bool cancel_update_shortcut_enabled_ = false;
 
   std::unique_ptr<ErrorScreensHistogramHelper> histogram_helper_;
 
+  std::unique_ptr<VersionUpdater> version_updater_;
+
   // Showing the update screen view will be delayed for a small amount of time
   // after UpdateScreen::Show() is called. If the screen determines that an
   // update is not required before the delay expires, the UpdateScreen will exit
diff --git a/chrome/browser/chromeos/login/screens/update_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/update_screen_browsertest.cc
index 1ffc66f..90eb7c9 100644
--- a/chrome/browser/chromeos/login/screens/update_screen_browsertest.cc
+++ b/chrome/browser/chromeos/login/screens/update_screen_browsertest.cc
@@ -15,11 +15,11 @@
 #include "base/time/time.h"
 #include "chrome/browser/chromeos/login/login_wizard.h"
 #include "chrome/browser/chromeos/login/screens/error_screen.h"
-#include "chrome/browser/chromeos/login/screens/update_screen.h"
 #include "chrome/browser/chromeos/login/test/js_checker.h"
 #include "chrome/browser/chromeos/login/test/network_portal_detector_mixin.h"
 #include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h"
 #include "chrome/browser/chromeos/login/ui/login_display_host.h"
+#include "chrome/browser/chromeos/login/version_updater/version_updater.h"
 #include "chrome/browser/ui/webui/chromeos/login/error_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/network_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
@@ -75,7 +75,8 @@
         GetOobeUI()->GetView<UpdateScreenHandler>(), error_screen_,
         base::BindRepeating(&UpdateScreenTest::HandleScreenExit,
                             base::Unretained(this)));
-    update_screen_->set_tick_clock_for_testing(&tick_clock_);
+    version_updater_ = update_screen_->GetVersionUpdaterForTesting();
+    version_updater_->set_tick_clock_for_testing(&tick_clock_);
 
     MixinBasedInProcessBrowserTest::SetUpOnMainThread();
   }
@@ -103,6 +104,8 @@
   NetworkPortalDetectorMixin network_portal_detector_{&mixin_host_};
 
   std::unique_ptr<UpdateScreen> update_screen_;
+  // Version updater - owned by |update_screen_|.
+  VersionUpdater* version_updater_ = nullptr;
   // Error screen - owned by OobeUI.
   ErrorScreen* error_screen_ = nullptr;
 
@@ -358,8 +361,8 @@
   EXPECT_EQ(1, fake_update_engine_client_->reboot_after_update_call_count());
 
   // Simulate the situation where reboot does not happen in time.
-  ASSERT_TRUE(update_screen_->GetRebootTimerForTesting()->IsRunning());
-  update_screen_->GetRebootTimerForTesting()->FireNow();
+  ASSERT_TRUE(version_updater_->GetRebootTimerForTesting()->IsRunning());
+  version_updater_->GetRebootTimerForTesting()->FireNow();
 
   test::OobeJS().ExpectHiddenPath({"oobe-update-md", "updating-progress"});
   test::OobeJS().ExpectEQ("$('oobe-update-md').$$('#updating-progress').value",
@@ -389,7 +392,7 @@
   // GetLastStatus() will be called via ExitUpdate() called from
   // UpdateStatusChanged().
   fake_update_engine_client_->set_default_status(status);
-  update_screen_->UpdateStatusChanged(status);
+  version_updater_->UpdateStatusChangedForTesting(status);
 
   ASSERT_TRUE(last_screen_result_.has_value());
   EXPECT_EQ(UpdateScreen::Result::UPDATE_NOT_REQUIRED,
@@ -606,7 +609,7 @@
       {"oobe-update-md", "checking-for-updates-dialog"});
 
   status.status = UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT;
-  update_screen_->UpdateStatusChanged(status);
+  version_updater_->UpdateStatusChangedForTesting(status);
 
   // UpdateStatusChanged(status) calls RebootAfterUpdate().
   EXPECT_EQ(1, fake_update_engine_client_->reboot_after_update_call_count());
diff --git a/chrome/browser/chromeos/login/session/chrome_session_manager.cc b/chrome/browser/chromeos/login/session/chrome_session_manager.cc
index eba67a8..c07ca23 100644
--- a/chrome/browser/chromeos/login/session/chrome_session_manager.cc
+++ b/chrome/browser/chromeos/login/session/chrome_session_manager.cc
@@ -287,12 +287,6 @@
   user_manager::UserManager* user_manager = user_manager::UserManager::Get();
   if (user_manager)
     user_manager->OnSessionStarted();
-
-  content::NotificationService::current()->Notify(
-      chrome::NOTIFICATION_SESSION_STARTED,
-      content::Source<session_manager::SessionManager>(this),
-      content::Details<const user_manager::User>(
-          user_manager->GetActiveUser()));
 }
 
 void ChromeSessionManager::NotifyUserLoggedIn(const AccountId& user_account_id,
diff --git a/chrome/browser/chromeos/login/session/user_session_manager.cc b/chrome/browser/chromeos/login/session/user_session_manager.cc
index 2dee469d..d8bbbfd6 100644
--- a/chrome/browser/chromeos/login/session/user_session_manager.cc
+++ b/chrome/browser/chromeos/login/session/user_session_manager.cc
@@ -2179,8 +2179,7 @@
   InitializeBrowser(profile);
 }
 
-void UserSessionManager::ActiveUserChanged(
-    const user_manager::User* active_user) {
+void UserSessionManager::ActiveUserChanged(user_manager::User* active_user) {
   if (!user_manager::UserManager::Get()->IsCurrentUserNew())
     SendUserPodsMetrics();
 
diff --git a/chrome/browser/chromeos/login/session/user_session_manager.h b/chrome/browser/chromeos/login/session/user_session_manager.h
index f332f355..20b1bfe 100644
--- a/chrome/browser/chromeos/login/session/user_session_manager.h
+++ b/chrome/browser/chromeos/login/session/user_session_manager.h
@@ -278,7 +278,7 @@
   void AddSessionStateObserver(chromeos::UserSessionStateObserver* observer);
   void RemoveSessionStateObserver(chromeos::UserSessionStateObserver* observer);
 
-  void ActiveUserChanged(const user_manager::User* active_user) override;
+  void ActiveUserChanged(user_manager::User* active_user) override;
 
   // This method will be called when user have obtained oauth2 tokens.
   void OnOAuth2TokensFetched(UserContext context);
diff --git a/chrome/browser/chromeos/login/test/oobe_screens_utils.cc b/chrome/browser/chromeos/login/test/oobe_screens_utils.cc
index 44368e751..983de3e 100644
--- a/chrome/browser/chromeos/login/test/oobe_screens_utils.cc
+++ b/chrome/browser/chromeos/login/test/oobe_screens_utils.cc
@@ -72,7 +72,7 @@
 
   UpdateScreen* screen = UpdateScreen::Get(
       WizardController::default_controller()->screen_manager());
-  screen->UpdateStatusChanged(status);
+  screen->GetVersionUpdaterForTesting()->UpdateStatusChangedForTesting(status);
 }
 
 void WaitForFingerprintScreen() {
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc b/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc
index 243cddc..b38f22a 100644
--- a/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc
+++ b/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc
@@ -41,12 +41,10 @@
 constexpr char kAccelSendFeedback[] = "send_feedback";
 constexpr char kAccelReset[] = "reset";
 
-PinDialogManager* GetLoginScreenPinDialogManager() {
+CertificateProviderService* GetLoginScreenCertProviderService() {
   DCHECK(ProfileHelper::IsSigninProfileInitialized());
-  CertificateProviderService* certificate_provider_service =
-      CertificateProviderServiceFactory::GetForBrowserContext(
-          ProfileHelper::GetSigninProfile());
-  return certificate_provider_service->pin_dialog_manager();
+  return CertificateProviderServiceFactory::GetForBrowserContext(
+      ProfileHelper::GetSigninProfile());
 }
 
 }  // namespace
@@ -69,13 +67,14 @@
   // Preload webui-based OOBE for add user, kiosk apps, etc.
   LoadOobeDialog();
 
-  GetLoginScreenPinDialogManager()->AddPinDialogHost(
+  GetLoginScreenCertProviderService()->pin_dialog_manager()->AddPinDialogHost(
       &security_token_pin_dialog_host_ash_impl_);
 }
 
 LoginDisplayHostMojo::~LoginDisplayHostMojo() {
-  GetLoginScreenPinDialogManager()->RemovePinDialogHost(
-      &security_token_pin_dialog_host_ash_impl_);
+  GetLoginScreenCertProviderService()
+      ->pin_dialog_manager()
+      ->RemovePinDialogHost(&security_token_pin_dialog_host_ash_impl_);
   LoginScreenClient::Get()->SetDelegate(nullptr);
   if (dialog_) {
     dialog_->GetOobeUI()->signin_screen_handler()->SetDelegate(nullptr);
@@ -431,6 +430,9 @@
   // called directly.
   if (pending_auth_state_) {
     login_display_->UpdatePinKeyboardState(pending_auth_state_->account_id);
+    GetLoginScreenCertProviderService()
+        ->AbortSignatureRequestsForAuthenticatingUser(
+            pending_auth_state_->account_id);
     std::move(pending_auth_state_->callback).Run(false);
     pending_auth_state_.reset();
   }
diff --git a/chrome/browser/chromeos/login/users/fake_chrome_user_manager.cc b/chrome/browser/chromeos/login/users/fake_chrome_user_manager.cc
index acc58d9..da21dac 100644
--- a/chrome/browser/chromeos/login/users/fake_chrome_user_manager.cc
+++ b/chrome/browser/chromeos/login/users/fake_chrome_user_manager.cc
@@ -68,25 +68,25 @@
   ProfileHelper::SetProfileToUserForTestingEnabled(false);
 }
 
-const user_manager::User* FakeChromeUserManager::AddUser(
+user_manager::User* FakeChromeUserManager::AddUser(
     const AccountId& account_id) {
   return AddUserWithAffiliation(account_id, false);
 }
 
-const user_manager::User* FakeChromeUserManager::AddChildUser(
+user_manager::User* FakeChromeUserManager::AddChildUser(
     const AccountId& account_id) {
   return AddUserWithAffiliationAndTypeAndProfile(
       account_id, false, user_manager::USER_TYPE_CHILD, nullptr);
 }
 
-const user_manager::User* FakeChromeUserManager::AddUserWithAffiliation(
+user_manager::User* FakeChromeUserManager::AddUserWithAffiliation(
     const AccountId& account_id,
     bool is_affiliated) {
   return AddUserWithAffiliationAndTypeAndProfile(
       account_id, is_affiliated, user_manager::USER_TYPE_REGULAR, nullptr);
 }
 
-const user_manager::User*
+user_manager::User*
 FakeChromeUserManager::AddUserWithAffiliationAndTypeAndProfile(
     const AccountId& account_id,
     bool is_affiliated,
@@ -149,7 +149,7 @@
   return user;
 }
 
-const user_manager::User* FakeChromeUserManager::AddPublicAccountUser(
+user_manager::User* FakeChromeUserManager::AddPublicAccountUser(
     const AccountId& account_id) {
   user_manager::User* user =
       user_manager::User::CreatePublicAccountUser(account_id);
diff --git a/chrome/browser/chromeos/login/users/fake_chrome_user_manager.h b/chrome/browser/chromeos/login/users/fake_chrome_user_manager.h
index 02c184270..7a177780 100644
--- a/chrome/browser/chromeos/login/users/fake_chrome_user_manager.h
+++ b/chrome/browser/chromeos/login/users/fake_chrome_user_manager.h
@@ -34,7 +34,7 @@
   user_manager::User* AddKioskAppUser(const AccountId& account_id);
   user_manager::User* AddArcKioskAppUser(const AccountId& account_id);
   user_manager::User* AddSupervisedUser(const AccountId& account_id);
-  const user_manager::User* AddPublicAccountUser(const AccountId& account_id);
+  user_manager::User* AddPublicAccountUser(const AccountId& account_id);
 
   // Calculates the user name hash and calls UserLoggedIn to login a user.
   // Sets the user as having its profile created, but does not create a profile.
@@ -42,14 +42,14 @@
   // creates the profile and updates the user later.
   void LoginUser(const AccountId& account_id);
 
-  const user_manager::User* AddUser(const AccountId& account_id);
-  const user_manager::User* AddChildUser(const AccountId& account_id);
-  const user_manager::User* AddUserWithAffiliation(const AccountId& account_id,
-                                                   bool is_affiliated);
+  user_manager::User* AddUser(const AccountId& account_id);
+  user_manager::User* AddChildUser(const AccountId& account_id);
+  user_manager::User* AddUserWithAffiliation(const AccountId& account_id,
+                                             bool is_affiliated);
 
   // Creates and adds user with specified |account_id| and |user_type|. Sets
   // user affiliation. If |profile| is valid, maps it to the created user.
-  const user_manager::User* AddUserWithAffiliationAndTypeAndProfile(
+  user_manager::User* AddUserWithAffiliationAndTypeAndProfile(
       const AccountId& account_id,
       bool is_affiliated,
       user_manager::UserType user_type,
diff --git a/chrome/browser/chromeos/login/version_updater/mock_version_updater_delegate.cc b/chrome/browser/chromeos/login/version_updater/mock_version_updater_delegate.cc
new file mode 100644
index 0000000..2d240ee0
--- /dev/null
+++ b/chrome/browser/chromeos/login/version_updater/mock_version_updater_delegate.cc
@@ -0,0 +1,13 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/login/version_updater/mock_version_updater_delegate.h"
+
+namespace chromeos {
+
+MockVersionUpdaterDelegate::MockVersionUpdaterDelegate() {}
+
+MockVersionUpdaterDelegate::~MockVersionUpdaterDelegate() {}
+
+}  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/version_updater/mock_version_updater_delegate.h b/chrome/browser/chromeos/login/version_updater/mock_version_updater_delegate.h
new file mode 100644
index 0000000..cd0759b
--- /dev/null
+++ b/chrome/browser/chromeos/login/version_updater/mock_version_updater_delegate.h
@@ -0,0 +1,35 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_VERSION_UPDATER_MOCK_VERSION_UPDATER_DELEGATE_H_
+#define CHROME_BROWSER_CHROMEOS_LOGIN_VERSION_UPDATER_MOCK_VERSION_UPDATER_DELEGATE_H_
+
+#include <string>
+
+#include "chrome/browser/chromeos/login/version_updater/version_updater.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+namespace chromeos {
+
+class MockVersionUpdaterDelegate : public VersionUpdater::Delegate {
+ public:
+  MockVersionUpdaterDelegate();
+  virtual ~MockVersionUpdaterDelegate();
+
+  MOCK_METHOD1(UpdateInfoChanged,
+               void(const VersionUpdater::UpdateInfo& update_info));
+  MOCK_METHOD1(FinishExitUpdate, void(VersionUpdater::Result result));
+  MOCK_METHOD0(OnWaitForRebootTimeElapsed, void());
+  MOCK_METHOD0(PrepareForUpdateCheck, void());
+  MOCK_METHOD3(UpdateErrorMessage,
+               void(const NetworkPortalDetector::CaptivePortalStatus status,
+                    const NetworkError::ErrorState& error_state,
+                    const std::string& network_name));
+  MOCK_METHOD0(ShowErrorMessage, void());
+  MOCK_METHOD0(DelayErrorMessage, void());
+};
+
+}  // namespace chromeos
+
+#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_VERSION_UPDATER_MOCK_VERSION_UPDATER_DELEGATE_H_
diff --git a/chrome/browser/chromeos/login/version_updater/version_updater.cc b/chrome/browser/chromeos/login/version_updater/version_updater.cc
new file mode 100644
index 0000000..082588f9
--- /dev/null
+++ b/chrome/browser/chromeos/login/version_updater/version_updater.cc
@@ -0,0 +1,384 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/login/version_updater/version_updater.h"
+
+#include <algorithm>
+#include <string>
+
+#include "base/bind.h"
+#include "base/time/default_tick_clock.h"
+#include "chrome/grit/chromium_strings.h"
+#include "chrome/grit/generated_resources.h"
+#include "chromeos/dbus/dbus_thread_manager.h"
+#include "chromeos/network/network_state.h"
+#include "ui/base/l10n/l10n_util.h"
+
+namespace chromeos {
+
+namespace {
+
+// Time in seconds after which we decide that the device has not rebooted
+// automatically. If reboot didn't happen during this interval, ask user to
+// reboot device manually.
+constexpr const base::TimeDelta kWaitForRebootTime =
+    base::TimeDelta::FromSeconds(3);
+
+// Progress bar stages. Each represents progress bar value
+// at the beginning of each stage.
+// TODO(nkostylev): Base stage progress values on approximate time.
+// TODO(nkostylev): Animate progress during each state.
+const int kBeforeUpdateCheckProgress = 7;
+const int kBeforeDownloadProgress = 14;
+const int kBeforeVerifyingProgress = 74;
+const int kBeforeFinalizingProgress = 81;
+const int kProgressComplete = 100;
+
+// Minimum timestep between two consecutive measurements for the download rates.
+constexpr const base::TimeDelta kMinTimeStep = base::TimeDelta::FromSeconds(1);
+
+// Defines what part of update progress does download part takes.
+const int kDownloadProgressIncrement = 60;
+
+// Smooth factor that is used for the average downloading speed
+// estimation.
+// avg_speed = smooth_factor * cur_speed + (1.0 - smooth_factor) *
+// avg_speed.
+const double kDownloadSpeedSmoothFactor = 0.1;
+
+// Minimum allowed value for the average downloading speed.
+const double kDownloadAverageSpeedDropBound = 1e-8;
+
+// An upper bound for possible downloading time left estimations.
+constexpr const base::TimeDelta kMaxTimeLeft = base::TimeDelta::FromDays(1);
+
+}  // anonymous namespace
+
+VersionUpdater::UpdateInfo::UpdateInfo() {}
+
+VersionUpdater::VersionUpdater(VersionUpdater::Delegate* delegate)
+    : delegate_(delegate), tick_clock_(base::DefaultTickClock::GetInstance()) {}
+
+VersionUpdater::~VersionUpdater() {
+  DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver(this);
+  network_portal_detector::GetInstance()->RemoveObserver(this);
+}
+
+void VersionUpdater::StartNetworkCheck() {
+  // If portal detector is enabled and portal detection before AU is
+  // allowed, initiate network state check. Otherwise, directly
+  // proceed to update.
+  if (!network_portal_detector::GetInstance()->IsEnabled()) {
+    StartUpdateCheck();
+    return;
+  }
+  update_info_.state = State::STATE_FIRST_PORTAL_CHECK;
+  delegate_->UpdateInfoChanged(update_info_);
+
+  is_first_detection_notification_ = true;
+  network_portal_detector::GetInstance()->AddAndFireObserver(this);
+}
+
+void VersionUpdater::StartUpdateCheck() {
+  delegate_->PrepareForUpdateCheck();
+  RequestUpdateCheck();
+}
+
+void VersionUpdater::SetUpdateOverCellularOneTimePermission() {
+  DBusThreadManager::Get()
+      ->GetUpdateEngineClient()
+      ->SetUpdateOverCellularOneTimePermission(
+          update_info_.update_version, update_info_.update_size,
+          base::BindRepeating(
+              &VersionUpdater::OnSetUpdateOverCellularOneTimePermission,
+              weak_ptr_factory_.GetWeakPtr()));
+}
+
+void VersionUpdater::RejectUpdateOverCellular() {
+  // Reset UI context to show curtain again when the user goes back to the
+  // screen.
+  update_info_.progress_unavailable = true;
+  update_info_.requires_permission_for_cellular = false;
+  delegate_->UpdateInfoChanged(update_info_);
+}
+
+void VersionUpdater::RebootAfterUpdate() {
+  VLOG(1) << "Initiate reboot after update";
+  DBusThreadManager::Get()->GetUpdateEngineClient()->RebootAfterUpdate();
+  reboot_timer_.Start(FROM_HERE, kWaitForRebootTime, this,
+                      &VersionUpdater::OnWaitForRebootTimeElapsed);
+}
+
+void VersionUpdater::StartExitUpdate(Result result) {
+  DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver(this);
+  network_portal_detector::GetInstance()->RemoveObserver(this);
+  delegate_->FinishExitUpdate(result);
+}
+
+base::OneShotTimer* VersionUpdater::GetRebootTimerForTesting() {
+  return &reboot_timer_;
+}
+
+void VersionUpdater::UpdateStatusChangedForTesting(
+    const UpdateEngineClient::Status& status) {
+  UpdateStatusChanged(status);
+}
+
+void VersionUpdater::RequestUpdateCheck() {
+  update_info_.state = State::STATE_UPDATE;
+  update_info_.progress = kBeforeUpdateCheckProgress;
+  update_info_.update_version = std::string();
+  update_info_.update_size = 0;
+  delegate_->UpdateInfoChanged(update_info_);
+
+  network_portal_detector::GetInstance()->RemoveObserver(this);
+  DBusThreadManager::Get()->GetUpdateEngineClient()->AddObserver(this);
+  VLOG(1) << "Initiate update check";
+  DBusThreadManager::Get()->GetUpdateEngineClient()->RequestUpdateCheck(
+      base::BindRepeating(&VersionUpdater::OnUpdateCheckStarted,
+                          weak_ptr_factory_.GetWeakPtr()));
+}
+
+void VersionUpdater::UpdateStatusChanged(
+    const UpdateEngineClient::Status& status) {
+  update_info_.status = status;
+
+  if (update_info_.is_checking_for_update &&
+      status.status > UpdateEngineClient::UPDATE_STATUS_CHECKING_FOR_UPDATE &&
+      status.status != UpdateEngineClient::UPDATE_STATUS_ERROR &&
+      status.status !=
+          UpdateEngineClient::UPDATE_STATUS_REPORTING_ERROR_EVENT) {
+    update_info_.is_checking_for_update = false;
+  }
+  if (ignore_idle_status_ &&
+      status.status > UpdateEngineClient::UPDATE_STATUS_IDLE) {
+    ignore_idle_status_ = false;
+  }
+
+  switch (status.status) {
+    case UpdateEngineClient::UPDATE_STATUS_CHECKING_FOR_UPDATE:
+      break;
+    case UpdateEngineClient::UPDATE_STATUS_UPDATE_AVAILABLE:
+      update_info_.progress = kBeforeDownloadProgress;
+      update_info_.progress_message =
+          l10n_util::GetStringUTF16(IDS_UPDATE_AVAILABLE);
+      update_info_.show_estimated_time_left = false;
+      update_info_.progress_unavailable = false;
+      break;
+    case UpdateEngineClient::UPDATE_STATUS_DOWNLOADING:
+      if (!is_downloading_update_) {
+        is_downloading_update_ = true;
+
+        download_start_time_ = download_last_time_ = tick_clock_->NowTicks();
+        download_start_progress_ = status.download_progress;
+        download_last_progress_ = status.download_progress;
+        is_download_average_speed_computed_ = false;
+        download_average_speed_ = 0.0;
+        update_info_.progress_message =
+            l10n_util::GetStringUTF16(IDS_INSTALLING_UPDATE);
+        update_info_.progress_unavailable = false;
+      }
+      UpdateDownloadingStats(status);
+      break;
+    case UpdateEngineClient::UPDATE_STATUS_VERIFYING:
+      update_info_.progress = kBeforeVerifyingProgress;
+      update_info_.progress_message =
+          l10n_util::GetStringUTF16(IDS_UPDATE_VERIFYING);
+      update_info_.show_estimated_time_left = false;
+      break;
+    case UpdateEngineClient::UPDATE_STATUS_FINALIZING:
+      update_info_.progress = kBeforeFinalizingProgress;
+      update_info_.progress_message =
+          l10n_util::GetStringUTF16(IDS_UPDATE_FINALIZING);
+      update_info_.show_estimated_time_left = false;
+      break;
+    case UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT:
+      update_info_.progress = kProgressComplete;
+      update_info_.show_estimated_time_left = false;
+      update_info_.progress_unavailable = false;
+      break;
+    case UpdateEngineClient::UPDATE_STATUS_NEED_PERMISSION_TO_UPDATE:
+      VLOG(1) << "Update requires user permission to proceed.";
+      update_info_.state = State::STATE_REQUESTING_USER_PERMISSION;
+      update_info_.update_version = status.new_version;
+      update_info_.update_size = status.new_size;
+      update_info_.requires_permission_for_cellular = true;
+      update_info_.progress_unavailable = false;
+
+      DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver(this);
+      break;
+    case UpdateEngineClient::UPDATE_STATUS_ATTEMPTING_ROLLBACK:
+      VLOG(1) << "Attempting rollback";
+      break;
+    case UpdateEngineClient::UPDATE_STATUS_IDLE:
+      // Exit update only if update engine was in non-idle status before.
+      // Otherwise, it's possible that the update request has not yet been
+      // started.
+      if (!ignore_idle_status_)
+        StartExitUpdate(Result::UPDATE_NOT_REQUIRED);
+      break;
+    case UpdateEngineClient::UPDATE_STATUS_ERROR:
+    case UpdateEngineClient::UPDATE_STATUS_REPORTING_ERROR_EVENT:
+      break;
+  }
+
+  delegate_->UpdateInfoChanged(update_info_);
+}
+
+void VersionUpdater::UpdateDownloadingStats(
+    const UpdateEngineClient::Status& status) {
+  base::TimeTicks download_current_time = tick_clock_->NowTicks();
+  if (download_current_time >= download_last_time_ + kMinTimeStep) {
+    // Estimate downloading rate.
+    double progress_delta =
+        std::max(status.download_progress - download_last_progress_, 0.0);
+    double time_delta =
+        (download_current_time - download_last_time_).InSecondsF();
+    double download_rate = status.new_size * progress_delta / time_delta;
+
+    download_last_time_ = download_current_time;
+    download_last_progress_ = status.download_progress;
+
+    // Estimate time left.
+    double progress_left = std::max(1.0 - status.download_progress, 0.0);
+    if (!is_download_average_speed_computed_) {
+      download_average_speed_ = download_rate;
+      is_download_average_speed_computed_ = true;
+    }
+    download_average_speed_ =
+        kDownloadSpeedSmoothFactor * download_rate +
+        (1.0 - kDownloadSpeedSmoothFactor) * download_average_speed_;
+    if (download_average_speed_ < kDownloadAverageSpeedDropBound) {
+      time_delta = (download_current_time - download_start_time_).InSecondsF();
+      download_average_speed_ =
+          status.new_size *
+          (status.download_progress - download_start_progress_) / time_delta;
+    }
+    double work_left = progress_left * status.new_size;
+    // time_left is in seconds.
+    double time_left = work_left / download_average_speed_;
+    // |time_left| may be large enough or even +infinity. So we must
+    // |bound possible estimations.
+    time_left = std::min(time_left, kMaxTimeLeft.InSecondsF());
+
+    update_info_.show_estimated_time_left = true;
+    update_info_.estimated_time_left_in_secs = static_cast<int>(time_left);
+  }
+
+  int download_progress =
+      static_cast<int>(status.download_progress * kDownloadProgressIncrement);
+  update_info_.progress = kBeforeDownloadProgress + download_progress;
+}
+
+void VersionUpdater::OnPortalDetectionCompleted(
+    const NetworkState* network,
+    const NetworkPortalDetector::CaptivePortalState& state) {
+  VLOG(1) << "VersionUpdater::OnPortalDetectionCompleted(): "
+          << "network=" << (network ? network->path() : "") << ", "
+          << "state.status=" << state.status << ", "
+          << "state.response_code=" << state.response_code;
+
+  // Wait for sane detection results.
+  if (network &&
+      state.status == NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_UNKNOWN) {
+    return;
+  }
+
+  // Restart portal detection for the first notification about offline state.
+  if ((!network ||
+       state.status == NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_OFFLINE) &&
+      is_first_detection_notification_) {
+    is_first_detection_notification_ = false;
+    base::ThreadTaskRunnerHandle::Get()->PostTask(
+        FROM_HERE, base::BindOnce([]() {
+          network_portal_detector::GetInstance()->StartPortalDetection(
+              false /* force */);
+        }));
+    return;
+  }
+  is_first_detection_notification_ = false;
+
+  NetworkPortalDetector::CaptivePortalStatus status = state.status;
+  if (update_info_.state == State::STATE_ERROR) {
+    // In the case of online state hide error message and proceed to
+    // the update stage. Otherwise, update error message content.
+    if (status == NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE)
+      StartUpdateCheck();
+    else
+      UpdateErrorMessage(network, status);
+  } else if (update_info_.state == State::STATE_FIRST_PORTAL_CHECK) {
+    // In the case of online state immediately proceed to the update
+    // stage. Otherwise, prepare and show error message.
+    if (status == NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE) {
+      StartUpdateCheck();
+    } else {
+      UpdateErrorMessage(network, status);
+
+      // StartUpdateCheck, which gets called when the error clears up, will add
+      // the update engine observer back.
+      DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver(this);
+
+      update_info_.state = State::STATE_ERROR;
+      delegate_->UpdateInfoChanged(update_info_);
+      if (status == NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL)
+        delegate_->DelayErrorMessage();
+      else
+        delegate_->ShowErrorMessage();
+    }
+  }
+}
+
+void VersionUpdater::OnWaitForRebootTimeElapsed() {
+  delegate_->OnWaitForRebootTimeElapsed();
+}
+
+void VersionUpdater::UpdateErrorMessage(
+    const NetworkState* network,
+    const NetworkPortalDetector::CaptivePortalStatus status) {
+  std::string network_name = std::string();
+  NetworkError::ErrorState error_state;
+  switch (status) {
+    case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_UNKNOWN:
+    case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_OFFLINE:
+      error_state = NetworkError::ERROR_STATE_OFFLINE;
+      break;
+    case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL:
+      DCHECK(network);
+      error_state = NetworkError::ERROR_STATE_PORTAL;
+      network_name = network->name();
+      break;
+    case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED:
+      error_state = NetworkError::ERROR_STATE_PROXY;
+      break;
+    default:
+      NOTREACHED();
+      return;
+  }
+  delegate_->UpdateErrorMessage(status, error_state, network_name);
+}
+
+void VersionUpdater::OnSetUpdateOverCellularOneTimePermission(bool success) {
+  update_info_.requires_permission_for_cellular = false;
+  if (!success) {
+    // Reset UI context to show curtain again when the user goes back to the
+    // screen.
+    update_info_.progress_unavailable = true;
+  }
+  delegate_->UpdateInfoChanged(update_info_);
+
+  if (success) {
+    StartUpdateCheck();
+  } else {
+    StartExitUpdate(Result::UPDATE_ERROR);
+  }
+}
+
+void VersionUpdater::OnUpdateCheckStarted(
+    UpdateEngineClient::UpdateCheckResult result) {
+  VLOG(1) << "Callback from RequestUpdateCheck, result " << result;
+  if (result != UpdateEngineClient::UPDATE_RESULT_SUCCESS)
+    StartExitUpdate(Result::UPDATE_NOT_REQUIRED);
+}
+
+}  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/version_updater/version_updater.h b/chrome/browser/chromeos/login/version_updater/version_updater.h
new file mode 100644
index 0000000..8c73f6c
--- /dev/null
+++ b/chrome/browser/chromeos/login/version_updater/version_updater.h
@@ -0,0 +1,191 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_VERSION_UPDATER_VERSION_UPDATER_H_
+#define CHROME_BROWSER_CHROMEOS_LOGIN_VERSION_UPDATER_VERSION_UPDATER_H_
+
+#include <string>
+
+#include "base/macros.h"
+#include "base/memory/weak_ptr.h"
+#include "base/time/time.h"
+#include "base/timer/timer.h"
+#include "chrome/browser/chromeos/login/screens/network_error.h"
+#include "chromeos/dbus/update_engine_client.h"
+#include "chromeos/network/portal_detector/network_portal_detector.h"
+
+namespace base {
+class DefaultTickClock;
+}
+
+namespace chromeos {
+
+// Tries to update system, interacting with UpdateEnglineClient and
+// NetworkPortalDetector. Uses callbacks - methods of |delegate_|, which may
+// interact with user, change UI etc.
+class VersionUpdater : public UpdateEngineClient::Observer,
+                       public NetworkPortalDetector::Observer {
+ public:
+  enum class Result {
+    UPDATE_NOT_REQUIRED,
+    UPDATE_ERROR,
+  };
+
+  enum class State {
+    STATE_IDLE = 0,
+    STATE_FIRST_PORTAL_CHECK,
+    STATE_REQUESTING_USER_PERMISSION,
+    STATE_UPDATE,
+    STATE_ERROR
+  };
+
+  // Stores information about current downloading process, update progress and
+  // state.
+  struct UpdateInfo {
+    UpdateInfo();
+
+    UpdateEngineClient::Status status = UpdateEngineClient::Status();
+
+    // Estimated time left, in seconds.
+    int estimated_time_left_in_secs = 0;
+    bool show_estimated_time_left = false;
+
+    // True if VersionUpdater in such a state that progress is not available or
+    // applicable (e.g. checking for updates)
+    bool progress_unavailable = true;
+    base::string16 progress_message = base::string16();
+    // Percent of update progress, between 0 and 100.
+    int progress = 0;
+
+    bool requires_permission_for_cellular = false;
+
+    // Information about a pending update. Set if a user permission is required
+    // to proceed with the update. The values have to be passed to the update
+    // engine in SetUpdateOverCellularOneTimePermission method in order to
+    // enable update over cellular network.
+    int64_t update_size = 0;
+    std::string update_version = std::string();
+
+    // True if in the process of checking for update.
+    bool is_checking_for_update = true;
+
+    // Current state.
+    State state = State::STATE_IDLE;
+  };
+
+  // Interface for callbacks that are called when corresponding events occur
+  // during update process.
+  class Delegate {
+   public:
+    // Called when update info changes
+    virtual void UpdateInfoChanged(
+        const VersionUpdater::UpdateInfo& update_info) = 0;
+    // Reports update results.
+    virtual void FinishExitUpdate(VersionUpdater::Result result) = 0;
+    // Timer notification handler.
+    virtual void OnWaitForRebootTimeElapsed() = 0;
+    // Called before update check starts.
+    virtual void PrepareForUpdateCheck() = 0;
+    virtual void UpdateErrorMessage(
+        const NetworkPortalDetector::CaptivePortalStatus status,
+        const NetworkError::ErrorState& error_state,
+        const std::string& network_name) = 0;
+    virtual void ShowErrorMessage() = 0;
+    virtual void DelayErrorMessage() = 0;
+  };
+
+  explicit VersionUpdater(VersionUpdater::Delegate* delegate);
+  ~VersionUpdater() override;
+
+  // Starts network check. If success, starts update check.
+  void StartNetworkCheck();
+  void StartUpdateCheck();
+
+  void SetUpdateOverCellularOneTimePermission();
+  void RejectUpdateOverCellular();
+  void RebootAfterUpdate();
+  void StartExitUpdate(Result result);
+
+  const UpdateInfo& update_info() { return update_info_; }
+
+  void set_tick_clock_for_testing(const base::TickClock* tick_clock) {
+    tick_clock_ = tick_clock;
+  }
+
+  base::OneShotTimer* GetRebootTimerForTesting();
+  void UpdateStatusChangedForTesting(const UpdateEngineClient::Status& status);
+
+ private:
+  void RequestUpdateCheck();
+
+  // UpdateEngineClient::Observer implementation:
+  void UpdateStatusChanged(const UpdateEngineClient::Status& status) override;
+
+  // Updates downloading stats (remaining time and downloading
+  // progress), which are stored in update_info_.
+  void UpdateDownloadingStats(const UpdateEngineClient::Status& status);
+
+  // NetworkPortalDetector::Observer implementation:
+  void OnPortalDetectionCompleted(
+      const NetworkState* network,
+      const NetworkPortalDetector::CaptivePortalState& state) override;
+
+  void OnWaitForRebootTimeElapsed();
+
+  void UpdateErrorMessage(
+      const NetworkState* network,
+      const NetworkPortalDetector::CaptivePortalStatus status);
+
+  // Callback to UpdateEngineClient::SetUpdateOverCellularOneTimePermission
+  // called in response to user confirming that the OS update can proceed
+  // despite being over cellular charges.
+  // |success|: whether the update engine accepted the user permission.
+  void OnSetUpdateOverCellularOneTimePermission(bool success);
+
+  // Callback for UpdateEngineClient::RequestUpdateCheck() called from
+  // StartUpdateCheck().
+  void OnUpdateCheckStarted(UpdateEngineClient::UpdateCheckResult result);
+
+  // Pointer to delegate that owns this VersionUpdater instance.
+  Delegate* delegate_;
+
+  // Time of the first notification from the downloading stage.
+  base::TimeTicks download_start_time_;
+  double download_start_progress_ = 0;
+
+  // Time of the last notification from the downloading stage.
+  base::TimeTicks download_last_time_;
+  double download_last_progress_ = 0;
+
+  bool is_download_average_speed_computed_ = false;
+  double download_average_speed_ = 0;
+
+  // Flag that is used to detect when update download has just started.
+  bool is_downloading_update_ = false;
+  // Ignore fist IDLE status that is sent before VersionUpdater initiated check.
+  bool ignore_idle_status_ = true;
+
+  // Timer for the interval to wait for the reboot.
+  // If reboot didn't happen - ask user to reboot manually.
+  base::OneShotTimer reboot_timer_;
+
+  // True if there was no notification from NetworkPortalDetector
+  // about state for the default network.
+  bool is_first_detection_notification_ = true;
+
+  // Stores information about current downloading process, update progress and
+  // state. It is sent to Delegate on each UpdateInfoChanged call, and also can
+  // be obtained with corresponding getter.
+  UpdateInfo update_info_;
+
+  const base::TickClock* tick_clock_;
+
+  base::WeakPtrFactory<VersionUpdater> weak_ptr_factory_{this};
+
+  DISALLOW_COPY_AND_ASSIGN(VersionUpdater);
+};
+
+}  // namespace chromeos
+
+#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_VERSION_UPDATER_VERSION_UPDATER_H_
diff --git a/chrome/browser/chromeos/login/version_updater/version_updater_unittest.cc b/chrome/browser/chromeos/login/version_updater/version_updater_unittest.cc
new file mode 100644
index 0000000..8c8b850
--- /dev/null
+++ b/chrome/browser/chromeos/login/version_updater/version_updater_unittest.cc
@@ -0,0 +1,281 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/login/version_updater/version_updater.h"
+
+#include <memory>
+
+#include "base/command_line.h"
+#include "base/optional.h"
+#include "base/test/scoped_mock_time_message_loop_task_runner.h"
+#include "chrome/browser/chromeos/login/startup_utils.h"
+#include "chrome/browser/chromeos/login/version_updater/mock_version_updater_delegate.h"
+#include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h"
+#include "chrome/browser/chromeos/settings/cros_settings.h"
+#include "chrome/browser/chromeos/settings/device_settings_service.h"
+#include "chrome/test/base/scoped_testing_local_state.h"
+#include "chrome/test/base/testing_browser_process.h"
+#include "chromeos/constants/chromeos_switches.h"
+#include "chromeos/dbus/dbus_thread_manager.h"
+#include "chromeos/dbus/fake_update_engine_client.h"
+#include "chromeos/dbus/update_engine_client.h"
+#include "chromeos/network/network_handler.h"
+#include "chromeos/network/portal_detector/mock_network_portal_detector.h"
+#include "chromeos/network/portal_detector/network_portal_detector.h"
+#include "content/public/test/browser_task_environment.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+using testing::_;
+using testing::AnyNumber;
+using testing::Return;
+
+namespace chromeos {
+
+namespace {
+constexpr const char kNetworkGuid[] = "test_network";
+}  // anonymous namespace
+
+class VersionUpdaterUnitTest : public testing::Test {
+ public:
+  VersionUpdaterUnitTest() : local_state_(TestingBrowserProcess::GetGlobal()) {}
+
+  void SetUpdateEngineStatus(UpdateEngineClient::UpdateStatusOperation status) {
+    UpdateEngineClient::Status update_engine_status;
+    update_engine_status.status = status;
+    fake_update_engine_client_->NotifyObserversThatStatusChanged(
+        update_engine_status);
+  }
+
+  void SetStatusWithChecks(UpdateEngineClient::UpdateStatusOperation status) {
+    testing::MockFunction<void(int check_point_name)> check;
+    {
+      testing::InSequence s;
+
+      EXPECT_CALL(*mock_delegate_, UpdateInfoChanged(_));
+      EXPECT_CALL(check, Call(checks_count_));
+    }
+
+    SetUpdateEngineStatus(status);
+    check.Call(checks_count_);
+    ++checks_count_;
+  }
+
+  void SetUpMockNetworkPortalDetector() {
+    network_portal_detector::SetNetworkPortalDetector(
+        mock_network_portal_detector_.get());
+  }
+
+  void SetUpFakeNetworkPortalDetector() {
+    fake_network_portal_detector_->SetDefaultNetworkForTesting(kNetworkGuid);
+    network_portal_detector::SetNetworkPortalDetector(
+        fake_network_portal_detector_.get());
+  }
+
+  // testing::Test:
+  void SetUp() override {
+    // Initialize objects needed by VersionUpdater.
+    fake_update_engine_client_ = new FakeUpdateEngineClient();
+    DBusThreadManager::GetSetterForTesting()->SetUpdateEngineClient(
+        std::unique_ptr<UpdateEngineClient>(fake_update_engine_client_));
+
+    NetworkHandler::Initialize();
+
+    // |mock_network_portal_detector_->IsEnabled()| will always return false.
+    mock_network_portal_detector_ =
+        std::make_unique<MockNetworkPortalDetector>();
+    EXPECT_CALL(*mock_network_portal_detector_, IsEnabled())
+        .Times(AnyNumber())
+        .WillRepeatedly(Return(false));
+
+    // |fake_network_portal_detector_->IsEnabled()| will always return true.
+    fake_network_portal_detector_ =
+        std::make_unique<NetworkPortalDetectorTestImpl>();
+
+    mock_delegate_ = std::make_unique<MockVersionUpdaterDelegate>();
+    version_updater_ = std::make_unique<VersionUpdater>(mock_delegate_.get());
+
+    checks_count_ = 0;
+  }
+
+  void TearDown() override {
+    TestingBrowserProcess::GetGlobal()->SetShuttingDown(true);
+    // We need to stop observing |NetworkPortalDetector| before call
+    // |DBusThreadManager::Shutdown()|, so destroy |version_updater_| now.
+    version_updater_.reset();
+    mock_delegate_.reset();
+
+    network_portal_detector::InitializeForTesting(nullptr);
+    NetworkHandler::Shutdown();
+
+    // It will delete |fake_update_engine_client_|.
+    DBusThreadManager::Shutdown();
+  }
+
+ protected:
+  std::unique_ptr<VersionUpdater> version_updater_;
+
+  // Accessory objects needed by VersionUpdater.
+  std::unique_ptr<MockVersionUpdaterDelegate> mock_delegate_;
+  std::unique_ptr<MockNetworkPortalDetector> mock_network_portal_detector_;
+  std::unique_ptr<NetworkPortalDetectorTestImpl> fake_network_portal_detector_;
+  FakeUpdateEngineClient* fake_update_engine_client_;
+
+ private:
+  // Test versions of core browser infrastructure.
+  content::BrowserTaskEnvironment task_environment_;
+  ScopedTestingLocalState local_state_;
+
+  int checks_count_ = 0;
+
+  DISALLOW_COPY_AND_ASSIGN(VersionUpdaterUnitTest);
+};
+
+TEST_F(VersionUpdaterUnitTest, HandlesNoUpdate) {
+  SetUpMockNetworkPortalDetector();
+
+  EXPECT_CALL(*mock_delegate_, PrepareForUpdateCheck()).Times(1);
+  version_updater_->StartNetworkCheck();
+  // Verify that the DUT checks for an update.
+  EXPECT_EQ(fake_update_engine_client_->request_update_check_call_count(), 1);
+
+  SetStatusWithChecks(UpdateEngineClient::UPDATE_STATUS_CHECKING_FOR_UPDATE);
+
+  // No updates are available.
+  EXPECT_CALL(*mock_delegate_,
+              FinishExitUpdate(VersionUpdater::Result::UPDATE_NOT_REQUIRED))
+      .Times(1);
+  SetStatusWithChecks(UpdateEngineClient::UPDATE_STATUS_IDLE);
+}
+
+TEST_F(VersionUpdaterUnitTest, HandlesAvailableUpdate) {
+  SetUpMockNetworkPortalDetector();
+
+  EXPECT_CALL(*mock_delegate_, PrepareForUpdateCheck()).Times(1);
+  version_updater_->StartNetworkCheck();
+  // Verify that the DUT checks for an update.
+  EXPECT_EQ(fake_update_engine_client_->request_update_check_call_count(), 1);
+
+  SetStatusWithChecks(UpdateEngineClient::UPDATE_STATUS_IDLE);
+
+  SetStatusWithChecks(UpdateEngineClient::UPDATE_STATUS_CHECKING_FOR_UPDATE);
+
+  SetStatusWithChecks(UpdateEngineClient::UPDATE_STATUS_UPDATE_AVAILABLE);
+
+  SetStatusWithChecks(UpdateEngineClient::UPDATE_STATUS_DOWNLOADING);
+
+  SetStatusWithChecks(UpdateEngineClient::UPDATE_STATUS_VERIFYING);
+
+  SetStatusWithChecks(UpdateEngineClient::UPDATE_STATUS_FINALIZING);
+
+  SetStatusWithChecks(UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT);
+
+  EXPECT_EQ(fake_update_engine_client_->reboot_after_update_call_count(), 0);
+  version_updater_->RebootAfterUpdate();
+  EXPECT_EQ(fake_update_engine_client_->reboot_after_update_call_count(), 1);
+}
+
+TEST_F(VersionUpdaterUnitTest, HandlesCancelUpdateOnUpdateAvailable) {
+  SetUpMockNetworkPortalDetector();
+
+  EXPECT_CALL(*mock_delegate_, PrepareForUpdateCheck()).Times(1);
+  version_updater_->StartNetworkCheck();
+
+  // Verify that the DUT checks for an update.
+  EXPECT_EQ(fake_update_engine_client_->request_update_check_call_count(), 1);
+
+  SetStatusWithChecks(UpdateEngineClient::UPDATE_STATUS_IDLE);
+
+  SetStatusWithChecks(UpdateEngineClient::UPDATE_STATUS_CHECKING_FOR_UPDATE);
+
+  SetStatusWithChecks(UpdateEngineClient::UPDATE_STATUS_UPDATE_AVAILABLE);
+
+  EXPECT_CALL(*mock_delegate_,
+              FinishExitUpdate(VersionUpdater::Result::UPDATE_NOT_REQUIRED))
+      .Times(1);
+  version_updater_->StartExitUpdate(
+      VersionUpdater::Result::UPDATE_NOT_REQUIRED);
+}
+
+TEST_F(VersionUpdaterUnitTest, HandlesCancelUpdateOnDownloading) {
+  SetUpMockNetworkPortalDetector();
+
+  EXPECT_CALL(*mock_delegate_, PrepareForUpdateCheck()).Times(1);
+  version_updater_->StartNetworkCheck();
+
+  // Verify that the DUT checks for an update.
+  EXPECT_EQ(fake_update_engine_client_->request_update_check_call_count(), 1);
+
+  SetStatusWithChecks(UpdateEngineClient::UPDATE_STATUS_IDLE);
+
+  SetStatusWithChecks(UpdateEngineClient::UPDATE_STATUS_CHECKING_FOR_UPDATE);
+
+  SetStatusWithChecks(UpdateEngineClient::UPDATE_STATUS_UPDATE_AVAILABLE);
+
+  SetStatusWithChecks(UpdateEngineClient::UPDATE_STATUS_DOWNLOADING);
+
+  EXPECT_CALL(*mock_delegate_,
+              FinishExitUpdate(VersionUpdater::Result::UPDATE_NOT_REQUIRED))
+      .Times(1);
+  version_updater_->StartExitUpdate(
+      VersionUpdater::Result::UPDATE_NOT_REQUIRED);
+}
+
+TEST_F(VersionUpdaterUnitTest, HandleUpdateError) {
+  SetUpMockNetworkPortalDetector();
+
+  EXPECT_CALL(*mock_delegate_, PrepareForUpdateCheck()).Times(1);
+  version_updater_->StartNetworkCheck();
+
+  // Verify that the DUT checks for an update.
+  EXPECT_EQ(fake_update_engine_client_->request_update_check_call_count(), 1);
+
+  SetStatusWithChecks(UpdateEngineClient::UPDATE_STATUS_IDLE);
+
+  SetStatusWithChecks(UpdateEngineClient::UPDATE_STATUS_CHECKING_FOR_UPDATE);
+
+  SetStatusWithChecks(UpdateEngineClient::UPDATE_STATUS_UPDATE_AVAILABLE);
+
+  SetStatusWithChecks(UpdateEngineClient::UPDATE_STATUS_REPORTING_ERROR_EVENT);
+
+  EXPECT_CALL(*mock_delegate_,
+              FinishExitUpdate(VersionUpdater::Result::UPDATE_ERROR))
+      .Times(1);
+  version_updater_->StartExitUpdate(VersionUpdater::Result::UPDATE_ERROR);
+}
+
+TEST_F(VersionUpdaterUnitTest, HandlesPortalOnline) {
+  SetUpFakeNetworkPortalDetector();
+
+  version_updater_->StartNetworkCheck();
+
+  NetworkPortalDetector::CaptivePortalState state;
+  state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE;
+
+  EXPECT_CALL(*mock_delegate_, PrepareForUpdateCheck()).Times(1);
+  fake_network_portal_detector_->SetDetectionResultsForTesting(kNetworkGuid,
+                                                               state);
+  fake_network_portal_detector_->NotifyObserversForTesting();
+}
+
+TEST_F(VersionUpdaterUnitTest, HandlesPortalError) {
+  SetUpFakeNetworkPortalDetector();
+
+  version_updater_->StartNetworkCheck();
+
+  NetworkPortalDetector::CaptivePortalState state;
+  state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL;
+
+  // Name of the network is empty because of implementation
+  // SetDefaultNetworkForTesting (and it's not easy to fix it).
+  EXPECT_CALL(
+      *mock_delegate_,
+      UpdateErrorMessage(state.status, NetworkError::ERROR_STATE_PORTAL, ""))
+      .Times(1);
+  EXPECT_CALL(*mock_delegate_, DelayErrorMessage()).Times(1);
+  fake_network_portal_detector_->SetDetectionResultsForTesting(kNetworkGuid,
+                                                               state);
+  fake_network_portal_detector_->NotifyObserversForTesting();
+}
+
+}  // namespace chromeos
diff --git a/chrome/browser/chromeos/note_taking_controller_client.cc b/chrome/browser/chromeos/note_taking_controller_client.cc
index 8acb90c..b5872945 100644
--- a/chrome/browser/chromeos/note_taking_controller_client.cc
+++ b/chrome/browser/chromeos/note_taking_controller_client.cc
@@ -14,13 +14,14 @@
 
 NoteTakingControllerClient::NoteTakingControllerClient(NoteTakingHelper* helper)
     : helper_(helper) {
-  registrar_.Add(this, chrome::NOTIFICATION_SESSION_STARTED,
-                 content::NotificationService::AllSources());
   registrar_.Add(this, chrome::NOTIFICATION_PROFILE_DESTROYED,
                  content::NotificationService::AllSources());
+  user_manager::UserManager::Get()->AddSessionStateObserver(this);
 }
 
-NoteTakingControllerClient::~NoteTakingControllerClient() = default;
+NoteTakingControllerClient::~NoteTakingControllerClient() {
+  user_manager::UserManager::Get()->RemoveSessionStateObserver(this);
+}
 
 bool NoteTakingControllerClient::CanCreateNote() {
   return profile_ && helper_->IsAppAvailable(profile_);
@@ -31,37 +32,29 @@
 }
 
 void NoteTakingControllerClient::ActiveUserChanged(
-    const user_manager::User* active_user) {
-  SetProfile(ProfileHelper::Get()->GetProfileByUser(active_user));
+    user_manager::User* active_user) {
+  if (!active_user)
+    return;
+
+  active_user->AddProfileCreatedObserver(
+      base::BindOnce(&NoteTakingControllerClient::SetProfileByUser,
+                     weak_ptr_factory_.GetWeakPtr(), active_user));
 }
 
 void NoteTakingControllerClient::Observe(
     int type,
     const content::NotificationSource& source,
     const content::NotificationDetails& details) {
-  switch (type) {
-    case chrome::NOTIFICATION_SESSION_STARTED:
-      // Update |profile_| when entering a session.
-      SetProfile(ProfileManager::GetActiveUserProfile());
-
-      // Add a session state observer to be able to monitor session changes.
-      if (!session_state_observer_.get()) {
-        session_state_observer_.reset(
-            new user_manager::ScopedUserSessionStateObserver(this));
-      }
-      break;
-    case chrome::NOTIFICATION_PROFILE_DESTROYED: {
-      // Update |profile_| when exiting a session or shutting down.
-      Profile* profile = content::Source<Profile>(source).ptr();
-      if (profile_ == profile)
-        SetProfile(nullptr);
-      break;
-    }
-  }
+  DCHECK_EQ(type, chrome::NOTIFICATION_PROFILE_DESTROYED);
+  // Update |profile_| when exiting a session or shutting down.
+  Profile* profile = content::Source<Profile>(source).ptr();
+  if (profile_ == profile)
+    profile_ = nullptr;
 }
 
-void NoteTakingControllerClient::SetProfile(Profile* profile) {
-  profile_ = profile;
+void NoteTakingControllerClient::SetProfileByUser(
+    const user_manager::User* user) {
+  profile_ = ProfileHelper::Get()->GetProfileByUser(user);
 }
 
 }  // namespace chromeos
diff --git a/chrome/browser/chromeos/note_taking_controller_client.h b/chrome/browser/chromeos/note_taking_controller_client.h
index 937c6ef..a80e87b 100644
--- a/chrome/browser/chromeos/note_taking_controller_client.h
+++ b/chrome/browser/chromeos/note_taking_controller_client.h
@@ -7,6 +7,7 @@
 
 #include "ash/public/cpp/note_taking_client.h"
 #include "base/macros.h"
+#include "base/memory/weak_ptr.h"
 #include "chrome/browser/chromeos/note_taking_helper.h"
 #include "components/user_manager/user_manager.h"
 #include "content/public/browser/notification_observer.h"
@@ -29,17 +30,17 @@
   void CreateNote() override;
 
   // user_manager::UserManager::UserSessionStateObserver:
-  void ActiveUserChanged(const user_manager::User* active_user) override;
+  void ActiveUserChanged(user_manager::User* active_user) override;
 
   // content::NotificationObserver:
   void Observe(int type,
                const content::NotificationSource& source,
                const content::NotificationDetails& details) override;
 
-  void SetProfileForTesting(Profile* profile) { SetProfile(profile); }
+  void SetProfileForTesting(Profile* profile) { profile_ = profile; }
 
  private:
-  void SetProfile(Profile* profile);
+  void SetProfileByUser(const user_manager::User* user);
 
   // Unowned pointer to the note taking helper.
   NoteTakingHelper* helper_;
@@ -48,8 +49,7 @@
   Profile* profile_ = nullptr;
 
   content::NotificationRegistrar registrar_;
-  std::unique_ptr<user_manager::ScopedUserSessionStateObserver>
-      session_state_observer_;
+  base::WeakPtrFactory<NoteTakingControllerClient> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(NoteTakingControllerClient);
 };
diff --git a/chrome/browser/chromeos/preferences.cc b/chrome/browser/chromeos/preferences.cc
index b76fa31..49849e6 100644
--- a/chrome/browser/chromeos/preferences.cc
+++ b/chrome/browser/chromeos/preferences.cc
@@ -1128,7 +1128,7 @@
       rate.repeat_interval_in_ms);
 }
 
-void Preferences::ActiveUserChanged(const user_manager::User* active_user) {
+void Preferences::ActiveUserChanged(user_manager::User* active_user) {
   if (active_user != user_)
     return;
   ApplyPreferences(REASON_ACTIVE_USER_CHANGED, "");
diff --git a/chrome/browser/chromeos/preferences.h b/chrome/browser/chromeos/preferences.h
index f9056e1..54c3acf 100644
--- a/chrome/browser/chromeos/preferences.h
+++ b/chrome/browser/chromeos/preferences.h
@@ -105,7 +105,7 @@
   void OnIsSyncingChanged() override;
 
   // Overriden form user_manager::UserManager::UserSessionStateObserver.
-  void ActiveUserChanged(const user_manager::User* active_user) override;
+  void ActiveUserChanged(user_manager::User* active_user) override;
 
   sync_preferences::PrefServiceSyncable* prefs_;
 
diff --git a/chrome/browser/chromeos/system/system_clock.cc b/chrome/browser/chromeos/system/system_clock.cc
index 638115a4..c9cd100 100644
--- a/chrome/browser/chromeos/system/system_clock.cc
+++ b/chrome/browser/chromeos/system/system_clock.cc
@@ -46,39 +46,23 @@
 
 }  // anonymous namespace
 
-SystemClock::SystemClock()
-    : user_pod_was_focused_(false),
-      last_focused_pod_hour_clock_type_(base::k12HourClock),
-      user_profile_(NULL),
-      device_settings_observer_(CrosSettings::Get()->AddSettingsObserver(
-          kSystemUse24HourClock,
-          base::Bind(&SystemClock::OnSystemPrefChanged,
-                     base::Unretained(this)))) {
+SystemClock::SystemClock() {
+  device_settings_observer_ = CrosSettings::Get()->AddSettingsObserver(
+      kSystemUse24HourClock, base::Bind(&SystemClock::OnSystemPrefChanged,
+                                        weak_ptr_factory_.GetWeakPtr()));
+
   if (LoginState::IsInitialized())
     LoginState::Get()->AddObserver(this);
-  // Register notifications on construction so that events such as
-  // PROFILE_CREATED do not get missed if they happen before Initialize().
-  registrar_.reset(new content::NotificationRegistrar);
-  if (!LoginState::IsInitialized() ||
-      LoginState::Get()->GetLoggedInUserType() ==
-          LoginState::LOGGED_IN_USER_NONE) {
-    registrar_->Add(this, chrome::NOTIFICATION_SESSION_STARTED,
-                    content::NotificationService::AllSources());
-  }
-  registrar_->Add(this, chrome::NOTIFICATION_PROFILE_CREATED,
-                  content::NotificationService::AllSources());
-  registrar_->Add(this, chrome::NOTIFICATION_PROFILE_DESTROYED,
-                  content::NotificationService::AllSources());
-  registrar_->Add(this, chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED,
-                  content::NotificationService::AllSources());
+
+  registrar_.Add(this, chrome::NOTIFICATION_PROFILE_DESTROYED,
+                 content::NotificationService::AllSources());
   user_manager::UserManager::Get()->AddSessionStateObserver(this);
 }
 
 SystemClock::~SystemClock() {
-  registrar_.reset();
-  device_settings_observer_.reset();
   if (LoginState::IsInitialized())
     LoginState::Get()->RemoveObserver(this);
+
   if (user_manager::UserManager::IsInitialized())
     user_manager::UserManager::Get()->RemoveSessionStateObserver(this);
 }
@@ -96,36 +80,20 @@
 void SystemClock::Observe(int type,
                           const content::NotificationSource& source,
                           const content::NotificationDetails& details) {
-  switch (type) {
-    case chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED: {
-      UpdateClockType();
-      break;
-    }
-    case chrome::NOTIFICATION_PROFILE_CREATED: {
-      OnActiveProfileChanged(content::Source<Profile>(source).ptr());
-      registrar_->Remove(this, chrome::NOTIFICATION_PROFILE_CREATED,
-                         content::NotificationService::AllSources());
-      break;
-    }
-    case chrome::NOTIFICATION_PROFILE_DESTROYED: {
-      if (OnProfileDestroyed(content::Source<Profile>(source).ptr())) {
-        registrar_->Remove(this, chrome::NOTIFICATION_PROFILE_DESTROYED,
-                           content::NotificationService::AllSources());
-      }
-      break;
-    }
-    case chrome::NOTIFICATION_SESSION_STARTED: {
-      OnActiveProfileChanged(ProfileManager::GetActiveUserProfile());
-      break;
-    }
-    default:
-      NOTREACHED();
+  DCHECK_EQ(type, chrome::NOTIFICATION_PROFILE_DESTROYED);
+  if (OnProfileDestroyed(content::Source<Profile>(source).ptr())) {
+    registrar_.Remove(this, chrome::NOTIFICATION_PROFILE_DESTROYED,
+                      content::NotificationService::AllSources());
   }
 }
 
-void SystemClock::ActiveUserChanged(const user_manager::User* active_user) {
-  if (active_user && active_user->is_profile_created())
-    UpdateClockType();
+void SystemClock::ActiveUserChanged(user_manager::User* active_user) {
+  if (!active_user)
+    return;
+
+  active_user->AddProfileCreatedObserver(
+      base::BindOnce(&SystemClock::SetProfileByUser,
+                     weak_ptr_factory_.GetWeakPtr(), active_user));
 }
 
 void SystemClock::AddObserver(SystemClockObserver* observer) {
@@ -136,7 +104,11 @@
   observer_list_.RemoveObserver(observer);
 }
 
-void SystemClock::OnActiveProfileChanged(Profile* profile) {
+void SystemClock::SetProfileByUser(const user_manager::User* user) {
+  SetProfile(ProfileHelper::Get()->GetProfileByUser(user));
+}
+
+void SystemClock::SetProfile(Profile* profile) {
   user_profile_ = profile;
   PrefService* prefs = profile->GetPrefs();
   user_pref_registrar_.reset(new PrefChangeRegistrar);
diff --git a/chrome/browser/chromeos/system/system_clock.h b/chrome/browser/chromeos/system/system_clock.h
index 6bf3b8fc..635941a2 100644
--- a/chrome/browser/chromeos/system/system_clock.h
+++ b/chrome/browser/chromeos/system/system_clock.h
@@ -10,6 +10,7 @@
 #include "base/callback_list.h"
 #include "base/i18n/time_formatting.h"
 #include "base/macros.h"
+#include "base/memory/weak_ptr.h"
 #include "chromeos/login/login_state/login_state.h"
 #include "components/user_manager/user_manager.h"
 #include "content/public/browser/notification_observer.h"
@@ -51,14 +52,15 @@
                const content::NotificationDetails& details) override;
 
   // user_manager::UserManager::UserSessionStateObserver overrides
-  void ActiveUserChanged(const user_manager::User* active_user) override;
+  void ActiveUserChanged(user_manager::User* active_user) override;
 
  private:
   // Should be the same as CrosSettings::ObserverSubscription.
   typedef base::CallbackList<void(void)>::Subscription
       CrosSettingsObserverSubscription;
 
-  void OnActiveProfileChanged(Profile* profile);
+  void SetProfileByUser(const user_manager::User* user);
+  void SetProfile(Profile* profile);
   bool OnProfileDestroyed(Profile* profile);
 
   // LoginState::Observer overrides.
@@ -68,17 +70,19 @@
 
   void UpdateClockType();
 
-  bool user_pod_was_focused_;
-  base::HourClockType last_focused_pod_hour_clock_type_;
+  bool user_pod_was_focused_ = false;
+  base::HourClockType last_focused_pod_hour_clock_type_ = base::k12HourClock;
 
-  Profile* user_profile_;
-  std::unique_ptr<content::NotificationRegistrar> registrar_;
+  Profile* user_profile_ = nullptr;
+  content::NotificationRegistrar registrar_;
   std::unique_ptr<PrefChangeRegistrar> user_pref_registrar_;
 
   base::ObserverList<SystemClockObserver>::Unchecked observer_list_;
 
   std::unique_ptr<CrosSettingsObserverSubscription> device_settings_observer_;
 
+  base::WeakPtrFactory<SystemClock> weak_ptr_factory_{this};
+
   DISALLOW_COPY_AND_ASSIGN(SystemClock);
 };
 
diff --git a/chrome/browser/chromeos/usb/cros_usb_detector_unittest.cc b/chrome/browser/chromeos/usb/cros_usb_detector_unittest.cc
index c14309c2..541552c 100644
--- a/chrome/browser/chromeos/usb/cros_usb_detector_unittest.cc
+++ b/chrome/browser/chromeos/usb/cros_usb_detector_unittest.cc
@@ -135,9 +135,7 @@
     BrowserWithTestWindowTest::SetUp();
     crostini_test_helper_.reset(new crostini::CrostiniTestHelper(profile()));
     scoped_feature_list_.InitWithFeatures(
-        {chromeos::features::kCrostiniUsbSupport,
-         chromeos::features::kCrostiniUsbAllowUnsupported},
-        {});
+        {chromeos::features::kCrostiniUsbAllowUnsupported}, {});
 
     TestingBrowserProcess::GetGlobal()->SetSystemNotificationHelper(
         std::make_unique<SystemNotificationHelper>());
diff --git a/chrome/browser/devtools/devtools_sanity_browsertest.cc b/chrome/browser/devtools/devtools_sanity_browsertest.cc
index 0e69993..9024246 100644
--- a/chrome/browser/devtools/devtools_sanity_browsertest.cc
+++ b/chrome/browser/devtools/devtools_sanity_browsertest.cc
@@ -758,7 +758,7 @@
 
 // Tests that BeforeUnload event gets called on devtools that are opened
 // on another devtools.
-#if defined(OS_CHROMEOS)
+#if defined(OS_CHROMEOS) || defined(OS_LINUX)
 // TODO(https://crbug.com/1000654): Re-enable this test.
 #define MAYBE_TestDevToolsOnDevTools DISABLED_TestDevToolsOnDevTools
 #else
diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrome/browser/download/chrome_download_manager_delegate.cc
index 217ad1f..f0278c6 100644
--- a/chrome/browser/download/chrome_download_manager_delegate.cc
+++ b/chrome/browser/download/chrome_download_manager_delegate.cc
@@ -1368,6 +1368,9 @@
     }
   }
 
+  if (danger_type == download::DOWNLOAD_DANGER_TYPE_BLOCKED_PASSWORD_PROTECTED)
+    return true;
+
   switch (download_restriction) {
     case (DownloadPrefs::DownloadRestriction::NONE):
       return false;
@@ -1394,6 +1397,7 @@
       LOG(ERROR) << "Invalid download restruction value: "
                  << static_cast<int>(download_restriction);
   }
+
   return false;
 }
 
diff --git a/chrome/browser/download/download_manager_utils.cc b/chrome/browser/download/download_manager_utils.cc
index 32240c9..986b086b 100644
--- a/chrome/browser/download/download_manager_utils.cc
+++ b/chrome/browser/download/download_manager_utils.cc
@@ -12,7 +12,6 @@
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/transition_manager/full_browser_transition_manager.h"
 #include "components/download/public/common/download_features.h"
-#include "components/download/public/common/download_url_loader_factory_getter_impl.h"
 #include "components/download/public/common/in_progress_download_manager.h"
 #include "components/download/public/common/simple_download_manager_coordinator.h"
 #include "content/public/browser/browser_context.h"
@@ -99,9 +98,7 @@
                                           key->IsOffTheRecord());
     scoped_refptr<network::SharedURLLoaderFactory> factory =
         SystemNetworkContextManager::GetInstance()->GetSharedURLLoaderFactory();
-    in_progress_manager->set_url_loader_factory_getter(
-        base::MakeRefCounted<download::DownloadURLLoaderFactoryGetterImpl>(
-            factory->Clone()));
+    in_progress_manager->set_url_loader_factory(std::move(factory));
     map[key] = std::move(in_progress_manager);
   }
   return map[key].get();
diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc
index bb1d3a9..40e2998 100644
--- a/chrome/browser/extensions/api/settings_private/prefs_util.cc
+++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc
@@ -451,13 +451,13 @@
       settings_api::PrefType::PREF_TYPE_NUMBER;
   (*s_whitelist)[chromeos::assistant::prefs::kAssistantDisabledByPolicy] =
       settings_api::PrefType::PREF_TYPE_BOOLEAN;
-  (*s_whitelist)[arc::prefs::kVoiceInteractionEnabled] =
+  (*s_whitelist)[chromeos::assistant::prefs::kAssistantEnabled] =
       settings_api::PrefType::PREF_TYPE_BOOLEAN;
   (*s_whitelist)[chromeos::assistant::prefs::kAssistantContextEnabled] =
       settings_api::PrefType::PREF_TYPE_BOOLEAN;
   (*s_whitelist)[chromeos::assistant::prefs::kAssistantHotwordAlwaysOn] =
       settings_api::PrefType::PREF_TYPE_BOOLEAN;
-  (*s_whitelist)[arc::prefs::kVoiceInteractionHotwordEnabled] =
+  (*s_whitelist)[chromeos::assistant::prefs::kAssistantHotwordEnabled] =
       settings_api::PrefType::PREF_TYPE_BOOLEAN;
   (*s_whitelist)[chromeos::assistant::prefs::kAssistantLaunchWithMicOpen] =
       settings_api::PrefType::PREF_TYPE_BOOLEAN;
diff --git a/chrome/browser/first_run/first_run_browsertest.cc b/chrome/browser/first_run/first_run_browsertest.cc
index 682ff8e1..0c667fba 100644
--- a/chrome/browser/first_run/first_run_browsertest.cc
+++ b/chrome/browser/first_run/first_run_browsertest.cc
@@ -9,20 +9,25 @@
 #include "base/files/file_path.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
+#include "base/numerics/safe_conversions.h"
+#include "base/path_service.h"
 #include "base/run_loop.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/metrics/histogram_tester.h"
+#include "base/threading/thread_restrictions.h"
 #include "build/build_config.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/extensions/component_loader.h"
 #include "chrome/browser/first_run/first_run.h"
 #include "chrome/browser/first_run/first_run_internal.h"
 #include "chrome/browser/importer/importer_list.h"
+#include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
 #include "chrome/browser/prefs/chrome_pref_service_factory.h"
 #include "chrome/browser/profiles/profile_manager.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
+#include "chrome/common/chrome_paths.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/common/url_constants.h"
@@ -278,13 +283,13 @@
             kSettingsEnforcementGroupEnforceAlwaysWithExtensionsAndDSE));
 
 #define COMPRESSED_SEED_TEST_VALUE                                             \
-  "H4sICMNRYFcAA3NlZWRfYmluAOPSMEwxsjQxM0lLMk4xt0hLMzQ1NUs1TTI1NUw2MzExT05KNj" \
-  "dJNU1LMRDay8glH+rrqBual5mWX5SbWVKpG1KUmZija2igG5BalJyaVyLRMGfSUlYLRif2lNS0" \
-  "xNKcEi9uLhhTgNGLh4sjvSi/"                                                   \
-  "tCDewBCFZ4TCM0bhmaDwTFF4Zig8cxSeBQrPUoARAEVeJPrqAAAA"
+  "H4sIAAAAAAAA/+LSME4xsTAySjYzSDQ1S01KSk1KMUg1SjI1Tk4yMjI2NDMzTzEySjRPMxA6xs" \
+  "glH+rrqBual5mWX5SbWVKpG1KUmZija2igG5BalJyaV2LB6MXDxZFelF9aEG9gKIDMM0LhGaPw" \
+  "TFB4pig8MxSeOQrPAoVnKcDoxc3FnpKalliaUyLAGCSiwaDBqMGkwazBosGqwZbR8LppA38CIy" \
+  "AAAP//KpzsDPMAAAA="
 #define SEED_SIGNATURE_TEST_VALUE                                              \
-  "MEQCIDD1IVxjzWYncun+9IGzqYjZvqxxujQEayJULTlbTGA/AiAr0oVmEgVUQZBYq5VLOSvy96" \
-  "JkMYgzTkHPwbv7K/CmgA=="
+  "MEUCIQCo4D8Ad0pMlFoLT4mMrv7/ZK7PqyEmJlW5jciua6mluAIgQQKcj352r/sjq8b98W+jRk" \
+  "dwyDZn3ocgV01juWKx3u0="
 
 constexpr char kCompressedSeedTestValue[] = COMPRESSED_SEED_TEST_VALUE;
 constexpr char kSignatureValue[] = SEED_SIGNATURE_TEST_VALUE;
@@ -297,26 +302,69 @@
     "\"\n"
     "}\n";
 
+#undef COMPRESSED_SEED_TEST_VALUE
+#undef SEED_SIGNATURE_TEST_VALUE
+
+// Note: This test is parametrized on metrics consent state, since that affects
+// field trial randomization.
 class FirstRunMasterPrefsVariationsSeedTest
-    : public FirstRunMasterPrefsBrowserTestT<kWithVariationsPrefs> {
+    : public FirstRunMasterPrefsBrowserTestT<kWithVariationsPrefs>,
+      public testing::WithParamInterface<bool> {
  public:
-  FirstRunMasterPrefsVariationsSeedTest() {
+  FirstRunMasterPrefsVariationsSeedTest() : metrics_consent_(GetParam()) {
     base::CommandLine::ForCurrentProcess()->AppendSwitch(
         variations::switches::kDisableFieldTrialTestingConfig);
   }
   ~FirstRunMasterPrefsVariationsSeedTest() override = default;
 
+  void SetUp() override {
+    // Make metrics reporting work same as in Chrome branded builds, for test
+    // consistency between Chromium and Chrome builds.
+    ChromeMetricsServiceAccessor::SetForceIsMetricsReportingEnabledPrefLookup(
+        true);
+    // Based on GetParam(), either enable or disable metrics reporting.
+    ChromeMetricsServiceAccessor::SetMetricsAndCrashReportingForTesting(
+        &metrics_consent_);
+    FirstRunMasterPrefsBrowserTestT::SetUp();
+  }
+
+  // Writes the trial group to the temporary file.
+  void WriteTrialGroupToTestFile(const std::string& trial_group) {
+    base::ScopedAllowBlockingForTesting allow_blocking;
+    int bytes_to_write = base::checked_cast<int>(trial_group.length());
+    int bytes_written =
+        base::WriteFile(GetTestFilePath(), trial_group.c_str(), bytes_to_write);
+    EXPECT_EQ(bytes_to_write, bytes_written);
+  }
+
+  // Reads the trial group from the temporary file.
+  std::string ReadTrialGroupFromTestFile() {
+    base::ScopedAllowBlockingForTesting allow_blocking;
+    char data[256];
+    int bytes_read = base::ReadFile(GetTestFilePath(), data, sizeof(data));
+    EXPECT_NE(-1, bytes_read);
+    return std::string(data, bytes_read);
+  }
+
  protected:
   base::HistogramTester histogram_tester_;
 
  private:
+  const bool metrics_consent_;
+
+  // Returns a file path for persisting a field trial's state. The path is
+  // under the user data dir, so should only persist between pairs of PRE_Foo
+  // and Foo tests.
+  base::FilePath GetTestFilePath() {
+    base::FilePath user_data_dir;
+    EXPECT_TRUE(base::PathService::Get(chrome::DIR_USER_DATA, &user_data_dir));
+    return user_data_dir.AppendASCII("FirstRunMasterPrefsVariationsSeedTest");
+  }
+
   DISALLOW_COPY_AND_ASSIGN(FirstRunMasterPrefsVariationsSeedTest);
 };
 
-#undef COMPRESSED_SEED_TEST_VALUE
-#undef SEED_SIGNATURE_TEST_VALUE
-
-IN_PROC_BROWSER_TEST_F(FirstRunMasterPrefsVariationsSeedTest, Test) {
+IN_PROC_BROWSER_TEST_P(FirstRunMasterPrefsVariationsSeedTest, Test) {
   // Tests variation migration from master_preferences to local_state.
   EXPECT_EQ(kCompressedSeedTestValue,
             g_browser_process->local_state()->GetString(
@@ -332,6 +380,47 @@
       variations::VerifySignatureResult::VALID_SIGNATURE, 1);
 }
 
+// The following tests are only enabled on Windows, since it is the only
+// platform where master prefs is used to deliver first run variations. The
+// tests do not pass on other platforms due to the provisional client id logic
+// in metrics_state_manager.cc. See the comment there for details.
+
+#if defined(OS_WIN)
+
+// The trial and groups encoded in the above seed.
+constexpr char kTrialName[] = "UMA-Uniformity-Trial-10-Percent";
+const char* kTrialGroups[] = {"default",  "group_01", "group_02", "group_03",
+                              "group_04", "group_05", "group_06", "group_07",
+                              "group_08", "group_09"};
+
+IN_PROC_BROWSER_TEST_P(FirstRunMasterPrefsVariationsSeedTest, PRE_SecondRun) {
+  // Check that the trial from the seed exists and is in one of the expected
+  // states. Persist the state so that we can verify its randomization persists
+  // in FirstRunMasterPrefsVariationsSeedTest.SecondRun.
+  const std::string group_name = base::FieldTrialList::FindFullName(kTrialName);
+  ASSERT_TRUE(base::Contains(kTrialGroups, group_name)) << group_name;
+  // Ensure trial is active (not disabled).
+  ASSERT_TRUE(base::FieldTrialList::IsTrialActive(kTrialName));
+  WriteTrialGroupToTestFile(group_name);
+}
+
+IN_PROC_BROWSER_TEST_P(FirstRunMasterPrefsVariationsSeedTest, SecondRun) {
+  // This test runs after PRE_SecondRun and verifies that the trial state on
+  // the second run matches what was seen in the PRE_ test.
+  const std::string group_name = base::FieldTrialList::FindFullName(kTrialName);
+  ASSERT_TRUE(base::Contains(kTrialGroups, group_name)) << group_name;
+  // Ensure trial is active (not disabled).
+  ASSERT_TRUE(base::FieldTrialList::IsTrialActive(kTrialName));
+  // Read the trial group name that was saved by PRE_ForceTrials from the
+  // corresponding test file.
+  EXPECT_EQ(group_name, ReadTrialGroupFromTestFile());
+}
+#endif  // defined(OS_WIN)
+
+INSTANTIATE_TEST_SUITE_P(FirstRunMasterPrefsVariationsSeedTests,
+                         FirstRunMasterPrefsVariationsSeedTest,
+                         testing::Bool());
+
 #endif  // !defined(OS_CHROMEOS)
 
 }  // namespace first_run
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index f32935c4..4cb07cd9 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -3270,6 +3270,11 @@
     "expiry_milestone": -1
   },
   {
+    "name": "use-fake-device-for-media-stream",
+    "owners": [ "mcasas", "chromeos-gfx@google.com" ],
+    "expiry_milestone": 81
+  },
+  {
     "name": "use_messages_google_com_domain",
     "owners": [ "azeemarshad", "khorimoto" ],
     "expiry_milestone": 76
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index d2139893..2f9cad66 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -3189,12 +3189,7 @@
 const char kCrostiniUsbAllowUnsupportedName[] =
     "Crostini Usb Allow Unsupported";
 const char kCrostiniUsbAllowUnsupportedDescription[] =
-    "Allow mounting unsupported Usb devices in Crostini. At your own risk. "
-    "To enable, Crostini Usb Support must also be enabled.";
-
-const char kCrostiniUsbSupportName[] = "Crostini Usb Support";
-const char kCrostiniUsbSupportDescription[] =
-    "Enable mounting Usb devices in Crostini.";
+    "Allow mounting unsupported Usb devices in Crostini. At your own risk. ";
 
 const char kCrostiniWebUIInstallerName[] = "Crostini WebUI Installer";
 const char kCrostiniWebUIInstallerDescription[] =
@@ -3550,6 +3545,12 @@
     "If enabled, the user can calibrate the touch screen displays in "
     "chrome://settings/display.";
 
+const char kUseFakeDeviceForMediaStreamName[] = "Use fake video capture device";
+const char kUseFakeDeviceForMediaStreamDescription[] =
+    "Forces Chrome to use a fake video capture device (a rolling pacman with a "
+    "timestamp) instead of the system audio/video devices, for debugging "
+    "purposes.";
+
 const char kUiDevToolsName[] = "Enable native UI inspection";
 const char kUiDevToolsDescription[] =
     "Enables inspection of native UI elements. For local inspection use "
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 4014944..d085669 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -1904,9 +1904,6 @@
 extern const char kCrostiniUsbAllowUnsupportedName[];
 extern const char kCrostiniUsbAllowUnsupportedDescription[];
 
-extern const char kCrostiniUsbSupportName[];
-extern const char kCrostiniUsbSupportDescription[];
-
 extern const char kCrostiniWebUIInstallerName[];
 extern const char kCrostiniWebUIInstallerDescription[];
 
@@ -2138,6 +2135,9 @@
 extern const char kUsbguardName[];
 extern const char kUsbguardDescription[];
 
+extern const char kUseFakeDeviceForMediaStreamName[];
+extern const char kUseFakeDeviceForMediaStreamDescription[];
+
 extern const char kUseMonitorColorSpaceName[];
 extern const char kUseMonitorColorSpaceDescription[];
 
diff --git a/chrome/browser/lookalikes/safety_tips/reputation_web_contents_observer.cc b/chrome/browser/lookalikes/safety_tips/reputation_web_contents_observer.cc
index 95d4621..6edc668 100644
--- a/chrome/browser/lookalikes/safety_tips/reputation_web_contents_observer.cc
+++ b/chrome/browser/lookalikes/safety_tips/reputation_web_contents_observer.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/lookalikes/safety_tips/reputation_web_contents_observer.h"
 
+#include "base/metrics/histogram_macros.h"
 #include "build/build_config.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/common/chrome_features.h"
@@ -76,6 +77,9 @@
     security_state::SafetyTipStatus safety_tip_status,
     bool user_ignored,
     const GURL& url) {
+  UMA_HISTOGRAM_ENUMERATION("Security.SafetyTips.SafetyTipShown",
+                            safety_tip_status);
+
   if (safety_tip_status == security_state::SafetyTipStatus::kNone) {
     MaybeCallReputationCheckCallback();
     return;
@@ -84,9 +88,12 @@
   // TODO(crbug/987754): Record metrics here.
 
   if (user_ignored) {
+    UMA_HISTOGRAM_ENUMERATION("Security.SafetyTips.SafetyTipIgnoredPageLoad",
+                              safety_tip_status);
     MaybeCallReputationCheckCallback();
     return;
   }
+
   // Set this field independent of whether the feature to show the UI is
   // enabled/disabled. Metrics code uses this field and we want to record
   // metrics regardless of the feature being enabled/disabled.
diff --git a/chrome/browser/media/webrtc/webrtc_apprtc_browsertest.cc b/chrome/browser/media/webrtc/webrtc_apprtc_browsertest.cc
index b0fa8a8..e46f618 100644
--- a/chrome/browser/media/webrtc/webrtc_apprtc_browsertest.cc
+++ b/chrome/browser/media/webrtc/webrtc_apprtc_browsertest.cc
@@ -69,10 +69,9 @@
 
  protected:
   bool LaunchApprtcInstanceOnLocalhost(const std::string& port) {
-    base::FilePath appengine_dev_appserver =
-        GetSourceDir().Append(FILE_PATH_LITERAL(
-            "third_party/webrtc/rtc_tools/testing/webrtc_apprtc_browsertest/"
-            "apprtc/temp/google-cloud-sdk/bin/dev_appserver.py"));
+    base::FilePath appengine_dev_appserver = GetSourceDir().Append(
+        FILE_PATH_LITERAL("third_party/webrtc/rtc_tools/testing/browsertest/"
+                          "apprtc/temp/google-cloud-sdk/bin/dev_appserver.py"));
     if (!base::PathExists(appengine_dev_appserver)) {
       LOG(ERROR) << "Missing appengine sdk at " <<
           appengine_dev_appserver.value() << ".\n" <<
@@ -82,7 +81,7 @@
 
     base::FilePath apprtc_dir = GetSourceDir().Append(
         FILE_PATH_LITERAL("third_party/webrtc/rtc_tools/testing/"
-                          "webrtc_apprtc_browsertest/apprtc/out/app_engine"));
+                          "browsertest/apprtc/out/app_engine"));
     if (!base::PathExists(apprtc_dir)) {
       LOG(ERROR) << "Missing AppRTC AppEngine app at " <<
           apprtc_dir.value() << ".\n" << test::kAdviseOnGclientSolution;
@@ -115,13 +114,13 @@
     // The go workspace should be created, and collidermain built, at the
     // runhooks stage when webrtc.DEPS/build_apprtc_collider.py runs.
 #if defined(OS_WIN)
-    base::FilePath collider_server = GetSourceDir().Append(FILE_PATH_LITERAL(
-        "third_party/webrtc/rtc_tools/testing/"
-        "webrtc_apprtc_browsertest/collider/collidermain.exe"));
+    base::FilePath collider_server = GetSourceDir().Append(
+        FILE_PATH_LITERAL("third_party/webrtc/rtc_tools/testing/"
+                          "browsertest/collider/collidermain.exe"));
 #else
     base::FilePath collider_server = GetSourceDir().Append(
         FILE_PATH_LITERAL("third_party/webrtc/rtc_tools/testing/"
-                          "webrtc_apprtc_browsertest/collider/collidermain"));
+                          "browsertest/collider/collidermain"));
 #endif
     if (!base::PathExists(collider_server)) {
       LOG(ERROR) << "Missing Collider server binary at " <<
diff --git a/chrome/browser/metrics/assistant_service_metrics_provider.cc b/chrome/browser/metrics/assistant_service_metrics_provider.cc
index 758c241..d4f65ea 100644
--- a/chrome/browser/metrics/assistant_service_metrics_provider.cc
+++ b/chrome/browser/metrics/assistant_service_metrics_provider.cc
@@ -7,7 +7,7 @@
 #include "base/metrics/histogram_macros.h"
 #include "chrome/browser/chromeos/assistant/assistant_util.h"
 #include "chrome/browser/profiles/profile_manager.h"
-#include "components/arc/arc_prefs.h"
+#include "chromeos/services/assistant/public/cpp/assistant_prefs.h"
 #include "components/prefs/pref_service.h"
 
 AssistantServiceMetricsProvider::AssistantServiceMetricsProvider() = default;
@@ -24,5 +24,5 @@
   UMA_HISTOGRAM_BOOLEAN(
       "Assistant.ServiceEnabledUserCount",
       ProfileManager::GetActiveUserProfile()->GetPrefs()->GetBoolean(
-          arc::prefs::kVoiceInteractionEnabled));
+          chromeos::assistant::prefs::kAssistantEnabled));
 }
diff --git a/chrome/browser/metrics/chrome_metrics_service_accessor.h b/chrome/browser/metrics/chrome_metrics_service_accessor.h
index a65aa2ae..6ed483c2 100644
--- a/chrome/browser/metrics/chrome_metrics_service_accessor.h
+++ b/chrome/browser/metrics/chrome_metrics_service_accessor.h
@@ -40,6 +40,10 @@
 class FileManagerPrivateIsUMAEnabledFunction;
 }
 
+namespace first_run {
+class FirstRunMasterPrefsVariationsSeedTest;
+}
+
 namespace metrics {
 class UkmConsentParamBrowserTest;
 }
@@ -112,6 +116,7 @@
   friend class NavigationMetricsRecorder;
 
   // Testing related friends.
+  friend class first_run::FirstRunMasterPrefsVariationsSeedTest;
   friend class ForceFieldTrialsBrowserTest;
   friend class MetricsReportingStateTest;
   friend class metrics::UkmConsentParamBrowserTest;
diff --git a/chrome/browser/metrics/ukm_browsertest.cc b/chrome/browser/metrics/ukm_browsertest.cc
index a24ed29..7ebec22e 100644
--- a/chrome/browser/metrics/ukm_browsertest.cc
+++ b/chrome/browser/metrics/ukm_browsertest.cc
@@ -540,8 +540,13 @@
 // Keep in sync with UkmTest.testMetricConsent in
 // chrome/android/javatests/src/org/chromium/chrome/browser/sync/
 // UkmTest.java.
-
-IN_PROC_BROWSER_TEST_P(UkmBrowserTest, MetricsConsentCheck) {
+#if defined(OS_CHROMEOS)
+// TODO(https://crbug.com/996823): Re-enable this test.
+#define MAYBE_MetricsConsentCheck DISABLED_MetricsConsentCheck
+#else
+#define MAYBE_MetricsConsentCheck MetricsConsentCheck
+#endif
+IN_PROC_BROWSER_TEST_P(UkmBrowserTest, MAYBE_MetricsConsentCheck) {
   MetricsConsentOverride metrics_consent(true);
 
   Profile* profile = ProfileManager::GetActiveUserProfile();
diff --git a/chrome/browser/native_file_system/chrome_native_file_system_permission_context.cc b/chrome/browser/native_file_system/chrome_native_file_system_permission_context.cc
index 5b3bbad..ba0d2a8e 100644
--- a/chrome/browser/native_file_system/chrome_native_file_system_permission_context.cc
+++ b/chrome/browser/native_file_system/chrome_native_file_system_permission_context.cc
@@ -13,16 +13,20 @@
 #include "base/path_service.h"
 #include "base/task/post_task.h"
 #include "build/build_config.h"
+#include "chrome/browser/browser_process.h"
 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
 #include "chrome/browser/native_file_system/native_file_system_permission_context_factory.h"
 #include "chrome/browser/native_file_system/native_file_system_permission_request_manager.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/safe_browsing/download_protection/download_protection_service.h"
+#include "chrome/browser/sessions/session_tab_helper.h"
 #include "chrome/browser/ui/browser_dialogs.h"
 #include "chrome/common/chrome_paths.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/render_frame_host.h"
+#include "content/public/browser/render_process_host.h"
 #include "content/public/browser/web_contents.h"
 
 namespace {
@@ -326,6 +330,74 @@
   PermissionStatus status_ = PermissionStatus::GRANTED;
 };
 
+void DoSafeBrowsingCheckOnUIThread(
+    int process_id,
+    int frame_id,
+    std::unique_ptr<content::NativeFileSystemWriteItem> item,
+    safe_browsing::CheckDownloadCallback callback) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+
+  safe_browsing::SafeBrowsingService* sb_service =
+      g_browser_process->safe_browsing_service();
+
+  if (!sb_service || !sb_service->download_protection_service() ||
+      !sb_service->download_protection_service()->enabled()) {
+    std::move(callback).Run(safe_browsing::DownloadCheckResult::UNKNOWN);
+    return;
+  }
+
+  if (!item->browser_context) {
+    content::RenderProcessHost* rph =
+        content::RenderProcessHost::FromID(process_id);
+    if (!rph) {
+      std::move(callback).Run(safe_browsing::DownloadCheckResult::UNKNOWN);
+      return;
+    }
+    item->browser_context = rph->GetBrowserContext();
+  }
+
+  if (!item->web_contents) {
+    content::RenderFrameHost* rfh =
+        content::RenderFrameHost::FromID(process_id, frame_id);
+    if (rfh)
+      item->web_contents = content::WebContents::FromRenderFrameHost(rfh);
+  }
+
+  sb_service->download_protection_service()->CheckNativeFileSystemWrite(
+      std::move(item), std::move(callback));
+}
+
+ChromeNativeFileSystemPermissionContext::SafeBrowsingResult
+InterpretSafeBrowsingResult(safe_browsing::DownloadCheckResult result) {
+  using Result = safe_browsing::DownloadCheckResult;
+  switch (result) {
+    // Only allow downloads that are marked as SAFE or UNKNOWN by SafeBrowsing.
+    // All other types are going to be blocked. UNKNOWN could be the result of a
+    // failed safe browsing ping.
+    case Result::UNKNOWN:
+    case Result::SAFE:
+    case Result::WHITELISTED_BY_POLICY:
+      return ChromeNativeFileSystemPermissionContext::SafeBrowsingResult::
+          kAllow;
+
+    case Result::DANGEROUS:
+    case Result::UNCOMMON:
+    case Result::DANGEROUS_HOST:
+    case Result::POTENTIALLY_UNWANTED:
+    case Result::BLOCKED_PASSWORD_PROTECTED:
+      return ChromeNativeFileSystemPermissionContext::SafeBrowsingResult::
+          kBlock;
+
+    // This shouldn't be returned for Native File System write checks.
+    case Result::ASYNC_SCANNING:
+      NOTREACHED();
+      return ChromeNativeFileSystemPermissionContext::SafeBrowsingResult::
+          kAllow;
+  }
+  NOTREACHED();
+  return ChromeNativeFileSystemPermissionContext::SafeBrowsingResult::kBlock;
+}
+
 }  // namespace
 
 ChromeNativeFileSystemPermissionContext::Grants::Grants() = default;
@@ -599,6 +671,28 @@
                      std::move(callback)));
 }
 
+void ChromeNativeFileSystemPermissionContext::PerformSafeBrowsingChecks(
+    std::unique_ptr<content::NativeFileSystemWriteItem> item,
+    int process_id,
+    int frame_id,
+    base::OnceCallback<void(SafeBrowsingResult)> callback) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  base::PostTask(
+      FROM_HERE, {content::BrowserThread::UI},
+      base::BindOnce(
+          &DoSafeBrowsingCheckOnUIThread, process_id, frame_id, std::move(item),
+          base::BindOnce(
+              [](scoped_refptr<base::TaskRunner> task_runner,
+                 base::OnceCallback<void(SafeBrowsingResult result)> callback,
+                 safe_browsing::DownloadCheckResult result) {
+                task_runner->PostTask(
+                    FROM_HERE,
+                    base::BindOnce(std::move(callback),
+                                   InterpretSafeBrowsingResult(result)));
+              },
+              base::SequencedTaskRunnerHandle::Get(), std::move(callback))));
+}
+
 ChromeNativeFileSystemPermissionContext::Grants
 ChromeNativeFileSystemPermissionContext::GetPermissionGrants(
     const url::Origin& origin,
diff --git a/chrome/browser/native_file_system/chrome_native_file_system_permission_context.h b/chrome/browser/native_file_system/chrome_native_file_system_permission_context.h
index 91dc8a46..ad74f77 100644
--- a/chrome/browser/native_file_system/chrome_native_file_system_permission_context.h
+++ b/chrome/browser/native_file_system/chrome_native_file_system_permission_context.h
@@ -154,6 +154,12 @@
       int frame_id,
       base::OnceCallback<void(PermissionStatus)> callback) override;
 
+  void PerformSafeBrowsingChecks(
+      std::unique_ptr<content::NativeFileSystemWriteItem> item,
+      int process_id,
+      int frame_id,
+      base::OnceCallback<void(SafeBrowsingResult)> callback) override;
+
   struct Grants {
     Grants();
     ~Grants();
diff --git a/chrome/browser/navigation_predictor/navigation_predictor.cc b/chrome/browser/navigation_predictor/navigation_predictor.cc
index beb646421..435f75e 100644
--- a/chrome/browser/navigation_predictor/navigation_predictor.cc
+++ b/chrome/browser/navigation_predictor/navigation_predictor.cc
@@ -27,7 +27,7 @@
 #include "content/public/browser/site_instance.h"
 #include "content/public/browser/web_contents.h"
 #include "mojo/public/cpp/bindings/message.h"
-#include "mojo/public/cpp/bindings/strong_binding.h"
+#include "mojo/public/cpp/bindings/self_owned_receiver.h"
 #include "net/base/features.h"
 #include "services/metrics/public/cpp/metrics_utils.h"
 #include "services/metrics/public/cpp/ukm_builders.h"
@@ -251,7 +251,7 @@
 }
 
 void NavigationPredictor::Create(
-    blink::mojom::AnchorElementMetricsHostRequest request,
+    mojo::PendingReceiver<blink::mojom::AnchorElementMetricsHost> receiver,
     content::RenderFrameHost* render_frame_host) {
   DCHECK(base::FeatureList::IsEnabled(blink::features::kNavigationPredictor));
 
@@ -259,9 +259,9 @@
   if (render_frame_host->GetParent())
     return;
 
-  mojo::MakeStrongBinding(
+  mojo::MakeSelfOwnedReceiver(
       std::make_unique<NavigationPredictor>(render_frame_host),
-      std::move(request));
+      std::move(receiver));
 }
 
 bool NavigationPredictor::IsValidMetricFromRenderer(
diff --git a/chrome/browser/navigation_predictor/navigation_predictor.h b/chrome/browser/navigation_predictor/navigation_predictor.h
index f41e67b..a3e928e 100644
--- a/chrome/browser/navigation_predictor/navigation_predictor.h
+++ b/chrome/browser/navigation_predictor/navigation_predictor.h
@@ -16,7 +16,7 @@
 #include "base/timer/timer.h"
 #include "content/public/browser/visibility.h"
 #include "content/public/browser/web_contents_observer.h"
-#include "mojo/public/cpp/bindings/interface_request.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "services/metrics/public/cpp/ukm_recorder.h"
 #include "services/metrics/public/cpp/ukm_source_id.h"
 #include "third_party/blink/public/mojom/loader/navigation_predictor.mojom.h"
@@ -48,7 +48,7 @@
   ~NavigationPredictor() override;
 
   // Create and bind NavigationPredictor.
-  static void Create(mojo::InterfaceRequest<AnchorElementMetricsHost> request,
+  static void Create(mojo::PendingReceiver<AnchorElementMetricsHost> receiver,
                      content::RenderFrameHost* render_frame_host);
 
   // Enum describing the possible set of actions that navigation predictor may
diff --git a/chrome/browser/navigation_predictor/navigation_predictor_unittest.cc b/chrome/browser/navigation_predictor/navigation_predictor_unittest.cc
index 4c25edd..0f2698f5 100644
--- a/chrome/browser/navigation_predictor/navigation_predictor_unittest.cc
+++ b/chrome/browser/navigation_predictor/navigation_predictor_unittest.cc
@@ -14,7 +14,9 @@
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
 #include "components/ukm/test_ukm_recorder.h"
 #include "content/public/browser/web_contents.h"
-#include "mojo/public/cpp/bindings/interface_request.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/receiver.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "mojo/public/cpp/bindings/strong_binding.h"
 #include "services/metrics/public/cpp/ukm_builders.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -28,11 +30,11 @@
 class TestNavigationPredictor : public NavigationPredictor {
  public:
   TestNavigationPredictor(
-      mojo::InterfaceRequest<AnchorElementMetricsHost> request,
+      mojo::PendingReceiver<AnchorElementMetricsHost> receiver,
       content::RenderFrameHost* render_frame_host,
       bool init_feature_list)
-      : NavigationPredictor(render_frame_host), binding_(this) {
-    binding_.Bind(std::move(request));
+      : NavigationPredictor(render_frame_host),
+        receiver_(this, std::move(receiver)) {
     if (init_feature_list) {
       const std::vector<base::Feature> features = {
           blink::features::kNavigationPredictor};
@@ -74,7 +76,7 @@
   base::test::ScopedFeatureList feature_list_;
 
   // Used to bind Mojo interface
-  mojo::Binding<AnchorElementMetricsHost> binding_;
+  mojo::Receiver<AnchorElementMetricsHost> receiver_;
 
   int calls_to_prefetch_ = 0;
 };
@@ -82,10 +84,10 @@
 class TestNavigationPredictorBasedOnScroll : public TestNavigationPredictor {
  public:
   TestNavigationPredictorBasedOnScroll(
-      mojo::InterfaceRequest<AnchorElementMetricsHost> request,
+      mojo::PendingReceiver<AnchorElementMetricsHost> receiver,
       content::RenderFrameHost* render_frame_host,
       bool init_feature_list)
-      : TestNavigationPredictor(std::move(request),
+      : TestNavigationPredictor(std::move(receiver),
                                 render_frame_host,
                                 init_feature_list) {}
 
@@ -145,7 +147,7 @@
   void SetUp() override {
     ChromeRenderViewHostTestHarness::SetUp();
     predictor_service_helper_ = std::make_unique<TestNavigationPredictor>(
-        mojo::MakeRequest(&predictor_service_), main_rfh(),
+        predictor_service_.BindNewPipeAndPassReceiver(), main_rfh(),
         !field_trial_initiated_);
   }
 
@@ -176,7 +178,7 @@
         blink::features::kNavigationPredictor, params);
   }
 
-  blink::mojom::AnchorElementMetricsHostPtr predictor_service_;
+  mojo::Remote<blink::mojom::AnchorElementMetricsHost> predictor_service_;
   std::unique_ptr<TestNavigationPredictor> predictor_service_helper_;
 
  private:
@@ -529,7 +531,7 @@
   void SetUp() override {
     ChromeRenderViewHostTestHarness::SetUp();
     predictor_service_helper_ = std::make_unique<TestNavigationPredictor>(
-        mojo::MakeRequest(&predictor_service_), main_rfh(), false);
+        predictor_service_.BindNewPipeAndPassReceiver(), main_rfh(), false);
   }
 
   struct TestMetrics {
@@ -747,7 +749,7 @@
     ChromeRenderViewHostTestHarness::SetUp();
     predictor_service_helper_ =
         std::make_unique<TestNavigationPredictorBasedOnScroll>(
-            mojo::MakeRequest(&predictor_service_), main_rfh(), false);
+            predictor_service_.BindNewPipeAndPassReceiver(), main_rfh(), false);
   }
 
   blink::mojom::AnchorElementMetricsPtr CreateMetricsPtrWithRatioDistance(
@@ -844,7 +846,7 @@
   void SetUp() override {
     ChromeRenderViewHostTestHarness::SetUp();
     predictor_service_helper_ = std::make_unique<TestNavigationPredictor>(
-        mojo::MakeRequest(&predictor_service_), main_rfh(), false);
+        predictor_service_.BindNewPipeAndPassReceiver(), main_rfh(), false);
   }
 };
 
@@ -942,7 +944,7 @@
   void SetUp() override {
     ChromeRenderViewHostTestHarness::SetUp();
     predictor_service_helper_ = std::make_unique<TestNavigationPredictor>(
-        mojo::MakeRequest(&predictor_service_), main_rfh(), false);
+        predictor_service_.BindNewPipeAndPassReceiver(), main_rfh(), false);
   }
 };
 
diff --git a/chrome/browser/payments/payment_handler_exploit_browsertest.cc b/chrome/browser/payments/payment_handler_exploit_browsertest.cc
new file mode 100644
index 0000000..2c06922
--- /dev/null
+++ b/chrome/browser/payments/payment_handler_exploit_browsertest.cc
@@ -0,0 +1,152 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/macros.h"
+#include "build/build_config.h"
+#include "chrome/test/base/chrome_test_utils.h"
+#include "content/public/browser/render_process_host.h"
+#include "content/public/browser/web_contents.h"
+#include "content/public/test/browser_test_utils.h"
+#include "content/public/test/content_browser_test_utils.h"
+#include "content/public/test/service_worker_host_interceptor.h"
+#include "net/dns/mock_host_resolver.h"
+#include "net/test/embedded_test_server/embedded_test_server.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
+#include "url/origin.h"
+
+#if defined(OS_ANDROID)
+#include "chrome/test/base/android/android_browser_test.h"
+#else
+#include "chrome/browser/payments/chrome_payment_request_delegate.h"
+#include "chrome/browser/payments/payment_request_factory.h"
+#include "chrome/test/base/in_process_browser_test.h"
+#include "components/payments/content/payment_request_web_contents_manager.h"
+#endif
+
+namespace payments {
+namespace {
+
+class PaymentHandlerExploitTest : public PlatformBrowserTest,
+                                  public content::ServiceWorkerHostInterceptor {
+ public:
+  PaymentHandlerExploitTest()
+      : https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {}
+
+  ~PaymentHandlerExploitTest() override {}
+
+  content::WebContents* GetActiveWebContents() {
+    return chrome_test_utils::GetActiveWebContents(this);
+  }
+
+  void set_payment_handler_window_url(const GURL& url) {
+    payment_handler_window_url_ = url;
+  }
+
+  GURL GetTestServerUrl(const std::string& relative_path) {
+    return https_server_.GetURL(relative_path);
+  }
+
+ private:
+#if !defined(OS_ANDROID)
+  // A delegate for PaymentRequest that mimics the browser window always being
+  // active, which is a requirement for launching PaymentRequest, but is false
+  // in MacOS browser tests.
+  class TestDelegate : public ChromePaymentRequestDelegate {
+   public:
+    explicit TestDelegate(content::WebContents* web_contents)
+        : ChromePaymentRequestDelegate(web_contents) {}
+    ~TestDelegate() override {}
+
+    // ChromePaymentRequestDelegate:
+    bool IsBrowserWindowActive() const override { return true; }
+
+   private:
+    DISALLOW_COPY_AND_ASSIGN(TestDelegate);
+  };
+
+  void CreatePaymentRequestForTest(
+      payments::mojom::PaymentRequestRequest request,
+      content::RenderFrameHost* render_frame_host) {
+    auto* web_contents =
+        content::WebContents::FromRenderFrameHost(render_frame_host);
+    PaymentRequestWebContentsManager::GetOrCreateForWebContents(web_contents)
+        ->CreatePaymentRequest(render_frame_host, web_contents,
+                               std::make_unique<TestDelegate>(web_contents),
+                               std::move(request),
+                               /*observer_for_testing=*/nullptr);
+  }
+#endif  // !OS_ANDROID
+
+  // PlatformBrowserTest:
+  void SetUpOnMainThread() override {
+    https_server_.ServeFilesFromSourceDirectory(
+        "components/test/data/payments");
+    ASSERT_TRUE(https_server_.Start());
+    ASSERT_TRUE(content::NavigateToURL(
+        GetActiveWebContents(), GetTestServerUrl("/payment_handler.html")));
+
+#if !defined(OS_ANDROID)
+    // Use TestDelegate that helps with MacOS browser test environment:
+    payments::SetPaymentRequestFactoryForTesting(base::BindRepeating(
+        &PaymentHandlerExploitTest::CreatePaymentRequestForTest,
+        base::Unretained(this)));
+#endif  // !OS_ANDROID
+
+    PlatformBrowserTest::SetUpOnMainThread();
+  }
+
+  // content::ServiceWorkerHostInterceptor:
+  bool WillOpenPaymentHandlerWindow(GURL* url) override {
+    *url = payment_handler_window_url_;
+    return true;
+  }
+
+  GURL payment_handler_window_url_;
+  net::EmbeddedTestServer https_server_;
+
+  DISALLOW_COPY_AND_ASSIGN(PaymentHandlerExploitTest);
+};
+
+// Unable to launch a payment handler window on Android through browser test.
+// https://crbug.com/998737
+#if defined(OS_ANDROID)
+#define MAYBE_SmokeTest DISABLED_SmokeTest
+#else
+#define MAYBE_SmokeTest SmokeTest
+#endif
+IN_PROC_BROWSER_TEST_F(PaymentHandlerExploitTest, MAYBE_SmokeTest) {
+  std::string expected = "success";
+  EXPECT_EQ(expected, content::EvalJs(GetActiveWebContents(), "install()"));
+  EXPECT_EQ(expected, content::EvalJs(GetActiveWebContents(), "launch()"));
+}
+
+IN_PROC_BROWSER_TEST_F(PaymentHandlerExploitTest,
+                       RendererCannotOpenCrossOriginWindow) {
+  std::string expected = "success";
+  EXPECT_EQ(expected, content::EvalJs(GetActiveWebContents(), "install()"));
+
+  GURL service_worker_scope = GetTestServerUrl("/");
+  int service_worker_process_id = -1;
+  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
+            InterceptServiceWorkerHostWithScope(
+                GetActiveWebContents()->GetBrowserContext(),
+                service_worker_scope, &service_worker_process_id));
+
+  content::RenderProcessHostWatcher crash_observer(
+      content::RenderProcessHost::FromID(service_worker_process_id),
+      content::RenderProcessHostWatcher::WATCH_FOR_PROCESS_EXIT);
+
+  GURL cross_origin_url("https://127.0.0.1:80");
+  EXPECT_FALSE(url::IsSameOriginWith(cross_origin_url, service_worker_scope));
+  set_payment_handler_window_url(cross_origin_url);
+
+  EXPECT_TRUE(content::ExecJs(GetActiveWebContents(), "launch()"));
+
+  crash_observer.Wait();
+  EXPECT_FALSE(crash_observer.did_exit_normally());
+}
+
+}  // namespace
+}  // namespace payments
diff --git a/chrome/browser/performance_manager/decorators/freeze_origin_trial_policy_aggregator.cc b/chrome/browser/performance_manager/decorators/freeze_origin_trial_policy_aggregator.cc
new file mode 100644
index 0000000..713023b
--- /dev/null
+++ b/chrome/browser/performance_manager/decorators/freeze_origin_trial_policy_aggregator.cc
@@ -0,0 +1,156 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/performance_manager/decorators/freeze_origin_trial_policy_aggregator.h"
+
+#include <stdint.h>
+
+#include "chrome/browser/performance_manager/graph/node_attached_data_impl.h"
+#include "chrome/browser/performance_manager/graph/page_node_impl.h"
+#include "services/resource_coordinator/public/mojom/coordination_unit.mojom.h"
+
+namespace performance_manager {
+
+using resource_coordinator::mojom::InterventionPolicy;
+
+// Provides FreezeOriginTrialPolicyAggregator machinery access to some internals
+// of a PageNodeImpl.
+class FreezeOriginTrialPolicyAggregatorAccess {
+ public:
+  using StorageType = decltype(PageNodeImpl::freeze_origin_trial_policy_data_);
+
+  static StorageType* GetInternalStorage(PageNodeImpl* page_node) {
+    return &page_node->freeze_origin_trial_policy_data_;
+  }
+
+  static void SetOriginTrialFreezePolicy(PageNodeImpl* page_node,
+                                         InterventionPolicy policy) {
+    page_node->SetOriginTrialFreezePolicy(policy);
+  }
+};
+
+class FreezeOriginTrialPolicyAggregator::Data
+    : public NodeAttachedDataImpl<Data> {
+ public:
+  using StorageType = FreezeOriginTrialPolicyAggregatorAccess::StorageType;
+  struct Traits : public NodeAttachedDataInternalOnNodeType<PageNodeImpl> {};
+
+  explicit Data(const PageNodeImpl* page_node) {}
+  ~Data() override = default;
+
+  static StorageType* GetInternalStorage(PageNodeImpl* page_node) {
+    return FreezeOriginTrialPolicyAggregatorAccess::GetInternalStorage(
+        page_node);
+  }
+
+  void IncrementFrameCountForPolicy(InterventionPolicy policy) {
+    ++num_current_frames_for_policy[static_cast<size_t>(policy)];
+  }
+
+  void DecrementFrameCountForPolicy(InterventionPolicy policy) {
+    DCHECK_GT(num_current_frames_for_policy[static_cast<size_t>(policy)], 0U);
+    --num_current_frames_for_policy[static_cast<size_t>(policy)];
+  }
+
+  // Updates the page's origin trial freeze policy from current data.
+  void UpdateOriginTrialFreezePolicy(PageNodeImpl* page_node) {
+    FreezeOriginTrialPolicyAggregatorAccess::SetOriginTrialFreezePolicy(
+        page_node, ComputeOriginTrialFreezePolicy());
+  }
+
+ private:
+  // Computes the page's origin trial freeze policy from current data.
+  InterventionPolicy ComputeOriginTrialFreezePolicy() const {
+    if (GetNumCurrentFramesForPolicy(InterventionPolicy::kUnknown))
+      return InterventionPolicy::kUnknown;
+
+    if (GetNumCurrentFramesForPolicy(InterventionPolicy::kOptOut))
+      return InterventionPolicy::kOptOut;
+
+    if (GetNumCurrentFramesForPolicy(InterventionPolicy::kOptIn))
+      return InterventionPolicy::kOptIn;
+
+    // A page with no frame can be frozen. This will have no effect.
+    return InterventionPolicy::kDefault;
+  }
+
+  // Returns the number of current frames with |policy| on the page that owns
+  // this Data.
+  uint32_t GetNumCurrentFramesForPolicy(InterventionPolicy policy) const {
+    return num_current_frames_for_policy[static_cast<size_t>(policy)];
+  }
+
+  // The number of current frames of this page that has set each freeze origin
+  // trial policy.
+  uint32_t num_current_frames_for_policy[static_cast<size_t>(
+                                             InterventionPolicy::kMaxValue) +
+                                         1] = {};
+
+  DISALLOW_COPY_AND_ASSIGN(Data);
+};
+
+FreezeOriginTrialPolicyAggregator::FreezeOriginTrialPolicyAggregator() =
+    default;
+FreezeOriginTrialPolicyAggregator::~FreezeOriginTrialPolicyAggregator() =
+    default;
+
+void FreezeOriginTrialPolicyAggregator::OnFrameNodeAdded(
+    const FrameNode* frame_node) {
+  DCHECK(!frame_node->IsCurrent());
+}
+
+void FreezeOriginTrialPolicyAggregator::OnBeforeFrameNodeRemoved(
+    const FrameNode* frame_node) {
+  if (frame_node->IsCurrent()) {
+    auto* page_node = PageNodeImpl::FromNode(frame_node->GetPageNode());
+    Data* data = Data::Get(page_node);
+    // Data should have been created when the frame became current.
+    DCHECK(data);
+    data->DecrementFrameCountForPolicy(
+        frame_node->GetOriginTrialFreezePolicy());
+    data->UpdateOriginTrialFreezePolicy(page_node);
+  }
+}
+
+void FreezeOriginTrialPolicyAggregator::OnIsCurrentChanged(
+    const FrameNode* frame_node) {
+  auto* page_node = PageNodeImpl::FromNode(frame_node->GetPageNode());
+  Data* data = Data::GetOrCreate(page_node);
+  if (frame_node->IsCurrent()) {
+    data->IncrementFrameCountForPolicy(
+        frame_node->GetOriginTrialFreezePolicy());
+  } else {
+    data->DecrementFrameCountForPolicy(
+        frame_node->GetOriginTrialFreezePolicy());
+  }
+  data->UpdateOriginTrialFreezePolicy(page_node);
+}
+
+void FreezeOriginTrialPolicyAggregator::OnOriginTrialFreezePolicyChanged(
+    const FrameNode* frame_node,
+    InterventionPolicy previous_value) {
+  if (frame_node->IsCurrent()) {
+    auto* page_node = PageNodeImpl::FromNode(frame_node->GetPageNode());
+    Data* data = Data::Get(page_node);
+    // Data should have been created when the frame became current.
+    DCHECK(data);
+    data->DecrementFrameCountForPolicy(previous_value);
+    data->IncrementFrameCountForPolicy(
+        frame_node->GetOriginTrialFreezePolicy());
+    data->UpdateOriginTrialFreezePolicy(page_node);
+  }
+}
+
+void FreezeOriginTrialPolicyAggregator::OnPassedToGraph(Graph* graph) {
+  // This observer presumes that it's been added before any nodes exist in the
+  // graph.
+  DCHECK(GraphImpl::FromGraph(graph)->nodes().empty());
+  graph->AddFrameNodeObserver(this);
+}
+
+void FreezeOriginTrialPolicyAggregator::OnTakenFromGraph(Graph* graph) {
+  graph->RemoveFrameNodeObserver(this);
+}
+
+}  // namespace performance_manager
diff --git a/chrome/browser/performance_manager/decorators/freeze_origin_trial_policy_aggregator.h b/chrome/browser/performance_manager/decorators/freeze_origin_trial_policy_aggregator.h
new file mode 100644
index 0000000..f6998f32
--- /dev/null
+++ b/chrome/browser/performance_manager/decorators/freeze_origin_trial_policy_aggregator.h
@@ -0,0 +1,41 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_PERFORMANCE_MANAGER_DECORATORS_FREEZE_ORIGIN_TRIAL_POLICY_AGGREGATOR_H_
+#define CHROME_BROWSER_PERFORMANCE_MANAGER_DECORATORS_FREEZE_ORIGIN_TRIAL_POLICY_AGGREGATOR_H_
+
+#include "chrome/browser/performance_manager/public/graph/frame_node.h"
+#include "chrome/browser/performance_manager/public/graph/graph.h"
+
+namespace performance_manager {
+
+// Computes the freeze origin trial policy of a page by aggregating the freeze
+// origin trial policies of its current frames.
+class FreezeOriginTrialPolicyAggregator : public FrameNode::ObserverDefaultImpl,
+                                          public GraphOwnedDefaultImpl {
+ public:
+  FreezeOriginTrialPolicyAggregator();
+  ~FreezeOriginTrialPolicyAggregator() override;
+
+ private:
+  class Data;
+
+  // FrameNodeObserver implementation:
+  void OnFrameNodeAdded(const FrameNode* frame_node) override;
+  void OnBeforeFrameNodeRemoved(const FrameNode* frame_node) override;
+  void OnIsCurrentChanged(const FrameNode* frame_node) override;
+  void OnOriginTrialFreezePolicyChanged(
+      const FrameNode* frame_node,
+      InterventionPolicy previous_value) override;
+
+  // GraphOwned implementation:
+  void OnPassedToGraph(Graph* graph) override;
+  void OnTakenFromGraph(Graph* graph) override;
+
+  DISALLOW_COPY_AND_ASSIGN(FreezeOriginTrialPolicyAggregator);
+};
+
+}  // namespace performance_manager
+
+#endif  // CHROME_BROWSER_PERFORMANCE_MANAGER_DECORATORS_FREEZE_ORIGIN_TRIAL_POLICY_AGGREGATOR_H_
diff --git a/chrome/browser/performance_manager/decorators/freeze_origin_trial_policy_aggregator_unittest.cc b/chrome/browser/performance_manager/decorators/freeze_origin_trial_policy_aggregator_unittest.cc
new file mode 100644
index 0000000..2c6e9383
--- /dev/null
+++ b/chrome/browser/performance_manager/decorators/freeze_origin_trial_policy_aggregator_unittest.cc
@@ -0,0 +1,205 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/performance_manager/decorators/freeze_origin_trial_policy_aggregator.h"
+
+#include "chrome/browser/performance_manager/graph/frame_node_impl.h"
+#include "chrome/browser/performance_manager/graph/graph_impl_operations.h"
+#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
+#include "chrome/browser/performance_manager/graph/process_node_impl.h"
+#include "chrome/browser/performance_manager/public/graph/page_node.h"
+#include "services/resource_coordinator/public/mojom/coordination_unit.mojom.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace performance_manager {
+
+using resource_coordinator::mojom::InterventionPolicy;
+
+namespace {
+
+class FreezeOriginTrialPolicyAggregatorTest : public GraphTestHarness {
+ public:
+  void SetUp() override {
+    GraphTestHarness::SetUp();
+    graph()->PassToGraph(std::make_unique<FreezeOriginTrialPolicyAggregator>());
+  }
+};
+
+void ExpectInitialPolicyWorks(GraphImpl* mock_graph,
+                              InterventionPolicy f0_policy,
+                              InterventionPolicy f1_policy,
+                              InterventionPolicy f0_policy_aggregated,
+                              InterventionPolicy f0f1_policy_aggregated) {
+  TestNodeWrapper<ProcessNodeImpl> process =
+      TestNodeWrapper<ProcessNodeImpl>::Create(mock_graph);
+  TestNodeWrapper<PageNodeImpl> page =
+      TestNodeWrapper<PageNodeImpl>::Create(mock_graph);
+
+  // Check the initial values before any frames are added.
+  EXPECT_EQ(InterventionPolicy::kDefault, page->origin_trial_freeze_policy());
+
+  // Create an initial frame. Expect the page policy to be
+  // |f0_policy_aggregated| when it is made current.
+  TestNodeWrapper<FrameNodeImpl> f0 = TestNodeWrapper<FrameNodeImpl>::Create(
+      mock_graph, process.get(), page.get());
+  f0->SetOriginTrialFreezePolicy(f0_policy);
+  EXPECT_EQ(InterventionPolicy::kDefault, page->origin_trial_freeze_policy());
+  f0->SetIsCurrent(true);
+  EXPECT_EQ(f0_policy_aggregated, page->origin_trial_freeze_policy());
+
+  // Create a second frame and expect the page policy to be
+  // |f0f1_policy_aggregated| when it is made current.
+  TestNodeWrapper<FrameNodeImpl> f1 = TestNodeWrapper<FrameNodeImpl>::Create(
+      mock_graph, process.get(), page.get(), f0.get(), 1);
+  f1->SetOriginTrialFreezePolicy(f1_policy);
+  f1->SetIsCurrent(true);
+  EXPECT_EQ(f0f1_policy_aggregated, page->origin_trial_freeze_policy());
+
+  // Make the second frame non-current. Expect the page policy to go back to
+  // |f0_policy_aggregated|.
+  f1->SetIsCurrent(false);
+  EXPECT_EQ(f0_policy_aggregated, page->origin_trial_freeze_policy());
+  f1->SetIsCurrent(true);
+  EXPECT_EQ(f0f1_policy_aggregated, page->origin_trial_freeze_policy());
+
+  // Remove the second frame. Expect the page policy to go back to
+  // |f0_policy_aggregated|.
+  f1.reset();
+  EXPECT_EQ(f0_policy_aggregated, page->origin_trial_freeze_policy());
+}
+
+}  // namespace
+
+// Tests all possible combinations of policies for 2 frames. In this test, the
+// policy of a frame is set before it becomes current.
+TEST_F(FreezeOriginTrialPolicyAggregatorTest, InitialPolicy) {
+  auto* mock_graph = graph();
+
+  // Unknown x [Unknown, Default, OptIn, OptOut]
+
+  ExpectInitialPolicyWorks(
+      mock_graph, InterventionPolicy::kUnknown /* f0_policy */,
+      InterventionPolicy::kUnknown /* f1_policy */,
+      InterventionPolicy::kUnknown /* f0_policy_aggregated */,
+      InterventionPolicy::kUnknown /* f0f1_policy_aggregated */);
+
+  ExpectInitialPolicyWorks(
+      mock_graph, InterventionPolicy::kUnknown /* f0_policy */,
+      InterventionPolicy::kDefault /* f1_policy */,
+      InterventionPolicy::kUnknown /* f0_policy_aggregated */,
+      InterventionPolicy::kUnknown /* f0f1_policy_aggregated */);
+
+  ExpectInitialPolicyWorks(
+      mock_graph, InterventionPolicy::kUnknown /* f0_policy */,
+      InterventionPolicy::kOptIn /* f1_policy */,
+      InterventionPolicy::kUnknown /* f0_policy_aggregated */,
+      InterventionPolicy::kUnknown /* f0f1_policy_aggregated */);
+
+  ExpectInitialPolicyWorks(
+      mock_graph, InterventionPolicy::kUnknown /* f0_policy */,
+      InterventionPolicy::kOptOut /* f1_policy */,
+      InterventionPolicy::kUnknown /* f0_policy_aggregated */,
+      InterventionPolicy::kUnknown /* f0f1_policy_aggregated */);
+
+  // Default x [Unknown, Default, OptIn, OptOut]
+
+  ExpectInitialPolicyWorks(
+      mock_graph, InterventionPolicy::kDefault /* f0_policy */,
+      InterventionPolicy::kUnknown /* f1_policy */,
+      InterventionPolicy::kDefault /* f0_policy_aggregated */,
+      InterventionPolicy::kUnknown /* f0f1_policy_aggregated */);
+
+  ExpectInitialPolicyWorks(
+      mock_graph, InterventionPolicy::kDefault /* f0_policy */,
+      InterventionPolicy::kDefault /* f1_policy */,
+      InterventionPolicy::kDefault /* f0_policy_aggregated */,
+      InterventionPolicy::kDefault /* f0f1_policy_aggregated */);
+
+  ExpectInitialPolicyWorks(
+      mock_graph, InterventionPolicy::kDefault /* f0_policy */,
+      InterventionPolicy::kOptIn /* f1_policy */,
+      InterventionPolicy::kDefault /* f0_policy_aggregated */,
+      InterventionPolicy::kOptIn /* f0f1_policy_aggregated */);
+
+  ExpectInitialPolicyWorks(
+      mock_graph, InterventionPolicy::kDefault /* f0_policy */,
+      InterventionPolicy::kOptOut /* f1_policy */,
+      InterventionPolicy::kDefault /* f0_policy_aggregated */,
+      InterventionPolicy::kOptOut /* f0f1_policy_aggregated */);
+
+  // OptIn x [Unknown, Default, OptIn, OptOut]
+
+  ExpectInitialPolicyWorks(
+      mock_graph, InterventionPolicy::kOptIn /* f0_policy */,
+      InterventionPolicy::kUnknown /* f1_policy */,
+      InterventionPolicy::kOptIn /* f0_policy_aggregated */,
+      InterventionPolicy::kUnknown /* f0f1_policy_aggregated */);
+
+  ExpectInitialPolicyWorks(
+      mock_graph, InterventionPolicy::kOptIn /* f0_policy */,
+      InterventionPolicy::kDefault /* f1_policy */,
+      InterventionPolicy::kOptIn /* f0_policy_aggregated */,
+      InterventionPolicy::kOptIn /* f0f1_policy_aggregated */);
+
+  ExpectInitialPolicyWorks(
+      mock_graph, InterventionPolicy::kOptIn /* f0_policy */,
+      InterventionPolicy::kOptIn /* f1_policy */,
+      InterventionPolicy::kOptIn /* f0_policy_aggregated */,
+      InterventionPolicy::kOptIn /* f0f1_policy_aggregated */);
+
+  ExpectInitialPolicyWorks(
+      mock_graph, InterventionPolicy::kOptIn /* f0_policy */,
+      InterventionPolicy::kOptOut /* f1_policy */,
+      InterventionPolicy::kOptIn /* f0_policy_aggregated */,
+      InterventionPolicy::kOptOut /* f0f1_policy_aggregated */);
+
+  // OptOut x [Unknown, Default, OptIn, OptOut]
+
+  ExpectInitialPolicyWorks(
+      mock_graph, InterventionPolicy::kOptOut /* f0_policy */,
+      InterventionPolicy::kUnknown /* f1_policy */,
+      InterventionPolicy::kOptOut /* f0_policy_aggregated */,
+      InterventionPolicy::kUnknown /* f0f1_policy_aggregated */);
+
+  ExpectInitialPolicyWorks(
+      mock_graph, InterventionPolicy::kOptOut /* f0_policy */,
+      InterventionPolicy::kDefault /* f1_policy */,
+      InterventionPolicy::kOptOut /* f0_policy_aggregated */,
+      InterventionPolicy::kOptOut /* f0f1_policy_aggregated */);
+
+  ExpectInitialPolicyWorks(
+      mock_graph, InterventionPolicy::kOptOut /* f0_policy */,
+      InterventionPolicy::kOptIn /* f1_policy */,
+      InterventionPolicy::kOptOut /* f0_policy_aggregated */,
+      InterventionPolicy::kOptOut /* f0f1_policy_aggregated */);
+
+  ExpectInitialPolicyWorks(
+      mock_graph, InterventionPolicy::kOptOut /* f0_policy */,
+      InterventionPolicy::kOptOut /* f1_policy */,
+      InterventionPolicy::kOptOut /* f0_policy_aggregated */,
+      InterventionPolicy::kOptOut /* f0f1_policy_aggregated */);
+}
+
+// Test changing the policy of a frame after it becomes current.
+TEST_F(FreezeOriginTrialPolicyAggregatorTest, PolicyChanges) {
+  TestNodeWrapper<ProcessNodeImpl> process =
+      TestNodeWrapper<ProcessNodeImpl>::Create(graph());
+  TestNodeWrapper<PageNodeImpl> page =
+      TestNodeWrapper<PageNodeImpl>::Create(graph());
+  TestNodeWrapper<FrameNodeImpl> frame = TestNodeWrapper<FrameNodeImpl>::Create(
+      graph(), process.get(), page.get());
+  frame->SetIsCurrent(true);
+
+  EXPECT_EQ(InterventionPolicy::kUnknown, page->origin_trial_freeze_policy());
+  frame->SetOriginTrialFreezePolicy(InterventionPolicy::kOptIn);
+  EXPECT_EQ(InterventionPolicy::kOptIn, page->origin_trial_freeze_policy());
+  frame->SetOriginTrialFreezePolicy(InterventionPolicy::kOptOut);
+  EXPECT_EQ(InterventionPolicy::kOptOut, page->origin_trial_freeze_policy());
+  frame->SetOriginTrialFreezePolicy(InterventionPolicy::kDefault);
+  EXPECT_EQ(InterventionPolicy::kDefault, page->origin_trial_freeze_policy());
+  frame->SetOriginTrialFreezePolicy(InterventionPolicy::kUnknown);
+  EXPECT_EQ(InterventionPolicy::kUnknown, page->origin_trial_freeze_policy());
+}
+
+}  // namespace performance_manager
diff --git a/chrome/browser/performance_manager/graph/frame_node_impl.cc b/chrome/browser/performance_manager/graph/frame_node_impl.cc
index 4563b1b..1d684db 100644
--- a/chrome/browser/performance_manager/graph/frame_node_impl.cc
+++ b/chrome/browser/performance_manager/graph/frame_node_impl.cc
@@ -75,30 +75,7 @@
 
 void FrameNodeImpl::SetOriginTrialFreezePolicy(
     resource_coordinator::mojom::InterventionPolicy policy) {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  constexpr auto intervention = resource_coordinator::mojom::
-      PolicyControlledIntervention::kPageLifecycleTransitions;
-  size_t i = static_cast<size_t>(intervention);
-  DCHECK_LT(i, base::size(intervention_policy_));
-
-  // This can only be called to set a policy, but not to revert a policy to the
-  // unset state.
-  DCHECK_NE(resource_coordinator::mojom::InterventionPolicy::kUnknown, policy);
-
-  // We expect intervention policies to be initially set in order, and rely on
-  // that as a synchronization primitive. Ensure this is the case.
-  DCHECK(i == 0 ||
-         intervention_policy_[i - 1] !=
-             resource_coordinator::mojom::InterventionPolicy::kUnknown);
-
-  if (policy == intervention_policy_[i])
-    return;
-  // Only notify of actual changes.
-  resource_coordinator::mojom::InterventionPolicy old_policy =
-      intervention_policy_[i];
-  intervention_policy_[i] = policy;
-  page_node_->OnFrameInterventionPolicyChanged(this, intervention, old_policy,
-                                               policy);
+  document_.origin_trial_freeze_policy.SetAndMaybeNotify(this, policy);
 }
 
 void FrameNodeImpl::SetIsAdFrame() {
@@ -117,31 +94,6 @@
   return !parent_frame_node_;
 }
 
-bool FrameNodeImpl::AreAllInterventionPoliciesSet() const {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  // The convention is that policies are first set en masse, in order. So if
-  // the last policy is set then they are all considered to be set. Check this
-  // in DEBUG builds.
-#if DCHECK_IS_ON()
-  bool seen_unset_policy = false;
-  for (size_t i = 0; i < base::size(intervention_policy_); ++i) {
-    if (!seen_unset_policy) {
-      seen_unset_policy =
-          intervention_policy_[i] !=
-          resource_coordinator::mojom::InterventionPolicy::kUnknown;
-    } else {
-      // Once a first unset policy is seen, all subsequent policies must be
-      // unset.
-      DCHECK_NE(resource_coordinator::mojom::InterventionPolicy::kUnknown,
-                intervention_policy_[i]);
-    }
-  }
-#endif
-
-  return intervention_policy_[base::size(intervention_policy_) - 1] !=
-         resource_coordinator::mojom::InterventionPolicy::kUnknown;
-}
-
 FrameNodeImpl* FrameNodeImpl::parent_frame_node() const {
   return parent_frame_node_;
 }
@@ -181,6 +133,12 @@
   return lifecycle_state_.value();
 }
 
+resource_coordinator::mojom::InterventionPolicy
+FrameNodeImpl::origin_trial_freeze_policy() const {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  return document_.origin_trial_freeze_policy.value();
+}
+
 bool FrameNodeImpl::has_nonempty_beforeunload() const {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   return document_.has_nonempty_beforeunload;
@@ -296,12 +254,6 @@
   priority_and_reason_.SetAndMaybeNotify(this, priority_and_reason);
 }
 
-void FrameNodeImpl::SetAllInterventionPoliciesForTesting(
-    resource_coordinator::mojom::InterventionPolicy policy) {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  SetOriginTrialFreezePolicy(policy);
-}
-
 const FrameNode* FrameNodeImpl::GetParentFrameNode() const {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   return parent_frame_node();
@@ -352,6 +304,12 @@
   return lifecycle_state();
 }
 
+FrameNodeImpl::InterventionPolicy FrameNodeImpl::GetOriginTrialFreezePolicy()
+    const {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  return origin_trial_freeze_policy();
+}
+
 bool FrameNodeImpl::HasNonemptyBeforeUnload() const {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   return has_nonempty_beforeunload();
@@ -419,10 +377,6 @@
 void FrameNodeImpl::JoinGraph() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
-  for (size_t i = 0; i < base::size(intervention_policy_); ++i)
-    intervention_policy_[i] =
-        resource_coordinator::mojom::InterventionPolicy::kUnknown;
-
   // Wire this up to the other nodes in the graph.
   if (parent_frame_node_)
     parent_frame_node_->AddChildFrame(this);
@@ -482,6 +436,8 @@
   has_nonempty_beforeunload = false;
   // Network is busy on navigation.
   network_almost_idle.SetAndMaybeNotify(frame_node, false);
+  origin_trial_freeze_policy.SetAndMaybeNotify(
+      frame_node, resource_coordinator::mojom::InterventionPolicy::kUnknown);
 }
 
 }  // namespace performance_manager
diff --git a/chrome/browser/performance_manager/graph/frame_node_impl.h b/chrome/browser/performance_manager/graph/frame_node_impl.h
index 29ae96f..4ca87b8 100644
--- a/chrome/browser/performance_manager/graph/frame_node_impl.h
+++ b/chrome/browser/performance_manager/graph/frame_node_impl.h
@@ -77,7 +77,6 @@
 
   // Partial FrameNode implementation:
   bool IsMainFrame() const override;
-  bool AreAllInterventionPoliciesSet() const override;
 
   // Getters for const properties. These can be called from any thread.
   FrameNodeImpl* parent_frame_node() const;
@@ -91,6 +90,7 @@
   // Getters for non-const properties. These are not thread safe.
   const base::flat_set<FrameNodeImpl*>& child_frame_nodes() const;
   LifecycleState lifecycle_state() const;
+  InterventionPolicy origin_trial_freeze_policy() const;
   bool has_nonempty_beforeunload() const;
   const GURL& url() const;
   bool is_current() const;
@@ -112,11 +112,6 @@
   // Invoked to set the frame priority, and the reason behind it.
   void SetPriorityAndReason(const PriorityAndReason& priority_and_reason);
 
-  // Sets the same policy for all intervention types in this frame. Causes
-  // Page::OnFrameInterventionPolicyChanged to be invoked.
-  void SetAllInterventionPoliciesForTesting(
-      resource_coordinator::mojom::InterventionPolicy policy);
-
  private:
   friend class PageNodeImpl;
   friend class ProcessNodeImpl;
@@ -132,6 +127,7 @@
   int32_t GetSiteInstanceId() const override;
   const base::flat_set<const FrameNode*> GetChildFrameNodes() const override;
   LifecycleState GetLifecycleState() const override;
+  InterventionPolicy GetOriginTrialFreezePolicy() const override;
   bool HasNonemptyBeforeUnload() const override;
   const GURL& GetURL() const override;
   bool IsCurrent() const override;
@@ -159,6 +155,13 @@
         bool,
         &FrameNodeObserver::OnNetworkAlmostIdleChanged>
         network_almost_idle{false};
+
+    // Opt-in or opt-out of freezing via origin trial.
+    ObservedProperty::NotifiesOnlyOnChangesWithPreviousValue<
+        resource_coordinator::mojom::InterventionPolicy,
+        &FrameNodeObserver::OnOriginTrialFreezePolicyChanged>
+        origin_trial_freeze_policy{
+            resource_coordinator::mojom::InterventionPolicy::kUnknown};
   };
 
   // Invoked by subframes on joining/leaving the graph.
@@ -211,17 +214,6 @@
       NotifiesOnlyOnChanges<bool, &FrameNodeObserver::OnIsCurrentChanged>
           is_current_{false};
 
-  // Intervention policy for this frame. These are communicated from the
-  // renderer process and are controlled by origin trials.
-  //
-  // TODO(https://crbug.com/999594): Move this to a decorator, since the only
-  // consumer is the freeze policy.
-  resource_coordinator::mojom::InterventionPolicy
-      intervention_policy_[static_cast<size_t>(
-                               resource_coordinator::mojom::
-                                   PolicyControlledIntervention::kMaxValue) +
-                           1];
-
   // Properties associated with a Document, which are reset when a
   // different-document navigation is committed in the frame.
   //
diff --git a/chrome/browser/performance_manager/graph/frame_node_impl_unittest.cc b/chrome/browser/performance_manager/graph/frame_node_impl_unittest.cc
index 3b3a441..1e0fbf9 100644
--- a/chrome/browser/performance_manager/graph/frame_node_impl_unittest.cc
+++ b/chrome/browser/performance_manager/graph/frame_node_impl_unittest.cc
@@ -127,6 +127,9 @@
   MOCK_METHOD1(OnIsCurrentChanged, void(const FrameNode*));
   MOCK_METHOD1(OnNetworkAlmostIdleChanged, void(const FrameNode*));
   MOCK_METHOD1(OnFrameLifecycleStateChanged, void(const FrameNode*));
+  MOCK_METHOD2(OnOriginTrialFreezePolicyChanged,
+               void(const FrameNode*,
+                    resource_coordinator::mojom::InterventionPolicy));
   MOCK_METHOD1(OnURLChanged, void(const FrameNode*));
   MOCK_METHOD1(OnIsAdFrameChanged, void(const FrameNode*));
   MOCK_METHOD1(OnNonPersistentNotificationCreated, void(const FrameNode*));
diff --git a/chrome/browser/performance_manager/graph/mock_graphs.cc b/chrome/browser/performance_manager/graph/mock_graphs.cc
index 01b877a..b739f4f4 100644
--- a/chrome/browser/performance_manager/graph/mock_graphs.cc
+++ b/chrome/browser/performance_manager/graph/mock_graphs.cc
@@ -33,8 +33,6 @@
       frame(TestNodeWrapper<FrameNodeImpl>::Create(graph,
                                                    process.get(),
                                                    page.get())) {
-  frame->SetAllInterventionPoliciesForTesting(
-      resource_coordinator::mojom::InterventionPolicy::kDefault);
   process->SetProcessWithPid(1, base::Process::Current(), base::Time::Now());
 }
 
@@ -52,10 +50,7 @@
                                                          process.get(),
                                                          other_page.get(),
                                                          nullptr,
-                                                         1)) {
-  other_frame->SetAllInterventionPoliciesForTesting(
-      resource_coordinator::mojom::InterventionPolicy::kDefault);
-}
+                                                         1)) {}
 
 MockMultiplePagesInSingleProcessGraph::
     ~MockMultiplePagesInSingleProcessGraph() {
@@ -74,8 +69,6 @@
                                                          2)) {
   other_process->SetProcessWithPid(2, base::Process::Current(),
                                    base::Time::Now());
-  child_frame->SetAllInterventionPoliciesForTesting(
-      resource_coordinator::mojom::InterventionPolicy::kDefault);
 }
 
 MockSinglePageWithMultipleProcessesGraph::
@@ -92,8 +85,6 @@
                                                          3)) {
   other_process->SetProcessWithPid(2, base::Process::Current(),
                                    base::Time::Now());
-  child_frame->SetAllInterventionPoliciesForTesting(
-      resource_coordinator::mojom::InterventionPolicy::kDefault);
 }
 
 MockMultiplePagesWithMultipleProcessesGraph::
diff --git a/chrome/browser/performance_manager/graph/page_node_impl.cc b/chrome/browser/performance_manager/graph/page_node_impl.cc
index f4690d9..1a7a6eaa 100644
--- a/chrome/browser/performance_manager/graph/page_node_impl.cc
+++ b/chrome/browser/performance_manager/graph/page_node_impl.cc
@@ -17,20 +17,6 @@
 
 namespace performance_manager {
 
-namespace {
-
-constexpr size_t kMaxInterventionIndex = static_cast<size_t>(
-    resource_coordinator::mojom::PolicyControlledIntervention::kMaxValue);
-
-size_t ToIndex(
-    resource_coordinator::mojom::PolicyControlledIntervention intervention) {
-  const size_t kIndex = static_cast<size_t>(intervention);
-  DCHECK(kIndex <= kMaxInterventionIndex);
-  return kIndex;
-}
-
-}  // namespace
-
 PageNodeImpl::PageNodeImpl(GraphImpl* graph,
                            const WebContentsProxy& contents_proxy,
                            const std::string& browser_context_id,
@@ -62,8 +48,6 @@
   ++frame_node_count_;
   if (frame_node->parent_frame_node() == nullptr)
     main_frame_nodes_.insert(frame_node);
-
-  MaybeInvalidateInterventionPolicies(frame_node, true /* adding_frame */);
 }
 
 void PageNodeImpl::RemoveFrame(FrameNodeImpl* frame_node) {
@@ -77,8 +61,6 @@
     size_t removed = main_frame_nodes_.erase(frame_node);
     DCHECK_EQ(1u, removed);
   }
-
-  MaybeInvalidateInterventionPolicies(frame_node, false /* adding_frame */);
 }
 
 void PageNodeImpl::SetIsLoading(bool is_loading) {
@@ -196,6 +178,12 @@
   return lifecycle_state_.value();
 }
 
+PageNodeImpl::InterventionPolicy PageNodeImpl::origin_trial_freeze_policy()
+    const {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  return origin_trial_freeze_policy_.value();
+}
+
 const base::flat_set<FrameNodeImpl*>& PageNodeImpl::main_frame_nodes() const {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   return main_frame_nodes_;
@@ -260,57 +248,8 @@
   has_nonempty_beforeunload_ = has_nonempty_beforeunload;
 }
 
-void PageNodeImpl::OnFrameInterventionPolicyChanged(
-    FrameNodeImpl* frame,
-    resource_coordinator::mojom::PolicyControlledIntervention intervention,
-    resource_coordinator::mojom::InterventionPolicy old_policy,
-    resource_coordinator::mojom::InterventionPolicy new_policy) {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  const size_t kIndex = ToIndex(intervention);
-
-  // Invalidate the local policy aggregation for this intervention. It will be
-  // recomputed on the next query to GetInterventionPolicy.
-  intervention_policy_[kIndex] =
-      resource_coordinator::mojom::InterventionPolicy::kUnknown;
-
-  // The first time a frame transitions away from kUnknown for the last policy,
-  // then that frame is considered to have checked in. Frames always provide
-  // initial policy values in order, ensuring this works.
-  if (old_policy == resource_coordinator::mojom::InterventionPolicy::kUnknown &&
-      new_policy != resource_coordinator::mojom::InterventionPolicy::kUnknown &&
-      intervention == resource_coordinator::mojom::
-                          PolicyControlledIntervention::kMaxValue) {
-    ++intervention_policy_frames_reported_;
-    DCHECK_LE(intervention_policy_frames_reported_, frame_node_count_);
-  }
-}
-
-resource_coordinator::mojom::InterventionPolicy
-PageNodeImpl::GetInterventionPolicy(
-    resource_coordinator::mojom::PolicyControlledIntervention intervention) {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  // If there are no frames, or they've not all reported, then return kUnknown.
-  if (frame_node_count_ == 0u ||
-      intervention_policy_frames_reported_ != frame_node_count_) {
-    return resource_coordinator::mojom::InterventionPolicy::kUnknown;
-  }
-
-  // Recompute the policy if it is currently invalid.
-  const size_t kIndex = ToIndex(intervention);
-  DCHECK_LE(kIndex, kMaxInterventionIndex);
-  if (intervention_policy_[kIndex] ==
-      resource_coordinator::mojom::InterventionPolicy::kUnknown) {
-    RecomputeInterventionPolicy(intervention);
-    DCHECK_NE(resource_coordinator::mojom::InterventionPolicy::kUnknown,
-              intervention_policy_[kIndex]);
-  }
-
-  return intervention_policy_[kIndex];
-}
-
 void PageNodeImpl::JoinGraph() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  InvalidateAllInterventionPolicies();
 
   NodeBase::JoinGraph();
 }
@@ -363,6 +302,12 @@
   return lifecycle_state();
 }
 
+PageNodeImpl::InterventionPolicy PageNodeImpl::GetOriginTrialFreezePolicy()
+    const {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  return origin_trial_freeze_policy();
+}
+
 int64_t PageNodeImpl::GetNavigationID() const {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   return navigation_id();
@@ -403,77 +348,9 @@
   lifecycle_state_.SetAndMaybeNotify(this, lifecycle_state);
 }
 
-void PageNodeImpl::InvalidateAllInterventionPolicies() {
+void PageNodeImpl::SetOriginTrialFreezePolicy(InterventionPolicy policy) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  for (size_t i = 0; i <= kMaxInterventionIndex; ++i)
-    intervention_policy_[i] =
-        resource_coordinator::mojom::InterventionPolicy::kUnknown;
-}
-
-// TODO(chrisha): Move this all out to a decorator.
-void PageNodeImpl::MaybeInvalidateInterventionPolicies(
-    FrameNodeImpl* frame_node,
-    bool adding_frame) {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  // Ensure that the frame was already added or removed as expected.
-  DCHECK(!adding_frame || GraphImplOperations::HasFrame(this, frame_node));
-
-  // Determine whether or not the frames had all reported prior to this change.
-  const size_t prior_frame_count = frame_node_count_ + (adding_frame ? -1 : 1);
-  const bool frames_all_reported_prior =
-      prior_frame_count > 0 &&
-      intervention_policy_frames_reported_ == prior_frame_count;
-
-  // If the previous state was considered fully reported, then aggregation may
-  // have occurred. Adding or removing a frame (even one that is fully reported)
-  // needs to invalidate that aggregation. Invalidation could happen on every
-  // single frame addition and removal, but only doing this when the previous
-  // state was fully reported reduces unnecessary invalidations.
-  if (frames_all_reported_prior)
-    InvalidateAllInterventionPolicies();
-
-  // Update the reporting frame count.
-  const bool frame_reported = frame_node->AreAllInterventionPoliciesSet();
-  if (frame_reported)
-    intervention_policy_frames_reported_ += adding_frame ? 1 : -1;
-
-  DCHECK_LE(intervention_policy_frames_reported_, frame_node_count_);
-}
-
-void PageNodeImpl::RecomputeInterventionPolicy(
-    resource_coordinator::mojom::PolicyControlledIntervention intervention) {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  const size_t kIndex = ToIndex(intervention);
-
-  // This should never be called with an empty frame tree.
-  DCHECK_NE(0u, frame_node_count_);
-
-  resource_coordinator::mojom::InterventionPolicy policy =
-      resource_coordinator::mojom::InterventionPolicy::kDefault;
-  GraphImplOperations::VisitFrameTreePreOrder(
-      this, [&policy, &kIndex](FrameNodeImpl* frame) -> bool {
-        // No frame should have an unknown policy, as aggregation should only be
-        // invoked after all frames have checked in.
-        DCHECK_NE(resource_coordinator::mojom::InterventionPolicy::kUnknown,
-                  frame->intervention_policy_[kIndex]);
-
-        // If any frame opts out then the whole frame tree opts out, even if
-        // other frames have opted in.
-        if (frame->intervention_policy_[kIndex] ==
-            resource_coordinator::mojom::InterventionPolicy::kOptOut) {
-          policy = resource_coordinator::mojom::InterventionPolicy::kOptOut;
-          return false;
-        }
-
-        // If any frame opts in and none opt out, then the whole tree opts in.
-        if (frame->intervention_policy_[kIndex] ==
-            resource_coordinator::mojom::InterventionPolicy::kOptIn) {
-          policy = resource_coordinator::mojom::InterventionPolicy::kOptIn;
-        }
-        return true;
-      });
-
-  intervention_policy_[kIndex] = policy;
+  origin_trial_freeze_policy_.SetAndMaybeNotify(this, policy);
 }
 
 }  // namespace performance_manager
diff --git a/chrome/browser/performance_manager/graph/page_node_impl.h b/chrome/browser/performance_manager/graph/page_node_impl.h
index 9e500231..45655ae 100644
--- a/chrome/browser/performance_manager/graph/page_node_impl.h
+++ b/chrome/browser/performance_manager/graph/page_node_impl.h
@@ -22,10 +22,9 @@
 
 class FrameNodeImpl;
 
-class PageNodeImpl : public PublicNodeImpl<PageNodeImpl, PageNode>,
-                     public TypedNodeBase<PageNodeImpl,
-                                          PageNode,
-                                          PageNodeObserver> {
+class PageNodeImpl
+    : public PublicNodeImpl<PageNodeImpl, PageNode>,
+      public TypedNodeBase<PageNodeImpl, PageNode, PageNodeObserver> {
  public:
   static constexpr NodeTypeEnum Type() { return NodeTypeEnum::kPage; }
 
@@ -41,9 +40,9 @@
   // dereferenced on the UI thread.
   const WebContentsProxy& contents_proxy() const;
 
-  void SetIsLoading(bool is_loading);
   void SetIsVisible(bool is_visible);
   void SetIsAudible(bool is_audible);
+  void SetIsLoading(bool is_loading);
   void SetUkmSourceId(ukm::SourceId ukm_source_id);
   void OnFaviconUpdated();
   void OnTitleUpdated();
@@ -79,6 +78,7 @@
   bool is_loading() const;
   ukm::SourceId ukm_source_id() const;
   LifecycleState lifecycle_state() const;
+  InterventionPolicy origin_trial_freeze_policy() const;
   const base::flat_set<FrameNodeImpl*>& main_frame_nodes() const;
   base::TimeTicks usage_estimate_time() const;
   base::TimeDelta cumulative_cpu_usage_estimate() const;
@@ -94,34 +94,6 @@
       uint64_t private_footprint_kb_estimate);
   void set_has_nonempty_beforeunload(bool has_nonempty_beforeunload);
 
-  // Invoked when a frame belonging to this page changes intervention policy
-  // values.
-  // TODO(chrisha): Move this out to a decorator.
-  void OnFrameInterventionPolicyChanged(
-      FrameNodeImpl* frame,
-      resource_coordinator::mojom::PolicyControlledIntervention intervention,
-      resource_coordinator::mojom::InterventionPolicy old_policy,
-      resource_coordinator::mojom::InterventionPolicy new_policy);
-
-  // Gets the current policy for the specified |intervention|, recomputing it
-  // from individual frame policies if necessary. Returns kUnknown until there
-  // are 1 or more frames, and they have all computed their local policy
-  // settings.
-  resource_coordinator::mojom::InterventionPolicy GetInterventionPolicy(
-      resource_coordinator::mojom::PolicyControlledIntervention intervention);
-
-  // Similar to GetInterventionPolicy, but doesn't trigger recomputes.
-  resource_coordinator::mojom::InterventionPolicy
-  GetRawInterventionPolicyForTesting(
-      resource_coordinator::mojom::PolicyControlledIntervention intervention)
-      const {
-    return intervention_policy_[static_cast<size_t>(intervention)];
-  }
-
-  size_t GetInterventionPolicyFramesReportedForTesting() const {
-    return intervention_policy_frames_reported_;
-  }
-
   void SetLifecycleStateForTesting(LifecycleState lifecycle_state) {
     SetLifecycleState(lifecycle_state);
   }
@@ -132,6 +104,7 @@
 
  private:
   friend class FrameNodeImpl;
+  friend class FreezeOriginTrialPolicyAggregatorAccess;
   friend class FrozenFrameAggregatorAccess;
   friend class PageAlmostIdleAccess;
 
@@ -144,6 +117,7 @@
   bool IsLoading() const override;
   ukm::SourceId GetUkmSourceID() const override;
   LifecycleState GetLifecycleState() const override;
+  InterventionPolicy GetOriginTrialFreezePolicy() const override;
   int64_t GetNavigationID() const override;
   base::TimeDelta GetTimeSinceLastNavigation() const override;
   const FrameNode* GetMainFrameNode() const override;
@@ -158,22 +132,7 @@
 
   void SetPageAlmostIdle(bool page_almost_idle);
   void SetLifecycleState(LifecycleState lifecycle_state);
-
-  // Invalidates all currently aggregated intervention policies.
-  void InvalidateAllInterventionPolicies();
-
-  // Invoked when adding or removing a frame. This will update
-  // |intervention_policy_frames_reported_| if necessary and potentially
-  // invalidate the aggregated intervention policies. This should be called
-  // after the frame has already been added or removed from
-  // |frame_nodes_|.
-  void MaybeInvalidateInterventionPolicies(FrameNodeImpl* frame_node,
-                                           bool adding_frame);
-
-  // Recomputes intervention policy aggregation. This is invoked on demand when
-  // a policy is queried.
-  void RecomputeInterventionPolicy(
-      resource_coordinator::mojom::PolicyControlledIntervention intervention);
+  void SetOriginTrialFreezePolicy(InterventionPolicy policy);
 
   // The WebContentsProxy associated with this page.
   const WebContentsProxy contents_proxy_;
@@ -220,49 +179,28 @@
   // zero if the page has never committed a navigation.
   int64_t navigation_id_ = 0;
 
-  // The aggregate intervention policy states for this page. These are
-  // aggregated from the corresponding per-frame values. If an individual value
-  // is kUnknown then a frame in the frame tree has changed values and
-  // a new aggregation is required.
-  resource_coordinator::mojom::InterventionPolicy
-      intervention_policy_[static_cast<size_t>(
-                               resource_coordinator::mojom::
-                                   PolicyControlledIntervention::kMaxValue) +
-                           1];
-
-  // The number of child frames that have checked in with initial intervention
-  // policy values. If this doesn't match the number of known child frames, then
-  // aggregation isn't possible. Child frames check in with all properties once
-  // immediately after document parsing, and the *last* value being set
-  // is used as a signal that the frame has reported.
-  size_t intervention_policy_frames_reported_ = 0;
-
   // The unique ID of the browser context that this page belongs to.
   const std::string browser_context_id_;
 
   // Page almost idle state. This is the output that is driven by the
   // PageAlmostIdleDecorator.
-  ObservedProperty::NotifiesOnlyOnChanges<
-      bool,
-      &PageNodeObserver::OnPageAlmostIdleChanged>
-      page_almost_idle_{false};
+  ObservedProperty::
+      NotifiesOnlyOnChanges<bool, &PageNodeObserver::OnPageAlmostIdleChanged>
+          page_almost_idle_{false};
   // Whether or not the page is visible. Driven by browser instrumentation.
   // Initialized on construction.
-  ObservedProperty::NotifiesOnlyOnChanges<
-      bool,
-      &PageNodeObserver::OnIsVisibleChanged>
+  ObservedProperty::NotifiesOnlyOnChanges<bool,
+                                          &PageNodeObserver::OnIsVisibleChanged>
       is_visible_{false};
   // Whether or not the page is audible. Driven by browser instrumentation.
   // Initialized on construction.
-  ObservedProperty::NotifiesOnlyOnChanges<
-      bool,
-      &PageNodeObserver::OnIsAudibleChanged>
+  ObservedProperty::NotifiesOnlyOnChanges<bool,
+                                          &PageNodeObserver::OnIsAudibleChanged>
       is_audible_{false};
   // The loading state. This is driven by instrumentation in the browser
   // process.
-  ObservedProperty::NotifiesOnlyOnChanges<
-      bool,
-      &PageNodeObserver::OnIsLoadingChanged>
+  ObservedProperty::NotifiesOnlyOnChanges<bool,
+                                          &PageNodeObserver::OnIsLoadingChanged>
       is_loading_{false};
   // The UKM source ID associated with the URL of the main frame of this page.
   ObservedProperty::NotifiesOnlyOnChanges<
@@ -275,6 +213,12 @@
       LifecycleState,
       &PageNodeObserver::OnPageLifecycleStateChanged>
       lifecycle_state_{LifecycleState::kRunning};
+  // The origin trial freeze policy of this page. This is aggregated from the
+  // origin trial freeze policy of each current frame in the frame tree.
+  ObservedProperty::NotifiesOnlyOnChanges<
+      InterventionPolicy,
+      &PageNodeObserver::OnPageOriginTrialFreezePolicyChanged>
+      origin_trial_freeze_policy_{InterventionPolicy::kDefault};
 
   // Storage for PageAlmostIdle user data.
   std::unique_ptr<NodeAttachedData> page_almost_idle_data_;
@@ -282,6 +226,10 @@
   // Inline storage for FrozenFrameAggregator user data.
   InternalNodeAttachedDataStorage<sizeof(uintptr_t) + 8> frozen_frame_data_;
 
+  // Inline storage for FreezeOriginTrialPolicyAggregatorAccess user data.
+  InternalNodeAttachedDataStorage<sizeof(uintptr_t) + 16>
+      freeze_origin_trial_policy_data_;
+
   DISALLOW_COPY_AND_ASSIGN(PageNodeImpl);
 };
 
diff --git a/chrome/browser/performance_manager/graph/page_node_impl_browsertest.cc b/chrome/browser/performance_manager/graph/page_node_impl_browsertest.cc
index 60c0df3..1a8727a 100644
--- a/chrome/browser/performance_manager/graph/page_node_impl_browsertest.cc
+++ b/chrome/browser/performance_manager/graph/page_node_impl_browsertest.cc
@@ -9,6 +9,7 @@
 #include "base/strings/string_util.h"
 #include "base/test/bind_test_util.h"
 #include "base/threading/thread_restrictions.h"
+#include "chrome/browser/performance_manager/decorators/freeze_origin_trial_policy_aggregator.h"
 #include "chrome/browser/performance_manager/graph/page_node_impl.h"
 #include "chrome/browser/performance_manager/performance_manager.h"
 #include "chrome/common/chrome_switches.h"
@@ -162,21 +163,18 @@
   ASSERT_TRUE(perf_manager);
   base::RunLoop run_loop;
   perf_manager->CallOnGraph(
-      FROM_HERE,
-      base::BindOnce(
-          [](base::OnceClosure quit_closure,
-             const resource_coordinator::mojom::InterventionPolicy
-                 expected_policy,
-             performance_manager::GraphImpl* graph) {
-            auto page_nodes = graph->GetAllPageNodeImpls();
-            EXPECT_EQ(1U, page_nodes.size());
-            auto policy = page_nodes[0]->GetInterventionPolicy(
-                resource_coordinator::mojom::PolicyControlledIntervention::
-                    kPageLifecycleTransitions);
-            EXPECT_EQ(expected_policy, policy);
-            std::move(quit_closure).Run();
-          },
-          run_loop.QuitClosure(), expected_policy));
+      FROM_HERE, base::BindOnce(
+                     [](base::OnceClosure quit_closure,
+                        const resource_coordinator::mojom::InterventionPolicy
+                            expected_policy,
+                        performance_manager::GraphImpl* graph) {
+                       auto page_nodes = graph->GetAllPageNodeImpls();
+                       EXPECT_EQ(1U, page_nodes.size());
+                       EXPECT_EQ(expected_policy,
+                                 page_nodes[0]->origin_trial_freeze_policy());
+                       std::move(quit_closure).Run();
+                     },
+                     run_loop.QuitClosure(), expected_policy));
   run_loop.Run();
 }
 
diff --git a/chrome/browser/performance_manager/graph/page_node_impl_unittest.cc b/chrome/browser/performance_manager/graph/page_node_impl_unittest.cc
index db003187..1ec268e 100644
--- a/chrome/browser/performance_manager/graph/page_node_impl_unittest.cc
+++ b/chrome/browser/performance_manager/graph/page_node_impl_unittest.cc
@@ -196,229 +196,6 @@
 
 namespace {
 
-const size_t kInterventionCount =
-    static_cast<size_t>(
-        resource_coordinator::mojom::PolicyControlledIntervention::kMaxValue) +
-    1;
-
-void ExpectRawInterventionPolicy(
-    resource_coordinator::mojom::InterventionPolicy policy,
-    const PageNodeImpl* page_node) {
-  for (size_t i = 0; i < kInterventionCount; ++i) {
-    EXPECT_EQ(
-        policy,
-        page_node->GetRawInterventionPolicyForTesting(
-            static_cast<
-                resource_coordinator::mojom::PolicyControlledIntervention>(i)));
-  }
-}
-
-void ExpectInterventionPolicy(
-    resource_coordinator::mojom::InterventionPolicy policy,
-    PageNodeImpl* page_node) {
-  for (size_t i = 0; i < kInterventionCount; ++i) {
-    EXPECT_EQ(
-        policy,
-        page_node->GetInterventionPolicy(
-            static_cast<
-                resource_coordinator::mojom::PolicyControlledIntervention>(i)));
-  }
-}
-
-void ExpectInitialInterventionPolicyAggregationWorks(
-    GraphImpl* mock_graph,
-    resource_coordinator::mojom::InterventionPolicy f0_policy,
-    resource_coordinator::mojom::InterventionPolicy f1_policy,
-    resource_coordinator::mojom::InterventionPolicy f0_policy_aggregated,
-    resource_coordinator::mojom::InterventionPolicy f0f1_policy_aggregated) {
-  TestNodeWrapper<ProcessNodeImpl> process =
-      TestNodeWrapper<ProcessNodeImpl>::Create(mock_graph);
-  TestNodeWrapper<PageNodeImpl> page =
-      TestNodeWrapper<PageNodeImpl>::Create(mock_graph);
-
-  // Check the initial values before any frames are added.
-  EXPECT_EQ(0u, page->GetInterventionPolicyFramesReportedForTesting());
-  ExpectRawInterventionPolicy(
-      resource_coordinator::mojom::InterventionPolicy::kUnknown, page.get());
-  ExpectInterventionPolicy(
-      resource_coordinator::mojom::InterventionPolicy::kUnknown, page.get());
-
-  // Create an initial frame.
-  TestNodeWrapper<FrameNodeImpl> f0 = TestNodeWrapper<FrameNodeImpl>::Create(
-      mock_graph, process.get(), page.get());
-  // Add a frame and expect the values to be invalidated. Reaggregate and
-  // ensure the appropriate value results.
-  f0->SetAllInterventionPoliciesForTesting(f0_policy);
-  EXPECT_EQ(1u, page->GetInterventionPolicyFramesReportedForTesting());
-  ExpectRawInterventionPolicy(
-      resource_coordinator::mojom::InterventionPolicy::kUnknown, page.get());
-  ExpectInterventionPolicy(f0_policy_aggregated, page.get());
-
-  TestNodeWrapper<FrameNodeImpl> f1 = TestNodeWrapper<FrameNodeImpl>::Create(
-      mock_graph, process.get(), page.get(), f0.get(), 1);
-  // Do it again. This time the raw values should be the same as the
-  // aggregated values above.
-  f1->SetAllInterventionPoliciesForTesting(f1_policy);
-  EXPECT_EQ(2u, page->GetInterventionPolicyFramesReportedForTesting());
-  ExpectRawInterventionPolicy(
-      resource_coordinator::mojom::InterventionPolicy::kUnknown, page.get());
-  ExpectInterventionPolicy(f0f1_policy_aggregated, page.get());
-
-  // Remove a frame and expect the values to be invalidated again.
-  f1.reset();
-  EXPECT_EQ(1u, page->GetInterventionPolicyFramesReportedForTesting());
-  ExpectRawInterventionPolicy(
-      resource_coordinator::mojom::InterventionPolicy::kUnknown, page.get());
-  ExpectInterventionPolicy(f0_policy_aggregated, page.get());
-}
-
-}  // namespace
-
-TEST_F(PageNodeImplTest, InitialInterventionPolicy) {
-  auto* mock_graph = graph();
-
-  // Tests all possible transitions where the frame node has its policy values
-  // set before being attached to the page node. This affectively tests the
-  // aggregation logic in isolation.
-
-  // Default x [Default, OptIn, OptOut]
-
-  ExpectInitialInterventionPolicyAggregationWorks(
-      mock_graph,
-      resource_coordinator::mojom::InterventionPolicy::kDefault /* f0_policy */,
-      resource_coordinator::mojom::InterventionPolicy::kDefault /* f1_policy */,
-      resource_coordinator::mojom::InterventionPolicy::
-          kDefault /* f0_policy_aggregated */,
-      resource_coordinator::mojom::InterventionPolicy::
-          kDefault /* f0f1_policy_aggregated */);
-
-  ExpectInitialInterventionPolicyAggregationWorks(
-      mock_graph,
-      resource_coordinator::mojom::InterventionPolicy::kDefault /* f0_policy */,
-      resource_coordinator::mojom::InterventionPolicy::kOptIn /* f1_policy */,
-      resource_coordinator::mojom::InterventionPolicy::
-          kDefault /* f0_policy_aggregated */,
-      resource_coordinator::mojom::InterventionPolicy::
-          kOptIn /* f0f1_policy_aggregated */);
-
-  ExpectInitialInterventionPolicyAggregationWorks(
-      mock_graph,
-      resource_coordinator::mojom::InterventionPolicy::kDefault /* f0_policy */,
-      resource_coordinator::mojom::InterventionPolicy::kOptOut /* f1_policy */,
-      resource_coordinator::mojom::InterventionPolicy::
-          kDefault /* f0_policy_aggregated */,
-      resource_coordinator::mojom::InterventionPolicy::
-          kOptOut /* f0f1_policy_aggregated */);
-
-  // OptIn x [Default, OptIn, OptOut]
-
-  ExpectInitialInterventionPolicyAggregationWorks(
-      mock_graph,
-      resource_coordinator::mojom::InterventionPolicy::kOptIn /* f0_policy */,
-      resource_coordinator::mojom::InterventionPolicy::kDefault /* f1_policy */,
-      resource_coordinator::mojom::InterventionPolicy::
-          kOptIn /* f0_policy_aggregated */,
-      resource_coordinator::mojom::InterventionPolicy::
-          kOptIn /* f0f1_policy_aggregated */);
-
-  ExpectInitialInterventionPolicyAggregationWorks(
-      mock_graph,
-      resource_coordinator::mojom::InterventionPolicy::kOptIn /* f0_policy */,
-      resource_coordinator::mojom::InterventionPolicy::kOptIn /* f1_policy */,
-      resource_coordinator::mojom::InterventionPolicy::
-          kOptIn /* f0_policy_aggregated */,
-      resource_coordinator::mojom::InterventionPolicy::
-          kOptIn /* f0f1_policy_aggregated */);
-
-  ExpectInitialInterventionPolicyAggregationWorks(
-      mock_graph,
-      resource_coordinator::mojom::InterventionPolicy::kOptIn /* f0_policy */,
-      resource_coordinator::mojom::InterventionPolicy::kOptOut /* f1_policy */,
-      resource_coordinator::mojom::InterventionPolicy::
-          kOptIn /* f0_policy_aggregated */,
-      resource_coordinator::mojom::InterventionPolicy::
-          kOptOut /* f0f1_policy_aggregated */);
-
-  // OptOut x [Default, OptIn, OptOut]
-
-  ExpectInitialInterventionPolicyAggregationWorks(
-      mock_graph,
-      resource_coordinator::mojom::InterventionPolicy::kOptOut /* f0_policy */,
-      resource_coordinator::mojom::InterventionPolicy::kDefault /* f1_policy */,
-      resource_coordinator::mojom::InterventionPolicy::
-          kOptOut /* f0_policy_aggregated */,
-      resource_coordinator::mojom::InterventionPolicy::
-          kOptOut /* f0f1_policy_aggregated */);
-
-  ExpectInitialInterventionPolicyAggregationWorks(
-      mock_graph,
-      resource_coordinator::mojom::InterventionPolicy::kOptOut /* f0_policy */,
-      resource_coordinator::mojom::InterventionPolicy::kOptIn /* f1_policy */,
-      resource_coordinator::mojom::InterventionPolicy::
-          kOptOut /* f0_policy_aggregated */,
-      resource_coordinator::mojom::InterventionPolicy::
-          kOptOut /* f0f1_policy_aggregated */);
-
-  ExpectInitialInterventionPolicyAggregationWorks(
-      mock_graph,
-      resource_coordinator::mojom::InterventionPolicy::kOptOut /* f0_policy */,
-      resource_coordinator::mojom::InterventionPolicy::kOptOut /* f1_policy */,
-      resource_coordinator::mojom::InterventionPolicy::
-          kOptOut /* f0_policy_aggregated */,
-      resource_coordinator::mojom::InterventionPolicy::
-          kOptOut /* f0f1_policy_aggregated */);
-}
-
-TEST_F(PageNodeImplTest, IncrementalInterventionPolicy) {
-  auto* mock_graph = graph();
-
-  TestNodeWrapper<ProcessNodeImpl> process =
-      TestNodeWrapper<ProcessNodeImpl>::Create(mock_graph);
-  TestNodeWrapper<PageNodeImpl> page =
-      TestNodeWrapper<PageNodeImpl>::Create(mock_graph);
-
-  // Create two frames and immediately attach them to the page.
-  TestNodeWrapper<FrameNodeImpl> f0 = TestNodeWrapper<FrameNodeImpl>::Create(
-      mock_graph, process.get(), page.get());
-  TestNodeWrapper<FrameNodeImpl> f1 = TestNodeWrapper<FrameNodeImpl>::Create(
-      mock_graph, process.get(), page.get(), f0.get(), 1);
-  EXPECT_EQ(0u, page->GetInterventionPolicyFramesReportedForTesting());
-  EXPECT_EQ(0u, page->GetInterventionPolicyFramesReportedForTesting());
-  EXPECT_EQ(0u, page->GetInterventionPolicyFramesReportedForTesting());
-
-  // Set the policies on the first frame. This should be observed by the page
-  // node, but aggregation should still not be possible.
-  f0->SetAllInterventionPoliciesForTesting(
-      resource_coordinator::mojom::InterventionPolicy::kDefault);
-  EXPECT_EQ(1u, page->GetInterventionPolicyFramesReportedForTesting());
-  ExpectRawInterventionPolicy(
-      resource_coordinator::mojom::InterventionPolicy::kUnknown, page.get());
-  ExpectInterventionPolicy(
-      resource_coordinator::mojom::InterventionPolicy::kUnknown, page.get());
-
-  // Now set the policy on the second frame. This should be observed and an
-  // aggregated page policy value should now be available.
-  f1->SetAllInterventionPoliciesForTesting(
-      resource_coordinator::mojom::InterventionPolicy::kDefault);
-  EXPECT_EQ(2u, page->GetInterventionPolicyFramesReportedForTesting());
-  ExpectRawInterventionPolicy(
-      resource_coordinator::mojom::InterventionPolicy::kUnknown, page.get());
-  ExpectInterventionPolicy(
-      resource_coordinator::mojom::InterventionPolicy::kDefault, page.get());
-
-  // Change the policy value on a frame and expect a new aggregation to be
-  // required.
-  f1->SetAllInterventionPoliciesForTesting(
-      resource_coordinator::mojom::InterventionPolicy::kOptIn);
-  EXPECT_EQ(2u, page->GetInterventionPolicyFramesReportedForTesting());
-  ExpectRawInterventionPolicy(
-      resource_coordinator::mojom::InterventionPolicy::kUnknown, page.get());
-  ExpectInterventionPolicy(
-      resource_coordinator::mojom::InterventionPolicy::kOptIn, page.get());
-}
-
-namespace {
-
 class LenientMockObserver : public PageNodeImpl::Observer {
  public:
   LenientMockObserver() {}
@@ -431,6 +208,7 @@
   MOCK_METHOD1(OnIsLoadingChanged, void(const PageNode*));
   MOCK_METHOD1(OnUkmSourceIdChanged, void(const PageNode*));
   MOCK_METHOD1(OnPageLifecycleStateChanged, void(const PageNode*));
+  MOCK_METHOD1(OnPageOriginTrialFreezePolicyChanged, void(const PageNode*));
   MOCK_METHOD1(OnPageAlmostIdleChanged, void(const PageNode*));
   MOCK_METHOD1(OnMainFrameNavigationCommitted, void(const PageNode*));
   MOCK_METHOD1(OnTitleUpdated, void(const PageNode*));
diff --git a/chrome/browser/performance_manager/performance_manager.cc b/chrome/browser/performance_manager/performance_manager.cc
index b6ea745d..81145d8 100644
--- a/chrome/browser/performance_manager/performance_manager.cc
+++ b/chrome/browser/performance_manager/performance_manager.cc
@@ -16,6 +16,7 @@
 #include "base/task/post_task.h"
 #include "base/task/task_traits.h"
 #include "build/build_config.h"
+#include "chrome/browser/performance_manager/decorators/freeze_origin_trial_policy_aggregator.h"
 #include "chrome/browser/performance_manager/decorators/frozen_frame_aggregator.h"
 #include "chrome/browser/performance_manager/decorators/page_almost_idle_decorator.h"
 #include "chrome/browser/performance_manager/decorators/process_metrics_decorator.h"
@@ -326,6 +327,7 @@
     std::unique_ptr<service_manager::Connector> connector) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
+  graph_.PassToGraph(std::make_unique<FreezeOriginTrialPolicyAggregator>());
   graph_.PassToGraph(std::make_unique<FrozenFrameAggregator>());
   graph_.PassToGraph(std::make_unique<PageAlmostIdleDecorator>());
   graph_.PassToGraph(std::make_unique<IsolationContextMetrics>());
diff --git a/chrome/browser/performance_manager/public/graph/frame_node.h b/chrome/browser/performance_manager/public/graph/frame_node.h
index 9b08b15..3cfdf8e 100644
--- a/chrome/browser/performance_manager/public/graph/frame_node.h
+++ b/chrome/browser/performance_manager/public/graph/frame_node.h
@@ -9,6 +9,7 @@
 #include "base/macros.h"
 #include "chrome/browser/performance_manager/public/frame_priority/frame_priority.h"
 #include "chrome/browser/performance_manager/public/graph/node.h"
+#include "services/resource_coordinator/public/mojom/coordination_unit.mojom.h"
 #include "services/resource_coordinator/public/mojom/lifecycle.mojom.h"
 
 class GURL;
@@ -52,6 +53,7 @@
 class FrameNode : public Node {
  public:
   using LifecycleState = resource_coordinator::mojom::LifecycleState;
+  using InterventionPolicy = resource_coordinator::mojom::InterventionPolicy;
   using Observer = FrameNodeObserver;
   using PriorityAndReason = frame_priority::PriorityAndReason;
 
@@ -103,6 +105,10 @@
   // FrameNodeObserver::OnFrameLifecycleStateChanged.
   virtual LifecycleState GetLifecycleState() const = 0;
 
+  // Returns the freeze policy set via origin trial. kDefault when no freeze
+  // policy is set via origin trial.
+  virtual InterventionPolicy GetOriginTrialFreezePolicy() const = 0;
+
   // Returns true if this frame had a non-empty before-unload handler at the
   // time of its last transition to the frozen lifecycle state. This is only
   // meaningful while the object is frozen.
@@ -125,9 +131,6 @@
   // true.
   virtual bool IsAdFrame() const = 0;
 
-  // Returns true if all intervention policies have been set for this frame.
-  virtual bool AreAllInterventionPoliciesSet() const = 0;
-
   // Returns the child workers of this frame. These are either dedicated workers
   // or shared workers created by this frame, or a service worker that handles
   // this frame's network requests.
@@ -146,6 +149,8 @@
 // implement the entire interface.
 class FrameNodeObserver {
  public:
+  using InterventionPolicy = resource_coordinator::mojom::InterventionPolicy;
+
   FrameNodeObserver();
   virtual ~FrameNodeObserver();
 
@@ -168,6 +173,11 @@
   // Invoked when the LifecycleState property changes.
   virtual void OnFrameLifecycleStateChanged(const FrameNode* frame_node) = 0;
 
+  // Invoked when the OriginTrialFreezePolicy changes.
+  virtual void OnOriginTrialFreezePolicyChanged(
+      const FrameNode* frame_node,
+      InterventionPolicy previous_value) = 0;
+
   // Invoked when the URL property changes.
   virtual void OnURLChanged(const FrameNode* frame_node) = 0;
 
@@ -201,6 +211,9 @@
   void OnIsCurrentChanged(const FrameNode* frame_node) override {}
   void OnNetworkAlmostIdleChanged(const FrameNode* frame_node) override {}
   void OnFrameLifecycleStateChanged(const FrameNode* frame_node) override {}
+  void OnOriginTrialFreezePolicyChanged(
+      const FrameNode* frame_node,
+      InterventionPolicy previous_value) override {}
   void OnURLChanged(const FrameNode* frame_node) override {}
   void OnIsAdFrameChanged(const FrameNode* frame_node) override {}
   void OnNonPersistentNotificationCreated(
diff --git a/chrome/browser/performance_manager/public/graph/page_node.h b/chrome/browser/performance_manager/public/graph/page_node.h
index 59da117b..7b82daf 100644
--- a/chrome/browser/performance_manager/public/graph/page_node.h
+++ b/chrome/browser/performance_manager/public/graph/page_node.h
@@ -12,7 +12,8 @@
 #include "chrome/browser/performance_manager/public/graph/node.h"
 #include "chrome/browser/performance_manager/public/web_contents_proxy.h"
 #include "services/metrics/public/cpp/ukm_source_id.h"
-#include "services/resource_coordinator/public/mojom/lifecycle.mojom-shared.h"
+#include "services/resource_coordinator/public/mojom/coordination_unit.mojom.h"
+#include "services/resource_coordinator/public/mojom/lifecycle.mojom.h"
 
 class GURL;
 
@@ -26,6 +27,7 @@
 // Extensions.
 class PageNode : public Node {
  public:
+  using InterventionPolicy = resource_coordinator::mojom::InterventionPolicy;
   using LifecycleState = resource_coordinator::mojom::LifecycleState;
   using Observer = PageNodeObserver;
   class ObserverDefaultImpl;
@@ -66,6 +68,9 @@
   // PageNodeObserver::OnPageLifecycleStateChanged.
   virtual LifecycleState GetLifecycleState() const = 0;
 
+  // Returns the freeze policy set via origin trial.
+  virtual InterventionPolicy GetOriginTrialFreezePolicy() const = 0;
+
   // Returns the navigation ID associated with the last committed navigation
   // event for the main frame of this page.
   // See PageNodeObserver::OnMainFrameNavigationCommitted.
@@ -116,22 +121,26 @@
 
   // Notifications of property changes.
 
-  // Invoked when the |is_visible| property changes.
+  // Invoked when the IsVisible property changes.
   virtual void OnIsVisibleChanged(const PageNode* page_node) = 0;
 
-  // Invoked when the |is_audible| property changes.
+  // Invoked when the IsAudible property changes.
   virtual void OnIsAudibleChanged(const PageNode* page_node) = 0;
 
-  // Invoked when the |is_loading| property changes.
+  // Invoked when the IsLoading property changes.
   virtual void OnIsLoadingChanged(const PageNode* page_node) = 0;
 
-  // Invoked when the |ukm_source_id| property changes.
+  // Invoked when the UkmSourceId property changes.
   virtual void OnUkmSourceIdChanged(const PageNode* page_node) = 0;
 
-  // Invoked when the |lifecycle_state| property changes.
+  // Invoked when the PageLifecycleState property changes.
   virtual void OnPageLifecycleStateChanged(const PageNode* page_node) = 0;
 
-  // Invoked when the |page_almost_idle| property changes.
+  // Invoked when the OriginTrialFreezePolicy property changes.
+  virtual void OnPageOriginTrialFreezePolicyChanged(
+      const PageNode* page_node) = 0;
+
+  // Invoked when the PageAlmostIdle property changes.
   virtual void OnPageAlmostIdleChanged(const PageNode* page_node) = 0;
 
   // This is fired when a main frame navigation commits. It indicates that the
@@ -172,6 +181,8 @@
   void OnIsLoadingChanged(const PageNode* page_node) override {}
   void OnUkmSourceIdChanged(const PageNode* page_node) override {}
   void OnPageLifecycleStateChanged(const PageNode* page_node) override {}
+  void OnPageOriginTrialFreezePolicyChanged(
+      const PageNode* page_node) override {}
   void OnPageAlmostIdleChanged(const PageNode* page_node) override {}
   void OnMainFrameNavigationCommitted(const PageNode* page_node) override {}
   void OnTitleUpdated(const PageNode* page_node) override {}
diff --git a/chrome/browser/performance_manager/webui_graph_dump_impl.h b/chrome/browser/performance_manager/webui_graph_dump_impl.h
index 1f2d5f4..88a0d0c 100644
--- a/chrome/browser/performance_manager/webui_graph_dump_impl.h
+++ b/chrome/browser/performance_manager/webui_graph_dump_impl.h
@@ -57,6 +57,10 @@
   void OnNetworkAlmostIdleChanged(const FrameNode* frame_node) override {}
   // Ignored.
   void OnFrameLifecycleStateChanged(const FrameNode* frame_node) override {}
+  // Ignored.
+  void OnOriginTrialFreezePolicyChanged(
+      const FrameNode* frame_node,
+      InterventionPolicy previous_value) override {}
   void OnURLChanged(const FrameNode* frame_node) override;
   // Ignored.
   void OnIsAdFrameChanged(const FrameNode* frame_node) override {}
@@ -75,6 +79,9 @@
   // Ignored.
   void OnPageLifecycleStateChanged(const PageNode* page_node) override {}
   // Ignored.
+  void OnPageOriginTrialFreezePolicyChanged(
+      const PageNode* page_node) override {}
+  // Ignored.
   void OnPageAlmostIdleChanged(const PageNode* page_node) override {}
   void OnMainFrameNavigationCommitted(const PageNode* page_node) override;
   void OnTitleUpdated(const PageNode* page_node) override {}  // Ignored.
diff --git a/chrome/browser/performance_monitor/wmi_refresher.cc b/chrome/browser/performance_monitor/wmi_refresher.cc
index b0055505..48f73e6e9 100644
--- a/chrome/browser/performance_monitor/wmi_refresher.cc
+++ b/chrome/browser/performance_monitor/wmi_refresher.cc
@@ -10,10 +10,7 @@
 #include <limits>
 #include <vector>
 
-#include "base/metrics/histogram_functions.h"
-#include "base/metrics/histogram_macros.h"
 #include "base/threading/scoped_blocking_call.h"
-#include "base/timer/elapsed_timer.h"
 #include "base/win/com_init_util.h"
 
 namespace performance_monitor {
@@ -50,8 +47,6 @@
 
 }  // namespace
 
-// There is an enum of the same name in tools/metrics/histograms/enums.xml.
-// Be sure to add new values there also.
 enum class WMIRefresher::InitStatus {
   kInitStatusOk,
   kLocalWMIConnectionError,
@@ -61,8 +56,6 @@
   kMaxValue = kRefresherAddEnumError
 };
 
-// There is an enum of the same name in tools/metrics/histograms/enums.xml.
-// Be sure to add new values there also.
 enum class WMIRefresher::RefreshStatus {
   kRefreshOk,
   kRefreshFailed,
@@ -86,9 +79,6 @@
   WMIRefresher::InitStatus result = WMIRefresher::InitStatus::kInitStatusOk;
   InitializeDiskIdleTimeConfigImpl(&result);
 
-  UMA_HISTOGRAM_ENUMERATION(
-      "Memory.Experimental.WMIRefresher.InitDiskIdleTimeConfigStatus", result);
-
   initialized_called_ = true;
 
   return result == InitStatus::kInitStatusOk;
@@ -101,24 +91,17 @@
   base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
                                                 base::BlockingType::MAY_BLOCK);
 
-  base::ElapsedTimer elapsed_timer;
-
   // This assumes that CoInitialize(Ex) has already been called on this thread.
   AssertComApartmentType(base::win::ComApartmentType::MTA);
 
-  base::ElapsedTimer elapsed_timer_create_connection;
   if (!base::win::CreateLocalWmiConnection(true /* set_blanket */,
                                            &wmi_services_)) {
     LOG(ERROR) << "Unable to create the local WMI connection";
     *res = InitStatus::kLocalWMIConnectionError;
     return;
   }
-  base::UmaHistogramTimes(
-      "Memory.Experimental.WMIRefresher.Init.CreateLocalWmiConnectionDuration",
-      elapsed_timer_create_connection.Elapsed());
 
   HRESULT hr = S_OK;
-  base::ElapsedTimer elapsed_timer_cocreate_instance;
   // Creates the WMI refresher interface.
   if (FAILED(hr = ::CoCreateInstance(CLSID_WbemRefresher, nullptr,
                                      CLSCTX_INPROC_SERVER,
@@ -127,9 +110,6 @@
     *res = InitStatus::kRefresherCreationError;
     return;
   }
-  base::UmaHistogramTimes(
-      "Memory.Experimental.WMIRefresher.Init.CoCreateInstanceDuration",
-      elapsed_timer_cocreate_instance.Elapsed());
 
   // Get the interface to configure the refresher.
   ComPtr<IWbemConfigureRefresher> wmi_refresher_config;
@@ -141,7 +121,6 @@
   }
 
   long wmi_refresher_enum_id = 0;
-  base::ElapsedTimer elapsed_timer_add_enum;
   // Add the enumerator for the disk performance data.
   hr = wmi_refresher_config->AddEnum(
       wmi_services_.Get(), L"Win32_PerfRawData_PerfDisk_PhysicalDisk", 0,
@@ -152,17 +131,9 @@
     *res = InitStatus::kRefresherAddEnumError;
     return;
   }
-  // This call can takes several seconds to complete.
-  base::UmaHistogramLongTimes(
-      "Memory.Experimental.WMIRefresher.Init.AddEnumDuration2",
-      elapsed_timer_add_enum.Elapsed());
 
   *res = InitStatus::kInitStatusOk;
 
-  base::UmaHistogramLongTimes(
-      "Memory.Experimental.WMIRefresher.InitializeDiskIdleTimeConfigDuration2",
-      elapsed_timer.Elapsed());
-
   refresh_ready_ = true;
 }
 
@@ -171,9 +142,6 @@
   DCHECK(initialized_called_);
   RefreshStatus result = WMIRefresher::RefreshStatus::kRefreshOk;
   auto idle_time = RefreshAndGetDiskIdleTimeInPercentImpl(&result);
-
-  UMA_HISTOGRAM_ENUMERATION(
-      "Memory.Experimental.WMIRefresher.RefreshDiskIdleTimeStatus", result);
   return idle_time;
 }
 
@@ -184,10 +152,6 @@
   DCHECK(refresh_ready_);
   AssertComApartmentType(base::win::ComApartmentType::MTA);
 
-  // Don't use the SCOPED_UMA_HISTOGRAM_TIMER to ensure that we only report this
-  // on success.
-  base::ElapsedTimer elapsed_timer;
-
   HRESULT hr = wmi_refresher_->Refresh(WBEM_FLAG_REFRESH_AUTO_RECONNECT);
   if (FAILED(hr)) {
     LOG(ERROR) << "Error while trying to use the WMI refresher.";
@@ -292,9 +256,6 @@
   latest_percent_idle_time_val_ = new_idle_time;
   latest_percent_idle_time_base_val_ = new_percent_idle_time_base;
 
-  UMA_HISTOGRAM_TIMES(
-      "Memory.Experimental.WMIRefresher.RefreshDiskIdleTimeDuration",
-      elapsed_timer.Elapsed());
   *res = RefreshStatus::kRefreshOk;
   return idle_time;
 }
diff --git a/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc b/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc
index aa542f8..f7d44939 100644
--- a/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc
+++ b/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc
@@ -7,6 +7,7 @@
 #include "base/memory/ptr_util.h"
 #include "chrome/browser/android/android_theme_resources.h"
 #include "chrome/browser/infobars/infobar_service.h"
+#include "chrome/browser/permissions/permission_features.h"
 #include "chrome/browser/permissions/permission_prompt_android.h"
 #include "chrome/browser/permissions/permission_request.h"
 #include "chrome/browser/permissions/permission_util.h"
@@ -23,9 +24,10 @@
 infobars::InfoBar* GroupedPermissionInfoBarDelegate::Create(
     const base::WeakPtr<PermissionPromptAndroid>& permission_prompt,
     InfoBarService* infobar_service) {
-  return infobar_service->AddInfoBar(
-      std::make_unique<GroupedPermissionInfoBar>(base::WrapUnique(
-          new GroupedPermissionInfoBarDelegate(permission_prompt))));
+  // WrapUnique needs to be used because the constructor is private.
+  return infobar_service->AddInfoBar(std::make_unique<GroupedPermissionInfoBar>(
+      base::WrapUnique(new GroupedPermissionInfoBarDelegate(permission_prompt,
+                                                            infobar_service))));
 }
 
 size_t GroupedPermissionInfoBarDelegate::PermissionCount() const {
@@ -37,12 +39,28 @@
   return permission_prompt_->GetContentSettingType(position);
 }
 
+base::string16 GroupedPermissionInfoBarDelegate::GetCompactMessageText() const {
+  return l10n_util::GetStringUTF16(
+      IDS_NOTIFICATION_QUIET_PERMISSION_MINI_INFOBAR_MESSAGE);
+}
+
+base::string16 GroupedPermissionInfoBarDelegate::GetCompactLinkText() const {
+  return l10n_util::GetStringUTF16(
+      IDS_NOTIFICATION_QUIET_PERMISSION_MINI_INFOBAR_DETAILS_LINK);
+}
+
+base::string16 GroupedPermissionInfoBarDelegate::GetDescriptionText() const {
+  return l10n_util::GetStringUTF16(
+      IDS_NOTIFICATION_QUIET_PERMISSION_PROMPT_MESSAGE);
+}
+
 int GroupedPermissionInfoBarDelegate::GetIconId() const {
   return permission_prompt_->GetIconId();
 }
 
 base::string16 GroupedPermissionInfoBarDelegate::GetMessageText() const {
-  return permission_prompt_->GetMessageText();
+  return l10n_util::GetStringUTF16(
+      IDS_NOTIFICATION_QUIET_PERMISSION_INFOBAR_TITLE);
 }
 
 bool GroupedPermissionInfoBarDelegate::Accept() {
@@ -52,9 +70,8 @@
 }
 
 bool GroupedPermissionInfoBarDelegate::Cancel() {
-  if (permission_prompt_)
-    permission_prompt_->Deny();
-  return true;
+  // The infobar needs to be kept open after the "Manage" button is clicked.
+  return false;
 }
 
 void GroupedPermissionInfoBarDelegate::InfoBarDismissed() {
@@ -62,10 +79,30 @@
     permission_prompt_->Closing();
 }
 
+bool GroupedPermissionInfoBarDelegate::LinkClicked(
+    WindowOpenDisposition disposition) {
+  return false;
+}
+
+// static
+bool GroupedPermissionInfoBarDelegate::ShouldShowMiniInfobar(
+    ContentSettingsType type) {
+  return QuietNotificationsPromptConfig::UIFlavorToUse() ==
+             QuietNotificationsPromptConfig::UIFlavor::MINI_INFOBAR &&
+         type == CONTENT_SETTINGS_TYPE_NOTIFICATIONS;
+}
+
 GroupedPermissionInfoBarDelegate::GroupedPermissionInfoBarDelegate(
-    const base::WeakPtr<PermissionPromptAndroid>& permission_prompt)
-    : permission_prompt_(permission_prompt) {
-  DCHECK(permission_prompt);
+    const base::WeakPtr<PermissionPromptAndroid>& permission_prompt,
+    InfoBarService* infobar_service)
+    : permission_prompt_(permission_prompt), infobar_service_(infobar_service) {
+  DCHECK(permission_prompt_);
+  DCHECK(infobar_service_);
+
+  // Infobars are only used for NOTIFICATIONS right now, therefore strings can
+  // be hardcoded for that type.
+  DCHECK_EQ(permission_prompt_->GetContentSettingType(0u),
+            CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
 }
 
 infobars::InfoBarDelegate::InfoBarIdentifier
@@ -79,8 +116,10 @@
 
 base::string16 GroupedPermissionInfoBarDelegate::GetButtonLabel(
     InfoBarButton button) const {
-  return l10n_util::GetStringUTF16((button == BUTTON_OK) ? IDS_PERMISSION_ALLOW
-                                                         : IDS_PERMISSION_DENY);
+  return l10n_util::GetStringUTF16(
+      (button == BUTTON_OK)
+          ? IDS_NOTIFICATIONS_QUIET_PERMISSION_BUBBLE_ALLOW_BUTTON
+          : IDS_NOTIFICATION_BUTTON_MANAGE);
 }
 
 bool GroupedPermissionInfoBarDelegate::EqualsDelegate(
diff --git a/chrome/browser/permissions/grouped_permission_infobar_delegate_android.h b/chrome/browser/permissions/grouped_permission_infobar_delegate_android.h
index 9b8a553..546fbed40 100644
--- a/chrome/browser/permissions/grouped_permission_infobar_delegate_android.h
+++ b/chrome/browser/permissions/grouped_permission_infobar_delegate_android.h
@@ -14,10 +14,10 @@
 class InfoBarService;
 class PermissionPromptAndroid;
 
-// An InfoBar that displays a group of permission requests, each of which can be
-// allowed or blocked independently.
-// TODO(timloh): This is incorrectly named as we've removed grouped permissions,
-// rename it to PermissionInfoBarDelegate once crbug.com/606138 is done.
+// An InfoBar that displays a permission request.
+//
+// TODO(crbug.com/986737): This class is only used for displaying notification
+// permission requests and has nothing to do with grouped permissions anymore.
 class GroupedPermissionInfoBarDelegate : public ConfirmInfoBarDelegate {
  public:
   // Public so we can have std::unique_ptr<GroupedPermissionInfoBarDelegate>.
@@ -31,6 +31,15 @@
 
   ContentSettingsType GetContentSettingType(size_t position) const;
 
+  // Returns the string to show in the infobar in its compact state.
+  base::string16 GetCompactMessageText() const;
+
+  // Returns the title of the link to show in the infobar in its compact state.
+  base::string16 GetCompactLinkText() const;
+
+  // Returns the secondary string to show in the infobar in the expanded state.
+  base::string16 GetDescriptionText() const;
+
   // InfoBarDelegate:
   int GetIconId() const override;
 
@@ -39,10 +48,15 @@
   bool Accept() override;
   bool Cancel() override;
   void InfoBarDismissed() override;
+  bool LinkClicked(WindowOpenDisposition disposition) override;
+
+  // Returns true if we should show the permission request as a mini-infobar.
+  static bool ShouldShowMiniInfobar(ContentSettingsType type);
 
  private:
   GroupedPermissionInfoBarDelegate(
-      const base::WeakPtr<PermissionPromptAndroid>& permission_prompt);
+      const base::WeakPtr<PermissionPromptAndroid>& permission_prompt,
+      InfoBarService* infobar_service);
 
   // ConfirmInfoBarDelegate:
   InfoBarIdentifier GetIdentifier() const override;
@@ -53,6 +67,7 @@
   bool EqualsDelegate(infobars::InfoBarDelegate* delegate) const override;
 
   base::WeakPtr<PermissionPromptAndroid> permission_prompt_;
+  InfoBarService* infobar_service_;
 
   DISALLOW_COPY_AND_ASSIGN(GroupedPermissionInfoBarDelegate);
 };
diff --git a/chrome/browser/permissions/permission_features.cc b/chrome/browser/permissions/permission_features.cc
index 170d4da..d88715a 100644
--- a/chrome/browser/permissions/permission_features.cc
+++ b/chrome/browser/permissions/permission_features.cc
@@ -11,6 +11,8 @@
 
 #if defined(OS_ANDROID)
 
+// Keep in sync with "PermissionFieldTrial.java"
+
 const char kQuietNotificationPromptsUIFlavourParameterName[] = "ui_flavour";
 const char kQuietNotificationPromptsHeadsUpNotification[] =
     "heads_up_notification";
diff --git a/chrome/browser/permissions/permission_prompt_android.cc b/chrome/browser/permissions/permission_prompt_android.cc
index dd4bdeb3..2fe5ef5 100644
--- a/chrome/browser/permissions/permission_prompt_android.cc
+++ b/chrome/browser/permissions/permission_prompt_android.cc
@@ -26,6 +26,16 @@
       weak_factory_(this) {
   DCHECK(web_contents);
 
+  InfoBarService* infobar_service =
+      InfoBarService::FromWebContents(web_contents_);
+  if (infobar_service &&
+      GroupedPermissionInfoBarDelegate::ShouldShowMiniInfobar(
+          GetContentSettingType(0u /* position */))) {
+    GroupedPermissionInfoBarDelegate::Create(weak_factory_.GetWeakPtr(),
+                                             infobar_service);
+    return;
+  }
+
   if (PermissionRequestNotificationAndroid::ShouldShowAsNotification(
           GetContentSettingType(0u /* position */))) {
     permission_request_notification_ =
@@ -72,7 +82,7 @@
 ContentSettingsType PermissionPromptAndroid::GetContentSettingType(
     size_t position) const {
   const std::vector<PermissionRequest*>& requests = delegate_->Requests();
-  DCHECK_LT(position, requests.size());
+  CHECK_LT(position, requests.size());
   return requests[position]->GetContentSettingsType();
 }
 
diff --git a/chrome/browser/permissions/permission_request_notification_android.cc b/chrome/browser/permissions/permission_request_notification_android.cc
index c142ee9f..439d58f 100644
--- a/chrome/browser/permissions/permission_request_notification_android.cc
+++ b/chrome/browser/permissions/permission_request_notification_android.cc
@@ -120,6 +120,7 @@
       permission_request->GetOrigin(),
       message_center::NotifierId(permission_request->GetOrigin()), data,
       nullptr);
+  notification_->set_silent(true);
 
   permission_request_notification_handler_->AddNotificationDelegate(
       notification_->id(), this);
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
index a19f05b..c28a2c19 100644
--- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc
+++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
@@ -762,7 +762,7 @@
     chromeos::assistant::prefs::kAssistantContextEnabled,
     base::Value::Type::BOOLEAN },
   { key::kVoiceInteractionHotwordEnabled,
-    arc::prefs::kVoiceInteractionHotwordEnabled,
+    chromeos::assistant::prefs::kAssistantHotwordEnabled,
     base::Value::Type::BOOLEAN },
   { key::kDevicePowerPeakShiftEnabled,
     ash::prefs::kPowerPeakShiftEnabled,
diff --git a/chrome/browser/policy/policy_browsertest.cc b/chrome/browser/policy/policy_browsertest.cc
index eba99da..1b855c7 100644
--- a/chrome/browser/policy/policy_browsertest.cc
+++ b/chrome/browser/policy/policy_browsertest.cc
@@ -4331,11 +4331,13 @@
 
 IN_PROC_BROWSER_TEST_F(PolicyTest, AssistantHotwordEnabled) {
   PrefService* prefs = browser()->profile()->GetPrefs();
+  EXPECT_FALSE(prefs->IsManagedPreference(
+      chromeos::assistant::prefs::kAssistantHotwordEnabled));
   EXPECT_FALSE(
-      prefs->IsManagedPreference(arc::prefs::kVoiceInteractionHotwordEnabled));
-  EXPECT_FALSE(prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled));
-  prefs->SetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled, true);
-  EXPECT_TRUE(prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled));
+      prefs->GetBoolean(chromeos::assistant::prefs::kAssistantHotwordEnabled));
+  prefs->SetBoolean(chromeos::assistant::prefs::kAssistantHotwordEnabled, true);
+  EXPECT_TRUE(
+      prefs->GetBoolean(chromeos::assistant::prefs::kAssistantHotwordEnabled));
 
   // Verifies that the Assistant hotword can be forced to always disabled.
   PolicyMap policies;
@@ -4343,22 +4345,27 @@
                POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD,
                std::make_unique<base::Value>(false), nullptr);
   UpdateProviderPolicy(policies);
-  EXPECT_TRUE(
-      prefs->IsManagedPreference(arc::prefs::kVoiceInteractionHotwordEnabled));
-  EXPECT_FALSE(prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled));
-  prefs->SetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled, true);
-  EXPECT_FALSE(prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled));
+  EXPECT_TRUE(prefs->IsManagedPreference(
+      chromeos::assistant::prefs::kAssistantHotwordEnabled));
+  EXPECT_FALSE(
+      prefs->GetBoolean(chromeos::assistant::prefs::kAssistantHotwordEnabled));
+  prefs->SetBoolean(chromeos::assistant::prefs::kAssistantHotwordEnabled, true);
+  EXPECT_FALSE(
+      prefs->GetBoolean(chromeos::assistant::prefs::kAssistantHotwordEnabled));
 
   // Verifies that the Assistant hotword can be forced to always enabled.
   policies.Set(key::kVoiceInteractionHotwordEnabled, POLICY_LEVEL_MANDATORY,
                POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD,
                std::make_unique<base::Value>(true), nullptr);
   UpdateProviderPolicy(policies);
+  EXPECT_TRUE(prefs->IsManagedPreference(
+      chromeos::assistant::prefs::kAssistantHotwordEnabled));
   EXPECT_TRUE(
-      prefs->IsManagedPreference(arc::prefs::kVoiceInteractionHotwordEnabled));
-  EXPECT_TRUE(prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled));
-  prefs->SetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled, false);
-  EXPECT_TRUE(prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled));
+      prefs->GetBoolean(chromeos::assistant::prefs::kAssistantHotwordEnabled));
+  prefs->SetBoolean(chromeos::assistant::prefs::kAssistantHotwordEnabled,
+                    false);
+  EXPECT_TRUE(
+      prefs->GetBoolean(chromeos::assistant::prefs::kAssistantHotwordEnabled));
 }
 
 #endif  // defined(OS_CHROMEOS)
diff --git a/chrome/browser/popup_operations_interactive_uitest.cc b/chrome/browser/popup_operations_interactive_uitest.cc
new file mode 100644
index 0000000..8b58b0d3
--- /dev/null
+++ b/chrome/browser/popup_operations_interactive_uitest.cc
@@ -0,0 +1,138 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/files/file_path.h"
+#include "base/macros.h"
+#include "base/run_loop.h"
+#include "base/strings/utf_string_conversions.h"
+#include "build/build_config.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_window.h"
+#include "chrome/browser/ui/tabs/tab_strip_model.h"
+#include "chrome/test/base/in_process_browser_test.h"
+#include "chrome/test/base/interactive_test_utils.h"
+#include "chrome/test/base/ui_test_utils.h"
+#include "content/public/browser/render_frame_host.h"
+#include "content/public/browser/web_contents.h"
+#include "content/public/test/browser_test_utils.h"
+#include "ui/base/test/ui_controls.h"
+
+namespace {
+
+const int kSelectHeight = 16;
+const int kSelectWidth = 44;
+const int kSelectOffsetX = 100;
+
+class PopupOperationsTest : public InProcessBrowserTest {
+ public:
+  PopupOperationsTest() {}
+
+  // InProcessBrowserTest:
+  void SetUpOnMainThread() override {
+    ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));
+  }
+
+  content::WebContents* GetActiveWebContents() {
+    return browser()->tab_strip_model()->GetActiveWebContents();
+  }
+
+  // Wait for the active web contents title to match |title|.
+  void WaitForTitle(const std::string& title) {
+    const base::string16 expected_title(base::ASCIIToUTF16(title));
+    content::TitleWatcher title_watcher(GetActiveWebContents(), expected_title);
+    ASSERT_EQ(expected_title, title_watcher.WaitAndGetTitle());
+  }
+
+  void NavigateAndWaitForLoad() {
+    ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));
+
+    // Navigate to the test page and wait for onload to be called.
+    const GURL url = ui_test_utils::GetTestUrl(
+        base::FilePath(),
+        base::FilePath(FILE_PATH_LITERAL("select_popup.html")));
+    ui_test_utils::NavigateToURL(browser(), url);
+    WaitForTitle("onload");
+  }
+
+  DISALLOW_COPY_AND_ASSIGN(PopupOperationsTest);
+};
+
+IN_PROC_BROWSER_TEST_F(PopupOperationsTest, Load) {
+  NavigateAndWaitForLoad();
+}
+
+#if defined(OS_MACOSX) || defined(OS_CHROMEOS)
+// OS_MACOSX: Missing automation provider support: http://crbug.com/1000752.
+#define MAYBE_OpenPopup DISABLED_OpenPopup
+#else
+#define MAYBE_OpenPopup OpenPopup
+#endif
+
+// Clicking on a select element should open its popup.
+IN_PROC_BROWSER_TEST_F(PopupOperationsTest, MAYBE_OpenPopup) {
+  NavigateAndWaitForLoad();
+
+  // Click on the third select to open its popup.
+  gfx::Rect bounds = GetActiveWebContents()->GetContainerBounds();
+  ui_controls::SendMouseMove(bounds.x() + kSelectWidth / 2 + kSelectOffsetX * 2,
+                             bounds.y() + kSelectHeight / 2);
+  ui_controls::SendMouseClick(ui_controls::LEFT);
+  WaitForTitle("onclick3");
+}
+
+#if defined(OS_MACOSX) || defined(OS_CHROMEOS)
+// OS_MACOSX: Missing automation provider support: http://crbug.com/1000752.
+#define MAYBE_ChangeValue DISABLED_ChangeValue
+#else
+#define MAYBE_ChangeValue ChangeValue
+#endif
+
+// Clicking on a select element should open its popup and move focus to the
+// new popup.
+IN_PROC_BROWSER_TEST_F(PopupOperationsTest, MAYBE_ChangeValue) {
+  NavigateAndWaitForLoad();
+
+  // Open the first popup and change the value by pressing UP and Enter.
+  gfx::Rect bounds = GetActiveWebContents()->GetContainerBounds();
+  ui_controls::SendMouseMove(bounds.x() + kSelectWidth / 2,
+                             bounds.y() + kSelectHeight / 2);
+  ui_controls::SendMouseClick(ui_controls::LEFT);
+  ASSERT_TRUE(ui_test_utils::SendKeyPressSync(browser(), ui::VKEY_UP, false,
+                                              false, false, false));
+  ASSERT_TRUE(ui_test_utils::SendKeyPressSync(browser(), ui::VKEY_RETURN, false,
+                                              false, false, false));
+  WaitForTitle("onchange1");
+}
+
+#if defined(OS_MACOSX) || defined(OS_CHROMEOS)
+// OS_MACOSX: Missing automation provider support: http://crbug.com/1000752.
+#define MAYBE_OpenClosePopup DISABLED_OpenClosePopup
+#else
+#define MAYBE_OpenClosePopup OpenClosePopup
+#endif
+
+// Clicking on a select element while another select element has its
+// popup already open, should open the popup of the clicked select element and
+// move the focus to the new popup.
+IN_PROC_BROWSER_TEST_F(PopupOperationsTest, MAYBE_OpenClosePopup) {
+  NavigateAndWaitForLoad();
+
+  // Open the first popup, click on the second select to open its popup and
+  // change its value.
+  gfx::Rect bounds = GetActiveWebContents()->GetContainerBounds();
+  ui_controls::SendMouseMove(bounds.x() + kSelectWidth / 2,
+                             bounds.y() + kSelectHeight / 2);
+  ui_controls::SendMouseClick(ui_controls::LEFT);
+
+  ui_controls::SendMouseMove(bounds.x() + kSelectWidth / 2 + kSelectOffsetX,
+                             bounds.y() + kSelectHeight / 2);
+  ui_controls::SendMouseClick(ui_controls::LEFT);
+  ASSERT_TRUE(ui_test_utils::SendKeyPressSync(browser(), ui::VKEY_UP, false,
+                                              false, false, false));
+  ASSERT_TRUE(ui_test_utils::SendKeyPressSync(browser(), ui::VKEY_RETURN, false,
+                                              false, false, false));
+  WaitForTitle("onchange2");
+}
+
+}  // namespace
diff --git a/chrome/browser/resources/bookmarks/folder_node.html b/chrome/browser/resources/bookmarks/folder_node.html
index bfb8b4d..4c57f2a 100644
--- a/chrome/browser/resources/bookmarks/folder_node.html
+++ b/chrome/browser/resources/bookmarks/folder_node.html
@@ -24,7 +24,7 @@
         height: 40px;
         min-width: fit-content;
         overflow: hidden;
-        padding-inline-start: calc(var(--node-depth, 0) * 10px);
+        padding-inline-start: calc(var(--node-depth, 0) * 15px);
       }
 
       #arrow {
diff --git a/chrome/browser/resources/chromeos/add_supervision/add_supervision.js b/chrome/browser/resources/chromeos/add_supervision/add_supervision.js
index 9c6e3ec..3edff02 100644
--- a/chrome/browser/resources/chromeos/add_supervision/add_supervision.js
+++ b/chrome/browser/resources/chromeos/add_supervision/add_supervision.js
@@ -33,7 +33,6 @@
               requestUrl.host.endsWith('.' + allowedHost));
 }
 
-let server = null;
 const addSupervisionHandler =
     addSupervision.mojom.AddSupervisionHandler.getRemote();
 
@@ -42,7 +41,7 @@
 
   /** Attempts to close the dialog */
   closeDialog_: function() {
-    server.requestClose();
+    this.server.requestClose();
   },
 
   /** @override */
@@ -95,7 +94,8 @@
       webview.src = url.toString();
 
       // Set up the server.
-      server = new AddSupervisionAPIServer(webview, url, eventOriginFilter);
+      this.server =
+          new AddSupervisionAPIServer(webview, url, eventOriginFilter);
     });
   },
 });
diff --git a/chrome/browser/resources/chromeos/chromevox/tools/publish_webstore_extension.py b/chrome/browser/resources/chromeos/chromevox/tools/publish_webstore_extension.py
index cace598..36bc13ba 100755
--- a/chrome/browser/resources/chromeos/chromevox/tools/publish_webstore_extension.py
+++ b/chrome/browser/resources/chromeos/chromevox/tools/publish_webstore_extension.py
@@ -55,8 +55,8 @@
 def GetVersion():
   '''Returns the chrome version string.'''
   filename = os.path.join(_CHROME_SOURCE_DIR, 'chrome', 'VERSION')
-  values = version.fetch_values([filename])
-  return version.subst_template('@MAJOR@.@MINOR@.@BUILD@.@PATCH@', values)
+  values = version.FetchValues([filename])
+  return version.SubstTemplate('@MAJOR@.@MINOR@.@BUILD@.@PATCH@', values)
 
 
 def MakeChromeVoxManifest():
diff --git a/chrome/browser/resources/chromeos/switch_access/menu_manager.js b/chrome/browser/resources/chromeos/switch_access/menu_manager.js
index 943a97e..44dd645 100644
--- a/chrome/browser/resources/chromeos/switch_access/menu_manager.js
+++ b/chrome/browser/resources/chromeos/switch_access/menu_manager.js
@@ -69,6 +69,14 @@
     this.selectionExists_ = false;
 
     /**
+     * Callback for reloading the menu when the text selection has changed.
+     * Bind creates a new function, so this function is saved as a field to
+     * add and remove the selection event listener properly.
+     * @private {function(chrome.automation.AutomationEvent): undefined}
+     */
+    this.onSelectionChanged_ = this.reloadMenuForSelectionChange_.bind(this);
+
+    /**
      * Keeps track of when the clipboard is empty.
      * @private {boolean}
      */
@@ -142,10 +150,11 @@
     this.closeCurrentMenu_();
     this.inMenu_ = false;
 
-    if (window.switchAccess.improvedTextInputEnabled()) {
+    if (window.switchAccess.improvedTextInputEnabled() &&
+        this.menuOriginNode_) {
       this.menuOriginNode_.removeEventListener(
           chrome.automation.EventType.TEXT_SELECTION_CHANGED,
-          this.onSelectionChanged_.bind(this), false /** Don't use capture. */);
+          this.onSelectionChanged_, false /** Don't use capture. */);
     }
     this.menuOriginNode_ = null;
 
@@ -220,14 +229,22 @@
     if (!shouldReloadMenu && window.switchAccess.improvedTextInputEnabled()) {
       this.menuOriginNode_.addEventListener(
           chrome.automation.EventType.TEXT_SELECTION_CHANGED,
-          this.onSelectionChanged_.bind(this), false /** Don't use capture. */);
+          this.onSelectionChanged_, false /** Don't use capture. */);
     }
 
     if (shouldReloadMenu && actionNode) {
-      // Highlight the same action that was highlighted before the menu was
-      // reloaded.
-      this.node_ = actionNode;
-      this.updateFocusRing_();
+      let buttonId = actionNode.htmlAttributes.id;
+      if (actions.includes(buttonId)) {
+        // Highlight the same action that was highlighted before the menu was
+        // reloaded.
+        this.node_ = actionNode;
+        this.updateFocusRing_();
+      } else {
+        while (!actions.includes(buttonId) && buttonId != 'back') {
+          this.moveForward();
+          buttonId = this.node_.htmlAttributes.id;
+        }
+      }
     }
     return true;
   }
@@ -488,7 +505,6 @@
    * @returns {boolean} whether or not there's a selection
    */
   nodeHasSelection_() {
-    let previousSelectionState = this.selectionExists_;
     if (this.menuOriginNode_) {
       if (this.menuOriginNode_.textSelStart !==
           this.menuOriginNode_.textSelEnd) {
@@ -505,12 +521,18 @@
    * reload the menu if so.
    * @private
    */
-  onSelectionChanged_() {
+  reloadMenuForSelectionChange_() {
     let newSelectionState = this.nodeHasSelection_();
     if (this.selectionExists_ != newSelectionState) {
       this.selectionExists_ = newSelectionState;
-      if (this.menuOriginNode_) {
-        this.openMenu_(this.menuOriginNode_, SAConstants.MenuId.MAIN);
+      if (this.menuOriginNode_ &&
+          !this.navigationManager_.currentlySelecting()) {
+        let currentMenuId = this.menuPanel_.currentMenuId();
+        if (currentMenuId) {
+          this.openMenu_(this.menuOriginNode_, currentMenuId);
+        } else {
+          this.openMenu_(this.menuOriginNode_, SAConstants.MenuId.MAIN);
+        }
       }
     }
   }
@@ -555,7 +577,7 @@
           node.state[StateType.FOCUSED]) {
         actions.push(SAConstants.MenuAction.MOVE_CURSOR);
         actions.push(SAConstants.MenuAction.SELECT_START);
-        if (this.navigationManager_.selectionStarted()) {
+        if (this.navigationManager_.currentlySelecting()) {
           actions.push(SAConstants.MenuAction.SELECT_END);
         }
         if (this.selectionExists_) {
@@ -682,7 +704,9 @@
         }
         break;
       case SAConstants.MenuAction.SELECT_END:
-        this.navigationManager_.saveSelectEnd();
+        this.navigationManager_.endSelection();
+        if (this.menuOriginNode_)
+          this.openMenu_(this.menuOriginNode_, SAConstants.MenuId.MAIN);
         break;
       default:
         if (window.switchAccess.improvedTextInputEnabled()) {
diff --git a/chrome/browser/resources/chromeos/switch_access/navigation_manager.js b/chrome/browser/resources/chromeos/switch_access/navigation_manager.js
index 5517c4b..663d9c3 100644
--- a/chrome/browser/resources/chromeos/switch_access/navigation_manager.js
+++ b/chrome/browser/resources/chromeos/switch_access/navigation_manager.js
@@ -334,17 +334,17 @@
    * Sets the selectionEnd variable based on the selection of the current node.
    * @public
    */
-  saveSelectEnd() {
-    this.textNavigationManager_.saveSelectEnd();
+  endSelection() {
+    this.textNavigationManager_.resetCurrentlySelecting();
   }
 
   /**
-   * Returns whether or not the first selection index has been set.
+   * Returns whether or not a selection is being made.
    * @return {boolean}
    * @public
    */
-  selectionStarted() {
-    return this.textNavigationManager_.isSelectionStarted();
+  currentlySelecting() {
+    return this.textNavigationManager_.currentlySelecting();
   }
 
   /**
diff --git a/chrome/browser/resources/chromeos/switch_access/text_navigation_manager.js b/chrome/browser/resources/chromeos/switch_access/text_navigation_manager.js
index 3e78d9a9..9388f846 100644
--- a/chrome/browser/resources/chromeos/switch_access/text_navigation_manager.js
+++ b/chrome/browser/resources/chromeos/switch_access/text_navigation_manager.js
@@ -26,6 +26,12 @@
 
     /** @private {chrome.automation.AutomationNode} */
     this.selectionEndObject_;
+
+    /** @private {boolean} */
+    this.currentlySelecting_ = false;
+
+    /** @private {function(chrome.automation.AutomationEvent): undefined} */
+    this.selectionListener_ = this.onNavChange_.bind(this);
   }
 
   /**
@@ -34,6 +40,8 @@
    * @public
    */
   jumpToBeginning() {
+    if (this.currentlySelecting_)
+      this.setupDynamicSelection_(false /* resetCursor */);
     this.navigationManager_.simulateKeyPress(
         SAConstants.KeyCode.HOME, {ctrl: true});
   }
@@ -44,6 +52,8 @@
    * @public
    */
   jumpToEnd() {
+    if (this.currentlySelecting_)
+      this.setupDynamicSelection_(false /* resetCursor */);
     this.navigationManager_.simulateKeyPress(
         SAConstants.KeyCode.END, {ctrl: true});
   }
@@ -55,11 +65,26 @@
    * @public
    */
   moveBackwardOneChar() {
+    if (this.currentlySelecting_)
+      this.setupDynamicSelection_(true /* resetCursor */);
     this.navigationManager_.simulateKeyPress(
         SAConstants.KeyCode.LEFT_ARROW, {});
   }
 
   /**
+   * Moves the text caret one character forward (does nothing
+   * if there are no more characters following the current
+   * location of the caret).
+   * @public
+   */
+  moveForwardOneChar() {
+    if (this.currentlySelecting_)
+      this.setupDynamicSelection_(true /* resetCursor */);
+    this.navigationManager_.simulateKeyPress(
+        SAConstants.KeyCode.RIGHT_ARROW, {});
+  }
+
+  /**
    * Moves the text caret one word backwards (does nothing
    * if already at the beginning of the field). If the
    * text caret is in the middle of a word, moves the caret
@@ -67,22 +92,13 @@
    * @public
    */
   moveBackwardOneWord() {
+    if (this.currentlySelecting_)
+      this.setupDynamicSelection_(false /* resetCursor */);
     this.navigationManager_.simulateKeyPress(
         SAConstants.KeyCode.LEFT_ARROW, {ctrl: true});
   }
 
   /**
-   * Moves the text caret one character forward (does nothing
-   * if there are no more characters following the current
-   * location of the caret).
-   * @public
-   */
-  moveForwardOneChar() {
-    this.navigationManager_.simulateKeyPress(
-        SAConstants.KeyCode.RIGHT_ARROW, {});
-  }
-
-  /**
    * Moves the text caret one word forward (does nothing if
    * already at the end of the field). If the text caret is
    * in the middle of a word, moves the caret to the end of
@@ -90,6 +106,8 @@
    * @public
    */
   moveForwardOneWord() {
+    if (this.currentlySelecting_)
+      this.setupDynamicSelection_(false /* resetCursor */);
     this.navigationManager_.simulateKeyPress(
         SAConstants.KeyCode.RIGHT_ARROW, {ctrl: true});
   }
@@ -101,6 +119,8 @@
    * @public
    */
   moveUpOneLine() {
+    if (this.currentlySelecting_)
+      this.setupDynamicSelection_(false /* resetCursor */);
     this.navigationManager_.simulateKeyPress(SAConstants.KeyCode.UP_ARROW, {});
   }
 
@@ -111,14 +131,40 @@
    * @public
    */
   moveDownOneLine() {
+    if (this.currentlySelecting_)
+      this.setupDynamicSelection_(false /* resetCursor */);
     this.navigationManager_.simulateKeyPress(
         SAConstants.KeyCode.DOWN_ARROW, {});
   }
 
+  /**
+   * TODO(crbug.com/999400): Work on text selection dynamic highlight and
+   * text selection implementation below
+   */
 
   /**
-   * TODO(rosalindag): Work on text selection functionality below.
+   * Sets up the cursor position and selection listener for dynamic selection.
+   * If the needToResetCursor boolean is true, the function will move the cursor
+   * to the end point of the selection before adding the event listener. If not,
+   * it will simply add the listener.
+   * @param {boolean} needToResetCursor
+   * @private
    */
+  setupDynamicSelection_(needToResetCursor) {
+    if (needToResetCursor) {
+      if (this.currentlySelecting() &&
+          this.selectionEndIndex_ != NO_SELECT_INDEX) {
+        // Move the cursor to the end of the existing selection.
+        chrome.automation.setDocumentSelection({
+          anchorObject: this.selectionEndObject_,
+          anchorOffset: this.selectionEndIndex_,
+          focusObject: this.selectionEndObject_,
+          focusOffset: this.selectionEndIndex_
+        });
+      }
+    }
+    this.manageNavigationListener_(true /** Add the listener */);
+  }
 
   /**
    * Sets the selection using the selectionStart and selectionEnd
@@ -183,8 +229,10 @@
    * @return {boolean}
    * @public
    */
-  isSelectionStarted() {
-    return this.selectionStartIndex_ !== NO_SELECT_INDEX;
+  currentlySelecting() {
+    return (
+        this.selectionStartIndex_ !== NO_SELECT_INDEX &&
+        this.currentlySelecting_);
   }
 
   /**
@@ -211,18 +259,61 @@
 
   /**
    * Sets the selectionStart variable based on the selection of the current
-   * node.
+   * node. Also sets the currently selecting boolean to true.
    * @public
    */
   saveSelectStart() {
     chrome.automation.getFocus((focusedNode) => {
       this.selectionStartObject_ = focusedNode;
       this.selectionStartIndex_ = this.getSelectionIndexFromNode_(
-          this.selectionStartObject_, true /*We are getting the start index.*/);
+          this.selectionStartObject_,
+          true /* We are getting the start index.*/);
+      this.currentlySelecting_ = true;
     });
   }
 
   /**
+   * Function to handle changes in the cursor position during selection.
+   * This function will remove the selection listener and set the end of the
+   * selection based on the new position.
+   * @private
+   */
+  onNavChange_() {
+    this.manageNavigationListener_(false);
+    if (this.currentlySelecting)
+      this.saveSelectEnd();
+  }
+
+  /**
+   * Adds or removes the selection listener based on a boolean parameter.
+   * @param {boolean} addListener
+   * @private
+   */
+  manageNavigationListener_(addListener) {
+    if (addListener) {
+      this.selectionStartObject_.addEventListener(
+          chrome.automation.EventType.TEXT_SELECTION_CHANGED,
+          this.selectionListener_, false /** Don't use capture.*/);
+    } else {
+      this.selectionStartObject_.removeEventListener(
+          chrome.automation.EventType.TEXT_SELECTION_CHANGED,
+          this.selectionListener_, false /** Don't use capture.*/);
+    }
+  }
+
+  /**
+   * Reset the currentlySelecting variable to false, reset the selection
+   * indices, and remove the listener on navigation.
+   * @public
+   */
+  resetCurrentlySelecting() {
+    this.currentlySelecting_ = false;
+    this.manageNavigationListener_(false /** Removing listener */);
+    this.selectionStartIndex_ = NO_SELECT_INDEX;
+    this.selectionEndIndex_ = NO_SELECT_INDEX;
+  }
+
+  /**
    * Sets the selectionEnd variable based on the selection of the current node.
    * @public
    */
diff --git a/chrome/browser/resources/history/history_item.js b/chrome/browser/resources/history/history_item.js
index c67bac902..5d48e92 100644
--- a/chrome/browser/resources/history/history_item.js
+++ b/chrome/browser/resources/history/history_item.js
@@ -235,7 +235,7 @@
       }
 
       const ageInDays = Math.ceil(
-          (new Date() - new Date(this.item.dateRelativeDay)) / 1000 /* s/ms */ /
+          (new Date() - new Date(this.item.time)) / 1000 /* s/ms */ /
           60 /* m/s */ / 60 /* h/m */ / 24 /* d/h */);
 
       browserService.recordHistogram(
diff --git a/chrome/browser/resources/local_ntp/local_ntp.css b/chrome/browser/resources/local_ntp/local_ntp.css
index 1fc3a7f..6255342 100644
--- a/chrome/browser/resources/local_ntp/local_ntp.css
+++ b/chrome/browser/resources/local_ntp/local_ntp.css
@@ -71,7 +71,7 @@
   min-height: 100%;
 }
 
-body.inited {
+html.inited body {
   display: block;
 }
 
diff --git a/chrome/browser/resources/local_ntp/local_ntp.js b/chrome/browser/resources/local_ntp/local_ntp.js
index 0101cad..47f8731 100644
--- a/chrome/browser/resources/local_ntp/local_ntp.js
+++ b/chrome/browser/resources/local_ntp/local_ntp.js
@@ -758,7 +758,7 @@
 
   utils.setPlatformClass(document.body);
   utils.disableOutlineOnMouseClick($(customize.IDS.EDIT_BG));
-  document.body.classList.add(CLASSES.INITED);
+  document.documentElement.classList.add(CLASSES.INITED);
 }
 
 /**
diff --git a/chrome/browser/resources/print_preview/polymer3/demo.js b/chrome/browser/resources/print_preview/polymer3/demo.js
index 551898d7..185d98b 100644
--- a/chrome/browser/resources/print_preview/polymer3/demo.js
+++ b/chrome/browser/resources/print_preview/polymer3/demo.js
@@ -4,11 +4,13 @@
 
 import 'chrome://resources/cr_elements/cr_button/cr_button.m.js';
 import 'chrome://resources/cr_elements/cr_checkbox/cr_checkbox.m.js';
+import 'chrome://resources/cr_elements/cr_dialog/cr_dialog.m.js';
 import 'chrome://resources/cr_elements/cr_drawer/cr_drawer.m.js';
 import 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.m.js';
 import 'chrome://resources/cr_elements/cr_input/cr_input.m.js';
 import 'chrome://resources/cr_elements/cr_radio_button/cr_radio_button.m.js';
 import 'chrome://resources/cr_elements/cr_radio_group/cr_radio_group.m.js';
+import 'chrome://resources/cr_elements/cr_tabs/cr_tabs.m.js';
 import 'chrome://resources/cr_elements/cr_toast/cr_toast.m.js';
 import 'chrome://resources/cr_elements/cr_toggle/cr_toggle.m.js';
 import 'chrome://resources/cr_elements/icons.m.js';
@@ -67,6 +69,26 @@
           <div class="drawer-content">Content of drawer</div>
         </cr-drawer>
       </div>
+
+      <div>
+        <cr-tabs selected="{{selectedSubpage_}}" tab-names="[[tabNames_]]">
+        </cr-tabs>
+        <div>
+          <template is="dom-if" if="[[isTabASelected_(selectedSubpage_)]]">
+            <span>This is Tab A</span>
+          </template>
+          <template is="dom-if" if="[[isTabBSelected_(selectedSubpage_)]]">
+            <span>This is Tab B</span>
+          </template>
+        </div>
+      </div>
+
+      <div>
+        <cr-button on-click="showDialog_">Click to open dialog</cr-button>
+        <cr-dialog id="dialog">
+          <div slot="title">I am a dialog</div>
+        </cr-dialog>
+      </div>
     `;
   }
 
@@ -77,6 +99,18 @@
 
       /** @private */
       checkboxChecked_: Boolean,
+
+      /** @private */
+      selectedSubpage_: {
+        type: Number,
+        value: 0,
+      },
+
+      /** @private {Array<string>} */
+      tabNames_: {
+        type: Array,
+        value: () => (['A', 'B']),
+      },
     };
   }
 
@@ -89,6 +123,27 @@
   showDrawer_() {
     this.shadowRoot.querySelector('cr-drawer').openDrawer();
   }
+
+  /** @private */
+  showDialog_() {
+    this.shadowRoot.querySelector('cr-dialog').showModal();
+  }
+
+  /**
+   * @return {boolean}
+   * @private
+   */
+  isTabASelected_() {
+    return this.selectedSubpage_ === 0;
+  }
+
+  /**
+   * @return {boolean}
+   * @private
+   */
+  isTabBSelected_() {
+    return this.selectedSubpage_ === 1;
+  }
 }  // class HelloPolymer3
 
 customElements.define('hello-polymer3', HelloPolymer3Element);
diff --git a/chrome/browser/resources/settings/crostini_page/crostini_subpage.html b/chrome/browser/resources/settings/crostini_page/crostini_subpage.html
index 125be381..c77f616 100644
--- a/chrome/browser/resources/settings/crostini_page/crostini_subpage.html
+++ b/chrome/browser/resources/settings/crostini_page/crostini_subpage.html
@@ -17,14 +17,12 @@
         label="$i18n{crostiniSharedPaths}"
         on-click="onSharedPathsClick_">
     </cr-link-row>
-    <template is="dom-if" if="[[enableCrostiniUsbDeviceSupport_]]">
-      <cr-link-row
-          class="hr"
-          label="$i18n{crostiniSharedUsbDevicesLabel}"
-          id="crostini-shared-usb-devices"
-          on-click="onSharedUsbDevicesClick_">
-      </cr-link-row>
-    </template>
+    <cr-link-row
+        class="hr"
+        label="$i18n{crostiniSharedUsbDevicesLabel}"
+        id="crostini-shared-usb-devices"
+        on-click="onSharedUsbDevicesClick_">
+    </cr-link-row>
     <template is="dom-if" if="[[showCrostiniExportImport_]]">
       <cr-link-row
           class="hr"
diff --git a/chrome/browser/resources/settings/crostini_page/crostini_subpage.js b/chrome/browser/resources/settings/crostini_page/crostini_subpage.js
index 736b8a8..66d8ca13f 100644
--- a/chrome/browser/resources/settings/crostini_page/crostini_subpage.js
+++ b/chrome/browser/resources/settings/crostini_page/crostini_subpage.js
@@ -20,17 +20,6 @@
     },
 
     /**
-     * Whether CrostiniUsbSupport flag is enabled.
-     * @private {boolean}
-     */
-    enableCrostiniUsbDeviceSupport_: {
-      type: Boolean,
-      value: function() {
-        return loadTimeData.getBoolean('enableCrostiniUsbDeviceSupport');
-      },
-    },
-
-    /**
      * Whether export / import UI should be displayed.
      * @private {boolean}
      */
diff --git a/chrome/browser/resources/settings/people_page/users_page.html b/chrome/browser/resources/settings/people_page/users_page.html
index e1981901..3b94c83 100644
--- a/chrome/browser/resources/settings/people_page/users_page.html
+++ b/chrome/browser/resources/settings/people_page/users_page.html
@@ -55,19 +55,19 @@
         disabled="[[isEditingDisabled_(isOwner_, isWhitelistManaged_)]]"
         inverted>
     </settings-toggle-button>
-    <div class="list-frame">
-      <settings-user-list prefs="[[prefs]]"
-          disabled="[[isEditingUsersDisabled_(isOwner_, isWhitelistManaged_,
-              prefs.cros.accounts.allowGuest.value, isChild_)]]">
-      </settings-user-list>
-      <div id="add-user-button" class="list-item"
-          hidden="[[isEditingUsersDisabled_(isOwner_, isWhitelistManaged_,
-              prefs.cros.accounts.allowGuest.value, isChild_)]]">
-        <a is="action-link" class="list-button" on-click="openAddUserDialog_">
-          $i18n{addUsers}
-        </a>
+    <template is="dom-if"
+        if="[[isEditingUsersEnabled_(isOwner_, isWhitelistManaged_,
+            prefs.cros.accounts.allowGuest.value, isChild_)]]">
+      <div class="list-frame" >
+        <settings-user-list prefs="[[prefs]]">
+        </settings-user-list>
+        <div id="add-user-button" class="list-item">
+          <a is="action-link" class="list-button" on-click="openAddUserDialog_">
+            $i18n{addUsers}
+          </a>
+        </div>
       </div>
-    </div>
+    </template>
     <settings-users-add-user-dialog id="addUserDialog"
         on-close="onAddUserDialogClose_">
     </settings-users-add-user-dialog>
diff --git a/chrome/browser/resources/settings/people_page/users_page.js b/chrome/browser/resources/settings/people_page/users_page.js
index fe86cde..4a3ff20 100644
--- a/chrome/browser/resources/settings/people_page/users_page.js
+++ b/chrome/browser/resources/settings/people_page/users_page.js
@@ -83,9 +83,9 @@
    * @private
    * @return {boolean}
    */
-  isEditingUsersDisabled_: function(
+  isEditingUsersEnabled_: function(
       isOwner, isWhitelistManaged, allowGuest, isChild) {
-    return !isOwner || isWhitelistManaged || allowGuest || isChild;
+    return isOwner && !isWhitelistManaged && !allowGuest && !isChild;
   },
 
   /** @return {boolean} */
diff --git a/chrome/browser/resources/settings/printing_page/cups_printers.html b/chrome/browser/resources/settings/printing_page/cups_printers.html
index 346cb019..2e514ea 100644
--- a/chrome/browser/resources/settings/printing_page/cups_printers.html
+++ b/chrome/browser/resources/settings/printing_page/cups_printers.html
@@ -162,7 +162,7 @@
           </cr-icon-button>
         </div>
       </div>
-      <template is="dom-if" if="[[canAddPrinter]]">
+      <template is="dom-if" if="[[canAddPrinter]]" restamp>
         <settings-cups-nearby-printers search-term="[[searchTerm]]"
             active-printer="{{activePrinter}}">
         </settings-cups-nearby-printers>
diff --git a/chrome/browser/safe_browsing/chrome_password_protection_service.cc b/chrome/browser/safe_browsing/chrome_password_protection_service.cc
index 680404e..e795dac 100644
--- a/chrome/browser/safe_browsing/chrome_password_protection_service.cc
+++ b/chrome/browser/safe_browsing/chrome_password_protection_service.cc
@@ -832,8 +832,19 @@
 
     WebUIInfoSingleton::GetInstance()->AddToSecurityEvents(
         gaia_password_reuse_event);
-    SecurityEventRecorderFactory::GetForProfile(profile_)
-        ->RecordGaiaPasswordReuse(gaia_password_reuse_event);
+
+    auto* identity_manager = IdentityManagerFactory::GetForProfileIfExists(
+        profile_->GetOriginalProfile());
+    if (identity_manager) {
+      CoreAccountInfo unconsented_primary_account_info =
+          identity_manager->GetUnconsentedPrimaryAccountInfo();
+      // SecurityEventRecorder only supports unconsented primary accounts.
+      if (gaia::AreEmailsSame(unconsented_primary_account_info.email,
+                              username_for_last_shown_warning())) {
+        SecurityEventRecorderFactory::GetForProfile(profile_)
+            ->RecordGaiaPasswordReuse(gaia_password_reuse_event);
+      }
+    }
   } else {
     syncer::UserEventService* user_event_service =
         browser_sync::UserEventServiceFactory::GetForProfile(profile_);
diff --git a/chrome/browser/safe_browsing/chrome_password_protection_service_unittest.cc b/chrome/browser/safe_browsing/chrome_password_protection_service_unittest.cc
index 2a9507f..1b045e1 100644
--- a/chrome/browser/safe_browsing/chrome_password_protection_service_unittest.cc
+++ b/chrome/browser/safe_browsing/chrome_password_protection_service_unittest.cc
@@ -656,21 +656,22 @@
 
 // TODO(crbug/914410): Renable once we know the SecurityEventRecorder won't
 // crash Chrome.
-// TEST_F(ChromePasswordProtectionServiceTest,
-//        VerifyPasswordReuseDetectedSecurityEventRecorded) {
-//   EXPECT_CALL(*security_event_recorder_, RecordGaiaPasswordReuse(_))
-//       .WillOnce(WithArg<0>([&](const auto& message) {
-//         EXPECT_EQ(PasswordReuseLookup::REQUEST_SUCCESS,
-//                   message.reuse_lookup().lookup_result());
-//         EXPECT_EQ(PasswordReuseLookup::SAFE,
-//         message.reuse_lookup().verdict()); EXPECT_EQ("verdict_token",
-//         message.reuse_lookup().verdict_token());
-//       }));
-//   service_->MaybeLogPasswordReuseLookupResultWithVerdict(
-//       web_contents(), PasswordType::OTHER_GAIA_PASSWORD,
-//       PasswordReuseLookup::REQUEST_SUCCESS, PasswordReuseLookup::SAFE,
-//       "verdict_token");
-// }
+TEST_F(ChromePasswordProtectionServiceTest,
+       VerifyPasswordReuseDetectedSecurityEventRecorded) {
+  identity_test_env()->SetPrimaryAccount(kTestEmail);
+  service_->set_username_for_last_shown_warning(kTestEmail);
+  EXPECT_CALL(*security_event_recorder_, RecordGaiaPasswordReuse(_))
+      .WillOnce(WithArg<0>([&](const auto& message) {
+        EXPECT_EQ(PasswordReuseLookup::REQUEST_SUCCESS,
+                  message.reuse_lookup().lookup_result());
+        EXPECT_EQ(PasswordReuseLookup::SAFE, message.reuse_lookup().verdict());
+        EXPECT_EQ("verdict_token", message.reuse_lookup().verdict_token());
+      }));
+  service_->MaybeLogPasswordReuseLookupResultWithVerdict(
+      web_contents(), PasswordType::OTHER_GAIA_PASSWORD,
+      PasswordReuseLookup::REQUEST_SUCCESS, PasswordReuseLookup::SAFE,
+      "verdict_token");
+}
 
 // Check that the PaswordCapturedEvent timer is set for 1 min if password
 // hash is saved and no timer pref is set yet.
diff --git a/chrome/browser/safe_browsing/download_protection/binary_fcm_service.cc b/chrome/browser/safe_browsing/download_protection/binary_fcm_service.cc
index b943fc6..8a247350 100644
--- a/chrome/browser/safe_browsing/download_protection/binary_fcm_service.cc
+++ b/chrome/browser/safe_browsing/download_protection/binary_fcm_service.cc
@@ -6,6 +6,7 @@
 
 #include <memory>
 
+#include "base/base64.h"
 #include "base/logging.h"
 #include "chrome/browser/gcm/gcm_profile_service_factory.h"
 #include "chrome/browser/gcm/instance_id/instance_id_profile_service_factory.h"
@@ -109,12 +110,15 @@
 
 void BinaryFCMService::OnMessage(const std::string& app_id,
                                  const gcm::IncomingMessage& message) {
-  auto serialized_proto = message.data.find(kBinaryFCMServiceMessageKey);
-  if (serialized_proto == message.data.end())
+  auto serialized_proto_iterator =
+      message.data.find(kBinaryFCMServiceMessageKey);
+  if (serialized_proto_iterator == message.data.end())
     return;
 
+  std::string serialized_proto;
+  base::Base64Decode(serialized_proto_iterator->second, &serialized_proto);
   DeepScanningClientResponse response;
-  if (!response.ParseFromString(serialized_proto->second))
+  if (!response.ParseFromString(serialized_proto))
     return;
 
   auto callback_it = message_token_map_.find(response.token());
diff --git a/chrome/browser/safe_browsing/download_protection/binary_fcm_service_unittest.cc b/chrome/browser/safe_browsing/download_protection/binary_fcm_service_unittest.cc
index 36877036..6e2abffc 100644
--- a/chrome/browser/safe_browsing/download_protection/binary_fcm_service_unittest.cc
+++ b/chrome/browser/safe_browsing/download_protection/binary_fcm_service_unittest.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/safe_browsing/download_protection/binary_fcm_service.h"
 
+#include "base/base64.h"
 #include "base/run_loop.h"
 #include "chrome/browser/gcm/gcm_profile_service_factory.h"
 #include "chrome/test/base/testing_profile.h"
@@ -85,6 +86,7 @@
   // Test that a message with token1 is routed only to the first callback.
   message.set_token("token1");
   ASSERT_TRUE(message.SerializeToString(&serialized_message));
+  base::Base64Encode(serialized_message, &serialized_message);
   incoming_message.data["proto"] = serialized_message;
   binary_fcm_service_->OnMessage("app_id", incoming_message);
   EXPECT_EQ(response1.token(), "token1");
@@ -93,6 +95,7 @@
   // Test that a message with token2 is routed only to the second callback.
   message.set_token("token2");
   ASSERT_TRUE(message.SerializeToString(&serialized_message));
+  base::Base64Encode(serialized_message, &serialized_message);
   incoming_message.data["proto"] = serialized_message;
   binary_fcm_service_->OnMessage("app_id", incoming_message);
   EXPECT_EQ(response1.token(), "token1");
diff --git a/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc b/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc
index 37065e0..8baacf0 100644
--- a/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc
+++ b/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc
@@ -6,6 +6,7 @@
 
 #include <memory>
 
+#include "base/base64.h"
 #include "base/bind.h"
 #include "base/rand_util.h"
 #include "base/task/post_task.h"
@@ -142,6 +143,7 @@
 
   std::string metadata;
   request->deep_scanning_request().SerializeToString(&metadata);
+  base::Base64Encode(metadata, &metadata);
 
   auto upload_request = MultipartUploadRequest::Create(
       url_loader_factory_, GURL(kSbBinaryUploadUrl), metadata, file_contents,
diff --git a/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc b/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
index cc8319c..636f7e0b 100644
--- a/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
+++ b/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
@@ -8,6 +8,7 @@
 #include <memory>
 
 #include "base/bind.h"
+#include "base/feature_list.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
 #include "chrome/browser/browser_process.h"
@@ -87,8 +88,7 @@
           item->GetURL(),
           item->GetTargetFilePath(),
           item->GetFullPath(),
-          item->GetTabUrl(),
-          item->GetTabReferrerUrl(),
+          {item->GetTabUrl(), item->GetTabReferrerUrl()},
           content::DownloadItemUtils::GetBrowserContext(item),
           std::move(callback),
           service,
@@ -278,6 +278,9 @@
 }
 
 bool CheckClientDownloadRequest::ShouldUploadForDlpScan() {
+  if (!base::FeatureList::IsEnabled(kDeepScanningOfDownloads))
+    return false;
+
   int check_content_compliance = g_browser_process->local_state()->GetInteger(
       prefs::kCheckContentCompliance);
   if (check_content_compliance !=
@@ -304,6 +307,9 @@
 
 bool CheckClientDownloadRequest::ShouldUploadForMalwareScan(
     DownloadCheckResultReason reason) {
+  if (!base::FeatureList::IsEnabled(kDeepScanningOfDownloads))
+    return false;
+
   // If we know the file is malicious, we don't need to upload it.
   if (reason != DownloadCheckResultReason::REASON_DOWNLOAD_SAFE &&
       reason != DownloadCheckResultReason::REASON_DOWNLOAD_UNCOMMON &&
diff --git a/chrome/browser/safe_browsing/download_protection/check_client_download_request_base.cc b/chrome/browser/safe_browsing/download_protection/check_client_download_request_base.cc
index 649f457..dc1529411 100644
--- a/chrome/browser/safe_browsing/download_protection/check_client_download_request_base.cc
+++ b/chrome/browser/safe_browsing/download_protection/check_client_download_request_base.cc
@@ -19,6 +19,7 @@
 #include "chrome/browser/safe_browsing/download_protection/ppapi_download_request.h"
 #include "chrome/common/safe_browsing/file_type_policies.h"
 #include "components/prefs/pref_service.h"
+#include "components/safe_browsing/common/safe_browsing_prefs.h"
 #include "components/safe_browsing/common/utils.h"
 #include "components/safe_browsing/web_ui/safe_browsing_ui.h"
 #include "content/public/browser/browser_context.h"
@@ -122,8 +123,7 @@
     GURL source_url,
     base::FilePath target_file_path,
     base::FilePath full_path,
-    GURL tab_url,
-    GURL tab_referrer_url,
+    TabUrls tab_urls,
     content::BrowserContext* browser_context,
     CheckDownloadCallback callback,
     DownloadProtectionService* service,
@@ -132,8 +132,8 @@
     : source_url_(std::move(source_url)),
       target_file_path_(std::move(target_file_path)),
       full_path_(std::move(full_path)),
-      tab_url_(std::move(tab_url)),
-      tab_referrer_url_(std::move(tab_referrer_url)),
+      tab_url_(std::move(tab_urls.url)),
+      tab_referrer_url_(std::move(tab_urls.referrer)),
       callback_(std::move(callback)),
       service_(service),
       binary_feature_extractor_(std::move(binary_feature_extractor)),
@@ -154,9 +154,15 @@
         profile &&
         AdvancedProtectionStatusManagerFactory::GetForProfile(profile)
             ->RequestsAdvancedProtectionVerdicts();
+
+    int password_protected_allowed_policy =
+        g_browser_process->local_state()->GetInteger(
+            prefs::kAllowPasswordProtectedFiles);
     password_protected_allowed_ =
-        !profile ||
-        profile->GetPrefs()->GetBoolean(prefs::kPasswordProtectedAllowed);
+        (password_protected_allowed_policy ==
+             AllowPasswordProtectedFilesValues::ALLOW_DOWNLOADS ||
+         password_protected_allowed_policy ==
+             AllowPasswordProtectedFilesValues::ALLOW_UPLOADS_AND_DOWNLOADS);
   }
 }
 
diff --git a/chrome/browser/safe_browsing/download_protection/check_client_download_request_base.h b/chrome/browser/safe_browsing/download_protection/check_client_download_request_base.h
index 2abc42c..1fdd1a9 100644
--- a/chrome/browser/safe_browsing/download_protection/check_client_download_request_base.h
+++ b/chrome/browser/safe_browsing/download_protection/check_client_download_request_base.h
@@ -41,12 +41,17 @@
 
 class CheckClientDownloadRequestBase {
  public:
+  // URL and referrer of the window the download was started from.
+  struct TabUrls {
+    GURL url;
+    GURL referrer;
+  };
+
   CheckClientDownloadRequestBase(
       GURL source_url,
       base::FilePath target_file_path,
       base::FilePath full_path,
-      GURL tab_url,
-      GURL tab_referrer_url,
+      TabUrls tab_urls,
       content::BrowserContext* browser_context,
       CheckDownloadCallback callback,
       DownloadProtectionService* service,
diff --git a/chrome/browser/safe_browsing/download_protection/check_native_file_system_write_request.cc b/chrome/browser/safe_browsing/download_protection/check_native_file_system_write_request.cc
index 40833c8..95d8bef 100644
--- a/chrome/browser/safe_browsing/download_protection/check_native_file_system_write_request.cc
+++ b/chrome/browser/safe_browsing/download_protection/check_native_file_system_write_request.cc
@@ -22,6 +22,7 @@
 #include "components/safe_browsing/proto/csd.pb.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/download_item_utils.h"
+#include "content/public/browser/navigation_entry.h"
 
 namespace safe_browsing {
 
@@ -38,13 +39,24 @@
               "native-file-system-write");
 }
 
+CheckClientDownloadRequestBase::TabUrls TabUrlsFromWebContents(
+    content::WebContents* web_contents) {
+  CheckClientDownloadRequestBase::TabUrls result;
+  if (web_contents) {
+    content::NavigationEntry* entry =
+        web_contents->GetController().GetVisibleEntry();
+    if (entry) {
+      result.url = entry->GetURL();
+      result.referrer = entry->GetReferrer().url;
+    }
+  }
+  return result;
+}
+
 }  // namespace
 
-NativeFileSystemWriteItem::NativeFileSystemWriteItem() = default;
-NativeFileSystemWriteItem::~NativeFileSystemWriteItem() = default;
-
 CheckNativeFileSystemWriteRequest::CheckNativeFileSystemWriteRequest(
-    std::unique_ptr<NativeFileSystemWriteItem> item,
+    std::unique_ptr<content::NativeFileSystemWriteItem> item,
     CheckDownloadCallback callback,
     DownloadProtectionService* service,
     scoped_refptr<SafeBrowsingDatabaseManager> database_manager,
@@ -52,8 +64,7 @@
     : CheckClientDownloadRequestBase(GetDownloadUrl(item->frame_url),
                                      item->target_file_path,
                                      item->full_path,
-                                     item->tab_url,
-                                     GURL(),
+                                     TabUrlsFromWebContents(item->web_contents),
                                      item->browser_context,
                                      std::move(callback),
                                      service,
diff --git a/chrome/browser/safe_browsing/download_protection/check_native_file_system_write_request.h b/chrome/browser/safe_browsing/download_protection/check_native_file_system_write_request.h
index 3b031a8..7f02521 100644
--- a/chrome/browser/safe_browsing/download_protection/check_native_file_system_write_request.h
+++ b/chrome/browser/safe_browsing/download_protection/check_native_file_system_write_request.h
@@ -17,36 +17,16 @@
 #include "chrome/browser/safe_browsing/download_protection/check_client_download_request_base.h"
 #include "components/download/public/common/download_item.h"
 #include "content/public/browser/browser_thread.h"
+#include "content/public/browser/native_file_system_write_item.h"
 #include "url/gurl.h"
 
 namespace safe_browsing {
 
-// TODO(https://crbug.com/995963): Move this struct to //content/public since
-// ultimately it will be code in //content that provides all this data.
-struct NativeFileSystemWriteItem {
-  NativeFileSystemWriteItem();
-  ~NativeFileSystemWriteItem();
-  NativeFileSystemWriteItem(const NativeFileSystemWriteItem&) = delete;
-  NativeFileSystemWriteItem& operator=(const NativeFileSystemWriteItem&) =
-      delete;
-
-  base::FilePath target_file_path;
-  base::FilePath full_path;
-  std::string sha256_hash;
-  int64_t size = 0;
-
-  GURL tab_url;
-  GURL frame_url;
-  bool has_user_gesture = false;
-  content::WebContents* web_contents = nullptr;
-  content::BrowserContext* browser_context = nullptr;
-};
-
 class CheckNativeFileSystemWriteRequest
     : public CheckClientDownloadRequestBase {
  public:
   CheckNativeFileSystemWriteRequest(
-      std::unique_ptr<NativeFileSystemWriteItem> item,
+      std::unique_ptr<content::NativeFileSystemWriteItem> item,
       CheckDownloadCallback callback,
       DownloadProtectionService* service,
       scoped_refptr<SafeBrowsingDatabaseManager> database_manager,
@@ -72,7 +52,7 @@
   void NotifyRequestFinished(DownloadCheckResult result,
                              DownloadCheckResultReason reason) override;
 
-  const std::unique_ptr<NativeFileSystemWriteItem> item_;
+  const std::unique_ptr<content::NativeFileSystemWriteItem> item_;
   std::unique_ptr<ReferrerChainData> referrer_chain_data_;
 
   base::WeakPtrFactory<CheckNativeFileSystemWriteRequest> weakptr_factory_{
diff --git a/chrome/browser/safe_browsing/download_protection/download_protection_service.cc b/chrome/browser/safe_browsing/download_protection/download_protection_service.cc
index 4b5047d..7f7a1e04 100644
--- a/chrome/browser/safe_browsing/download_protection/download_protection_service.cc
+++ b/chrome/browser/safe_browsing/download_protection/download_protection_service.cc
@@ -245,7 +245,7 @@
 }
 
 void DownloadProtectionService::CheckNativeFileSystemWrite(
-    std::unique_ptr<NativeFileSystemWriteItem> item,
+    std::unique_ptr<content::NativeFileSystemWriteItem> item,
     CheckDownloadCallback callback) {
   if (MatchesEnterpriseWhitelist(
           Profile::FromBrowserContext(item->browser_context),
@@ -448,7 +448,7 @@
 
 std::unique_ptr<ReferrerChainData>
 DownloadProtectionService::IdentifyReferrerChain(
-    const NativeFileSystemWriteItem& item) {
+    const content::NativeFileSystemWriteItem& item) {
   // If navigation_observer_manager_ is null, return immediately. This could
   // happen in tests.
   if (!navigation_observer_manager_)
@@ -462,9 +462,12 @@
       "SafeBrowsing.ReferrerHasInvalidTabID.NativeFileSystemWriteAttribution",
       !tab_id.is_valid());
 
+  GURL tab_url =
+      item.web_contents ? item.web_contents->GetVisibleURL() : GURL();
+
   SafeBrowsingNavigationObserverManager::AttributionResult result =
       navigation_observer_manager_->IdentifyReferrerChainByHostingPage(
-          item.frame_url, item.tab_url, tab_id, item.has_user_gesture,
+          item.frame_url, tab_url, tab_id, item.has_user_gesture,
           kDownloadAttributionUserGestureLimit, referrer_chain.get());
 
   UMA_HISTOGRAM_ENUMERATION(
diff --git a/chrome/browser/safe_browsing/download_protection/download_protection_service.h b/chrome/browser/safe_browsing/download_protection/download_protection_service.h
index 156ac6e..5c26099 100644
--- a/chrome/browser/safe_browsing/download_protection/download_protection_service.h
+++ b/chrome/browser/safe_browsing/download_protection/download_protection_service.h
@@ -35,6 +35,7 @@
 
 namespace content {
 class PageNavigator;
+struct NativeFileSystemWriteItem;
 }  // namespace content
 
 namespace download {
@@ -56,8 +57,6 @@
 class CheckNativeFileSystemWriteRequest;
 class PPAPIDownloadRequest;
 
-struct NativeFileSystemWriteItem;
-
 // This class provides an asynchronous API to check whether a particular
 // client download is malicious or not.
 class DownloadProtectionService {
@@ -111,7 +110,7 @@
   // will also be invoked on the UI thread.  This method must be called once the
   // write is finished and data has been written to disk.
   virtual void CheckNativeFileSystemWrite(
-      std::unique_ptr<NativeFileSystemWriteItem> item,
+      std::unique_ptr<content::NativeFileSystemWriteItem> item,
       CheckDownloadCallback callback);
 
   // Display more information to the user regarding the download specified by
@@ -239,7 +238,7 @@
   // Identify referrer chain info of a native file system write. This function
   // also records UMA stats of download attribution result.
   std::unique_ptr<ReferrerChainData> IdentifyReferrerChain(
-      const NativeFileSystemWriteItem& item);
+      const content::NativeFileSystemWriteItem& item);
 
   // Identify referrer chain of the PPAPI download based on the frame URL where
   // the download is initiated. Then add referrer chain info to
diff --git a/chrome/browser/safe_browsing/download_protection/download_protection_service_unittest.cc b/chrome/browser/safe_browsing/download_protection/download_protection_service_unittest.cc
index d3db3c8ee..d273c7434 100644
--- a/chrome/browser/safe_browsing/download_protection/download_protection_service_unittest.cc
+++ b/chrome/browser/safe_browsing/download_protection/download_protection_service_unittest.cc
@@ -88,6 +88,7 @@
 
 using base::RunLoop;
 using content::BrowserThread;
+using content::NativeFileSystemWriteItem;
 using ::testing::_;
 using ::testing::Assign;
 using ::testing::ContainerEq;
@@ -488,7 +489,6 @@
     result->full_path = in->full_path;
     result->sha256_hash = in->sha256_hash;
     result->size = in->size;
-    result->tab_url = in->tab_url;
     result->frame_url = in->frame_url;
     result->has_user_gesture = in->has_user_gesture;
     result->web_contents = in->web_contents;
@@ -502,8 +502,10 @@
     update.Get()->AppendString(domain);
   }
 
-  void SetPasswordProtectedAllowedPref(bool value) {
-    profile()->GetPrefs()->SetBoolean(prefs::kPasswordProtectedAllowed, value);
+  void SetPasswordProtectedAllowedPref(
+      AllowPasswordProtectedFilesValues value) {
+    g_browser_process->local_state()->SetInteger(
+        prefs::kAllowPasswordProtectedFiles, value);
   }
 
   // Helper function to simulate a user gesture, then a link click.
@@ -2819,7 +2821,8 @@
   content::DownloadItemUtils::AttachInfo(&item, profile(), nullptr);
 
   {
-    SetPasswordProtectedAllowedPref(false);
+    SetPasswordProtectedAllowedPref(
+        AllowPasswordProtectedFilesValues::ALLOW_NONE);
 
     RunLoop run_loop;
     download_service_->CheckClientDownload(
@@ -2831,7 +2834,8 @@
   }
 
   {
-    SetPasswordProtectedAllowedPref(true);
+    SetPasswordProtectedAllowedPref(
+        AllowPasswordProtectedFilesValues::ALLOW_DOWNLOADS);
     PrepareResponse(ClientDownloadResponse::SAFE, net::HTTP_OK, net::OK);
 
     RunLoop run_loop;
@@ -2930,6 +2934,7 @@
         /*tmp_path=*/FILE_PATH_LITERAL("a.txt.crswap"),
         /*final_path=*/FILE_PATH_LITERAL("a.txt"));
     item->browser_context = profile()->GetOffTheRecordProfile();
+
     RunLoop run_loop;
     download_service_->CheckNativeFileSystemWrite(
         std::move(item),
@@ -3076,7 +3081,15 @@
       /*tmp_path=*/FILE_PATH_LITERAL("a.exe.crswap"),
       /*final_path=*/FILE_PATH_LITERAL("a.exe"));
   item->frame_url = GURL("http://www.google.com/");
-  item->tab_url = GURL("http://tab.com/final");
+
+  GURL tab_url("http://tab.com/final");
+  GURL tab_referrer("http://tab.com/referrer");
+
+  auto navigation = content::NavigationSimulator::CreateBrowserInitiated(
+      tab_url, web_contents());
+  navigation->SetReferrer(blink::mojom::Referrer::New(
+      tab_referrer, network::mojom::ReferrerPolicy::kDefault));
+  navigation->Commit();
 
   EXPECT_CALL(*sb_service_->mock_database_manager(),
               MatchDownloadWhitelistUrl(_))
@@ -3126,7 +3139,7 @@
         "blob:http://www.google.com/native-file-system-write",
         referrer_.spec()));
     EXPECT_TRUE(RequestContainsResource(request, ClientDownloadRequest::TAB_URL,
-                                        item->tab_url.spec(), ""));
+                                        tab_url.spec(), tab_referrer.spec()));
     EXPECT_TRUE(request.has_signature());
     ASSERT_EQ(1, request.signature().certificate_chain_size());
     const ClientDownloadRequest_CertificateChain& chain =
@@ -3162,10 +3175,10 @@
     history::RedirectList redirects;
     redirects.push_back(GURL("http://tab.com/ref1"));
     redirects.push_back(GURL("http://tab.com/ref2"));
-    redirects.push_back(item->tab_url);
+    redirects.push_back(tab_url);
     HistoryServiceFactory::GetForProfile(profile(),
                                          ServiceAccessType::EXPLICIT_ACCESS)
-        ->AddPage(item->tab_url, base::Time::Now(),
+        ->AddPage(tab_url, base::Time::Now(),
                   reinterpret_cast<history::ContextID>(1), 0, GURL(), redirects,
                   ui::PAGE_TRANSITION_TYPED, history::SOURCE_BROWSED, false);
 
@@ -3199,7 +3212,7 @@
                                         ClientDownloadRequest::TAB_REDIRECT,
                                         "http://tab.com/ref2", ""));
     EXPECT_TRUE(RequestContainsResource(request, ClientDownloadRequest::TAB_URL,
-                                        item->tab_url.spec(), ""));
+                                        tab_url.spec(), tab_referrer.spec()));
     EXPECT_TRUE(request.has_signature());
     ASSERT_EQ(1, request.signature().certificate_chain_size());
     const ClientDownloadRequest_CertificateChain& chain =
diff --git a/chrome/browser/search/local_ntp_source.cc b/chrome/browser/search/local_ntp_source.cc
index a4fd1350..3d7b685 100644
--- a/chrome/browser/search/local_ntp_source.cc
+++ b/chrome/browser/search/local_ntp_source.cc
@@ -307,10 +307,13 @@
       ThemeService::GetThemeProviderForProfile(profile)
           .GetColor(ThemeProperties::COLOR_NTP_BACKGROUND);
 
-  return base::StringPrintf("body { background-color: #%02X%02X%02X; }",
-                            SkColorGetR(background_color),
-                            SkColorGetG(background_color),
-                            SkColorGetB(background_color));
+  // Required to prevent the default background color from flashing before the
+  // page is initialized (the body, which contains theme color, is hidden until
+  // initialization finishes). Removed after initialization.
+  return base::StringPrintf(
+      "html:not(.inited) { background-color: #%02X%02X%02X; }",
+      SkColorGetR(background_color), SkColorGetG(background_color),
+      SkColorGetB(background_color));
 }
 
 std::string ReadBackgroundImageData(const base::FilePath& profile_path) {
diff --git a/chrome/browser/sharing/click_to_call/click_to_call_ui_controller.cc b/chrome/browser/sharing/click_to_call/click_to_call_ui_controller.cc
index 37dc8e20..7b28389 100644
--- a/chrome/browser/sharing/click_to_call/click_to_call_ui_controller.cc
+++ b/chrome/browser/sharing/click_to_call/click_to_call_ui_controller.cc
@@ -157,4 +157,9 @@
       IDS_BROWSER_SHARING_CLICK_TO_CALL_DIALOG_TITLE_NO_DEVICES);
 }
 
+void ClickToCallUiController::OnHelpTextClicked(SharingDialogType dialog_type) {
+  LogClickToCallHelpTextClicked(dialog_type);
+  SharingUiController::OnHelpTextClicked(dialog_type);
+}
+
 WEB_CONTENTS_USER_DATA_KEY_IMPL(ClickToCallUiController)
diff --git a/chrome/browser/sharing/click_to_call/click_to_call_ui_controller.h b/chrome/browser/sharing/click_to_call/click_to_call_ui_controller.h
index 8efe59c..5086ee3 100644
--- a/chrome/browser/sharing/click_to_call/click_to_call_ui_controller.h
+++ b/chrome/browser/sharing/click_to_call/click_to_call_ui_controller.h
@@ -50,6 +50,7 @@
   base::string16 GetTextForTooltipAndAccessibleName() const override;
   SharingFeatureName GetFeatureMetricsPrefix() const override;
   base::string16 GetEducationWindowTitleText() const override;
+  void OnHelpTextClicked(SharingDialogType dialog_type) override;
 
  protected:
   explicit ClickToCallUiController(content::WebContents* web_contents);
diff --git a/chrome/browser/sharing/shared_clipboard/shared_clipboard_message_handler_desktop.cc b/chrome/browser/sharing/shared_clipboard/shared_clipboard_message_handler_desktop.cc
index 1072d7b..33ad0962 100644
--- a/chrome/browser/sharing/shared_clipboard/shared_clipboard_message_handler_desktop.cc
+++ b/chrome/browser/sharing/shared_clipboard/shared_clipboard_message_handler_desktop.cc
@@ -9,7 +9,6 @@
 #include "chrome/browser/notifications/notification_display_service.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/sync_device_info/device_info.h"
-#include "components/vector_icons/vector_icons.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/gfx/image/image.h"
 #include "ui/message_center/public/cpp/notification.h"
@@ -40,8 +39,7 @@
           base::UTF8ToUTF16(device_name)),
       l10n_util::GetStringUTF16(
           IDS_CONTENT_CONTEXT_SHARING_SHARED_CLIPBOARD_NOTIFICATION_DESCRIPTION),
-      gfx::Image(gfx::CreateVectorIcon(vector_icons::kDevicesIcon, 64,
-                                       gfx::kChromeIconGrey)),
+      /* icon= */ gfx::Image(),
       /* display_source= */ base::string16(),
       /* origin_url= */ GURL(), message_center::NotifierId(),
       message_center::RichNotificationData(),
diff --git a/chrome/browser/sharing/shared_clipboard/shared_clipboard_message_handler_desktop_unittest.cc b/chrome/browser/sharing/shared_clipboard/shared_clipboard_message_handler_desktop_unittest.cc
index be3a24c..7850885 100644
--- a/chrome/browser/sharing/shared_clipboard/shared_clipboard_message_handler_desktop_unittest.cc
+++ b/chrome/browser/sharing/shared_clipboard/shared_clipboard_message_handler_desktop_unittest.cc
@@ -132,5 +132,4 @@
   EXPECT_EQ(message_center::NOTIFICATION_TYPE_SIMPLE, notification.type());
   EXPECT_EQ("Text shared from " + std::string(kClientName),
             base::UTF16ToUTF8(notification.title()));
-  EXPECT_FALSE(notification.icon().IsEmpty());
 }
diff --git a/chrome/browser/sharing/sharing_metrics.cc b/chrome/browser/sharing/sharing_metrics.cc
index 2093559..efb2617 100644
--- a/chrome/browser/sharing/sharing_metrics.cc
+++ b/chrome/browser/sharing/sharing_metrics.cc
@@ -149,6 +149,10 @@
       type);
 }
 
+void LogClickToCallHelpTextClicked(SharingDialogType type) {
+  base::UmaHistogramEnumeration("Sharing.ClickToCallHelpTextClicked", type);
+}
+
 void LogSendSharingMessageResult(SharingSendMessageResult result) {
   base::UmaHistogramEnumeration("Sharing.SendMessageResult", result);
 }
diff --git a/chrome/browser/sharing/sharing_metrics.h b/chrome/browser/sharing/sharing_metrics.h
index 88dbed7..04cc508 100644
--- a/chrome/browser/sharing/sharing_metrics.h
+++ b/chrome/browser/sharing/sharing_metrics.h
@@ -130,6 +130,10 @@
 // Logs to UMA the |type| of dialog shown for sharing feature.
 void LogSharingDialogShown(SharingFeatureName feature, SharingDialogType type);
 
+// Logs the dialog type when a user clicks on the help text in the Click to Call
+// dialog.
+void LogClickToCallHelpTextClicked(SharingDialogType type);
+
 // Logs to UMA result of sending a SharingMessage. This should not be called for
 // sending ack messages.
 void LogSendSharingMessageResult(SharingSendMessageResult result);
diff --git a/chrome/browser/sharing/sharing_ui_controller.cc b/chrome/browser/sharing/sharing_ui_controller.cc
index c465bf0..88a47ff 100644
--- a/chrome/browser/sharing/sharing_ui_controller.cc
+++ b/chrome/browser/sharing/sharing_ui_controller.cc
@@ -209,7 +209,7 @@
   return send_result_ != SharingSendMessageResult::kSuccessful;
 }
 
-void SharingUiController::OnHelpTextClicked() {
+void SharingUiController::OnHelpTextClicked(SharingDialogType dialog_type) {
   ShowSingletonTab(chrome::FindBrowserWithWebContents(web_contents()),
                    GURL(chrome::kSyncLearnMoreURL));
 }
diff --git a/chrome/browser/sharing/sharing_ui_controller.h b/chrome/browser/sharing/sharing_ui_controller.h
index dcbf5ed8..b5497ffb 100644
--- a/chrome/browser/sharing/sharing_ui_controller.h
+++ b/chrome/browser/sharing/sharing_ui_controller.h
@@ -15,6 +15,7 @@
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/sharing/proto/sharing_message.pb.h"
 #include "chrome/browser/sharing/sharing_constants.h"
+#include "chrome/browser/sharing/sharing_metrics.h"
 #include "chrome/browser/sharing/sharing_service.h"
 #include "chrome/browser/ui/page_action/page_action_icon_container.h"
 #include "components/sync_device_info/device_info.h"
@@ -108,7 +109,7 @@
   void MaybeShowErrorDialog();
 
   // Called by the SharingDialogView when the help text got clicked.
-  void OnHelpTextClicked();
+  virtual void OnHelpTextClicked(SharingDialogType dialog_type);
 
  protected:
   virtual SharingDialog* DoShowDialog(BrowserWindow* window) = 0;
diff --git a/chrome/browser/ssl/ssl_browsertest.cc b/chrome/browser/ssl/ssl_browsertest.cc
index 9bf0120..5e4d0be 100644
--- a/chrome/browser/ssl/ssl_browsertest.cc
+++ b/chrome/browser/ssl/ssl_browsertest.cc
@@ -1983,6 +1983,47 @@
                      CertError::NONE, security_state::SECURE, AuthState::NONE);
 }
 
+// Visit an HTTPS page that has a certificate issued by a certificate authority
+// that is trusted in a root store that Chrome does not consider consistently
+// secure. In the case where the certificate was issued after the Certificate
+// Transparency requirement date of April 2018 the connection would normally be
+// blocked, as the server will not be providing CT details, and the Chrome CT
+// Policy should be being enforced; however, because a policy configuration
+// exists that disables CT enforcement for that Legacy cert, the connection
+// should succeed. For more detail, see /net/docs/certificate-transparency.md
+IN_PROC_BROWSER_TEST_F(CertificateTransparencySSLUITest,
+                       LegacyEnforcedAfterApril2018UnlessPoliciesSet) {
+  ASSERT_TRUE(https_server()->Start());
+
+  net::CertVerifyResult verify_result;
+  verify_result.verified_cert =
+      net::ImportCertFromFile(net::GetTestCertsDirectory(), "may_2018.pem");
+  ASSERT_TRUE(verify_result.verified_cert);
+  verify_result.is_issued_by_known_root = true;
+
+  // We'll use a SPKI hash corresponding to the Federal Common Policy CA as
+  // captured at https://fpki.idmanagement.gov/announcements/mspkichanges/
+  const net::SHA256HashValue legacy_spki_hash = {
+      0x8e, 0x8b, 0x56, 0xf5, 0x91, 0x8a, 0x25, 0xbd, 0x85, 0xdc, 0xe7,
+      0x66, 0x63, 0xfd, 0x94, 0xcc, 0x23, 0x69, 0x0f, 0x10, 0xea, 0x95,
+      0x86, 0x61, 0x31, 0x71, 0xc6, 0xf8, 0x37, 0x88, 0x90, 0xd5};
+  verify_result.public_key_hashes.push_back(net::HashValue(legacy_spki_hash));
+
+  mock_cert_verifier()->AddResultForCert(https_server()->GetCertificate().get(),
+                                         verify_result, net::OK);
+
+  ASSERT_NO_FATAL_FAILURE(ConfigureStringListPolicy(
+      browser()->profile()->GetPrefs(),
+      policy::key::kCertificateTransparencyEnforcementDisabledForLegacyCas,
+      certificate_transparency::prefs::kCTExcludedLegacySPKIs,
+      {verify_result.public_key_hashes.back().ToString()}));
+
+  ui_test_utils::NavigateToURL(browser(),
+                               https_server()->GetURL("/ssl/google.html"));
+  CheckSecurityState(browser()->tab_strip_model()->GetActiveWebContents(),
+                     CertError::NONE, security_state::SECURE, AuthState::NONE);
+}
+
 // Visit a HTTP page which request WSS connection to a server providing invalid
 // certificate. Close the page while WSS connection waits for SSLManager's
 // response from UI thread.
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index c80c684..6cc5a44 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -688,8 +688,6 @@
       "android/infobars/near_oom_infobar.h",
       "android/infobars/near_oom_reduction_infobar.cc",
       "android/infobars/near_oom_reduction_infobar.h",
-      "android/infobars/permission_infobar.cc",
-      "android/infobars/permission_infobar.h",
       "android/infobars/previews_lite_page_infobar.cc",
       "android/infobars/previews_lite_page_infobar.h",
       "android/infobars/reader_mode_infobar.cc",
diff --git a/chrome/browser/ui/android/infobars/grouped_permission_infobar.cc b/chrome/browser/ui/android/infobars/grouped_permission_infobar.cc
index 0698a88..65a9d44 100644
--- a/chrome/browser/ui/android/infobars/grouped_permission_infobar.cc
+++ b/chrome/browser/ui/android/infobars/grouped_permission_infobar.cc
@@ -4,27 +4,70 @@
 
 #include "chrome/browser/ui/android/infobars/grouped_permission_infobar.h"
 
+#include <vector>
+
 #include "base/android/jni_android.h"
 #include "base/android/jni_array.h"
 #include "base/android/jni_string.h"
+#include "base/android/scoped_java_ref.h"
+#include "chrome/android/chrome_jni_headers/PermissionInfoBar_jni.h"
 #include "chrome/browser/android/resource_mapper.h"
 #include "chrome/browser/android/tab_android.h"
 #include "chrome/browser/permissions/grouped_permission_infobar_delegate_android.h"
-#include "chrome/browser/ui/android/infobars/permission_infobar.h"
+
+namespace {
+
+using base::android::JavaRef;
+using base::android::ScopedJavaLocalRef;
+
+ScopedJavaLocalRef<jobject> CreateRenderInfoBarHelper(
+    JNIEnv* env,
+    int enumerated_icon_id,
+    const JavaRef<jobject>& tab,
+    const base::string16& compact_message_text,
+    const base::string16& compact_link_text,
+    const base::string16& message_text,
+    const base::string16& description_text,
+    const base::string16& ok_button_text,
+    const base::string16& cancel_button_text,
+    const std::vector<int>& content_settings) {
+  ScopedJavaLocalRef<jstring> compact_message_text_java =
+      base::android::ConvertUTF16ToJavaString(env, compact_message_text);
+  ScopedJavaLocalRef<jstring> compact_link_text_java =
+      base::android::ConvertUTF16ToJavaString(env, compact_link_text);
+  ScopedJavaLocalRef<jstring> message_text_java =
+      base::android::ConvertUTF16ToJavaString(env, message_text);
+  ScopedJavaLocalRef<jstring> description_text_java =
+      base::android::ConvertUTF16ToJavaString(env, description_text);
+  ScopedJavaLocalRef<jstring> ok_button_text_java =
+      base::android::ConvertUTF16ToJavaString(env, ok_button_text);
+  ScopedJavaLocalRef<jstring> cancel_button_text_java =
+      base::android::ConvertUTF16ToJavaString(env, cancel_button_text);
+
+  ScopedJavaLocalRef<jintArray> content_settings_types =
+      base::android::ToJavaIntArray(env, content_settings);
+  return Java_PermissionInfoBar_create(
+      env, tab, content_settings_types, enumerated_icon_id,
+      compact_message_text_java, compact_link_text_java, message_text_java,
+      description_text_java, ok_button_text_java, cancel_button_text_java);
+}
+
+}  // namespace
 
 GroupedPermissionInfoBar::GroupedPermissionInfoBar(
     std::unique_ptr<GroupedPermissionInfoBarDelegate> delegate)
     : ConfirmInfoBar(std::move(delegate)) {}
 
-GroupedPermissionInfoBar::~GroupedPermissionInfoBar() {
-}
+GroupedPermissionInfoBar::~GroupedPermissionInfoBar() {}
 
 base::android::ScopedJavaLocalRef<jobject>
 GroupedPermissionInfoBar::CreateRenderInfoBar(JNIEnv* env) {
   GroupedPermissionInfoBarDelegate* delegate = GetDelegate();
 
+  base::string16 compact_message_text = delegate->GetCompactMessageText();
+  base::string16 compact_link_text = delegate->GetCompactLinkText();
   base::string16 message_text = delegate->GetMessageText();
-  base::string16 link_text = delegate->GetLinkText();
+  base::string16 description_text = delegate->GetDescriptionText();
   base::string16 ok_button_text = GetTextFor(ConfirmInfoBarDelegate::BUTTON_OK);
   base::string16 cancel_button_text =
       GetTextFor(ConfirmInfoBarDelegate::BUTTON_CANCEL);
@@ -37,9 +80,10 @@
     content_settings_types.push_back(delegate->GetContentSettingType(i));
   }
 
-  return PermissionInfoBar::CreateRenderInfoBarHelper(
-      env, permission_icon, GetTab()->GetJavaObject(), nullptr, message_text,
-      link_text, ok_button_text, cancel_button_text, content_settings_types);
+  return CreateRenderInfoBarHelper(
+      env, permission_icon, GetTab()->GetJavaObject(), compact_message_text,
+      compact_link_text, message_text, description_text, ok_button_text,
+      cancel_button_text, content_settings_types);
 }
 
 GroupedPermissionInfoBarDelegate* GroupedPermissionInfoBar::GetDelegate() {
diff --git a/chrome/browser/ui/android/infobars/grouped_permission_infobar.h b/chrome/browser/ui/android/infobars/grouped_permission_infobar.h
index d815bcf..2b8c1b001 100644
--- a/chrome/browser/ui/android/infobars/grouped_permission_infobar.h
+++ b/chrome/browser/ui/android/infobars/grouped_permission_infobar.h
@@ -5,15 +5,12 @@
 #ifndef CHROME_BROWSER_UI_ANDROID_INFOBARS_GROUPED_PERMISSION_INFOBAR_H_
 #define CHROME_BROWSER_UI_ANDROID_INFOBARS_GROUPED_PERMISSION_INFOBAR_H_
 
-#include <jni.h>
-
-#include "base/android/scoped_java_ref.h"
 #include "chrome/browser/ui/android/infobars/confirm_infobar.h"
 
 class GroupedPermissionInfoBarDelegate;
 
-// TODO(timloh): This is incorrectly named as we've removed grouped permissions,
-// rename it to PermissionInfoBar once crbug.com/606138 is done.
+// TODO(andypaicu): rename this to PermissionInfoBar, grouped permissions are
+// not a thing anymore.
 class GroupedPermissionInfoBar : public ConfirmInfoBar {
  public:
   explicit GroupedPermissionInfoBar(
diff --git a/chrome/browser/ui/android/infobars/permission_infobar.cc b/chrome/browser/ui/android/infobars/permission_infobar.cc
deleted file mode 100644
index f8dd799..0000000
--- a/chrome/browser/ui/android/infobars/permission_infobar.cc
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/android/infobars/permission_infobar.h"
-
-#include <memory>
-#include <utility>
-#include <vector>
-
-#include "base/android/jni_array.h"
-#include "base/android/jni_string.h"
-#include "chrome/android/chrome_jni_headers/PermissionInfoBar_jni.h"
-#include "chrome/browser/android/tab_android.h"
-#include "chrome/browser/ui/android/infobars/confirm_infobar.h"
-#include "components/content_settings/core/common/content_settings_types.h"
-#include "ui/gfx/android/java_bitmap.h"
-#include "ui/gfx/image/image.h"
-
-using base::android::JavaRef;
-using base::android::ScopedJavaLocalRef;
-
-ScopedJavaLocalRef<jobject> PermissionInfoBar::CreateRenderInfoBarHelper(
-    JNIEnv* env,
-    int enumerated_icon_id,
-    const JavaRef<jobject>& tab,
-    const ScopedJavaLocalRef<jobject>& icon_bitmap,
-    const base::string16& message_text,
-    const base::string16& link_text,
-    const base::string16& ok_button_text,
-    const base::string16& cancel_button_text,
-    std::vector<int>& content_settings) {
-  ScopedJavaLocalRef<jstring> message_text_java =
-      base::android::ConvertUTF16ToJavaString(env, message_text);
-  ScopedJavaLocalRef<jstring> link_text_java =
-      base::android::ConvertUTF16ToJavaString(env, link_text);
-  ScopedJavaLocalRef<jstring> ok_button_text_java =
-      base::android::ConvertUTF16ToJavaString(env, ok_button_text);
-  ScopedJavaLocalRef<jstring> cancel_button_text_java =
-      base::android::ConvertUTF16ToJavaString(env, cancel_button_text);
-
-  ScopedJavaLocalRef<jintArray> content_settings_types =
-      base::android::ToJavaIntArray(env, content_settings);
-  return Java_PermissionInfoBar_create(
-      env, tab, enumerated_icon_id, icon_bitmap, message_text_java,
-      link_text_java, ok_button_text_java, cancel_button_text_java,
-      content_settings_types);
-}
diff --git a/chrome/browser/ui/android/infobars/permission_infobar.h b/chrome/browser/ui/android/infobars/permission_infobar.h
deleted file mode 100644
index 3837b05..0000000
--- a/chrome/browser/ui/android/infobars/permission_infobar.h
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_UI_ANDROID_INFOBARS_PERMISSION_INFOBAR_H_
-#define CHROME_BROWSER_UI_ANDROID_INFOBARS_PERMISSION_INFOBAR_H_
-
-#include <vector>
-
-#include "base/android/scoped_java_ref.h"
-#include "base/macros.h"
-
-// TODO(timloh): Rename GroupedPermissionInfoBar to PermissionInfoBar and move
-// these functions into it.
-class PermissionInfoBar {
- public:
-  static base::android::ScopedJavaLocalRef<jobject> CreateRenderInfoBarHelper(
-      JNIEnv* env,
-      int enumerated_icon_id,
-      const base::android::JavaRef<jobject>& tab,
-      const base::android::ScopedJavaLocalRef<jobject>& icon_bitmap,
-      const base::string16& message_text,
-      const base::string16& link_text,
-      const base::string16& ok_button_text,
-      const base::string16& cancel_button_text,
-      std::vector<int>& content_settings);
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(PermissionInfoBar);
-};
-
-#endif  // CHROME_BROWSER_UI_ANDROID_INFOBARS_PERMISSION_INFOBAR_H_
diff --git a/chrome/browser/ui/app_list/app_list_client_impl.cc b/chrome/browser/ui/app_list/app_list_client_impl.cc
index 3e3654c8..6f68e6b 100644
--- a/chrome/browser/ui/app_list/app_list_client_impl.cc
+++ b/chrome/browser/ui/app_list/app_list_client_impl.cc
@@ -295,8 +295,7 @@
   result->OnVisibilityChanged(visibility);
 }
 
-void AppListClientImpl::ActiveUserChanged(
-    const user_manager::User* active_user) {
+void AppListClientImpl::ActiveUserChanged(user_manager::User* active_user) {
   if (!active_user->is_profile_created())
     return;
 
diff --git a/chrome/browser/ui/app_list/app_list_client_impl.h b/chrome/browser/ui/app_list/app_list_client_impl.h
index 5eddefc..6dd1ecf 100644
--- a/chrome/browser/ui/app_list/app_list_client_impl.h
+++ b/chrome/browser/ui/app_list/app_list_client_impl.h
@@ -93,7 +93,7 @@
       int position_index) override;
 
   // user_manager::UserManager::UserSessionStateObserver:
-  void ActiveUserChanged(const user_manager::User* active_user) override;
+  void ActiveUserChanged(user_manager::User* active_user) override;
 
   // AppListControllerDelegate overrides:
   void DismissView() override;
diff --git a/chrome/browser/ui/ash/assistant/assistant_setup.cc b/chrome/browser/ui/ash/assistant/assistant_setup.cc
index cceb5777..7f1b828 100644
--- a/chrome/browser/ui/ash/assistant/assistant_setup.cc
+++ b/chrome/browser/ui/ash/assistant/assistant_setup.cc
@@ -18,7 +18,6 @@
 #include "chrome/common/webui_url_constants.h"
 #include "chromeos/services/assistant/public/cpp/assistant_prefs.h"
 #include "chromeos/services/assistant/public/proto/settings_ui.pb.h"
-#include "components/arc/arc_prefs.h"
 #include "components/prefs/pref_service.h"
 
 using chromeos::assistant::ConsentFlowUi;
@@ -82,7 +81,7 @@
       PrefService* prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
       prefs->SetBoolean(chromeos::assistant::prefs::kAssistantDisabledByPolicy,
                         true);
-      prefs->SetBoolean(arc::prefs::kVoiceInteractionEnabled, false);
+      prefs->SetBoolean(chromeos::assistant::prefs::kAssistantEnabled, false);
       return;
     }
   } else {
diff --git a/chrome/browser/ui/ash/network/mobile_data_notifications.cc b/chrome/browser/ui/ash/network/mobile_data_notifications.cc
index b49813c..30f795b 100644
--- a/chrome/browser/ui/ash/network/mobile_data_notifications.cc
+++ b/chrome/browser/ui/ash/network/mobile_data_notifications.cc
@@ -88,7 +88,7 @@
 }
 
 void MobileDataNotifications::ActiveUserChanged(
-    const user_manager::User* active_user) {
+    user_manager::User* active_user) {
   ShowOptionalMobileDataNotification();
 }
 
diff --git a/chrome/browser/ui/ash/network/mobile_data_notifications.h b/chrome/browser/ui/ash/network/mobile_data_notifications.h
index 15527e1..182c113 100644
--- a/chrome/browser/ui/ash/network/mobile_data_notifications.h
+++ b/chrome/browser/ui/ash/network/mobile_data_notifications.h
@@ -48,7 +48,7 @@
                      const std::string& error_name) override;
 
   // UserSessionStateObserver:
-  void ActiveUserChanged(const user_manager::User* active_user) override;
+  void ActiveUserChanged(user_manager::User* active_user) override;
 
   // SessionManagerObserver:
   void OnSessionStateChanged() override;
diff --git a/chrome/browser/ui/ash/session_controller_client_impl.cc b/chrome/browser/ui/ash/session_controller_client_impl.cc
index 2a5843e..b2102e2 100644
--- a/chrome/browser/ui/ash/session_controller_client_impl.cc
+++ b/chrome/browser/ui/ash/session_controller_client_impl.cc
@@ -345,7 +345,7 @@
   return (users_logged_in + users_available_to_add) > 1;
 }
 
-void SessionControllerClientImpl::ActiveUserChanged(const User* active_user) {
+void SessionControllerClientImpl::ActiveUserChanged(User* active_user) {
   SendSessionInfoIfChanged();
 
   // UserAddedToSession is not called for the primary user session so its meta
diff --git a/chrome/browser/ui/ash/session_controller_client_impl.h b/chrome/browser/ui/ash/session_controller_client_impl.h
index c9c3ee7..aa8bcd15 100644
--- a/chrome/browser/ui/ash/session_controller_client_impl.h
+++ b/chrome/browser/ui/ash/session_controller_client_impl.h
@@ -87,7 +87,7 @@
   static bool IsMultiProfileAvailable();
 
   // user_manager::UserManager::UserSessionStateObserver:
-  void ActiveUserChanged(const user_manager::User* active_user) override;
+  void ActiveUserChanged(user_manager::User* active_user) override;
   void UserAddedToSession(const user_manager::User* added_user) override;
 
   // user_manager::UserManager::Observer
diff --git a/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.mm b/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.mm
index 6f605aedc..1db6ec9d 100644
--- a/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.mm
+++ b/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.mm
@@ -415,7 +415,9 @@
     id window = [notification object];
     // Ignore is_browser: if a window becomes main that does not belong to an
     // extension or browser, treat it the same as switching to a browser.
-    if (const Extension* extension = GetExtensionForNSWindow(window))
+    const Extension* extension = GetExtensionForNSWindow(window);
+    // Do not install the App menu for bookmark apps (which includes PWAs).
+    if (extension && !extension->from_bookmark())
       [self appBecameMain:extension];
     else
       [self chromeBecameMain];
diff --git a/chrome/browser/ui/views/native_file_system/native_file_system_browsertest.cc b/chrome/browser/ui/views/native_file_system/native_file_system_browsertest.cc
index 9ef8af5..eb66b16 100644
--- a/chrome/browser/ui/views/native_file_system/native_file_system_browsertest.cc
+++ b/chrome/browser/ui/views/native_file_system/native_file_system_browsertest.cc
@@ -4,9 +4,12 @@
 
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
+#include "base/test/bind_test_util.h"
 #include "base/test/scoped_feature_list.h"
+#include "chrome/browser/browser_process.h"
 #include "chrome/browser/native_file_system/native_file_system_permission_request_manager.h"
 #include "chrome/browser/permissions/permission_util.h"
+#include "chrome/browser/safe_browsing/download_protection/download_protection_service.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/frame/toolbar_button_provider.h"
@@ -18,6 +21,8 @@
 #include "ui/shell_dialogs/select_file_dialog_factory.h"
 #include "ui/shell_dialogs/select_file_policy.h"
 
+using safe_browsing::ClientDownloadRequest;
+
 namespace {
 
 // Fake ui::SelectFileDialog that selects one or more pre-determined files.
@@ -112,7 +117,7 @@
     return icon_view && icon_view->GetVisible();
   }
 
- private:
+ protected:
   base::test::ScopedFeatureList scoped_feature_list_;
   base::ScopedTempDir temp_dir_;
 };
@@ -211,4 +216,69 @@
   }
 }
 
+IN_PROC_BROWSER_TEST_F(NativeFileSystemBrowserTest, SafeBrowsing) {
+  const base::FilePath test_file = temp_dir_.GetPath().AppendASCII("test.exe");
+
+  std::vector<uint8_t> raw_expected_hash;
+  ASSERT_TRUE(base::HexStringToBytes(
+      "BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD",
+      &raw_expected_hash));
+  std::string expected_hash(raw_expected_hash.begin(), raw_expected_hash.end());
+  std::string expected_url =
+      "blob:" + embedded_test_server()->base_url().spec() +
+      "native-file-system-write";
+  GURL frame_url = embedded_test_server()->GetURL("/title1.html");
+
+  ui::SelectFileDialog::SetFactory(
+      new FakeSelectFileDialogFactory({test_file}));
+  ui_test_utils::NavigateToURL(browser(), frame_url);
+  content::WebContents* web_contents =
+      browser()->tab_strip_model()->GetActiveWebContents();
+
+  bool invoked_safe_browsing = false;
+
+  safe_browsing::SafeBrowsingService* sb_service =
+      g_browser_process->safe_browsing_service();
+  safe_browsing::NativeFileSystemWriteRequestSubscription subscription =
+      sb_service->download_protection_service()
+          ->RegisterNativeFileSystemWriteRequestCallback(
+              base::BindLambdaForTesting(
+                  [&](const ClientDownloadRequest* request) {
+                    invoked_safe_browsing = true;
+
+                    EXPECT_EQ(request->url(), expected_url);
+                    EXPECT_EQ(request->digests().sha256(), expected_hash);
+                    EXPECT_EQ(request->length(), 3);
+                    EXPECT_EQ(request->file_basename(), "test.exe");
+                    EXPECT_EQ(request->download_type(),
+                              ClientDownloadRequest::WIN_EXECUTABLE);
+
+                    ASSERT_GE(request->resources_size(), 2);
+
+                    EXPECT_EQ(request->resources(0).type(),
+                              ClientDownloadRequest::DOWNLOAD_URL);
+                    EXPECT_EQ(request->resources(0).url(), expected_url);
+                    EXPECT_EQ(request->resources(0).referrer(), frame_url);
+
+                    // TODO(mek): Change test so that frame url and tab url are
+                    // not the same.
+                    EXPECT_EQ(request->resources(1).type(),
+                              ClientDownloadRequest::TAB_URL);
+                    EXPECT_EQ(request->resources(1).url(), frame_url);
+                    EXPECT_EQ(request->resources(1).referrer(), "");
+                  }));
+
+  EXPECT_EQ(test_file.BaseName().AsUTF8Unsafe(),
+            content::EvalJs(web_contents,
+                            "(async () => {"
+                            "  let e = await self.chooseFileSystemEntries("
+                            "      {type: 'saveFile'});"
+                            "  const w = await e.createWriter();"
+                            "  await w.write(0, 'abc');"
+                            "  await w.close();"
+                            "  return e.name; })()"));
+
+  EXPECT_TRUE(invoked_safe_browsing);
+}
+
 // TODO(mek): Add more end-to-end test including other bits of UI.
diff --git a/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view_browsertest.cc b/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view_browsertest.cc
index e0ceb69d..ccc6e04 100644
--- a/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view_browsertest.cc
+++ b/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view_browsertest.cc
@@ -8,6 +8,7 @@
 #include <vector>
 
 #include "base/bind.h"
+#include "base/test/metrics/histogram_tester.h"
 #include "chrome/browser/engagement/site_engagement_score.h"
 #include "chrome/browser/engagement/site_engagement_service.h"
 #include "chrome/browser/history/history_service_factory.h"
@@ -27,6 +28,7 @@
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/safe_browsing/db/v4_protocol_manager_util.h"
+#include "components/security_state/core/security_state.h"
 #include "components/strings/grit/components_strings.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/common/referrer.h"
@@ -402,3 +404,45 @@
   NavigateToURL(browser(), kNavigatedUrl, WindowOpenDisposition::CURRENT_TAB);
   EXPECT_EQ(IsUIShowing(), ui_status() == UIStatus::kEnabledWithEditDistance);
 }
+
+// Tests that the SafetyTipShown histogram triggers correctly.
+IN_PROC_BROWSER_TEST_P(SafetyTipPageInfoBubbleViewBrowserTest,
+                       SafetyTipShownHistogram) {
+  const char kHistogramName[] = "Security.SafetyTips.SafetyTipShown";
+  base::HistogramTester histograms;
+
+  auto kNavigatedUrl = GetURL("site1.com");
+  SetEngagementScore(browser(), kNavigatedUrl, kLowEngagement);
+  NavigateToURL(browser(), kNavigatedUrl, WindowOpenDisposition::CURRENT_TAB);
+  histograms.ExpectBucketCount(kHistogramName,
+                               security_state::SafetyTipStatus::kNone, 1);
+
+  auto kBadRepUrl = GetURL("site2.com");
+  TriggerWarning(browser(), kBadRepUrl, WindowOpenDisposition::CURRENT_TAB);
+  CloseWarningLeaveSite(browser());
+  histograms.ExpectBucketCount(
+      kHistogramName, security_state::SafetyTipStatus::kBadReputation, 1);
+
+  const GURL kLookalikeUrl = GetURL("googlé.sk");
+  SetEngagementScore(browser(), kLookalikeUrl, kLowEngagement);
+  NavigateToURL(browser(), kLookalikeUrl, WindowOpenDisposition::CURRENT_TAB);
+  histograms.ExpectBucketCount(kHistogramName,
+                               security_state::SafetyTipStatus::kLookalike, 1);
+  histograms.ExpectTotalCount(kHistogramName, 3);
+}
+
+// Tests that the SafetyTipIgnoredPageLoad histogram triggers correctly.
+IN_PROC_BROWSER_TEST_P(SafetyTipPageInfoBubbleViewBrowserTest,
+                       SafetyTipIgnoredPageLoadHistogram) {
+  if (ui_status() == UIStatus::kDisabled) {
+    return;
+  }
+  base::HistogramTester histograms;
+  auto kNavigatedUrl = GetURL("site1.com");
+  TriggerWarning(browser(), kNavigatedUrl, WindowOpenDisposition::CURRENT_TAB);
+  CloseWarningIgnore();
+  NavigateToURL(browser(), kNavigatedUrl, WindowOpenDisposition::CURRENT_TAB);
+  histograms.ExpectBucketCount("Security.SafetyTips.SafetyTipIgnoredPageLoad",
+                               security_state::SafetyTipStatus::kBadReputation,
+                               1);
+}
diff --git a/chrome/browser/ui/views/sharing/sharing_dialog_view.cc b/chrome/browser/ui/views/sharing/sharing_dialog_view.cc
index 9463ba3..05753b8 100644
--- a/chrome/browser/ui/views/sharing/sharing_dialog_view.cc
+++ b/chrome/browser/ui/views/sharing/sharing_dialog_view.cc
@@ -123,7 +123,7 @@
 void SharingDialogView::StyledLabelLinkClicked(views::StyledLabel* label,
                                                const gfx::Range& range,
                                                int event_flags) {
-  controller_->OnHelpTextClicked();
+  controller_->OnHelpTextClicked(GetDialogType());
 }
 
 SharingDialogType SharingDialogView::GetDialogType() const {
diff --git a/chrome/browser/ui/views/sharing/sharing_dialog_view_unittest.cc b/chrome/browser/ui/views/sharing/sharing_dialog_view_unittest.cc
index 7458d49..5d5f5cc 100644
--- a/chrome/browser/ui/views/sharing/sharing_dialog_view_unittest.cc
+++ b/chrome/browser/ui/views/sharing/sharing_dialog_view_unittest.cc
@@ -12,6 +12,7 @@
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/simple_test_clock.h"
 #include "chrome/browser/sharing/click_to_call/click_to_call_ui_controller.h"
+#include "chrome/browser/sharing/sharing_metrics.h"
 #include "chrome/browser/ui/views/hover_button.h"
 #include "chrome/test/base/testing_profile.h"
 #include "chrome/test/views/chrome_views_test_base.h"
@@ -35,6 +36,7 @@
 
   MOCK_METHOD1(OnDeviceChosen, void(const syncer::DeviceInfo& device));
   MOCK_METHOD1(OnAppChosen, void(const App& app));
+  MOCK_METHOD1(OnHelpTextClicked, void(SharingDialogType dialog_type));
 };
 
 class SharingDialogViewMock : public SharingDialogView {
@@ -79,9 +81,6 @@
 
     controller_ =
         std::make_unique<ClickToCallUiControllerMock>(web_contents_.get());
-
-    controller_->set_devices_for_testing(SetUpDevices(3));
-    controller_->set_apps_for_testing(SetUpApps());
   }
 
   void TearDown() override {
@@ -89,7 +88,7 @@
     ChromeViewsTestBase::TearDown();
   }
 
-  std::vector<std::unique_ptr<syncer::DeviceInfo>> SetUpDevices(int count) {
+  std::vector<std::unique_ptr<syncer::DeviceInfo>> CreateDevices(int count) {
     std::vector<std::unique_ptr<syncer::DeviceInfo>> devices;
     for (int i = 0; i < count; i++) {
       devices.emplace_back(std::make_unique<syncer::DeviceInfo>(
@@ -102,15 +101,28 @@
     return devices;
   }
 
-  std::vector<ClickToCallUiController::App> SetUpApps() {
+  std::vector<ClickToCallUiController::App> CreateApps(int count) {
     std::vector<ClickToCallUiController::App> apps;
-    apps.emplace_back(&vector_icons::kOpenInNewIcon, gfx::Image(),
-                      base::UTF8ToUTF16("app_1"), std::string());
-    apps.emplace_back(&vector_icons::kOpenInNewIcon, gfx::Image(),
-                      base::UTF8ToUTF16("app_2"), std::string());
+    for (int i = 0; i < count; i++) {
+      apps.emplace_back(
+          &vector_icons::kOpenInNewIcon, gfx::Image(),
+          base::UTF8ToUTF16(base::StrCat({"app", base::NumberToString(i)})),
+          base::StrCat({"app_id_", base::NumberToString(i)}));
+    }
     return apps;
   }
 
+  std::unique_ptr<SharingDialogView> CreateDialogView(int devices, int apps) {
+    controller_->set_devices_for_testing(CreateDevices(devices));
+    controller_->set_apps_for_testing(CreateApps(apps));
+
+    auto dialog = std::make_unique<SharingDialogViewMock>(
+        anchor_widget_->GetContentsView(), /*web_contents=*/nullptr,
+        controller_.get());
+    dialog->Init();
+    return dialog;
+  }
+
   std::unique_ptr<TestingProfile> profile_;
   std::unique_ptr<content::WebContents> web_contents_;
   std::unique_ptr<views::Widget> anchor_widget_;
@@ -118,12 +130,9 @@
 };
 
 TEST_F(SharingDialogViewTest, PopulateDialogView) {
-  std::unique_ptr<SharingDialogView> bubble_view_ =
-      std::make_unique<SharingDialogViewMock>(anchor_widget_->GetContentsView(),
-                                              nullptr, controller_.get());
+  auto dialog = CreateDialogView(/*devices=*/3, /*apps=*/2);
 
-  bubble_view_->Init();
-  EXPECT_EQ(5UL, bubble_view_->dialog_buttons_.size());
+  EXPECT_EQ(5UL, dialog->dialog_buttons_.size());
 }
 
 TEST_F(SharingDialogViewTest, DevicePressed) {
@@ -134,34 +143,47 @@
       /* send_tab_to_self_receiving_enabled= */ false);
   EXPECT_CALL(*controller_.get(), OnDeviceChosen(DeviceEquals(&device_info)));
 
-  std::unique_ptr<SharingDialogView> bubble_view_ =
-      std::make_unique<SharingDialogViewMock>(anchor_widget_->GetContentsView(),
-                                              nullptr, controller_.get());
-
-  bubble_view_->Init();
+  auto dialog = CreateDialogView(/*devices=*/3, /*apps=*/2);
 
   const ui::MouseEvent event(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(),
                              ui::EventTimeForNow(), 0, 0);
 
-  // Choose second device: device1(tag=0), device2(tag=1)
-  bubble_view_->ButtonPressed(bubble_view_->dialog_buttons_[1], event);
+  // Choose second device: device0(tag=0), device1(tag=1)
+  dialog->ButtonPressed(dialog->dialog_buttons_[1], event);
 }
 
 TEST_F(SharingDialogViewTest, AppPressed) {
   ClickToCallUiController::App app(&vector_icons::kOpenInNewIcon, gfx::Image(),
-                                   base::UTF8ToUTF16("app_1"), std::string());
+                                   base::UTF8ToUTF16("app0"), std::string());
   EXPECT_CALL(*controller_.get(), OnAppChosen(AppEquals(&app)));
 
-  std::unique_ptr<SharingDialogView> bubble_view_ =
-      std::make_unique<SharingDialogViewMock>(anchor_widget_->GetContentsView(),
-                                              nullptr, controller_.get());
-
-  bubble_view_->Init();
+  auto dialog = CreateDialogView(/*devices=*/3, /*apps=*/2);
 
   const ui::MouseEvent event(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(),
                              ui::EventTimeForNow(), 0, 0);
 
-  // Choose first app: device1(tag=0), device2(tag=1), device3(tag=2),
-  // app1(tag=3)
-  bubble_view_->ButtonPressed(bubble_view_->dialog_buttons_[3], event);
+  // Choose first app: device0(tag=0), device1(tag=1), device2(tag=2),
+  // app0(tag=3)
+  dialog->ButtonPressed(dialog->dialog_buttons_[3], event);
+}
+
+TEST_F(SharingDialogViewTest, HelpTextClickedEmpty) {
+  EXPECT_CALL(*controller_.get(),
+              OnHelpTextClicked(SharingDialogType::kEducationalDialog));
+
+  auto dialog = CreateDialogView(/*devices=*/0, /*apps=*/0);
+
+  dialog->StyledLabelLinkClicked(/*label=*/nullptr, /*range=*/{},
+                                 /*event_flags=*/0);
+}
+
+TEST_F(SharingDialogViewTest, HelpTextClickedOnlyApps) {
+  EXPECT_CALL(
+      *controller_.get(),
+      OnHelpTextClicked(SharingDialogType::kDialogWithoutDevicesWithApp));
+
+  auto dialog = CreateDialogView(/*devices=*/0, /*apps=*/1);
+
+  dialog->StyledLabelLinkClicked(/*label=*/nullptr, /*range=*/{},
+                                 /*event_flags=*/0);
 }
diff --git a/chrome/browser/ui/views/tab_sharing/tab_sharing_ui_views.cc b/chrome/browser/ui/views/tab_sharing/tab_sharing_ui_views.cc
index 64c27eb8..3fdaaf0 100644
--- a/chrome/browser/ui/views/tab_sharing/tab_sharing_ui_views.cc
+++ b/chrome/browser/ui/views/tab_sharing/tab_sharing_ui_views.cc
@@ -31,7 +31,6 @@
 
 namespace {
 
-#if !defined(OS_MACOSX)
 const int kContentsBorderThickness = 10;
 const float kContentsBorderOpacity = 0.24;
 const SkColor kContentsBorderColor = gfx::kGoogleBlue500;
@@ -70,7 +69,6 @@
 
   browser_view->set_contents_border_widget(widget);
 }
-#endif
 
 void SetContentsBorderVisible(content::WebContents* contents, bool visible) {
   if (!contents)
@@ -113,10 +111,7 @@
           media_id.web_contents_id.main_render_frame_id));
   shared_tab_name_ = GetTabName(shared_tab_);
   profile_ = ProfileManager::GetLastUsedProfileAllowedByPolicy();
-#if !defined(OS_MACOSX)
-  // TODO(https://crbug.com/991896) fix contents border on Mac.
   InitContentsBorderWidget(shared_tab_);
-#endif
 }
 
 TabSharingUIViews::~TabSharingUIViews() {
diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
index 8ecf5ba..6143b58 100644
--- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
+++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
@@ -947,5 +947,10 @@
 #endif  // BUILDFLAG(ENABLE_EXTENSIONS)
 #endif  // !defined(OS_ANDROID)
 
+#if defined(OS_CHROMEOS)
+  if (page_url.host_piece() == chrome::kChromeUIOSSettingsHost)
+    return settings_utils::GetFaviconResourceBytes(scale_factor);
+#endif  // defined(OS_CHROMEOS)
+
   return nullptr;
 }
diff --git a/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_handler.cc b/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_handler.cc
index 86560f2..cc6a078 100644
--- a/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_handler.cc
@@ -30,10 +30,10 @@
 AddSupervisionHandler::AddSupervisionHandler(
     add_supervision::mojom::AddSupervisionHandlerRequest request,
     content::WebUI* web_ui,
+    signin::IdentityManager* identity_manager,
     Delegate* delegate)
     : web_ui_(web_ui),
-      identity_manager_(
-          IdentityManagerFactory::GetForProfile(Profile::FromWebUI(web_ui))),
+      identity_manager_(identity_manager),
       binding_(this, std::move(request)),
       delegate_(delegate) {}
 
diff --git a/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_handler.h b/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_handler.h
index 63db8d6..f6faafb 100644
--- a/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_handler.h
+++ b/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_handler.h
@@ -41,6 +41,7 @@
   AddSupervisionHandler(
       add_supervision::mojom::AddSupervisionHandlerRequest request,
       content::WebUI* web_ui,
+      signin::IdentityManager* identity_manager,
       Delegate* delegate);
   ~AddSupervisionHandler() override;
 
diff --git a/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui.cc b/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui.cc
index 68a3d60..d521ab89 100644
--- a/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui.cc
@@ -13,6 +13,7 @@
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/profiles/profile_manager.h"
+#include "chrome/browser/signin/identity_manager_factory.h"
 #include "chrome/browser/supervised_user/supervised_user_service.h"
 #include "chrome/browser/supervised_user/supervised_user_service_factory.h"
 #include "chrome/browser/ui/views/chrome_web_dialog_view.h"
@@ -58,22 +59,6 @@
 const char kAddSupervisionFlowType[] = "1";
 const char kAddSupervisionSwitch[] = "add-supervision-url";
 
-// Returns the URL of the Add Supervision flow from the command-line switch,
-// or the default value if it's not defined.
-GURL GetAddSupervisionURL() {
-  std::string url;
-  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
-  if (command_line->HasSwitch(kAddSupervisionSwitch)) {
-    url = command_line->GetSwitchValueASCII(kAddSupervisionSwitch);
-  } else {
-    url = kAddSupervisionDefaultURL;
-  }
-  const GURL result(url);
-  DCHECK(result.is_valid()) << "Invalid URL \"" << url << "\" for switch \""
-                            << kAddSupervisionSwitch << "\"";
-  return result;
-}
-
 }  // namespace
 
 // AddSupervisionDialog implementations.
@@ -146,6 +131,9 @@
 
 // AddSupervisionUI implementations.
 
+// static
+signin::IdentityManager* AddSupervisionUI::test_identity_manager_ = nullptr;
+
 AddSupervisionUI::AddSupervisionUI(content::WebUI* web_ui)
     : ui::MojoWebUIController(web_ui) {
   // Register the Mojo API handler.
@@ -153,17 +141,46 @@
       &AddSupervisionUI::BindAddSupervisionHandler, base::Unretained(this)));
 
   // Set up the basic page framework.
-  SetupResources();
+  SetUpResources();
 }
 
-void AddSupervisionUI::SetupResources() {
+AddSupervisionUI::~AddSupervisionUI() = default;
+
+bool AddSupervisionUI::CloseDialog() {
+  bool showing_confirm_dialog = MaybeShowConfirmSignoutDialog();
+  if (!showing_confirm_dialog) {
+    // We aren't showing the confirm dialog, so close the AddSupervisionDialog.
+    AddSupervisionDialog::Close();
+  }
+  return !showing_confirm_dialog;
+}
+
+// static
+void AddSupervisionUI::SetUpForTest(signin::IdentityManager* identity_manager) {
+  test_identity_manager_ = identity_manager;
+}
+
+void AddSupervisionUI::BindAddSupervisionHandler(
+    add_supervision::mojom::AddSupervisionHandlerRequest request) {
+  signin::IdentityManager* identity_manager =
+      test_identity_manager_
+          ? test_identity_manager_
+          : IdentityManagerFactory::GetForProfile(Profile::FromWebUI(web_ui()));
+
+  mojo_api_handler_ = std::make_unique<AddSupervisionHandler>(
+      std::move(request), web_ui(), identity_manager, this);
+}
+
+void AddSupervisionUI::SetUpResources() {
   Profile* profile = Profile::FromWebUI(web_ui());
   std::unique_ptr<content::WebUIDataSource> source(
       content::WebUIDataSource::Create(chrome::kChromeUIAddSupervisionHost));
 
   // Initialize supervision URL from the command-line arguments (if provided).
   supervision_url_ = GetAddSupervisionURL();
-  DCHECK(supervision_url_.DomainIs("google.com"));
+  if (!allow_non_google_url_for_tests_) {
+    DCHECK(supervision_url_.DomainIs("google.com"));
+  }
 
   // Forward data to the WebUI.
   source->AddResourcePath("post_message_api.js",
@@ -203,21 +220,24 @@
   content::WebUIDataSource::Add(profile, source.release());
 }
 
-AddSupervisionUI::~AddSupervisionUI() = default;
-
-bool AddSupervisionUI::CloseDialog() {
-  bool showing_confirm_dialog = MaybeShowConfirmSignoutDialog();
-  if (!showing_confirm_dialog) {
-    // We aren't showing the confirm dialog, so close the AddSupervisionDialog.
-    AddSupervisionDialog::Close();
+// Returns the URL of the Add Supervision flow from the command-line switch,
+// or the default value if it's not defined.
+GURL AddSupervisionUI::GetAddSupervisionURL() {
+  std::string url;
+  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+  if (command_line->HasSwitch(kAddSupervisionSwitch)) {
+    url = command_line->GetSwitchValueASCII(kAddSupervisionSwitch);
+    // The URL should only be set on the command line for testing purposes,
+    // which may include pointing to a non-google URL (i.e. http://localhost/).
+    // Therefore, we allow non-Google URLs in this instance.
+    allow_non_google_url_for_tests_ = true;
+  } else {
+    url = kAddSupervisionDefaultURL;
   }
-  return !showing_confirm_dialog;
-}
-
-void AddSupervisionUI::BindAddSupervisionHandler(
-    add_supervision::mojom::AddSupervisionHandlerRequest request) {
-  mojo_api_handler_ = std::make_unique<AddSupervisionHandler>(
-      std::move(request), web_ui(), this);
+  const GURL result(url);
+  DCHECK(result.is_valid()) << "Invalid URL \"" << url << "\" for switch \""
+                            << kAddSupervisionSwitch << "\"";
+  return result;
 }
 
 }  // namespace chromeos
diff --git a/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui.h b/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui.h
index 25a2c1b..8eaaedc 100644
--- a/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui.h
+++ b/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui.h
@@ -31,6 +31,8 @@
   // no-op.
   static void Close();
 
+  static SystemWebDialogDelegate* GetInstance();
+
   // ui::WebDialogDelegate:
   ui::ModalType GetDialogModalType() const override;
   void GetDialogSize(gfx::Size* size) const override;
@@ -43,8 +45,6 @@
   ~AddSupervisionDialog() override;
 
  private:
-  static SystemWebDialogDelegate* GetInstance();
-
   DISALLOW_COPY_AND_ASSIGN(AddSupervisionDialog);
 };
 
@@ -58,16 +58,22 @@
   // AddSupervisionHandler::Delegate:
   bool CloseDialog() override;
 
+  static void SetUpForTest(signin::IdentityManager* identity_manager);
+
  private:
   void BindAddSupervisionHandler(
       add_supervision::mojom::AddSupervisionHandlerRequest request);
-  void SetupResources();
+  void SetUpResources();
+  GURL GetAddSupervisionURL();
 
   std::unique_ptr<add_supervision::mojom::AddSupervisionHandler>
       mojo_api_handler_;
 
   GURL supervision_url_;
 
+  static signin::IdentityManager* test_identity_manager_;
+  bool allow_non_google_url_for_tests_ = false;
+
   DISALLOW_COPY_AND_ASSIGN(AddSupervisionUI);
 };
 
diff --git a/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui_browsertest.cc b/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui_browsertest.cc
new file mode 100644
index 0000000..162ba5dd
--- /dev/null
+++ b/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui_browsertest.cc
@@ -0,0 +1,179 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <string>
+
+#include "base/macros.h"
+#include "base/test/scoped_feature_list.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui.h"
+#include "chrome/browser/ui/webui/chromeos/add_supervision/confirm_signout_dialog.h"
+#include "chrome/common/webui_url_constants.h"
+#include "chrome/test/base/in_process_browser_test.h"
+#include "chrome/test/base/ui_test_utils.h"
+#include "chromeos/constants/chromeos_features.h"
+#include "components/signin/public/identity_manager/identity_test_environment.h"
+#include "content/public/browser/web_contents.h"
+#include "content/public/test/browser_test_utils.h"
+#include "content/public/test/network_connection_change_simulator.h"
+#include "third_party/cros_system_api/dbus/service_constants.h"
+
+namespace chromeos {
+
+namespace {
+
+const char kGetAddSupervisionUIElementJS[] =
+    "document.querySelector('add-supervision-ui')";
+}
+
+// Base class for AddSupervision tests.
+class AddSupervisionBrowserTest : public InProcessBrowserTest {
+ public:
+  AddSupervisionBrowserTest() {
+    scoped_feature_list_.InitWithFeatures(
+        {chromeos::features::kParentalControlsSettings}, {});
+  }
+  ~AddSupervisionBrowserTest() override = default;
+
+  void SetUpOnMainThread() override {
+    // TODO(danan):  See if this is possible to do this instead using
+    // FakeGaia.IssueOAuthToken().
+    identity_test_env_ = std::make_unique<signin::IdentityTestEnvironment>();
+    identity_test_env_->MakePrimaryAccountAvailable("example@gmail.com");
+    // This makes the identity manager return the string "access_token" for the
+    // access token.
+    identity_test_env_->SetAutomaticIssueOfAccessTokens(true);
+    AddSupervisionUI::SetUpForTest(identity_test_env_->identity_manager());
+  }
+
+  chromeos::AddSupervisionUI* GetAddSupervisionUI() {
+    return static_cast<chromeos::AddSupervisionUI*>(
+        contents()->GetWebUI()->GetController());
+  }
+
+  content::WebContents* contents() {
+    return browser()->tab_strip_model()->GetActiveWebContents();
+  }
+
+  GURL settings_webui_url() { return GURL(chrome::kChromeUISettingsURL); }
+
+  GURL add_supervision_webui_url() {
+    return GURL(chrome::kChromeUIAddSupervisionURL);
+  }
+
+  bool IsElementVisible(const std::string& element_selector) {
+    bool found;
+    bool hidden;
+    std::string script = std::string("domAutomationController.send(") +
+                         element_selector + ".hidden);";
+    LOG(ERROR) << "Script: " << script;
+    found = content::ExecuteScriptAndExtractBool(contents(), script, &hidden);
+    return found && !hidden;
+  }
+
+ private:
+  base::test::ScopedFeatureList scoped_feature_list_;
+  std::unique_ptr<signin::IdentityTestEnvironment> identity_test_env_;
+
+  DISALLOW_COPY_AND_ASSIGN(AddSupervisionBrowserTest);
+};
+
+IN_PROC_BROWSER_TEST_F(AddSupervisionBrowserTest, URLParameters) {
+  // Open the Add Supervision URL.
+  ui_test_utils::NavigateToURL(browser(), add_supervision_webui_url());
+  content::WaitForLoadStop(contents());
+
+  // Get the URL from the embedded webview.
+  std::string webview_url;
+  ASSERT_TRUE(content::ExecuteScriptAndExtractString(
+      contents(),
+      std::string("domAutomationController.send(") +
+          std::string(kGetAddSupervisionUIElementJS) +
+          ".shadowRoot.querySelector('#webview').getAttribute('src')" +
+          std::string(");"),
+      &webview_url));
+
+  GURL webview_gurl(webview_url);
+  ASSERT_TRUE(webview_gurl.has_query());
+
+  // Split the query string into a map of keys to values.
+  std::string query_str = webview_gurl.query();
+  url::Component query(0, query_str.length());
+  url::Component key;
+  url::Component value;
+  std::map<std::string, std::string> query_parts;
+  while (url::ExtractQueryKeyValue(query_str.c_str(), &query, &key, &value)) {
+    query_parts[query_str.substr(key.begin, key.len)] =
+        query_str.substr(value.begin, value.len);
+  }
+
+  // Validate the query parameters.
+  ASSERT_EQ(query_parts.at("flow_type"), "1");
+  ASSERT_EQ(query_parts.at("platform_version"),
+            base::SysInfo::OperatingSystemVersion());
+  ASSERT_EQ(query_parts.at("access_token"), "access_token");
+  ASSERT_EQ(query_parts.at("hl"), "en-US");
+}
+
+IN_PROC_BROWSER_TEST_F(AddSupervisionBrowserTest, ShowOfflineScreen) {
+  // Open the Add Supervision URL.
+  ui_test_utils::NavigateToURL(browser(), add_supervision_webui_url());
+  content::WaitForLoadStop(contents());
+
+  // Webview div should be initially visible.
+  ASSERT_TRUE(IsElementVisible(std::string(kGetAddSupervisionUIElementJS) +
+                               std::string(".webviewDiv")));
+
+  // Simulate going offline.
+  ASSERT_TRUE(content::ExecuteScript(
+      contents(), "window.dispatchEvent(new CustomEvent('offline'));"));
+
+  // Ensure the offline content view is shown.
+  ASSERT_TRUE(IsElementVisible(std::string(kGetAddSupervisionUIElementJS) +
+                               std::string(".offlineContentDiv")));
+
+  // Ensure the online webview content content is hidden.
+  ASSERT_FALSE(IsElementVisible(std::string(kGetAddSupervisionUIElementJS) +
+                                std::string(".webviewDiv")));
+
+  // Simulate going online.
+  ASSERT_TRUE(content::ExecuteScript(
+      contents(), "window.dispatchEvent(new CustomEvent('online'));"));
+
+  // Offline div should be hidden.
+  ASSERT_FALSE(IsElementVisible(std::string(kGetAddSupervisionUIElementJS) +
+                                std::string(".offlineContentDiv")));
+
+  // Webview div should be shown.
+  ASSERT_TRUE(IsElementVisible(std::string(kGetAddSupervisionUIElementJS) +
+                               std::string(".webviewDiv")));
+}
+
+IN_PROC_BROWSER_TEST_F(AddSupervisionBrowserTest, ShowConfirmSignoutDialog) {
+  // Open the Add Supervision URL.
+  ui_test_utils::NavigateToURL(browser(), add_supervision_webui_url());
+  content::WaitForLoadStop(contents());
+
+  // Request that the dialog close before supervision has been enabled.
+  ASSERT_TRUE(content::ExecuteScript(
+      contents(), std::string(kGetAddSupervisionUIElementJS) +
+                      std::string(".server.requestClose()")));
+  // Confirm that the signout dialog isn't showing
+  ASSERT_FALSE(ConfirmSignoutDialog::IsShowing());
+
+  // Simulate supervision being enabled.
+  ASSERT_TRUE(content::ExecuteScript(
+      contents(), std::string(kGetAddSupervisionUIElementJS) +
+                      std::string(".server.notifySupervisionEnabled()")));
+
+  // Request that the dialog is closed again.
+  ASSERT_TRUE(content::ExecuteScript(
+      contents(), std::string(kGetAddSupervisionUIElementJS) +
+                      std::string(".server.requestClose()")));
+
+  // Confirm that the dialog is showing.
+  ASSERT_TRUE(ConfirmSignoutDialog::IsShowing());
+}
+
+}  // namespace chromeos
diff --git a/chrome/browser/ui/webui/chromeos/add_supervision/confirm_signout_dialog.cc b/chrome/browser/ui/webui/chromeos/add_supervision/confirm_signout_dialog.cc
index ccf7e71..28d81a8 100644
--- a/chrome/browser/ui/webui/chromeos/add_supervision/confirm_signout_dialog.cc
+++ b/chrome/browser/ui/webui/chromeos/add_supervision/confirm_signout_dialog.cc
@@ -44,7 +44,9 @@
   AddChildView(body);
 }
 
-ConfirmSignoutDialog::~ConfirmSignoutDialog() = default;
+ConfirmSignoutDialog::~ConfirmSignoutDialog() {
+  ConfirmSignoutDialog::current_instance_ = nullptr;
+}
 
 ui::ModalType ConfirmSignoutDialog::GetModalType() const {
   return ui::ModalType::MODAL_TYPE_SYSTEM;
@@ -75,12 +77,21 @@
 }
 
 // static
+views::Widget* ConfirmSignoutDialog::current_instance_ = nullptr;
+
+// static
 void ConfirmSignoutDialog::Show() {
   // Ownership of the ConfirmSignoutDialog is passed to the views system.
   // Dialog is system-modal, so no parent window is needed.
-  constrained_window::CreateBrowserModalDialogViews(new ConfirmSignoutDialog(),
-                                                    nullptr /* parent window */)
-      ->Show();
+  ConfirmSignoutDialog::current_instance_ =
+      constrained_window::CreateBrowserModalDialogViews(
+          new ConfirmSignoutDialog(), nullptr /* parent window */);
+  current_instance_->Show();
+}
+
+// static
+bool ConfirmSignoutDialog::IsShowing() {
+  return ConfirmSignoutDialog::current_instance_ != nullptr;
 }
 
 }  // namespace chromeos
diff --git a/chrome/browser/ui/webui/chromeos/add_supervision/confirm_signout_dialog.h b/chrome/browser/ui/webui/chromeos/add_supervision/confirm_signout_dialog.h
index 6e7bff6..f23a9cb 100644
--- a/chrome/browser/ui/webui/chromeos/add_supervision/confirm_signout_dialog.h
+++ b/chrome/browser/ui/webui/chromeos/add_supervision/confirm_signout_dialog.h
@@ -9,6 +9,10 @@
 #include "ui/base/ui_base_types.h"
 #include "ui/views/window/dialog_delegate.h"
 
+namespace views {
+class Widget;
+}
+
 namespace chromeos {
 
 // Dialog shown when the user tries to close the flow when account has already
@@ -28,9 +32,11 @@
   base::string16 GetDialogButtonLabel(ui::DialogButton button) const override;
 
   static void Show();
+  static bool IsShowing();
 
  private:
   ConfirmSignoutDialog();
+  static views::Widget* current_instance_;
 
   DISALLOW_COPY_AND_ASSIGN(ConfirmSignoutDialog);
 };
diff --git a/chrome/browser/ui/webui/chromeos/assistant_optin/assistant_optin_ui.cc b/chrome/browser/ui/webui/chromeos/assistant_optin/assistant_optin_ui.cc
index 4d2bb830..aaf15c12 100644
--- a/chrome/browser/ui/webui/chromeos/assistant_optin/assistant_optin_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/assistant_optin/assistant_optin_ui.cc
@@ -20,7 +20,6 @@
 #include "chrome/common/url_constants.h"
 #include "chrome/grit/browser_resources.h"
 #include "chromeos/services/assistant/public/cpp/assistant_prefs.h"
-#include "components/arc/arc_prefs.h"
 #include "components/prefs/pref_service.h"
 #include "components/session_manager/core/session_manager.h"
 #include "content/public/browser/host_zoom_map.h"
@@ -184,7 +183,7 @@
 
   PrefService* prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
   const bool completed =
-      prefs->GetBoolean(arc::prefs::kVoiceInteractionEnabled) &&
+      prefs->GetBoolean(chromeos::assistant::prefs::kAssistantEnabled) &&
       (prefs->GetInteger(assistant::prefs::kAssistantConsentStatus) ==
        assistant::prefs::ConsentStatus::kActivityControlAccepted);
   std::move(callback_).Run(completed);
diff --git a/chrome/browser/ui/webui/chromeos/assistant_optin/assistant_optin_utils.cc b/chrome/browser/ui/webui/chromeos/assistant_optin/assistant_optin_utils.cc
index 618585b..96f8106a 100644
--- a/chrome/browser/ui/webui/chromeos/assistant_optin/assistant_optin_utils.cc
+++ b/chrome/browser/ui/webui/chromeos/assistant_optin/assistant_optin_utils.cc
@@ -245,8 +245,8 @@
   // If the hotword preference is managed to always disabled, then we should not
   // show Voice Match flow.
   return prefs->IsManagedPreference(
-             arc::prefs::kVoiceInteractionHotwordEnabled) &&
-         !prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled);
+             assistant::prefs::kAssistantHotwordEnabled) &&
+         !prefs->GetBoolean(assistant::prefs::kAssistantHotwordEnabled);
 }
 
 }  // namespace chromeos
diff --git a/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.cc
index 9440dfd..57f70af 100644
--- a/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.cc
@@ -21,7 +21,6 @@
 #include "chromeos/services/assistant/public/cpp/assistant_prefs.h"
 #include "chromeos/services/assistant/public/features.h"
 #include "chromeos/services/assistant/public/proto/settings_ui.pb.h"
-#include "components/arc/arc_prefs.h"
 #include "components/login/localized_values_builder.h"
 #include "components/prefs/pref_service.h"
 #include "components/user_manager/user_manager.h"
@@ -215,7 +214,7 @@
   }
 
   // Make sure enable Assistant service since we need it during the flow.
-  prefs->SetBoolean(arc::prefs::kVoiceInteractionEnabled, true);
+  prefs->SetBoolean(chromeos::assistant::prefs::kAssistantEnabled, true);
 
   if (arc::VoiceInteractionControllerClient::Get()->voice_interaction_state() ==
       ash::mojom::VoiceInteractionState::NOT_READY) {
@@ -267,7 +266,7 @@
   if (!voice_match_enrollment_done_ &&
       flow_type_ == ash::FlowType::kSpeakerIdEnrollment) {
     ProfileManager::GetActiveUserProfile()->GetPrefs()->SetBoolean(
-        arc::prefs::kVoiceInteractionHotwordEnabled, false);
+        assistant::prefs::kAssistantHotwordEnabled, false);
   }
 }
 
@@ -339,7 +338,7 @@
                   "opt-in flow.";
       PrefService* prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
       prefs->SetBoolean(assistant::prefs::kAssistantDisabledByPolicy, true);
-      prefs->SetBoolean(arc::prefs::kVoiceInteractionEnabled, false);
+      prefs->SetBoolean(chromeos::assistant::prefs::kAssistantEnabled, false);
       HandleFlowFinished();
       return;
     }
@@ -508,13 +507,13 @@
     RecordAssistantOptInStatus(VOICE_MATCH_ENROLLMENT_SKIPPED);
     if (flow_type_ != ash::FlowType::kSpeakerIdRetrain) {
       // No need to disable hotword for retrain flow since user has a model.
-      prefs->SetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled, false);
+      prefs->SetBoolean(assistant::prefs::kAssistantHotwordEnabled, false);
     }
     StopSpeakerIdEnrollment();
     ShowNextScreen();
   } else if (action == kRecordPressed) {
-    if (!prefs->GetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled)) {
-      prefs->SetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled, true);
+    if (!prefs->GetBoolean(assistant::prefs::kAssistantHotwordEnabled)) {
+      prefs->SetBoolean(assistant::prefs::kAssistantHotwordEnabled, true);
     }
 
     assistant::mojom::SpeakerIdEnrollmentClientPtr client_ptr;
@@ -575,7 +574,7 @@
 void AssistantOptInFlowScreenHandler::HandleFlowInitialized(
     const int flow_type) {
   auto* prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
-  if (!prefs->GetBoolean(arc::prefs::kVoiceInteractionEnabled)) {
+  if (!prefs->GetBoolean(chromeos::assistant::prefs::kAssistantEnabled)) {
     HandleFlowFinished();
     return;
   }
diff --git a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
index 07035ae..ee389c1 100644
--- a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
@@ -1437,7 +1437,6 @@
     const SamlPasswordAttributes& password_attributes,
     UserContext* user_context,
     std::string* error_message) {
-  // TODO(emaxx,https://crbug.com/826417): Localize the error messages.
   *user_context = UserContext(user_type, account_id);
   if (using_saml && extension_provided_client_cert_usage_observer_ &&
       extension_provided_client_cert_usage_observer_->ClientCertsWereUsed()) {
@@ -1445,13 +1444,15 @@
     std::vector<ChallengeResponseKey::SignatureAlgorithm> signature_algorithms;
     if (!extension_provided_client_cert_usage_observer_->GetOnlyUsedClientCert(
             &saml_client_cert, &signature_algorithms)) {
-      *error_message = "Multiple client certificates are not supported";
+      *error_message = l10n_util::GetStringUTF8(
+          IDS_CHALLENGE_RESPONSE_AUTH_MULTIPLE_CLIENT_CERTS_ERROR);
       return false;
     }
     ChallengeResponseKey challenge_response_key;
     if (!ExtractChallengeResponseKeyFromCert(
             *saml_client_cert, signature_algorithms, &challenge_response_key)) {
-      *error_message = "Internal error";
+      *error_message = l10n_util::GetStringUTF8(
+          IDS_CHALLENGE_RESPONSE_AUTH_INVALID_CLIENT_CERT_ERROR);
       return false;
     }
     user_context->GetMutableChallengeResponseKeys()->push_back(
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 7ab1cef..cff7ea0 100644
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -577,9 +577,6 @@
   html_source->AddBoolean(
       "showCrostiniExportImport",
       crostini::IsCrostiniExportImportUIAllowedForProfile(profile));
-  html_source->AddBoolean(
-      "enableCrostiniUsbDeviceSupport",
-      base::FeatureList::IsEnabled(chromeos::features::kCrostiniUsbSupport));
 }
 
 void AddPluginVmStrings(content::WebUIDataSource* html_source,
diff --git a/chrome/browser/vr/service/browser_xr_runtime.cc b/chrome/browser/vr/service/browser_xr_runtime.cc
index 040cc84..b848b34 100644
--- a/chrome/browser/vr/service/browser_xr_runtime.cc
+++ b/chrome/browser/vr/service/browser_xr_runtime.cc
@@ -20,7 +20,8 @@
 namespace vr {
 
 namespace {
-bool IsValidStandingTransform(const gfx::Transform& transform) {
+bool IsValidTransform(const gfx::Transform& transform,
+                      float max_translate_meters) {
   if (!transform.IsInvertible() || transform.HasPerspective())
     return false;
 
@@ -29,7 +30,6 @@
     return false;
 
   float kEpsilon = 0.1f;
-  float kMaxTranslate = 1000000;  // Maximum 1000km translation.
   if (abs(decomp.perspective[3] - 1) > kEpsilon) {
     // If testing with unexpectedly high values, catch on debug builds rather
     // than silently change data.  On release builds its better to be safe and
@@ -44,7 +44,7 @@
       return false;
     if (abs(decomp.perspective[i]) > kEpsilon)
       return false;
-    if (abs(decomp.translate[i]) > kMaxTranslate)
+    if (abs(decomp.translate[i]) > max_translate_meters)
       return false;
   }
 
@@ -83,14 +83,12 @@
     ret->field_of_view->right_degrees = kDefaultFOV;
   }
 
-  // Offset
-  float kMaxOffset = 10;
-  if (abs(eye->offset.x()) < kMaxOffset && abs(eye->offset.y()) < kMaxOffset &&
-      abs(eye->offset.z()) < kMaxOffset) {
-    ret->offset = eye->offset;
-  } else {
-    ret->offset = gfx::Vector3dF(0, 0, 0);
+  // Head-from-Eye Transform
+  // Maximum 10m translation.
+  if (IsValidTransform(eye->head_from_eye, 10)) {
+    ret->head_from_eye = eye->head_from_eye;
   }
+  // else, ret->head_from_eye remains the identity transform
 
   // Renderwidth/height
   uint32_t kMaxSize = 16384;
@@ -123,8 +121,9 @@
       info->capabilities->has_external_display, info->capabilities->can_present,
       info->capabilities->can_provide_environment_integration);
 
+  // Maximum 1000km translation.
   if (info->stage_parameters &&
-      IsValidStandingTransform(info->stage_parameters->standing_transform)) {
+      IsValidTransform(info->stage_parameters->standing_transform, 1000000)) {
     ret->stage_parameters = device::mojom::VRStageParameters::New(
         info->stage_parameters->standing_transform,
         info->stage_parameters->size_x, info->stage_parameters->size_z,
diff --git a/chrome/browser/vr/win/graphics_delegate_win.cc b/chrome/browser/vr/win/graphics_delegate_win.cc
index 580e247f..5996633 100644
--- a/chrome/browser/vr/win/graphics_delegate_win.cc
+++ b/chrome/browser/vr/win/graphics_delegate_win.cc
@@ -216,13 +216,12 @@
     const device::mojom::VREyeParametersPtr& eye_params,
     gfx::Transform head_from_world) {
   CameraModel model = {};
+
+  DCHECK(eye_params->head_from_eye.IsInvertible());
   gfx::Transform eye_from_head;
-  // We have offsets of the eyes in head space, so invert the translation to
-  // calculate the transform from head space to eye space.  For example,
-  // (0, 0, 0) in head space is (-offset.x, -offset.y, -offset.z) in eye space,
-  // and (offset.x, offset.y, offset.z) in head space is (0, 0, 0) in eye space.
-  eye_from_head.Translate3d(-eye_params->offset);
-  model.view_matrix = eye_from_head * head_from_world;
+  if (eye_params->head_from_eye.GetInverse(&eye_from_head)) {
+    model.view_matrix = eye_from_head * head_from_world;
+  }
 
   float up_tan =
       tanf(eye_params->field_of_view->up_degrees * base::kPiFloat / 180.0);
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
index 6606eaba..09abd28 100644
--- a/chrome/common/chrome_features.cc
+++ b/chrome/common/chrome_features.cc
@@ -34,6 +34,16 @@
 #endif  // defined(OS_CHROMEOS)
 
 #if defined(OS_MACOSX)
+// Enable the new multi-profile-aware app shim mode.
+// TODO(https://crbug.com/982024): Delete this flag when feature is complete.
+const base::Feature kAppShimMultiProfile{"AppShimMultiProfile",
+                                         base::FEATURE_DISABLED_BY_DEFAULT};
+
+// Can be used to disable RemoteCocoa (hosting NSWindows for apps in the app
+// process). For debugging purposes only.
+const base::Feature kAppShimRemoteCocoa{"AppShimRemoteCocoa",
+                                        base::FEATURE_ENABLED_BY_DEFAULT};
+
 // Enables the "this OS is obsolete" infobar on Mac 10.9.
 // TODO(ellyjones): Remove this after the last 10.9 release.
 const base::Feature kShow10_9ObsoleteInfobar{"Show109ObsoleteInfobar",
diff --git a/chrome/common/chrome_features.h b/chrome/common/chrome_features.h
index 303f461d0..733ece71 100644
--- a/chrome/common/chrome_features.h
+++ b/chrome/common/chrome_features.h
@@ -37,6 +37,10 @@
 
 #if defined(OS_MACOSX)
 COMPONENT_EXPORT(CHROME_FEATURES)
+extern const base::Feature kAppShimMultiProfile;
+COMPONENT_EXPORT(CHROME_FEATURES)
+extern const base::Feature kAppShimRemoteCocoa;
+COMPONENT_EXPORT(CHROME_FEATURES)
 extern const base::Feature kShow10_9ObsoleteInfobar;
 COMPONENT_EXPORT(CHROME_FEATURES) extern const base::Feature kViewsTaskManager;
 #endif  // defined(OS_MACOSX)
diff --git a/chrome/common/extensions/api/autotest_private.idl b/chrome/common/extensions/api/autotest_private.idl
index 29fb2a7..3ccdca40 100644
--- a/chrome/common/extensions/api/autotest_private.idl
+++ b/chrome/common/extensions/api/autotest_private.idl
@@ -55,7 +55,8 @@
     Maximized,
     Fullscreen,
     LeftSnapped,
-    RightSnapped
+    RightSnapped,
+    PIP
   };
 
   // A subset of WM event types in ash::WMEventType. We may add more in the
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 39ef22f..f4c733ce 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -507,6 +507,7 @@
       "../browser/engagement/important_sites_util_browsertest.cc",
       "../browser/payments/has_enrolled_instrument_browsertest.cc",
       "../browser/payments/has_enrolled_instrument_query_quota_browsertest.cc",
+      "../browser/payments/payment_handler_exploit_browsertest.cc",
       "../browser/payments/payment_request_can_make_payment_browsertest.cc",
       "../browser/payments/personal_data_manager_test_util.cc",
       "../browser/payments/personal_data_manager_test_util.h",
@@ -1799,6 +1800,7 @@
         "../browser/payments/has_enrolled_instrument_browsertest.cc",
         "../browser/payments/has_enrolled_instrument_query_quota_browsertest.cc",
         "../browser/payments/manifest_verifier_browsertest.cc",
+        "../browser/payments/payment_handler_exploit_browsertest.cc",
         "../browser/payments/payment_manifest_parser_browsertest.cc",
         "../browser/payments/payment_request_can_make_payment_browsertest.cc",
         "../browser/payments/personal_data_manager_test_util.cc",
@@ -2262,6 +2264,7 @@
         "../browser/ui/views/frame/immersive_mode_controller_ash_browsertest.cc",
         "../browser/ui/views/frame/top_controls_slide_controller_chromeos_browsertest.cc",
         "../browser/ui/views/plugin_vm/plugin_vm_launcher_view_browsertest.cc",
+        "../browser/ui/webui/chromeos/add_supervision/add_supervision_ui_browsertest.cc",
         "../browser/ui/webui/chromeos/login/discover/discover_browser_test.cc",
         "../browser/ui/webui/chromeos/login/discover/discover_browser_test.h",
         "../browser/ui/webui/chromeos/login/discover/modules/discover_module_launch_help_app_test.cc",
@@ -2614,9 +2617,9 @@
       ":browser_tests",
     ]
     data = [
-      "//third_party/webrtc/rtc_tools/testing/webrtc_apprtc_browsertest/apprtc/out/app_engine/",
-      "//third_party/webrtc/rtc_tools/testing/webrtc_apprtc_browsertest/apprtc/temp/google-cloud-sdk/",
-      "//third_party/webrtc/rtc_tools/testing/webrtc_apprtc_browsertest/collider/",
+      "//third_party/webrtc/rtc_tools/testing/browsertest/apprtc/out/app_engine/",
+      "//third_party/webrtc/rtc_tools/testing/browsertest/apprtc/temp/google-cloud-sdk/",
+      "//third_party/webrtc/rtc_tools/testing/browsertest/collider/",
     ]
     if (is_win) {
       write_runtime_deps = "$root_out_dir/$target_name.exe.runtime_deps"
@@ -3018,6 +3021,7 @@
     "../browser/password_manager/chrome_password_manager_client_unittest.cc",
     "../browser/password_manager/password_store_x_unittest.cc",
     "../browser/payments/payment_handler_permission_context_unittest.cc",
+    "../browser/performance_manager/decorators/freeze_origin_trial_policy_aggregator_unittest.cc",
     "../browser/performance_manager/decorators/frozen_frame_aggregator_unittest.cc",
     "../browser/performance_manager/decorators/page_almost_idle_decorator_unittest.cc",
     "../browser/performance_manager/decorators/process_metrics_decorator_unittest.cc",
@@ -5357,6 +5361,7 @@
       "../browser/password_manager/password_manager_interactive_test_base.cc",
       "../browser/password_manager/password_manager_interactive_test_base.h",
       "../browser/password_manager/password_manager_interactive_uitest.cc",
+      "../browser/popup_operations_interactive_uitest.cc",
       "../browser/renderer_context_menu/render_view_context_menu_browsertest_util.cc",
       "../browser/renderer_context_menu/render_view_context_menu_browsertest_util.h",
       "../browser/resource_coordinator/tab_metrics_logger_interactive_uitest.cc",
diff --git a/chrome/test/chromedriver/chrome/stub_web_view.cc b/chrome/test/chromedriver/chrome/stub_web_view.cc
index 2a70a69..c53c401 100644
--- a/chrome/test/chromedriver/chrome/stub_web_view.cc
+++ b/chrome/test/chromedriver/chrome/stub_web_view.cc
@@ -229,6 +229,10 @@
   return Status(kOk);
 }
 
+bool StubWebView::IsNonBlocking() {
+  return false;
+}
+
 bool StubWebView::IsOOPIF(const std::string& frame_id) {
   return false;
 }
diff --git a/chrome/test/chromedriver/chrome/stub_web_view.h b/chrome/test/chromedriver/chrome/stub_web_view.h
index ba85996..0c64b3c 100644
--- a/chrome/test/chromedriver/chrome/stub_web_view.h
+++ b/chrome/test/chromedriver/chrome/stub_web_view.h
@@ -115,6 +115,7 @@
                                  int y,
                                  int xoffset,
                                  int yoffset) override;
+  bool IsNonBlocking() override;
   bool IsOOPIF(const std::string& frame_id) override;
   FrameTracker* GetFrameTracker() const override;
   std::unique_ptr<base::Value> GetCastSinks() override;
diff --git a/chrome/test/chromedriver/chrome/web_view.h b/chrome/test/chromedriver/chrome/web_view.h
index 366482b..7e2036a 100644
--- a/chrome/test/chromedriver/chrome/web_view.h
+++ b/chrome/test/chromedriver/chrome/web_view.h
@@ -242,6 +242,8 @@
                                          int xoffset,
                                          int yoffset) = 0;
 
+  virtual bool IsNonBlocking() = 0;
+
   virtual bool IsOOPIF(const std::string& frame_id) = 0;
 
   virtual FrameTracker* GetFrameTracker() const = 0;
diff --git a/chrome/test/chromedriver/chrome/web_view_impl.cc b/chrome/test/chromedriver/chrome/web_view_impl.cc
index 24d3fcb..9d0f1cb4 100644
--- a/chrome/test/chromedriver/chrome/web_view_impl.cc
+++ b/chrome/test/chromedriver/chrome/web_view_impl.cc
@@ -1083,6 +1083,10 @@
   return Status(kOk);
 }
 
+bool WebViewImpl::IsNonBlocking() {
+  return navigation_tracker_->IsNonBlocking();
+}
+
 bool WebViewImpl::IsOOPIF(const std::string& frame_id) {
   WebView* target = GetTargetForFrame(this, frame_id);
   return target != nullptr && frame_id == target->GetId();
diff --git a/chrome/test/chromedriver/chrome/web_view_impl.h b/chrome/test/chromedriver/chrome/web_view_impl.h
index d84ffc3..5f28210 100644
--- a/chrome/test/chromedriver/chrome/web_view_impl.h
+++ b/chrome/test/chromedriver/chrome/web_view_impl.h
@@ -155,6 +155,7 @@
                                  int y,
                                  int xoffset,
                                  int yoffset) override;
+  bool IsNonBlocking() override;
   bool IsOOPIF(const std::string& frame_id) override;
   FrameTracker* GetFrameTracker() const override;
   std::unique_ptr<base::Value> GetCastSinks() override;
diff --git a/chrome/test/chromedriver/test/run_py_tests.py b/chrome/test/chromedriver/test/run_py_tests.py
index e524e83..bc5968c6f 100755
--- a/chrome/test/chromedriver/test/run_py_tests.py
+++ b/chrome/test/chromedriver/test/run_py_tests.py
@@ -103,11 +103,6 @@
     'ChromeDownloadDirTest.testFileDownloadWithGetHeadless',
 ]
 _OS_SPECIFIC_FILTER['linux'] = [
-    'ChromeDriverTestLegacy.testMouseMoveTo',
-    'MobileEmulationCapabilityTest.testDoesntWaitWhenPageLoadStrategyIsNone',
-    # https://bugs.chromium.org/p/chromium/issues/detail?id=1000530
-    'ChromeDriverTest.testActionsMouseMove',
-    'ChromeDriverTest.testActionsMouseDrag',
 ]
 _OS_SPECIFIC_FILTER['mac'] = [
     # https://bugs.chromium.org/p/chromedriver/issues/detail?id=1927
@@ -117,11 +112,6 @@
     'ChromeDownloadDirTest.testFileDownloadAfterTabHeadless',
     'ChromeDownloadDirTest.testFileDownloadWithClickHeadless',
     'ChromeDownloadDirTest.testFileDownloadWithGetHeadless',
-    'ChromeDriverTestLegacy.testMouseMoveTo',
-    'MobileEmulationCapabilityTest.testDoesntWaitWhenPageLoadStrategyIsNone',
-    # https://bugs.chromium.org/p/chromium/issues/detail?id=1000530
-    'ChromeDriverTest.testActionsMouseMove',
-    'ChromeDriverTest.testActionsMouseDrag',
 ]
 
 _DESKTOP_NEGATIVE_FILTER = [
diff --git a/chrome/test/chromedriver/window_commands.cc b/chrome/test/chromedriver/window_commands.cc
index 4b55a9b..7a22976 100644
--- a/chrome/test/chromedriver/window_commands.cc
+++ b/chrome/test/chromedriver/window_commands.cc
@@ -52,6 +52,9 @@
 static const char kUnreachableWebDataURL[] = "chrome-error://chromewebdata/";
 const char kDeprecatedUnreachableWebDataURL[] = "data:text/html,chromewebdata";
 
+// Match to content/browser/devtools/devTools_session const of same name
+const char kTargetClosedMessage[] = "Inspected target navigated or closed";
+
 // TODO(johnchen@chromium.org): Remove when we stop supporting legacy protocol.
 // Defaults to 20 years into the future when adding a cookie.
 const double kDefaultCookieExpiryTime = 20*365*24*60*60;
@@ -480,6 +483,12 @@
       // If the command timed out, let WaitForPendingNavigations cancel
       // the navigation if there is one.
       continue;
+    } else if (status.code() == kUnknownError && web_view->IsNonBlocking() &&
+               status.message().find(kTargetClosedMessage) !=
+                   std::string::npos) {
+      // When pageload strategy is None, new navigation can occur during
+      // execution of a command. Retry the command.
+      continue;
     } else if (status.IsError()) {
       // If the command failed while a new page or frame started loading, retry
       // the command after the pending navigation has completed.
diff --git a/chrome/test/data/autofill/captured_sites/testcases.json b/chrome/test/data/autofill/captured_sites/testcases.json
index 04590fe..9f3eafe 100644
--- a/chrome/test/data/autofill/captured_sites/testcases.json
+++ b/chrome/test/data/autofill/captured_sites/testcases.json
@@ -96,7 +96,7 @@
     { "site_name": "talbots" },
     { "site_name": "tennis_warehouse" },
     { "site_name": "therealreal" },
-    { "site_name": "threadless" },
+    { "site_name": "threadless", "expectation":"FAIL", "bug_number":996478 },
     { "site_name": "tickets" },
     { "site_name": "timberland", "disabled":true, "bug_number":993044 },
     { "site_name": "torrid" },
diff --git a/chrome/test/data/printing/test1.html b/chrome/test/data/printing/test1.html
index a6c2800..af4db0fe 100644
--- a/chrome/test/data/printing/test1.html
+++ b/chrome/test/data/printing/test1.html
@@ -13,10 +13,8 @@
 <br>
 Hello world in Korean: 여러분, 안녕하세요
 <br>
-<!-- TODO(https://crbug.com/996185): Disable Chinese until subsetting issue with Microsot JhengHei is fixed.
 Hello world in Chinese: 你好世界
 <br>
--->
 </div>
 </body>
-</html>
+</html>
\ No newline at end of file
diff --git a/chrome/test/data/select_popup.html b/chrome/test/data/select_popup.html
new file mode 100644
index 0000000..e2f6b3ec
--- /dev/null
+++ b/chrome/test/data/select_popup.html
@@ -0,0 +1,56 @@
+<html>
+  <head>
+    <style>
+      body {
+        margin: 0px;
+        padding: 0px;
+      }
+      #menu1 {
+        position: absolute;
+        top: 0px;
+        left: 0px;
+      }
+      #menu2 {
+        position: absolute;
+        top: 0px;
+        left: 100px;
+      }
+      #menu3 {
+        position: absolute;
+        top: 0px;
+        left: 200px;
+      }
+      div {
+        position: absolute;
+        top: 100px;
+      }
+    </style>
+    <script>
+      function log(text) {
+        document.getElementById("status").innerHTML += text + ',';
+        document.title = text;
+      }
+    </script>
+  </head>
+  <body onload="log('onload')">
+    <select id="menu1" onchange="log('onchange1')">
+      <option>foo</option>
+      <option>bar</option>
+      <option>qux</option>
+      <option selected>baz</option>
+    </select>
+    <select id="menu2" onchange="log('onchange2')">
+      <option>foo</option>
+      <option>bar</option>
+      <option>qux</option>
+      <option selected>baz</option>
+    </select>
+    <select id="menu3" onclick="log('onclick3')">
+      <option>foo</option>
+      <option>bar</option>
+      <option>qux</option>
+      <option selected>baz</option>
+    </select>
+    <div id="status"></div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/chrome/test/data/webui/BUILD.gn b/chrome/test/data/webui/BUILD.gn
index a4f69668..4f2a8c7 100644
--- a/chrome/test/data/webui/BUILD.gn
+++ b/chrome/test/data/webui/BUILD.gn
@@ -35,6 +35,7 @@
     "$root_gen_dir/chrome/test/data/webui/cr_elements/cr_checkbox_test.m.js",
     "$root_gen_dir/chrome/test/data/webui/cr_elements/cr_icon_button_focus_tests.m.js",
     "$root_gen_dir/chrome/test/data/webui/cr_elements/cr_input_test.m.js",
+    "$root_gen_dir/chrome/test/data/webui/cr_elements/cr_tabs_test.m.js",
     "$root_gen_dir/chrome/test/data/webui/cr_elements/cr_toggle_test.m.js",
     "$root_gen_dir/chrome/test/data/webui/test_browser_proxy.m.js",
     "$root_gen_dir/chrome/test/data/webui/test_util.m.js",
@@ -160,6 +161,7 @@
   ]
   data = [
     "$root_gen_dir/chrome/test/data/webui/cr_elements/cr_button_tests.m.js",
+    "$root_gen_dir/chrome/test/data/webui/cr_elements/cr_dialog_test.m.js",
     "$root_gen_dir/chrome/test/data/webui/cr_elements/cr_drawer_tests.m.js",
     "$root_gen_dir/chrome/test/data/webui/cr_elements/cr_icon_button_tests.m.js",
     "$root_gen_dir/chrome/test/data/webui/cr_elements/cr_radio_button_test.m.js",
diff --git a/chrome/test/data/webui/cr_elements/BUILD.gn b/chrome/test/data/webui/cr_elements/BUILD.gn
index f9bde41..dd1f714f1 100644
--- a/chrome/test/data/webui/cr_elements/BUILD.gn
+++ b/chrome/test/data/webui/cr_elements/BUILD.gn
@@ -8,12 +8,14 @@
   input_files = [
     "cr_button_tests.js",
     "cr_checkbox_test.js",
+    "cr_dialog_test.js",
     "cr_drawer_tests.js",
     "cr_icon_button_tests.js",
     "cr_icon_button_focus_tests.js",
     "cr_input_test.js",
     "cr_radio_button_test.js",
     "cr_radio_group_test.js",
+    "cr_tabs_test.js",
     "cr_toast_test.js",
     "cr_toggle_test.js",
     "cr_view_manager_test.js",
diff --git a/chrome/test/data/webui/cr_elements/cr_dialog_test.js b/chrome/test/data/webui/cr_elements/cr_dialog_test.js
index ffdc908..f07cace 100644
--- a/chrome/test/data/webui/cr_elements/cr_dialog_test.js
+++ b/chrome/test/data/webui/cr_elements/cr_dialog_test.js
@@ -2,6 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// clang-format off
+// #import 'chrome://resources/cr_elements/cr_dialog/cr_dialog.m.js';
+//
+// #import {eventToPromise, flushTasks} from 'chrome://test/test_util.m.js';
+// #import {keyDownOn, keyEventOn, tap} from 'chrome://resources/polymer/v3_0/iron-test-helpers/mock-interactions.js';
+// #import {Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+// clang-format on
+
 suite('cr-dialog', function() {
   function pressEnter(element) {
     MockInteractions.keyEventOn(element, 'keypress', 13, undefined, 'Enter');
@@ -36,6 +44,11 @@
 
   setup(function() {
     PolymerTest.clearBody();
+    // Ensure svg, which is referred to by a relative URL, is loaded from
+    // chrome://resources and not chrome://test
+    const base = document.createElement('base');
+    base.href = 'chrome://resources/cr_elements/';
+    document.head.appendChild(base);
   });
 
   test('cr-dialog-open event fires when opened', function() {
@@ -423,7 +436,7 @@
     assertTrue(dialog.open);
     assertTrue(dialog.hasAttribute('open'));
 
-    e = new CustomEvent('cancel', {cancelable: true});
+    const e = new CustomEvent('cancel', {cancelable: true});
     dialog.getNative().dispatchEvent(e);
 
     assertFalse(dialog.open);
diff --git a/chrome/test/data/webui/cr_elements/cr_elements_v3_browsertest.js b/chrome/test/data/webui/cr_elements/cr_elements_v3_browsertest.js
index 307fe0ea..1b9d058 100644
--- a/chrome/test/data/webui/cr_elements/cr_elements_v3_browsertest.js
+++ b/chrome/test/data/webui/cr_elements/cr_elements_v3_browsertest.js
@@ -54,6 +54,18 @@
 });
 
 // eslint-disable-next-line no-var
+var CrElementsDialogV3Test = class extends CrElementsV3BrowserTest {
+  /** @override */
+  get browsePreload() {
+    return 'chrome://test?module=cr_elements/cr_dialog_test.m.js';
+  }
+};
+
+TEST_F('CrElementsDialogV3Test', 'All', function() {
+  mocha.run();
+});
+
+// eslint-disable-next-line no-var
 var CrElementsDrawerV3Test = class extends CrElementsV3BrowserTest {
   /** @override */
   get browsePreload() {
diff --git a/chrome/test/data/webui/cr_elements/cr_elements_v3_focus_test.js b/chrome/test/data/webui/cr_elements/cr_elements_v3_focus_test.js
index e4f028b..80fec0d 100644
--- a/chrome/test/data/webui/cr_elements/cr_elements_v3_focus_test.js
+++ b/chrome/test/data/webui/cr_elements/cr_elements_v3_focus_test.js
@@ -41,14 +41,14 @@
 });
 
 // eslint-disable-next-line no-var
-var CrElementsToggleV3Test = class extends CrElementsV3FocusTest {
+var CrElementsIconButtonV3FocusTest = class extends CrElementsV3FocusTest {
   /** @override */
   get browsePreload() {
-    return 'chrome://test?module=cr_elements/cr_toggle_test.m.js';
+    return 'chrome://test?module=cr_elements/cr_icon_button_focus_tests.m.js';
   }
 };
 
-TEST_F('CrElementsToggleV3Test', 'All', function() {
+TEST_F('CrElementsIconButtonV3FocusTest', 'All', function() {
   mocha.run();
 });
 
@@ -65,13 +65,25 @@
 });
 
 // eslint-disable-next-line no-var
-var CrElementsIconButtonV3FocusTest = class extends CrElementsV3FocusTest {
+var CrElementsTabsV3Test = class extends CrElementsV3FocusTest {
   /** @override */
   get browsePreload() {
-    return 'chrome://test?module=cr_elements/cr_icon_button_focus_tests.m.js';
+    return 'chrome://test?module=cr_elements/cr_tabs_test.m.js';
   }
 };
 
-TEST_F('CrElementsIconButtonV3FocusTest', 'All', function() {
+TEST_F('CrElementsTabsV3Test', 'All', function() {
+  mocha.run();
+});
+
+// eslint-disable-next-line no-var
+var CrElementsToggleV3Test = class extends CrElementsV3FocusTest {
+  /** @override */
+  get browsePreload() {
+    return 'chrome://test?module=cr_elements/cr_toggle_test.m.js';
+  }
+};
+
+TEST_F('CrElementsToggleV3Test', 'All', function() {
   mocha.run();
 });
diff --git a/chrome/test/data/webui/cr_elements/cr_tabs_test.js b/chrome/test/data/webui/cr_elements/cr_tabs_test.js
index b4252b6f..2ae9b7fa 100644
--- a/chrome/test/data/webui/cr_elements/cr_tabs_test.js
+++ b/chrome/test/data/webui/cr_elements/cr_tabs_test.js
@@ -2,6 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// clang-format off
+// #import 'chrome://resources/cr_elements/cr_tabs/cr_tabs.m.js';
+// #import {eventToPromise, flushTasks} from 'chrome://test/test_util.m.js';
+// #import {getDeepActiveElement} from 'chrome://resources/js/util.m.js';
+// #import {keyDownOn} from 'chrome://resources/polymer/v3_0/iron-test-helpers/mock-interactions.js';
+// clang-format on
+
 suite('cr_tabs_test', function() {
   /** @type {?CrTabsElement} */
   let tabs = null;
diff --git a/chrome/test/data/webui/history/history_browsertest.js b/chrome/test/data/webui/history/history_browsertest.js
index cae32ab..baf4c6f 100644
--- a/chrome/test/data/webui/history/history_browsertest.js
+++ b/chrome/test/data/webui/history/history_browsertest.js
@@ -117,8 +117,7 @@
   ]),
 };
 
-// TODO(https://crbug.com/1000573): Re-enable once flakiness is fixed.
-TEST_F('HistoryMetricsTest', 'DISABLED_All', function() {
+TEST_F('HistoryMetricsTest', 'All', function() {
   mocha.run();
 });
 
diff --git a/chrome/test/data/webui/history/history_metrics_test.js b/chrome/test/data/webui/history/history_metrics_test.js
index c6025dd..8da6329 100644
--- a/chrome/test/data/webui/history/history_metrics_test.js
+++ b/chrome/test/data/webui/history/history_metrics_test.js
@@ -88,17 +88,12 @@
     // period, with no regard to DST shifts.
     const weekAgo =
         new Date(new Date().getTime() - 7 * 24 * 60 * 60 * 1000 - 1);
-    // Convert the date to ISO8601 format, i.e. YYYY-MM-DD. We can take
-    // advantage of the fact that the Belgian locale uses exactly this format.
-    const weekAgoISO = weekAgo.toLocaleString(
-        'be', {year: 'numeric', month: '2-digit', day: '2-digit'});
 
-    const historyEntry =
-        createHistoryEntry(weekAgoISO, 'http://www.google.com');
+    const historyEntry = createHistoryEntry(weekAgo, 'http://www.google.com');
     historyEntry.starred = true;
-    app.historyResult(createHistoryInfo(), [
-      createHistoryEntry(weekAgoISO, 'http://www.example.com'), historyEntry
-    ]);
+    app.historyResult(
+        createHistoryInfo(),
+        [createHistoryEntry(weekAgo, 'http://www.example.com'), historyEntry]);
 
     return test_util.flushTasks()
         .then(() => {
@@ -110,6 +105,10 @@
           assertEquals(1, histogramMap['HistoryPage.ClickPosition'][1]);
           assertEquals(1, histogramMap['HistoryPage.ClickPositionSubset'][1]);
 
+          // TODO(https://crbug.com/1000573): Log the contents of this histogram
+          // for debugging in case the flakiness reoccurs.
+          console.log(Object.keys(histogramMap['HistoryPage.ClickAgeInDays']));
+
           // The "age in days" histogram should record 8 days, since the history
           // entry was created between 7 and 8 days ago and we round the
           // recorded value up.
@@ -120,9 +119,9 @@
           assertEquals(1, actionMap['Search']);
           app.set('queryState_.incremental', true);
           app.historyResult(createHistoryInfo('goog'), [
-            createHistoryEntry(weekAgoISO, 'http://www.google.com'),
-            createHistoryEntry(weekAgoISO, 'http://www.google.com'),
-            createHistoryEntry(weekAgoISO, 'http://www.google.com')
+            createHistoryEntry(weekAgo, 'http://www.google.com'),
+            createHistoryEntry(weekAgo, 'http://www.google.com'),
+            createHistoryEntry(weekAgo, 'http://www.google.com')
           ]);
           return test_util.flushTasks();
         })
diff --git a/chrome/test/data/webui/settings/people_page_test.js b/chrome/test/data/webui/settings/people_page_test.js
index 0021ffb..7cee829 100644
--- a/chrome/test/data/webui/settings/people_page_test.js
+++ b/chrome/test/data/webui/settings/people_page_test.js
@@ -652,6 +652,8 @@
           showOSSettings: false,
           // Simulate ChromeOSAccountManager (Google Accounts support).
           isAccountManagerEnabled: true,
+          // Simulate parental controls.
+          showParentalControls: true,
         });
       });
 
@@ -707,6 +709,160 @@
         profileIcon.click();
         assertEquals(oldRoute, settings.getCurrentRoute());
       });
+
+      test('parental controls page is shown when enabled', () => {
+        // Setup button is shown and enabled.
+        const parentalControlsItem =
+            assert(peoplePage.$$('settings-parental-controls-page'));
+      });
+    });
+
+    /** @implements {parental_controls.ParentalControlsBrowserProxy} */
+    class TestParentalControlsBrowserProxy extends TestBrowserProxy {
+      constructor() {
+        super([
+          'showAddSupervisionDialog',
+          'launchFamilyLinkSettings',
+        ]);
+      }
+
+      /** @override */
+      launchFamilyLinkSettings() {
+        this.methodCalled('launchFamilyLinkSettings');
+      }
+
+      /** @override */
+      showAddSupervisionDialog() {
+        this.methodCalled('showAddSupervisionDialog');
+      }
+    }
+
+    suite('Chrome OS parental controls page setup item tests', function() {
+      /** @type {ParentalControlsPage} */
+      let parentalControlsPage = null;
+
+      /** @type {TestParentalControlsBrowserProxy} */
+      let parentalControlsBrowserProxy = null;
+
+      suiteSetup(function() {
+        loadTimeData.overrideValues({
+          // Simulate parental controls.
+          showParentalControls: true,
+        });
+      });
+
+      setup(function() {
+        parentalControlsBrowserProxy = new TestParentalControlsBrowserProxy();
+        parental_controls.BrowserProxyImpl.instance_ =
+            parentalControlsBrowserProxy;
+
+        PolymerTest.clearBody();
+        parentalControlsPage =
+            document.createElement('settings-parental-controls-page');
+        parentalControlsPage.pageVisibility = settings.pageVisibility;
+        document.body.appendChild(parentalControlsPage);
+        Polymer.dom.flush();
+      });
+
+      teardown(function() {
+        parentalControlsPage.remove();
+      });
+
+      test('parental controls page enabled when online', () => {
+        // Setup button is shown and enabled.
+        const setupButton = assert(
+            parentalControlsPage.$$('#parental-controls-item cr-button'));
+
+        setupButton.click();
+
+        // Ensure that the request to launch the add supervision flow went
+        // through.
+        assertEquals(
+            parentalControlsBrowserProxy.getCallCount(
+                'showAddSupervisionDialog'),
+            1);
+      });
+
+      test('parental controls page disabled when offline', () => {
+        // Simulate going offline
+        window.dispatchEvent(new CustomEvent('offline'));
+        // Setup button is shown but disabled.
+        const setupButton = assert(
+            parentalControlsPage.$$('#parental-controls-item cr-button'));
+        assertTrue(setupButton.disabled);
+
+        setupButton.click();
+
+        // Ensure that the request to launch the add supervision flow does not
+        // go through.
+        assertEquals(
+            parentalControlsBrowserProxy.getCallCount(
+                'showAddSupervisionDialog'),
+            0);
+      });
+
+      test(
+          'parental controls page re-enabled when it comes back online', () => {
+            // Simulate going offline
+            window.dispatchEvent(new CustomEvent('offline'));
+            // Setup button is shown but disabled.
+            const setupButton = assert(
+                parentalControlsPage.$$('#parental-controls-item cr-button'));
+            assertTrue(setupButton.disabled);
+
+            // Come back online.
+            window.dispatchEvent(new CustomEvent('online'));
+            // Setup button is shown and re-enabled.
+            assertFalse(setupButton.disabled);
+          });
+    });
+
+
+    suite('Chrome OS parental controls page child account tests', function() {
+      /** @type {ParentalControlsPage} */
+      let parentalControlsPage = null;
+
+      /** @type {TestParentalControlsBrowserProxy} */
+      let parentalControlsBrowserProxy = null;
+
+      suiteSetup(function() {
+        loadTimeData.overrideValues({
+          // Simulate parental controls.
+          showParentalControls: true,
+          // Simulate child account.
+          isChild: true,
+        });
+      });
+
+      setup(async function() {
+        parentalControlsBrowserProxy = new TestParentalControlsBrowserProxy();
+        parental_controls.BrowserProxyImpl.instance_ =
+            parentalControlsBrowserProxy;
+
+        PolymerTest.clearBody();
+        parentalControlsPage =
+            document.createElement('settings-parental-controls-page');
+        parentalControlsPage.pageVisibility = settings.pageVisibility;
+        document.body.appendChild(parentalControlsPage);
+        Polymer.dom.flush();
+      });
+
+      teardown(function() {
+        parentalControlsPage.remove();
+      });
+
+      test('parental controls page child view shown to child account', () => {
+        // Get the link row.
+        const linkRow = assert(
+            parentalControlsPage.$$('#parental-controls-item cr-link-row'));
+
+        linkRow.click();
+        // Ensure that the request to launch FLH went through.
+        assertEquals(
+            parentalControlsBrowserProxy.getCallCount(
+                'launchFamilyLinkSettings'),
+            1);
+      });
     });
   }
 });
diff --git a/chromecast/browser/BUILD.gn b/chromecast/browser/BUILD.gn
index 45ae4458..90f3537 100644
--- a/chromecast/browser/BUILD.gn
+++ b/chromecast/browser/BUILD.gn
@@ -144,6 +144,7 @@
     ":browser_buildflags",
     "//base",
     "//base:i18n",
+    "//base/util/memory_pressure",
     "//cc",
     "//chromecast:chromecast_buildflags",
     "//chromecast/activity",
@@ -229,8 +230,8 @@
 
   if (is_linux) {
     sources += [
-      "cast_memory_pressure_monitor.cc",
-      "cast_memory_pressure_monitor.h",
+      "cast_system_memory_pressure_evaluator.cc",
+      "cast_system_memory_pressure_evaluator.h",
       "memory_pressure_controller_impl.cc",
       "memory_pressure_controller_impl.h",
     ]
diff --git a/chromecast/browser/cast_browser_main_parts.cc b/chromecast/browser/cast_browser_main_parts.cc
index 2895cbc..e2aefb0 100644
--- a/chromecast/browser/cast_browser_main_parts.cc
+++ b/chromecast/browser/cast_browser_main_parts.cc
@@ -36,7 +36,7 @@
 #include "chromecast/browser/cast_browser_process.h"
 #include "chromecast/browser/cast_content_browser_client.h"
 #include "chromecast/browser/cast_feature_list_creator.h"
-#include "chromecast/browser/cast_memory_pressure_monitor.h"
+#include "chromecast/browser/cast_system_memory_pressure_evaluator.h"
 #include "chromecast/browser/devtools/remote_debugging_server.h"
 #include "chromecast/browser/media/media_caps_impl.h"
 #include "chromecast/browser/metrics/cast_browser_metrics.h"
@@ -485,7 +485,10 @@
 
 void CastBrowserMainParts::PreMainMessageLoopRun() {
 #if !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
-  memory_pressure_monitor_.reset(new CastMemoryPressureMonitor());
+  memory_pressure_monitor_.reset(new util::MultiSourceMemoryPressureMonitor());
+  memory_pressure_monitor_->SetSystemEvaluator(
+      std::make_unique<CastSystemMemoryPressureEvaluator>(
+          memory_pressure_monitor_->CreateVoter()));
 
   // base::Unretained() is safe because the browser client will outlive any
   // component in the browser; this factory method will not be called after
diff --git a/chromecast/browser/cast_browser_main_parts.h b/chromecast/browser/cast_browser_main_parts.h
index c20516f..251a177 100644
--- a/chromecast/browser/cast_browser_main_parts.h
+++ b/chromecast/browser/cast_browser_main_parts.h
@@ -9,6 +9,7 @@
 
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
+#include "base/util/memory_pressure/multi_source_memory_pressure_monitor.h"
 #include "build/build_config.h"
 #include "build/buildflag.h"
 #include "chromecast/chromecast_buildflags.h"
@@ -34,7 +35,6 @@
 #endif  // defined(USE_AURA)
 
 namespace chromecast {
-class CastMemoryPressureMonitor;
 class WaylandServerController;
 
 #if defined(USE_AURA)
@@ -112,7 +112,8 @@
       media_pipeline_backend_manager_;
 
 #if !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
-  std::unique_ptr<CastMemoryPressureMonitor> memory_pressure_monitor_;
+  std::unique_ptr<util::MultiSourceMemoryPressureMonitor>
+      memory_pressure_monitor_;
 #endif  // !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
 
 #if BUILDFLAG(ENABLE_CHROMECAST_EXTENSIONS)
diff --git a/chromecast/browser/cast_memory_pressure_monitor.cc b/chromecast/browser/cast_memory_pressure_monitor.cc
deleted file mode 100644
index f8af2818..0000000
--- a/chromecast/browser/cast_memory_pressure_monitor.cc
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright 2016 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 "chromecast/browser/cast_memory_pressure_monitor.h"
-
-#include <algorithm>
-
-#include "base/bind.h"
-#include "base/command_line.h"
-#include "base/location.h"
-#include "base/metrics/histogram_macros.h"
-#include "base/process/process_metrics.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "chromecast/base/chromecast_switches.h"
-#include "chromecast/base/metrics/cast_metrics_helper.h"
-
-namespace chromecast {
-namespace {
-
-// Memory thresholds (as fraction of total memory) for memory pressure levels.
-// See more detailed description of pressure heuristic in PollPressureLevel.
-// TODO(halliwell): tune thresholds based on data.
-constexpr float kCriticalMemoryFraction = 0.25f;
-constexpr float kModerateMemoryFraction = 0.4f;
-
-// Memory thresholds in MB for the simple heuristic based on 'free' memory.
-constexpr int kCriticalFreeMemoryKB = 20 * 1024;
-constexpr int kModerateFreeMemoryKB = 30 * 1024;
-
-constexpr int kPollingIntervalMS = 5000;
-
-int GetSystemReservedKb() {
-  int rtn_kb_ = 0;
-  const base::CommandLine* command_line(base::CommandLine::ForCurrentProcess());
-  base::StringToInt(
-      command_line->GetSwitchValueASCII(switches::kMemPressureSystemReservedKb),
-      &rtn_kb_);
-  DCHECK(rtn_kb_ >= 0);
-  return std::max(rtn_kb_, 0);
-}
-
-}  // namespace
-
-CastMemoryPressureMonitor::CastMemoryPressureMonitor()
-    : critical_memory_fraction_(
-          GetSwitchValueDouble(switches::kCastMemoryPressureCriticalFraction,
-                               kCriticalMemoryFraction)),
-      moderate_memory_fraction_(
-          GetSwitchValueDouble(switches::kCastMemoryPressureModerateFraction,
-                               kModerateMemoryFraction)),
-      current_level_(base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE),
-      system_reserved_kb_(GetSystemReservedKb()),
-      dispatch_callback_(
-          base::Bind(&base::MemoryPressureListener::NotifyMemoryPressure)),
-      weak_ptr_factory_(this) {
-  PollPressureLevel();
-}
-
-CastMemoryPressureMonitor::~CastMemoryPressureMonitor() {}
-
-CastMemoryPressureMonitor::MemoryPressureLevel
-CastMemoryPressureMonitor::GetCurrentPressureLevel() const {
-  return current_level_;
-}
-
-void CastMemoryPressureMonitor::PollPressureLevel() {
-  MemoryPressureLevel level =
-      base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE;
-
-  base::SystemMemoryInfoKB info;
-  if (!base::GetSystemMemoryInfo(&info)) {
-    LOG(ERROR) << "GetSystemMemoryInfo failed";
-  } else if (system_reserved_kb_ != 0 || info.available != 0) {
-    // Preferred memory pressure heuristic:
-    // 1. Use /proc/meminfo's MemAvailable if possible, fall back to estimate
-    // of free + buffers + cached otherwise.
-    const int total_available = (info.available != 0)
-                                    ? info.available
-                                    : (info.free + info.buffers + info.cached);
-
-    // 2. Allow some memory to be 'reserved' on command line.
-    const int available = total_available - system_reserved_kb_;
-    const int total = info.total - system_reserved_kb_;
-    DCHECK_GT(total, 0);
-    const float ratio = available / static_cast<float>(total);
-
-    if (ratio < critical_memory_fraction_)
-      level = base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL;
-    else if (ratio < moderate_memory_fraction_)
-      level = base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE;
-  } else {
-    // Backup method purely using 'free' memory.  It may generate more
-    // pressure events than necessary, since more memory may actually be free.
-    if (info.free < kCriticalFreeMemoryKB)
-      level = base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL;
-    else if (info.free < kModerateFreeMemoryKB)
-      level = base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE;
-  }
-
-  UpdateMemoryPressureLevel(level);
-
-  UMA_HISTOGRAM_PERCENTAGE("Platform.MeminfoMemFree",
-                           (info.free * 100.0) / info.total);
-  UMA_HISTOGRAM_CUSTOM_COUNTS("Platform.Cast.MeminfoMemFreeDerived2",
-                              (info.free + info.buffers + info.cached) / 1024,
-                              1, 2000, 100);
-  if (info.available != 0) {
-    UMA_HISTOGRAM_CUSTOM_COUNTS("Platform.Cast.MeminfoMemAvailable2",
-                                info.available / 1024, 1, 2000, 100);
-  }
-
-  base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
-      FROM_HERE,
-      base::BindOnce(&CastMemoryPressureMonitor::PollPressureLevel,
-                     weak_ptr_factory_.GetWeakPtr()),
-      base::TimeDelta::FromMilliseconds(kPollingIntervalMS));
-}
-
-void CastMemoryPressureMonitor::UpdateMemoryPressureLevel(
-    MemoryPressureLevel new_level) {
-  if (new_level != base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE)
-    dispatch_callback_.Run(new_level);
-
-  if (new_level == current_level_)
-    return;
-
-  current_level_ = new_level;
-  metrics::CastMetricsHelper::GetInstance()->RecordApplicationEventWithValue(
-      "Memory.Pressure.LevelChange", new_level);
-}
-
-void CastMemoryPressureMonitor::SetDispatchCallback(
-    const DispatchCallback& callback) {
-  dispatch_callback_ = callback;
-}
-
-}  // namespace chromecast
diff --git a/chromecast/browser/cast_memory_pressure_monitor.h b/chromecast/browser/cast_memory_pressure_monitor.h
deleted file mode 100644
index 14262a0..0000000
--- a/chromecast/browser/cast_memory_pressure_monitor.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2016 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 CHROMECAST_BROWSER_CAST_MEMORY_PRESSURE_MONITOR_H_
-#define CHROMECAST_BROWSER_CAST_MEMORY_PRESSURE_MONITOR_H_
-
-#include "base/macros.h"
-#include "base/memory/memory_pressure_monitor.h"
-#include "base/memory/weak_ptr.h"
-
-namespace chromecast {
-
-// Memory pressure monitor for Cast: polls for current memory
-// usage periodically and sends memory pressure notifications.
-class CastMemoryPressureMonitor : public base::MemoryPressureMonitor {
- public:
-  CastMemoryPressureMonitor();
-  ~CastMemoryPressureMonitor() override;
-
-  // base::MemoryPressureMonitor implementation:
-  MemoryPressureLevel GetCurrentPressureLevel() const override;
-  void SetDispatchCallback(const DispatchCallback& callback) override;
-
- private:
-  void PollPressureLevel();
-  void UpdateMemoryPressureLevel(MemoryPressureLevel new_level);
-
-  const float critical_memory_fraction_;
-  const float moderate_memory_fraction_;
-
-  MemoryPressureLevel current_level_;
-  const int system_reserved_kb_;
-  DispatchCallback dispatch_callback_;
-  base::WeakPtrFactory<CastMemoryPressureMonitor> weak_ptr_factory_;
-
-  DISALLOW_COPY_AND_ASSIGN(CastMemoryPressureMonitor);
-};
-
-}  // namespace chromecast
-
-#endif  // CHROMECAST_BROWSER_CAST_MEMORY_PRESSURE_MONITOR_H_
diff --git a/chromecast/browser/cast_system_memory_pressure_evaluator.cc b/chromecast/browser/cast_system_memory_pressure_evaluator.cc
new file mode 100644
index 0000000..24772fb
--- /dev/null
+++ b/chromecast/browser/cast_system_memory_pressure_evaluator.cc
@@ -0,0 +1,131 @@
+// Copyright 2016 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 "chromecast/browser/cast_system_memory_pressure_evaluator.h"
+
+#include <algorithm>
+
+#include "base/bind.h"
+#include "base/command_line.h"
+#include "base/location.h"
+#include "base/metrics/histogram_macros.h"
+#include "base/process/process_metrics.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/threading/thread_task_runner_handle.h"
+#include "chromecast/base/chromecast_switches.h"
+#include "chromecast/base/metrics/cast_metrics_helper.h"
+
+namespace chromecast {
+namespace {
+
+// Memory thresholds (as fraction of total memory) for memory pressure levels.
+// See more detailed description of pressure heuristic in PollPressureLevel.
+// TODO(halliwell): tune thresholds based on data.
+constexpr float kCriticalMemoryFraction = 0.25f;
+constexpr float kModerateMemoryFraction = 0.4f;
+
+// Memory thresholds in MB for the simple heuristic based on 'free' memory.
+constexpr int kCriticalFreeMemoryKB = 20 * 1024;
+constexpr int kModerateFreeMemoryKB = 30 * 1024;
+
+constexpr int kPollingIntervalMS = 5000;
+
+int GetSystemReservedKb() {
+  int rtn_kb_ = 0;
+  const base::CommandLine* command_line(base::CommandLine::ForCurrentProcess());
+  base::StringToInt(
+      command_line->GetSwitchValueASCII(switches::kMemPressureSystemReservedKb),
+      &rtn_kb_);
+  DCHECK(rtn_kb_ >= 0);
+  return std::max(rtn_kb_, 0);
+}
+
+}  // namespace
+
+CastSystemMemoryPressureEvaluator::CastSystemMemoryPressureEvaluator(
+    std::unique_ptr<util::MemoryPressureVoter> voter)
+    : util::SystemMemoryPressureEvaluator(std::move(voter)),
+      critical_memory_fraction_(
+          GetSwitchValueDouble(switches::kCastMemoryPressureCriticalFraction,
+                               kCriticalMemoryFraction)),
+      moderate_memory_fraction_(
+          GetSwitchValueDouble(switches::kCastMemoryPressureModerateFraction,
+                               kModerateMemoryFraction)),
+      system_reserved_kb_(GetSystemReservedKb()),
+      weak_ptr_factory_(this) {
+  PollPressureLevel();
+}
+
+CastSystemMemoryPressureEvaluator::~CastSystemMemoryPressureEvaluator() =
+    default;
+
+void CastSystemMemoryPressureEvaluator::PollPressureLevel() {
+  base::MemoryPressureListener::MemoryPressureLevel level =
+      base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE;
+
+  base::SystemMemoryInfoKB info;
+  if (!base::GetSystemMemoryInfo(&info)) {
+    LOG(ERROR) << "GetSystemMemoryInfo failed";
+  } else if (system_reserved_kb_ != 0 || info.available != 0) {
+    // Preferred memory pressure heuristic:
+    // 1. Use /proc/meminfo's MemAvailable if possible, fall back to estimate
+    // of free + buffers + cached otherwise.
+    const int total_available = (info.available != 0)
+                                    ? info.available
+                                    : (info.free + info.buffers + info.cached);
+
+    // 2. Allow some memory to be 'reserved' on command line.
+    const int available = total_available - system_reserved_kb_;
+    const int total = info.total - system_reserved_kb_;
+    DCHECK_GT(total, 0);
+    const float ratio = available / static_cast<float>(total);
+
+    if (ratio < critical_memory_fraction_)
+      level = base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL;
+    else if (ratio < moderate_memory_fraction_)
+      level = base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE;
+  } else {
+    // Backup method purely using 'free' memory.  It may generate more
+    // pressure events than necessary, since more memory may actually be free.
+    if (info.free < kCriticalFreeMemoryKB)
+      level = base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL;
+    else if (info.free < kModerateFreeMemoryKB)
+      level = base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE;
+  }
+
+  UpdateMemoryPressureLevel(level);
+
+  UMA_HISTOGRAM_PERCENTAGE("Platform.MeminfoMemFree",
+                           (info.free * 100.0) / info.total);
+  UMA_HISTOGRAM_CUSTOM_COUNTS("Platform.Cast.MeminfoMemFreeDerived2",
+                              (info.free + info.buffers + info.cached) / 1024,
+                              1, 2000, 100);
+  if (info.available != 0) {
+    UMA_HISTOGRAM_CUSTOM_COUNTS("Platform.Cast.MeminfoMemAvailable2",
+                                info.available / 1024, 1, 2000, 100);
+  }
+
+  base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
+      FROM_HERE,
+      base::BindOnce(&CastSystemMemoryPressureEvaluator::PollPressureLevel,
+                     weak_ptr_factory_.GetWeakPtr()),
+      base::TimeDelta::FromMilliseconds(kPollingIntervalMS));
+}
+
+void CastSystemMemoryPressureEvaluator::UpdateMemoryPressureLevel(
+    base::MemoryPressureListener::MemoryPressureLevel new_level) {
+  auto old_vote = current_vote();
+  SetCurrentVote(new_level);
+
+  SendCurrentVote(/* notify = */ current_vote() !=
+                  base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE);
+
+  if (old_vote == current_vote())
+    return;
+
+  metrics::CastMetricsHelper::GetInstance()->RecordApplicationEventWithValue(
+      "Memory.Pressure.LevelChange", new_level);
+}
+
+}  // namespace chromecast
diff --git a/chromecast/browser/cast_system_memory_pressure_evaluator.h b/chromecast/browser/cast_system_memory_pressure_evaluator.h
new file mode 100644
index 0000000..333e7c73
--- /dev/null
+++ b/chromecast/browser/cast_system_memory_pressure_evaluator.h
@@ -0,0 +1,39 @@
+// Copyright 2016 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 CHROMECAST_BROWSER_CAST_SYSTEM_MEMORY_PRESSURE_EVALUATOR_H_
+#define CHROMECAST_BROWSER_CAST_SYSTEM_MEMORY_PRESSURE_EVALUATOR_H_
+
+#include "base/macros.h"
+#include "base/memory/weak_ptr.h"
+#include "base/util/memory_pressure/system_memory_pressure_evaluator.h"
+
+namespace chromecast {
+
+// Memory pressure evaluator for Cast: polls for current memory
+// usage periodically and sends memory pressure notifications.
+class CastSystemMemoryPressureEvaluator
+    : public util::SystemMemoryPressureEvaluator {
+ public:
+  explicit CastSystemMemoryPressureEvaluator(
+      std::unique_ptr<util::MemoryPressureVoter> voter);
+  ~CastSystemMemoryPressureEvaluator() override;
+
+ private:
+  void PollPressureLevel();
+  void UpdateMemoryPressureLevel(
+      base::MemoryPressureListener::MemoryPressureLevel new_level);
+
+  const float critical_memory_fraction_;
+  const float moderate_memory_fraction_;
+
+  const int system_reserved_kb_;
+  base::WeakPtrFactory<CastSystemMemoryPressureEvaluator> weak_ptr_factory_;
+
+  DISALLOW_COPY_AND_ASSIGN(CastSystemMemoryPressureEvaluator);
+};
+
+}  // namespace chromecast
+
+#endif  // CHROMECAST_BROWSER_CAST_SYSTEM_MEMORY_PRESSURE_EVALUATOR_H_
diff --git a/chromeos/constants/chromeos_features.cc b/chromeos/constants/chromeos_features.cc
index d6dda742..24a97e940 100644
--- a/chromeos/constants/chromeos_features.cc
+++ b/chromeos/constants/chromeos_features.cc
@@ -33,7 +33,7 @@
 // Enables or disables more aggressive filtering out of Bluetooth devices with
 // "appearances" that are less likely to be pairable or useful.
 const base::Feature kBluetoothAggressiveAppearanceFilter{
-    "BluetoothAggressiveAppearanceFilter", base::FEATURE_DISABLED_BY_DEFAULT};
+    "BluetoothAggressiveAppearanceFilter", base::FEATURE_ENABLED_BY_DEFAULT};
 
 // Feature containing param to block provided long term keys.
 const base::Feature kBlueZLongTermKeyBlocklist{
@@ -52,12 +52,7 @@
 const base::Feature kCrostiniGpuSupport{"CrostiniGpuSupport",
                                         base::FEATURE_DISABLED_BY_DEFAULT};
 
-// Enables or disables Crostini support for usb mounting.
-const base::Feature kCrostiniUsbSupport{"CrostiniUsbSupport",
-                                        base::FEATURE_ENABLED_BY_DEFAULT};
-
 // Enables or disables Crostini usb mounting for unsupported devices.
-// To enable, CrostiniUsbSupport must also be enabled.
 const base::Feature kCrostiniUsbAllowUnsupported{
     "CrostiniUsbAllowUnsupported", base::FEATURE_DISABLED_BY_DEFAULT};
 
diff --git a/chromeos/constants/chromeos_features.h b/chromeos/constants/chromeos_features.h
index b01393c..f81cca7 100644
--- a/chromeos/constants/chromeos_features.h
+++ b/chromeos/constants/chromeos_features.h
@@ -32,8 +32,6 @@
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
 extern const base::Feature kCrostiniGpuSupport;
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
-extern const base::Feature kCrostiniUsbSupport;
-COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
 extern const base::Feature kCrostiniUsbAllowUnsupported;
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
 extern const base::Feature kCrostiniWebUIInstaller;
diff --git a/chromeos/dbus/cryptohome/fake_cryptohome_client_unittest.cc b/chromeos/dbus/cryptohome/fake_cryptohome_client_unittest.cc
index f7e81a6..b41d7e9 100644
--- a/chromeos/dbus/cryptohome/fake_cryptohome_client_unittest.cc
+++ b/chromeos/dbus/cryptohome/fake_cryptohome_client_unittest.cc
@@ -57,7 +57,8 @@
   constexpr char kChallenge[] = "challenge";
 
   TestObserver observer;
-  ScopedObserver<CryptohomeClient, TestObserver> scoped_observer(&observer);
+  ScopedObserver<CryptohomeClient, CryptohomeClient::Observer> scoped_observer(
+      &observer);
   scoped_observer.Add(&fake_cryptohome_client_);
 
   cryptohome::AccountIdentifier cryptohome_id;
diff --git a/chromeos/dbus/fake_gnubby_client_unittest.cc b/chromeos/dbus/fake_gnubby_client_unittest.cc
index 741269b..f7f8c43 100644
--- a/chromeos/dbus/fake_gnubby_client_unittest.cc
+++ b/chromeos/dbus/fake_gnubby_client_unittest.cc
@@ -42,7 +42,8 @@
 
 TEST_F(FakeGnubbyClientTest, NotificationSent) {
   TestObserver observer;
-  ScopedObserver<GnubbyClient, TestObserver> scoped_observer(&observer);
+  ScopedObserver<GnubbyClient, GnubbyClient::Observer> scoped_observer(
+      &observer);
   scoped_observer.Add(&fake_gnubby_client_);
 
   EXPECT_EQ(fake_gnubby_client_.calls(), 0);
diff --git a/chromeos/services/assistant/assistant_manager_service_impl.cc b/chromeos/services/assistant/assistant_manager_service_impl.cc
index fc44dee..6955836 100644
--- a/chromeos/services/assistant/assistant_manager_service_impl.cc
+++ b/chromeos/services/assistant/assistant_manager_service_impl.cc
@@ -1608,14 +1608,22 @@
 }
 
 void AssistantManagerServiceImpl::UpdateMediaState() {
-  if (media_session_info_ptr_ &&
-      media_session_info_ptr_->state ==
-          media_session::mojom::MediaSessionInfo::SessionState::kSuspended &&
-      media_session_info_ptr_->playback_state ==
-          media_session::mojom::MediaPlaybackState::kPlaying) {
-    // It is a intermediate state caused by some providers override the playback
-    // state. We considered it as invalid and skip reporting the state.
-    return;
+  if (media_session_info_ptr_) {
+    if (media_session_info_ptr_->is_sensitive) {
+      // Do not update media state if the session is considered to be sensitive
+      // (off the record profile).
+      return;
+    }
+
+    if (media_session_info_ptr_->state ==
+            media_session::mojom::MediaSessionInfo::SessionState::kSuspended &&
+        media_session_info_ptr_->playback_state ==
+            media_session::mojom::MediaPlaybackState::kPlaying) {
+      // It is an intermediate state caused by some providers override the
+      // playback state. We considered it as invalid and skip reporting the
+      // state.
+      return;
+    }
   }
 
   // MediaSession Integrated providers (include the libassistant internal
diff --git a/chromeos/services/assistant/assistant_state_proxy.cc b/chromeos/services/assistant/assistant_state_proxy.cc
index 375726b..98ab7c2 100644
--- a/chromeos/services/assistant/assistant_state_proxy.cc
+++ b/chromeos/services/assistant/assistant_state_proxy.cc
@@ -54,14 +54,6 @@
   UpdateAssistantStatus(state);
 }
 
-void AssistantStateProxy::OnAssistantSettingsEnabled(bool enabled) {
-  UpdateSettingsEnabled(enabled);
-}
-
-void AssistantStateProxy::OnAssistantHotwordEnabled(bool enabled) {
-  UpdateHotwordEnabled(enabled);
-}
-
 void AssistantStateProxy::OnAssistantFeatureAllowedChanged(
     ash::mojom::AssistantAllowedState state) {
   UpdateFeatureAllowedState(state);
diff --git a/chromeos/services/assistant/assistant_state_proxy.h b/chromeos/services/assistant/assistant_state_proxy.h
index 9a14b171..977b948 100644
--- a/chromeos/services/assistant/assistant_state_proxy.h
+++ b/chromeos/services/assistant/assistant_state_proxy.h
@@ -43,8 +43,6 @@
   // AssistantStateObserver:
   void OnAssistantStatusChanged(
       ash::mojom::VoiceInteractionState state) override;
-  void OnAssistantSettingsEnabled(bool enabled) override;
-  void OnAssistantHotwordEnabled(bool enabled) override;
   void OnAssistantFeatureAllowedChanged(
       ash::mojom::AssistantAllowedState state) override;
   void OnLocaleChanged(const std::string& locale) override;
diff --git a/chromeos/services/assistant/public/cpp/assistant_prefs.cc b/chromeos/services/assistant/public/cpp/assistant_prefs.cc
index a04eb43..5331c80e 100644
--- a/chromeos/services/assistant/public/cpp/assistant_prefs.cc
+++ b/chromeos/services/assistant/public/cpp/assistant_prefs.cc
@@ -27,11 +27,18 @@
 // This preference should only be changed in browser.
 const char kAssistantDisabledByPolicy[] =
     "settings.assistant.disabled_by_policy";
+// A preference that indicates the user has enabled the Assistant services.
+const char kAssistantEnabled[] = "settings.voice_interaction.enabled";
 // A preference that indicates the user has chosen to always keep hotword
 // listening on even without DSP support.
 // This preference should only be changed in browser.
 const char kAssistantHotwordAlwaysOn[] =
     "settings.voice_interaction.hotword.always_on";
+// A preference that indicates the user has allowed the Assistant services
+// to use hotword listening. This preference can be overridden by the
+// VoiceInteractionHotwordEnabled administrator policy.
+const char kAssistantHotwordEnabled[] =
+    "settings.voice_interaction.hotword.enabled";
 // A preference that indicates whether microphone should be open when the
 // Assistant launches.
 // This preference should only be changed in browser.
@@ -50,8 +57,11 @@
                                 PrefRegistry::PUBLIC);
   registry->RegisterBooleanPref(kAssistantDisabledByPolicy, false,
                                 PrefRegistry::PUBLIC);
+  registry->RegisterBooleanPref(kAssistantEnabled, false, PrefRegistry::PUBLIC);
   registry->RegisterBooleanPref(kAssistantHotwordAlwaysOn, false,
                                 PrefRegistry::PUBLIC);
+  registry->RegisterBooleanPref(kAssistantHotwordEnabled, false,
+                                PrefRegistry::PUBLIC);
   registry->RegisterBooleanPref(kAssistantLaunchWithMicOpen, false,
                                 PrefRegistry::PUBLIC);
   registry->RegisterBooleanPref(kAssistantNotificationEnabled, true,
@@ -68,7 +78,9 @@
   registry->RegisterForeignPref(kAssistantConsentStatus);
   registry->RegisterForeignPref(kAssistantContextEnabled);
   registry->RegisterForeignPref(kAssistantDisabledByPolicy);
+  registry->RegisterForeignPref(kAssistantEnabled);
   registry->RegisterForeignPref(kAssistantHotwordAlwaysOn);
+  registry->RegisterForeignPref(kAssistantHotwordEnabled);
   registry->RegisterForeignPref(kAssistantLaunchWithMicOpen);
   registry->RegisterForeignPref(kAssistantNotificationEnabled);
 }
diff --git a/chromeos/services/assistant/public/cpp/assistant_prefs.h b/chromeos/services/assistant/public/cpp/assistant_prefs.h
index 0b22903..4eb4f7e 100644
--- a/chromeos/services/assistant/public/cpp/assistant_prefs.h
+++ b/chromeos/services/assistant/public/cpp/assistant_prefs.h
@@ -33,7 +33,9 @@
 extern const char kAssistantConsentStatus[];
 extern const char kAssistantContextEnabled[];
 extern const char kAssistantDisabledByPolicy[];
+extern const char kAssistantEnabled[];
 extern const char kAssistantHotwordAlwaysOn[];
+extern const char kAssistantHotwordEnabled[];
 extern const char kAssistantLaunchWithMicOpen[];
 extern const char kAssistantNotificationEnabled[];
 
diff --git a/chromeos/services/assistant/service_unittest.cc b/chromeos/services/assistant/service_unittest.cc
index c507719..ee45e5f 100644
--- a/chromeos/services/assistant/service_unittest.cc
+++ b/chromeos/services/assistant/service_unittest.cc
@@ -46,7 +46,9 @@
 class FakePrefConnectionDelegate : public PrefConnectionDelegate {
  public:
   FakePrefConnectionDelegate()
-      : pref_service_(std::make_unique<TestingPrefServiceSimple>()) {}
+      : pref_service_(std::make_unique<TestingPrefServiceSimple>()) {
+    prefs::RegisterProfilePrefsForBrowser(pref_service_->registry());
+  }
   ~FakePrefConnectionDelegate() override = default;
 
   // PrefConnectionDelegate overrides:
@@ -54,7 +56,6 @@
       mojo::PendingRemote<::prefs::mojom::PrefStoreConnector> connector,
       scoped_refptr<PrefRegistrySimple> pref_registry,
       ::prefs::ConnectCallback callback) override {
-    prefs::RegisterProfilePrefsForBrowser(pref_service_->registry());
     callback.Run(std::move(pref_service_));
   }
 
@@ -207,11 +208,14 @@
     assistant_state()->NotifyArcPlayStoreEnabledChanged(true);
     assistant_state()->NotifyFeatureAllowed(
         ash::mojom::AssistantAllowedState::ALLOWED);
-    assistant_state()->NotifyHotwordEnabled(true);
     assistant_state()->NotifyLocaleChanged("en_US");
-    assistant_state()->NotifySettingsEnabled(true);
 
     auto fake_pref_connection = std::make_unique<FakePrefConnectionDelegate>();
+    pref_service_ = fake_pref_connection->pref_service();
+
+    pref_service()->SetBoolean(prefs::kAssistantEnabled, true);
+    pref_service()->SetBoolean(prefs::kAssistantHotwordEnabled, true);
+
     fake_pref_connection_ = fake_pref_connection.get();
     service_ =
         std::make_unique<Service>(remote_service_.BindNewPipeAndPassReceiver(),
@@ -254,6 +258,8 @@
 
   ash::AssistantState* assistant_state() { return &assistant_state_; }
 
+  PrefService* pref_service() { return pref_service_; }
+
   base::TestMockTimeTaskRunner* mock_task_runner() {
     return mock_task_runner_.get();
   }
@@ -271,6 +277,7 @@
   FakeDeviceActions fake_device_actions_;
 
   FakePrefConnectionDelegate* fake_pref_connection_;
+  PrefService* pref_service_;
 
   network::TestURLLoaderFactory url_loader_factory_;
   scoped_refptr<network::SharedURLLoaderFactory> shared_url_loader_factory_;
@@ -332,7 +339,7 @@
   EXPECT_EQ(assistant_manager()->GetState(),
             AssistantManagerService::State::RUNNING);
 
-  assistant_state()->NotifySettingsEnabled(false);
+  pref_service()->SetBoolean(prefs::kAssistantEnabled, false);
 
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(assistant_manager()->GetState(),
@@ -342,7 +349,7 @@
 TEST_F(AssistantServiceTest, StopDelayedIfAssistantNotFinishedStarting) {
   // Test is set up as |State::STARTED|, turning settings off will trigger
   // logic to try to stop it.
-  assistant_state()->NotifySettingsEnabled(false);
+  pref_service()->SetBoolean(prefs::kAssistantEnabled, false);
 
   EXPECT_EQ(assistant_manager()->GetState(),
             AssistantManagerService::State::STARTED);
diff --git a/components/arc/arc_prefs.cc b/components/arc/arc_prefs.cc
index 8deffe5..125a94e 100644
--- a/components/arc/arc_prefs.cc
+++ b/components/arc/arc_prefs.cc
@@ -124,13 +124,6 @@
 // engagement time was last recorded. Accumulated results are sent to UMA if day
 // ID has changed.
 const char kEngagementTimeDayId[] = "arc.metrics.engagement_time.day_id";
-// A preference that indicates the user has enabled voice interaction services.
-const char kVoiceInteractionEnabled[] = "settings.voice_interaction.enabled";
-// A preference that indicates the user has allowed voice interaction services
-// to use hotword listening. This preference can be overridden by the
-// VoiceInteractionHotwordEnabled administrator policy.
-const char kVoiceInteractionHotwordEnabled[] =
-    "settings.voice_interaction.hotword.enabled";
 
 // ======== LOCAL STATE PREFS ========
 
@@ -188,8 +181,6 @@
   registry->RegisterTimeDeltaPref(kEngagementTimeForeground, base::TimeDelta());
   registry->RegisterStringPref(kEngagementTimeOsVersion, "");
   registry->RegisterTimeDeltaPref(kEngagementTimeTotal, base::TimeDelta());
-  registry->RegisterBooleanPref(kVoiceInteractionEnabled, false);
-  registry->RegisterBooleanPref(kVoiceInteractionHotwordEnabled, false);
 }
 
 }  // namespace prefs
diff --git a/components/arc/arc_prefs.h b/components/arc/arc_prefs.h
index 29f921b..65654bf 100644
--- a/components/arc/arc_prefs.h
+++ b/components/arc/arc_prefs.h
@@ -46,9 +46,6 @@
 ARC_EXPORT extern const char kEngagementTimeForeground[];
 ARC_EXPORT extern const char kEngagementTimeOsVersion[];
 ARC_EXPORT extern const char kEngagementTimeTotal[];
-// TODO(b/110211045): Move Assistant related prefs to ash.
-ARC_EXPORT extern const char kVoiceInteractionEnabled[];
-ARC_EXPORT extern const char kVoiceInteractionHotwordEnabled[];
 
 // Local state prefs in lexicographical order.
 ARC_EXPORT extern const char kStabilityMetrics[];
diff --git a/components/autofill/core/browser/data_model/phone_number_unittest.cc b/components/autofill/core/browser/data_model/phone_number_unittest.cc
index 4e680da..29456dcf 100644
--- a/components/autofill/core/browser/data_model/phone_number_unittest.cc
+++ b/components/autofill/core/browser/data_model/phone_number_unittest.cc
@@ -231,8 +231,8 @@
                               ASCIIToUTF16("123")));  // Incorrect city code.
   EXPECT_TRUE(number4.SetInfo(AutofillType(PHONE_HOME_NUMBER),
                               ASCIIToUTF16("2345680")));
-  EXPECT_FALSE(number4.ParseNumber(profile, "en-US", &parsed_phone));
-  EXPECT_EQ(base::string16(), parsed_phone);
+  EXPECT_TRUE(number4.ParseNumber(profile, "en-US", &parsed_phone));
+  EXPECT_EQ(ASCIIToUTF16("1232345680"), parsed_phone);
 
   PhoneNumber::PhoneCombineHelper number5;
   EXPECT_TRUE(number5.SetInfo(AutofillType(PHONE_HOME_CITY_AND_NUMBER),
diff --git a/components/autofill/core/browser/geo/phone_number_i18n_unittest.cc b/components/autofill/core/browser/geo/phone_number_i18n_unittest.cc
index afcf07b..4f4e36e 100644
--- a/components/autofill/core/browser/geo/phone_number_i18n_unittest.cc
+++ b/components/autofill/core/browser/geo/phone_number_i18n_unittest.cc
@@ -101,14 +101,14 @@
         ParseNumberTestCase{false, "1234", "US"},
         // Too long strings should not be parsed.
         ParseNumberTestCase{false, GenerateTooLongString(), "US"},
-        // Test for string with exactly 7 digits.
-        // Still a possible number with unknown("ZZ") deduced region.
-        ParseNumberTestCase{true, "17134567", "US", "7134567", "", "1", "ZZ"},
+        // Test for string with exactly 7 digits. It is too short.
+        // Should fail parsing in US.
+        ParseNumberTestCase{false, "17134567", "US"},
         // Does not have area code, but still a possible number with
         // unknown("ZZ") deduced region.
         ParseNumberTestCase{true, "7134567", "US", "7134567", "", "", "ZZ"},
         // Valid Canadian toll-free number.
-        ParseNumberTestCase{true, "3101234", "US", "3101234", "", "", "CA"},
+        ParseNumberTestCase{true, "3101234", "CA", "3101234", "", "", "ZZ"},
         // Test for string with greater than 7 digits but less than 10 digits.
         // Should fail parsing in US.
         ParseNumberTestCase{false, "123456789", "US"},
@@ -132,8 +132,10 @@
         ParseNumberTestCase{false, "1\xC0", "US"},
         // Test for string with exactly 10 digits.
         // Should give back phone number and city code.
-        // This one going to fail because of the incorrect area code.
-        ParseNumberTestCase{false, "1234567890", "US"},
+        // This one has an incorrect area code but could still be a possible
+        // number with unknown("ZZ") deducted region.
+        ParseNumberTestCase{true, "1234567890", "US", "1234567890", "", "",
+                            "ZZ"},
         // This is actually not a valid number because the first number after
         // area code is 1. But it's still a possible number, just with deduced
         // country set to unknown("ZZ").
@@ -401,8 +403,8 @@
         // A US phone with the country code is correctly formatted as an US
         // number.
         PhoneNumberFormatCase("+1 415-555-5555", "MX", "+1 415-555-5555"),
-        // "+52 1 415 555 5555" is a valid number for Mexico,
-        PhoneNumberFormatCase("1 415-555-5555", "MX", "+52 1 415 555 5555"),
+        // "+52 415 555 5555" is a valid number for Mexico,
+        PhoneNumberFormatCase("1 415-555-5555", "MX", "+52 415 555 5555"),
         // Without a country code, the phone is formatted for the profile's
         // country.
         PhoneNumberFormatCase("415-555-5555", "MX", "+52 415 555 5555"),
diff --git a/components/autofill/core/browser/ui/label_formatter_utils_unittest.cc b/components/autofill/core/browser/ui/label_formatter_utils_unittest.cc
index 13268e2..701d6ac 100644
--- a/components/autofill/core/browser/ui/label_formatter_utils_unittest.cc
+++ b/components/autofill/core/browser/ui/label_formatter_utils_unittest.cc
@@ -189,7 +189,7 @@
   AutofillProfile profile2 =
       AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
   test::SetProfileInfo(&profile2, "Maria", "Margaretha", "Winckelmann", "", "",
-                       "", "", "", "", "", "DE", "4903045042823");
+                       "", "", "", "", "", "DE", "493045042823");
   AutofillProfile profile3 =
       AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin);
   test::SetProfileInfo(&profile3, "Maria", "Margaretha", "Winckelmann", "", "",
diff --git a/components/autofill/core/common/autofill_payments_features.cc b/components/autofill/core/common/autofill_payments_features.cc
index 72a9f33..6fd6490 100644
--- a/components/autofill/core/common/autofill_payments_features.cc
+++ b/components/autofill/core/common/autofill_payments_features.cc
@@ -50,7 +50,7 @@
 
 const base::Feature kAutofillDoNotMigrateUnsupportedLocalCards{
     "AutofillDoNotMigrateUnsupportedLocalCards",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+    base::FEATURE_ENABLED_BY_DEFAULT};
 
 // Controls whether the credit card downstream keyboard accessory shows
 // the Google Pay logo animation on iOS.
diff --git a/components/download/internal/common/BUILD.gn b/components/download/internal/common/BUILD.gn
index 9ab13c41..4959f0a 100644
--- a/components/download/internal/common/BUILD.gn
+++ b/components/download/internal/common/BUILD.gn
@@ -39,8 +39,6 @@
     "download_stats.cc",
     "download_task_runner.cc",
     "download_ukm_helper.cc",
-    "download_url_loader_factory_getter.cc",
-    "download_url_loader_factory_getter_impl.cc",
     "download_utils.cc",
     "download_worker.cc",
     "download_worker.h",
@@ -59,6 +57,7 @@
     "stream_handle_input_stream.cc",
     "url_download_handler_factory.cc",
     "url_download_request_handle.cc",
+    "url_loader_factory_provider.cc",
   ]
 
   public_deps = [
diff --git a/components/download/internal/common/download_item_impl.cc b/components/download/internal/common/download_item_impl.cc
index 837f3b9..0486da5 100644
--- a/components/download/internal/common/download_item_impl.cc
+++ b/components/download/internal/common/download_item_impl.cc
@@ -1417,8 +1417,7 @@
     std::unique_ptr<DownloadFile> file,
     DownloadJob::CancelRequestCallback cancel_request_callback,
     const DownloadCreateInfo& new_create_info,
-    scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-        url_loader_factory_getter) {
+    base::WeakPtr<URLLoaderFactoryProvider> url_loader_factory_provider) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DCHECK(!download_file_);
   DVLOG(20) << __func__ << "() this=" << DebugString(true);
@@ -1427,7 +1426,7 @@
   download_file_ = std::move(file);
   job_ = DownloadJobFactory::CreateJob(
       this, std::move(cancel_request_callback), new_create_info, false,
-      std::move(url_loader_factory_getter),
+      url_loader_factory_provider,
       delegate_ ? delegate_->GetServiceManagerConnector() : nullptr);
   if (job_->IsParallelizable()) {
     RecordParallelizableDownloadCount(START_COUNT, IsParallelDownloadEnabled());
diff --git a/components/download/internal/common/download_job_factory.cc b/components/download/internal/common/download_job_factory.cc
index 4ce085efe..8747b53 100644
--- a/components/download/internal/common/download_job_factory.cc
+++ b/components/download/internal/common/download_job_factory.cc
@@ -6,6 +6,7 @@
 
 #include <memory>
 
+#include "base/memory/weak_ptr.h"
 #include "components/download/internal/common/download_job_impl.h"
 #include "components/download/internal/common/parallel_download_job.h"
 #include "components/download/internal/common/parallel_download_utils.h"
@@ -13,7 +14,7 @@
 #include "components/download/public/common/download_features.h"
 #include "components/download/public/common/download_item.h"
 #include "components/download/public/common/download_stats.h"
-#include "components/download/public/common/download_url_loader_factory_getter.h"
+#include "components/download/public/common/url_loader_factory_provider.h"
 #include "net/url_request/url_request_context_getter.h"
 
 namespace download {
@@ -163,8 +164,7 @@
     DownloadJob::CancelRequestCallback cancel_request_callback,
     const DownloadCreateInfo& create_info,
     bool is_save_package_download,
-    scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-        url_loader_factory_getter,
+    base::WeakPtr<URLLoaderFactoryProvider> url_loader_factory_provider,
     service_manager::Connector* connector) {
   if (is_save_package_download) {
     return std::make_unique<SavePackageDownloadJob>(
@@ -176,7 +176,7 @@
   if (IsParallelDownloadEnabled() && is_parallelizable) {
     return std::make_unique<ParallelDownloadJob>(
         download_item, std::move(cancel_request_callback), create_info,
-        std::move(url_loader_factory_getter), connector);
+        url_loader_factory_provider, connector);
   }
 
   // An ordinary download job.
diff --git a/components/download/internal/common/download_url_loader_factory_getter.cc b/components/download/internal/common/download_url_loader_factory_getter.cc
deleted file mode 100644
index 4f3b282..0000000
--- a/components/download/internal/common/download_url_loader_factory_getter.cc
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/download/public/common/download_url_loader_factory_getter.h"
-
-#include "components/download/public/common/download_task_runner.h"
-
-namespace download {
-
-DownloadURLLoaderFactoryGetter::DownloadURLLoaderFactoryGetter() = default;
-
-DownloadURLLoaderFactoryGetter::~DownloadURLLoaderFactoryGetter() = default;
-
-void DownloadURLLoaderFactoryGetter::DeleteOnCorrectThread() const {
-  if (GetIOTaskRunner() && !GetIOTaskRunner()->BelongsToCurrentThread()) {
-    GetIOTaskRunner()->DeleteSoon(FROM_HERE, this);
-    return;
-  }
-  delete this;
-}
-
-}  // namespace download
diff --git a/components/download/internal/common/download_url_loader_factory_getter_impl.cc b/components/download/internal/common/download_url_loader_factory_getter_impl.cc
deleted file mode 100644
index 83c5b93..0000000
--- a/components/download/internal/common/download_url_loader_factory_getter_impl.cc
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/download/public/common/download_url_loader_factory_getter_impl.h"
-
-namespace download {
-
-DownloadURLLoaderFactoryGetterImpl::DownloadURLLoaderFactoryGetterImpl(
-    std::unique_ptr<network::SharedURLLoaderFactoryInfo> url_loader_factory)
-    : url_loader_factory_info_(std::move(url_loader_factory)) {}
-
-DownloadURLLoaderFactoryGetterImpl::~DownloadURLLoaderFactoryGetterImpl() =
-    default;
-
-scoped_refptr<network::SharedURLLoaderFactory>
-DownloadURLLoaderFactoryGetterImpl::GetURLLoaderFactory() {
-  if (!url_loader_factory_) {
-    url_loader_factory_ = network::SharedURLLoaderFactory::Create(
-        std::move(url_loader_factory_info_));
-  }
-  return url_loader_factory_;
-}
-
-}  // namespace download
diff --git a/components/download/internal/common/download_worker.cc b/components/download/internal/common/download_worker.cc
index 4034017..baed3b2 100644
--- a/components/download/internal/common/download_worker.cc
+++ b/components/download/internal/common/download_worker.cc
@@ -9,7 +9,6 @@
 #include "components/download/public/common/download_create_info.h"
 #include "components/download/public/common/download_interrupt_reasons.h"
 #include "components/download/public/common/download_task_runner.h"
-#include "components/download/public/common/download_url_loader_factory_getter.h"
 #include "components/download/public/common/download_utils.h"
 #include "components/download/public/common/input_stream.h"
 #include "components/download/public/common/url_download_handler_factory.h"
@@ -50,13 +49,15 @@
 void CreateUrlDownloadHandler(
     std::unique_ptr<DownloadUrlParameters> params,
     base::WeakPtr<UrlDownloadHandler::Delegate> delegate,
-    scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-        url_loader_factory_getter,
+    base::WeakPtr<URLLoaderFactoryProvider> url_loader_factory_provider,
     const URLSecurityPolicy& url_security_policy,
     std::unique_ptr<service_manager::Connector> connector,
     const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) {
   auto downloader = UrlDownloadHandlerFactory::Create(
-      std::move(params), delegate, std::move(url_loader_factory_getter),
+      std::move(params), delegate,
+      url_loader_factory_provider
+          ? url_loader_factory_provider->GetURLLoaderFactory()
+          : nullptr,
       url_security_policy, std::move(connector), task_runner);
   task_runner->PostTask(
       FROM_HERE,
@@ -82,16 +83,15 @@
 
 void DownloadWorker::SendRequest(
     std::unique_ptr<DownloadUrlParameters> params,
-    scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-        url_loader_factory_getter,
+    base::WeakPtr<URLLoaderFactoryProvider> url_loader_factory_provider,
     service_manager::Connector* connector) {
   GetIOTaskRunner()->PostTask(
-      FROM_HERE, base::BindOnce(&CreateUrlDownloadHandler, std::move(params),
-                                weak_factory_.GetWeakPtr(),
-                                std::move(url_loader_factory_getter),
-                                base::BindRepeating(&IsURLSafe),
-                                connector ? connector->Clone() : nullptr,
-                                base::ThreadTaskRunnerHandle::Get()));
+      FROM_HERE,
+      base::BindOnce(&CreateUrlDownloadHandler, std::move(params),
+                     weak_factory_.GetWeakPtr(), url_loader_factory_provider,
+                     base::BindRepeating(&IsURLSafe),
+                     connector ? connector->Clone() : nullptr,
+                     base::ThreadTaskRunnerHandle::Get()));
 }
 
 void DownloadWorker::Pause() {
@@ -110,8 +110,7 @@
 void DownloadWorker::OnUrlDownloadStarted(
     std::unique_ptr<DownloadCreateInfo> create_info,
     std::unique_ptr<InputStream> input_stream,
-    scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-        url_loader_factory_getter,
+    base::WeakPtr<URLLoaderFactoryProvider> url_loader_factory_provider,
     UrlDownloadHandler* downloader,
     const DownloadUrlParameters::OnStartedCallback& callback) {
   // |callback| is not used in subsequent requests.
diff --git a/components/download/internal/common/download_worker.h b/components/download/internal/common/download_worker.h
index 7ecdcb6b..cd4b819 100644
--- a/components/download/internal/common/download_worker.h
+++ b/components/download/internal/common/download_worker.h
@@ -19,7 +19,6 @@
 }  // namespace service_manager
 
 namespace download {
-class DownloadURLLoaderFactoryGetter;
 
 // Helper class used to send subsequent range requests to fetch slices of the
 // file after handling response of the original non-range request.
@@ -50,8 +49,7 @@
   // Send network request to ask for a download.
   void SendRequest(
       std::unique_ptr<DownloadUrlParameters> params,
-      scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-          url_loader_factory_getter,
+      base::WeakPtr<URLLoaderFactoryProvider> url_loader_factory_provider,
       service_manager::Connector* connector);
 
   // Download operations.
@@ -64,8 +62,7 @@
   void OnUrlDownloadStarted(
       std::unique_ptr<DownloadCreateInfo> create_info,
       std::unique_ptr<InputStream> input_stream,
-      scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-          url_loader_factory_getter,
+      base::WeakPtr<URLLoaderFactoryProvider> url_loader_factory_provider,
       UrlDownloadHandler* downloader,
       const DownloadUrlParameters::OnStartedCallback& callback) override;
   void OnUrlDownloadStopped(UrlDownloadHandler* downloader) override;
diff --git a/components/download/internal/common/in_progress_download_manager.cc b/components/download/internal/common/in_progress_download_manager.cc
index ce4eab6..a24a873 100644
--- a/components/download/internal/common/in_progress_download_manager.cc
+++ b/components/download/internal/common/in_progress_download_manager.cc
@@ -20,7 +20,6 @@
 #include "components/download/public/common/download_start_observer.h"
 #include "components/download/public/common/download_stats.h"
 #include "components/download/public/common/download_task_runner.h"
-#include "components/download/public/common/download_url_loader_factory_getter.h"
 #include "components/download/public/common/download_url_parameters.h"
 #include "components/download/public/common/download_utils.h"
 #include "components/download/public/common/input_stream.h"
@@ -82,7 +81,8 @@
 void BeginResourceDownload(
     std::unique_ptr<DownloadUrlParameters> params,
     std::unique_ptr<network::ResourceRequest> request,
-    scoped_refptr<DownloadURLLoaderFactoryGetter> url_loader_factory_getter,
+    std::unique_ptr<network::SharedURLLoaderFactoryInfo>
+        url_loader_factory_info,
     const URLSecurityPolicy& url_security_policy,
     bool is_new_download,
     base::WeakPtr<InProgressDownloadManager> download_manager,
@@ -96,9 +96,11 @@
   UrlDownloadHandler::UniqueUrlDownloadHandlerPtr downloader(
       ResourceDownloader::BeginDownload(
           download_manager, std::move(params), std::move(request),
-          std::move(url_loader_factory_getter), url_security_policy, site_url,
-          tab_url, tab_referrer_url, is_new_download, false,
-          std::move(connector), is_background_mode, main_task_runner)
+          network::SharedURLLoaderFactory::Create(
+              std::move(url_loader_factory_info)),
+          url_security_policy, site_url, tab_url, tab_referrer_url,
+          is_new_download, false, std::move(connector), is_background_mode,
+          main_task_runner)
           .release(),
       base::OnTaskRunnerDeleter(base::ThreadTaskRunnerHandle::Get()));
 
@@ -119,7 +121,8 @@
     scoped_refptr<network::ResourceResponse> response_head,
     mojo::ScopedDataPipeConsumerHandle response_body,
     network::mojom::URLLoaderClientEndpointsPtr url_loader_client_endpoints,
-    scoped_refptr<DownloadURLLoaderFactoryGetter> url_loader_factory_getter,
+    std::unique_ptr<network::SharedURLLoaderFactoryInfo>
+        url_loader_factory_info,
     const URLSecurityPolicy& url_security_policy,
     std::unique_ptr<service_manager::Connector> connector,
     const scoped_refptr<base::SingleThreadTaskRunner>& main_task_runner) {
@@ -131,8 +134,9 @@
           std::move(url_chain), std::move(cert_status),
           std::move(response_head), std::move(response_body),
           std::move(url_loader_client_endpoints),
-          std::move(url_loader_factory_getter), url_security_policy,
-          std::move(connector), main_task_runner)
+          network::SharedURLLoaderFactory::Create(
+              std::move(url_loader_factory_info)),
+          url_security_policy, std::move(connector), main_task_runner)
           .release(),
       base::OnTaskRunnerDeleter(base::ThreadTaskRunnerHandle::Get()));
 
@@ -215,11 +219,11 @@
 void InProgressDownloadManager::OnUrlDownloadStarted(
     std::unique_ptr<DownloadCreateInfo> download_create_info,
     std::unique_ptr<InputStream> input_stream,
-    scoped_refptr<DownloadURLLoaderFactoryGetter> url_loader_factory_getter,
+    base::WeakPtr<URLLoaderFactoryProvider> url_loader_factory_provider,
     UrlDownloadHandler* downloader,
     const DownloadUrlParameters::OnStartedCallback& callback) {
   StartDownload(std::move(download_create_info), std::move(input_stream),
-                std::move(url_loader_factory_getter),
+                url_loader_factory_provider,
                 base::BindOnce(&InProgressDownloadManager::CancelUrlDownload,
                                weak_factory_.GetWeakPtr(), downloader),
                 callback);
@@ -249,7 +253,7 @@
 
   // Start the new download, the download should be saved to the file path
   // specifcied in the |params|.
-  BeginDownload(std::move(params), url_loader_factory_getter_,
+  BeginDownload(std::move(params), url_loader_factory_->Clone(),
                 true /* is_new_download */, GURL() /* site_url */,
                 GURL() /* tab_url */, GURL() /* tab_referral_url */);
 }
@@ -258,7 +262,7 @@
   if (!params->is_transient())
     return false;
 
-  if (!url_loader_factory_getter_)
+  if (!url_loader_factory_)
     return false;
 
   if (params->require_safety_checks())
@@ -287,7 +291,8 @@
 
 void InProgressDownloadManager::BeginDownload(
     std::unique_ptr<DownloadUrlParameters> params,
-    scoped_refptr<DownloadURLLoaderFactoryGetter> url_loader_factory_getter,
+    std::unique_ptr<network::SharedURLLoaderFactoryInfo>
+        url_loader_factory_info,
     bool is_new_download,
     const GURL& site_url,
     const GURL& tab_url,
@@ -298,7 +303,7 @@
       FROM_HERE,
       base::BindOnce(
           &BeginResourceDownload, std::move(params), std::move(request),
-          std::move(url_loader_factory_getter), url_security_policy_,
+          std::move(url_loader_factory_info), url_security_policy_,
           is_new_download, weak_factory_.GetWeakPtr(), site_url, tab_url,
           tab_referrer_url, connector_ ? connector_->Clone() : nullptr,
           !delegate_ /* is_background_mode */,
@@ -317,7 +322,8 @@
     scoped_refptr<network::ResourceResponse> response_head,
     mojo::ScopedDataPipeConsumerHandle response_body,
     network::mojom::URLLoaderClientEndpointsPtr url_loader_client_endpoints,
-    scoped_refptr<DownloadURLLoaderFactoryGetter> url_loader_factory_getter) {
+    std::unique_ptr<network::SharedURLLoaderFactoryInfo>
+        url_loader_factory_info) {
   GetIOTaskRunner()->PostTask(
       FROM_HERE,
       base::BindOnce(
@@ -326,7 +332,7 @@
           site_url, tab_url, tab_referrer_url, std::move(url_chain),
           std::move(cert_status), std::move(response_head),
           std::move(response_body), std::move(url_loader_client_endpoints),
-          std::move(url_loader_factory_getter), url_security_policy_,
+          std::move(url_loader_factory_info), url_security_policy_,
           connector_ ? connector_->Clone() : nullptr,
           base::ThreadTaskRunnerHandle::Get()));
 }
@@ -396,11 +402,11 @@
 void InProgressDownloadManager::ResumeInterruptedDownload(
     std::unique_ptr<DownloadUrlParameters> params,
     const GURL& site_url) {
-  if (!url_loader_factory_getter_)
+  if (!url_loader_factory_)
     return;
 
-  BeginDownload(std::move(params), url_loader_factory_getter_, false, site_url,
-                GURL(), GURL());
+  BeginDownload(std::move(params), url_loader_factory_->Clone(), false,
+                site_url, GURL(), GURL());
 }
 
 bool InProgressDownloadManager::ShouldOpenDownload(
@@ -431,7 +437,7 @@
 void InProgressDownloadManager::StartDownload(
     std::unique_ptr<DownloadCreateInfo> info,
     std::unique_ptr<InputStream> stream,
-    scoped_refptr<DownloadURLLoaderFactoryGetter> url_loader_factory_getter,
+    base::WeakPtr<URLLoaderFactoryProvider> url_loader_factory_provider,
     DownloadJob::CancelRequestCallback cancel_request_callback,
     const DownloadUrlParameters::OnStartedCallback& on_started) {
   DCHECK(info);
@@ -471,7 +477,7 @@
         std::move(info), on_started,
         base::BindOnce(&InProgressDownloadManager::StartDownloadWithItem,
                        weak_factory_.GetWeakPtr(), std::move(stream),
-                       std::move(url_loader_factory_getter),
+                       url_loader_factory_provider,
                        std::move(cancel_request_callback)));
   } else {
     std::string guid = info->guid;
@@ -482,7 +488,7 @@
       in_progress_downloads_.push_back(std::move(download));
     }
     StartDownloadWithItem(
-        std::move(stream), std::move(url_loader_factory_getter),
+        std::move(stream), url_loader_factory_provider,
         std::move(cancel_request_callback), std::move(info),
         static_cast<DownloadItemImpl*>(GetDownloadByGuid(guid)), false);
   }
@@ -490,7 +496,7 @@
 
 void InProgressDownloadManager::StartDownloadWithItem(
     std::unique_ptr<InputStream> stream,
-    scoped_refptr<DownloadURLLoaderFactoryGetter> url_loader_factory_getter,
+    base::WeakPtr<URLLoaderFactoryProvider> url_loader_factory_provider,
     DownloadJob::CancelRequestCallback cancel_request_callback,
     std::unique_ptr<DownloadCreateInfo> info,
     DownloadItemImpl* download,
@@ -534,7 +540,7 @@
   // resumption attempt.
 
   download->Start(std::move(download_file), std::move(cancel_request_callback),
-                  *info, std::move(url_loader_factory_getter));
+                  *info, url_loader_factory_provider);
 
   if (download_start_observer_)
     download_start_observer_->OnDownloadStarted(download);
diff --git a/components/download/internal/common/parallel_download_job.cc b/components/download/internal/common/parallel_download_job.cc
index fcaef2b..b1a19868 100644
--- a/components/download/internal/common/parallel_download_job.cc
+++ b/components/download/internal/common/parallel_download_job.cc
@@ -12,7 +12,6 @@
 #include "components/download/internal/common/parallel_download_utils.h"
 #include "components/download/public/common/download_create_info.h"
 #include "components/download/public/common/download_stats.h"
-#include "components/download/public/common/download_url_loader_factory_getter.h"
 #include "net/traffic_annotation/network_traffic_annotation.h"
 
 namespace download {
@@ -24,8 +23,7 @@
     DownloadItem* download_item,
     CancelRequestCallback cancel_request_callback,
     const DownloadCreateInfo& create_info,
-    scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-        url_loader_factory_getter,
+    base::WeakPtr<URLLoaderFactoryProvider> url_loader_factory_provider,
     service_manager::Connector* connector)
     : DownloadJobImpl(download_item, std::move(cancel_request_callback), true),
       initial_request_offset_(create_info.offset),
@@ -34,7 +32,7 @@
       requests_sent_(false),
       is_canceled_(false),
       range_support_(create_info.accept_range),
-      url_loader_factory_getter_(std::move(url_loader_factory_getter)),
+      url_loader_factory_provider_(url_loader_factory_provider),
       connector_(connector) {}
 
 ParallelDownloadJob::~ParallelDownloadJob() = default;
@@ -295,7 +293,7 @@
   download_params->set_follow_cross_origin_redirects(false);
 
   // Send the request.
-  worker->SendRequest(std::move(download_params), url_loader_factory_getter_,
+  worker->SendRequest(std::move(download_params), url_loader_factory_provider_,
                       connector_);
   DCHECK(workers_.find(offset) == workers_.end());
   workers_[offset] = std::move(worker);
diff --git a/components/download/internal/common/parallel_download_job.h b/components/download/internal/common/parallel_download_job.h
index 17273fff..ca48feed 100644
--- a/components/download/internal/common/parallel_download_job.h
+++ b/components/download/internal/common/parallel_download_job.h
@@ -10,13 +10,14 @@
 #include <vector>
 
 #include "base/macros.h"
-#include "base/memory/ref_counted.h"
+#include "base/memory/weak_ptr.h"
 #include "base/timer/timer.h"
 #include "components/download/internal/common/download_job_impl.h"
 #include "components/download/internal/common/download_worker.h"
 #include "components/download/public/common/download_create_info.h"
 #include "components/download/public/common/download_export.h"
 #include "components/download/public/common/parallel_download_configs.h"
+#include "components/download/public/common/url_loader_factory_provider.h"
 
 namespace service_manager {
 class Connector;
@@ -33,12 +34,12 @@
  public:
   // TODO(qinmin): Remove |url_request_context_getter| once network service is
   // enabled.
-  ParallelDownloadJob(DownloadItem* download_item,
-                      CancelRequestCallback cancel_request_callback,
-                      const DownloadCreateInfo& create_info,
-                      scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-                          url_loader_factory_getter,
-                      service_manager::Connector* connector);
+  ParallelDownloadJob(
+      DownloadItem* download_item,
+      CancelRequestCallback cancel_request_callback,
+      const DownloadCreateInfo& create_info,
+      base::WeakPtr<URLLoaderFactoryProvider> url_loader_factory_provider,
+      service_manager::Connector* connector);
   ~ParallelDownloadJob() override;
 
   // DownloadJobImpl implementation.
@@ -117,9 +118,9 @@
   // Whether the server accepts range requests.
   RangeRequestSupportType range_support_;
 
-  // URLLoaderFactory getter to issue network requests with network service
-  scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-      url_loader_factory_getter_;
+  // URLLoaderFactoryProvider to retrieve the URLLoaderFactory and issue
+  // parallel requests.
+  base::WeakPtr<URLLoaderFactoryProvider> url_loader_factory_provider_;
 
   // Connector used for establishing the connection to the ServiceManager.
   service_manager::Connector* connector_;
diff --git a/components/download/internal/common/resource_downloader.cc b/components/download/internal/common/resource_downloader.cc
index 47240c3f..545ea75 100644
--- a/components/download/internal/common/resource_downloader.cc
+++ b/components/download/internal/common/resource_downloader.cc
@@ -7,7 +7,6 @@
 #include <memory>
 
 #include "base/bind.h"
-#include "components/download/public/common/download_url_loader_factory_getter.h"
 #include "components/download/public/common/stream_handle_input_stream.h"
 #include "services/device/public/mojom/constants.mojom.h"
 #include "services/device/public/mojom/wake_lock_provider.mojom.h"
@@ -61,8 +60,7 @@
     base::WeakPtr<UrlDownloadHandler::Delegate> delegate,
     std::unique_ptr<DownloadUrlParameters> params,
     std::unique_ptr<network::ResourceRequest> request,
-    scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-        url_loader_factory_getter,
+    scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
     const URLSecurityPolicy& url_security_policy,
     const GURL& site_url,
     const GURL& tab_url,
@@ -76,8 +74,7 @@
       delegate, std::move(request), params->render_process_host_id(),
       params->render_frame_host_routing_id(), site_url, tab_url,
       tab_referrer_url, is_new_download, task_runner,
-      std::move(url_loader_factory_getter), url_security_policy,
-      std::move(connector));
+      std::move(url_loader_factory), url_security_policy, std::move(connector));
 
   downloader->Start(std::move(params), is_parallel_request, is_background_mode);
   return downloader;
@@ -98,16 +95,14 @@
     const scoped_refptr<network::ResourceResponse>& response_head,
     mojo::ScopedDataPipeConsumerHandle response_body,
     network::mojom::URLLoaderClientEndpointsPtr url_loader_client_endpoints,
-    scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-        url_loader_factory_getter,
+    scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
     const URLSecurityPolicy& url_security_policy,
     std::unique_ptr<service_manager::Connector> connector,
     const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) {
   auto downloader = std::make_unique<ResourceDownloader>(
       delegate, std::move(resource_request), render_process_id, render_frame_id,
       site_url, tab_url, tab_referrer_url, true, task_runner,
-      std::move(url_loader_factory_getter), url_security_policy,
-      std::move(connector));
+      std::move(url_loader_factory), url_security_policy, std::move(connector));
   downloader->InterceptResponse(
       std::move(url_chain), cert_status, std::move(response_head),
       std::move(response_body), std::move(url_loader_client_endpoints));
@@ -124,8 +119,7 @@
     const GURL& tab_referrer_url,
     bool is_new_download,
     const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
-    scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-        url_loader_factory_getter,
+    scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
     const URLSecurityPolicy& url_security_policy,
     std::unique_ptr<service_manager::Connector> connector)
     : delegate_(delegate),
@@ -137,7 +131,7 @@
       tab_url_(tab_url),
       tab_referrer_url_(tab_referrer_url),
       delegate_task_runner_(task_runner),
-      url_loader_factory_getter_(std::move(url_loader_factory_getter)),
+      url_loader_factory_(url_loader_factory),
       url_security_policy_(url_security_policy),
       is_content_initiated_(false) {
   RequestWakeLock(connector.get());
@@ -175,7 +169,7 @@
   // Set up the URLLoader
   network::mojom::URLLoaderRequest url_loader_request =
       mojo::MakeRequest(&url_loader_);
-  url_loader_factory_getter_->GetURLLoaderFactory()->CreateLoaderAndStart(
+  url_loader_factory_->CreateLoaderAndStart(
       std::move(url_loader_request),
       0,  // routing_id
       0,  // request_id
@@ -241,7 +235,7 @@
           &UrlDownloadHandler::Delegate::OnUrlDownloadStarted, delegate_,
           std::move(download_create_info),
           std::make_unique<StreamHandleInputStream>(std::move(stream_handle)),
-          std::move(url_loader_factory_getter_), this, callback_));
+          weak_ptr_factory_.GetWeakPtr(), this, callback_));
 }
 
 void ResourceDownloader::OnReceiveRedirect() {
@@ -268,6 +262,11 @@
       FROM_HERE, base::BindOnce(upload_callback_, bytes_uploaded));
 }
 
+scoped_refptr<network::SharedURLLoaderFactory>
+ResourceDownloader::GetURLLoaderFactory() {
+  return url_loader_factory_;
+}
+
 void ResourceDownloader::CancelRequest() {
   Destroy();
 }
diff --git a/components/download/internal/common/resource_downloader.h b/components/download/internal/common/resource_downloader.h
index 230269b..38de5c2 100644
--- a/components/download/internal/common/resource_downloader.h
+++ b/components/download/internal/common/resource_downloader.h
@@ -10,6 +10,7 @@
 #include "components/download/public/common/download_response_handler.h"
 #include "components/download/public/common/download_utils.h"
 #include "components/download/public/common/url_download_handler.h"
+#include "components/download/public/common/url_loader_factory_provider.h"
 #include "mojo/public/cpp/bindings/binding.h"
 #include "net/cert/cert_status_flags.h"
 #include "services/device/public/mojom/wake_lock.mojom.h"
@@ -21,20 +22,18 @@
 }  // namespace service_manager
 
 namespace download {
-class DownloadURLLoaderFactoryGetter;
-
 // Class for handing the download of a url. Lives on IO thread.
 class COMPONENTS_DOWNLOAD_EXPORT ResourceDownloader
-    : public download::UrlDownloadHandler,
-      public download::DownloadResponseHandler::Delegate {
+    : public UrlDownloadHandler,
+      public DownloadResponseHandler::Delegate,
+      public URLLoaderFactoryProvider {
  public:
   // Called to start a download, must be called on IO thread.
   static std::unique_ptr<ResourceDownloader> BeginDownload(
       base::WeakPtr<download::UrlDownloadHandler::Delegate> delegate,
       std::unique_ptr<download::DownloadUrlParameters> download_url_parameters,
       std::unique_ptr<network::ResourceRequest> request,
-      scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-          url_loader_factory_getter,
+      scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
       const URLSecurityPolicy& url_security_policy,
       const GURL& site_url,
       const GURL& tab_url,
@@ -61,8 +60,7 @@
       const scoped_refptr<network::ResourceResponse>& response_head,
       mojo::ScopedDataPipeConsumerHandle response_body,
       network::mojom::URLLoaderClientEndpointsPtr url_loader_client_endpoints,
-      scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-          url_loader_factory_getter,
+      scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
       const URLSecurityPolicy& url_security_policy,
       std::unique_ptr<service_manager::Connector> connector,
       const scoped_refptr<base::SingleThreadTaskRunner>& task_runner);
@@ -77,21 +75,23 @@
       const GURL& tab_referrer_url,
       bool is_new_download,
       const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
-      scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-          url_loader_factory_getter,
+      scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
       const URLSecurityPolicy& url_security_policy,
       std::unique_ptr<service_manager::Connector> connector);
   ~ResourceDownloader() override;
 
-  // download::DownloadResponseHandler::Delegate
+  // DownloadResponseHandler::Delegate
   void OnResponseStarted(
       std::unique_ptr<download::DownloadCreateInfo> download_create_info,
-      download::mojom::DownloadStreamHandlePtr stream_handle) override;
+      mojom::DownloadStreamHandlePtr stream_handle) override;
   void OnReceiveRedirect() override;
   void OnResponseCompleted() override;
   bool CanRequestURL(const GURL& url) override;
   void OnUploadProgress(uint64_t bytes_uploaded) override;
 
+  // URLLoaderFactoryProvider implementation.
+  scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override;
+
  private:
   // Helper method to start the network request.
   void Start(
@@ -162,9 +162,8 @@
   // TaskRunner to post callbacks to the |delegate_|
   scoped_refptr<base::SingleThreadTaskRunner> delegate_task_runner_;
 
-  // URLLoaderFactory getter for issueing network requests.
-  scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-      url_loader_factory_getter_;
+  // URLLoaderFactory for issuing network requests.
+  scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
 
   // Used to check if the URL is safe to request.
   URLSecurityPolicy url_security_policy_;
diff --git a/components/download/internal/common/url_download_handler_factory.cc b/components/download/internal/common/url_download_handler_factory.cc
index dab21c12..056a9f56 100644
--- a/components/download/internal/common/url_download_handler_factory.cc
+++ b/components/download/internal/common/url_download_handler_factory.cc
@@ -8,7 +8,6 @@
 #include "base/synchronization/lock.h"
 #include "components/download/internal/common/resource_downloader.h"
 #include "components/download/public/common/download_item.h"
-#include "components/download/public/common/download_url_loader_factory_getter.h"
 #include "components/download/public/common/download_utils.h"
 #include "services/network/public/cpp/shared_url_loader_factory.h"
 #include "services/service_manager/public/cpp/connector.h"
@@ -20,8 +19,7 @@
 UrlDownloadHandlerFactory::Create(
     std::unique_ptr<download::DownloadUrlParameters> params,
     base::WeakPtr<download::UrlDownloadHandler::Delegate> delegate,
-    scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-        url_loader_factory_getter,
+    scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
     const URLSecurityPolicy& url_security_policy,
     std::unique_ptr<service_manager::Connector> connector,
     const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) {
@@ -30,8 +28,8 @@
   return UrlDownloadHandler::UniqueUrlDownloadHandlerPtr(
       download::ResourceDownloader::BeginDownload(
           delegate, std::move(params), std::move(request),
-          std::move(url_loader_factory_getter), url_security_policy, GURL(),
-          GURL(), GURL(), true, true, std::move(connector),
+          std::move(url_loader_factory), url_security_policy, GURL(), GURL(),
+          GURL(), true, true, std::move(connector),
           false /* is_background_mode */, task_runner)
           .release(),
       base::OnTaskRunnerDeleter(base::ThreadTaskRunnerHandle::Get()));
diff --git a/components/download/internal/common/url_loader_factory_provider.cc b/components/download/internal/common/url_loader_factory_provider.cc
new file mode 100644
index 0000000..5277716a
--- /dev/null
+++ b/components/download/internal/common/url_loader_factory_provider.cc
@@ -0,0 +1,18 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/download/public/common/url_loader_factory_provider.h"
+
+namespace download {
+
+URLLoaderFactoryProvider::URLLoaderFactoryProvider() = default;
+
+URLLoaderFactoryProvider::~URLLoaderFactoryProvider() = default;
+
+scoped_refptr<network::SharedURLLoaderFactory>
+URLLoaderFactoryProvider::GetURLLoaderFactory() {
+  return nullptr;
+}
+
+}  // namespace download
diff --git a/components/download/public/common/BUILD.gn b/components/download/public/common/BUILD.gn
index 77365246..3febd81 100644
--- a/components/download/public/common/BUILD.gn
+++ b/components/download/public/common/BUILD.gn
@@ -48,8 +48,6 @@
     "download_stats.h",
     "download_task_runner.h",
     "download_ukm_helper.h",
-    "download_url_loader_factory_getter.h",
-    "download_url_loader_factory_getter_impl.h",
     "download_url_parameters.cc",
     "download_url_parameters.h",
     "download_utils.h",
@@ -65,6 +63,7 @@
     "stream_handle_input_stream.h",
     "url_download_handler_factory.h",
     "url_download_request_handle.h",
+    "url_loader_factory_provider.h",
   ]
 
   configs += [ ":components_download_implementation" ]
diff --git a/components/download/public/common/download_item_impl.h b/components/download/public/common/download_item_impl.h
index 1363397..c81bcc08 100644
--- a/components/download/public/common/download_item_impl.h
+++ b/components/download/public/common/download_item_impl.h
@@ -24,9 +24,9 @@
 #include "components/download/public/common/download_interrupt_reasons.h"
 #include "components/download/public/common/download_item.h"
 #include "components/download/public/common/download_job.h"
-#include "components/download/public/common/download_url_loader_factory_getter.h"
 #include "components/download/public/common/download_url_parameters.h"
 #include "components/download/public/common/resume_mode.h"
+#include "components/download/public/common/url_loader_factory_provider.h"
 #include "url/gurl.h"
 #include "url/origin.h"
 
@@ -309,11 +309,11 @@
   // parameters. It may be different from the DownloadCreateInfo used to create
   // the DownloadItem if Start() is being called in response for a
   // download resumption request.
-  virtual void Start(std::unique_ptr<DownloadFile> download_file,
-                     DownloadJob::CancelRequestCallback cancel_request_callback,
-                     const DownloadCreateInfo& new_create_info,
-                     scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-                         url_loader_factory_getter);
+  virtual void Start(
+      std::unique_ptr<DownloadFile> download_file,
+      DownloadJob::CancelRequestCallback cancel_request_callback,
+      const DownloadCreateInfo& new_create_info,
+      base::WeakPtr<URLLoaderFactoryProvider> url_loader_factory_provider);
 
   // Needed because of intertwining with DownloadManagerImpl -------------------
 
diff --git a/components/download/public/common/download_job_factory.h b/components/download/public/common/download_job_factory.h
index d156ec8b..9a0457fd 100644
--- a/components/download/public/common/download_job_factory.h
+++ b/components/download/public/common/download_job_factory.h
@@ -8,6 +8,7 @@
 #include <memory>
 
 #include "base/macros.h"
+#include "base/memory/weak_ptr.h"
 #include "components/download/public/common/download_create_info.h"
 #include "components/download/public/common/download_export.h"
 #include "components/download/public/common/download_job.h"
@@ -17,9 +18,8 @@
 }  // namespace service_manager
 
 namespace download {
-
 class DownloadItem;
-class DownloadURLLoaderFactoryGetter;
+class URLLoaderFactoryProvider;
 
 // Factory class to create different kinds of DownloadJob.
 class COMPONENTS_DOWNLOAD_EXPORT DownloadJobFactory {
@@ -29,8 +29,7 @@
       DownloadJob::CancelRequestCallback cancel_request_callback,
       const DownloadCreateInfo& create_info,
       bool is_save_package_download,
-      scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-          url_loader_factory_getter,
+      base::WeakPtr<URLLoaderFactoryProvider> url_loader_factory_provider,
       service_manager::Connector* connector);
 
  private:
diff --git a/components/download/public/common/download_url_loader_factory_getter.h b/components/download/public/common/download_url_loader_factory_getter.h
deleted file mode 100644
index c9aef99..0000000
--- a/components/download/public/common/download_url_loader_factory_getter.h
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_DOWNLOAD_PUBLIC_COMMON_DOWNLOAD_URL_LOADER_FACTORY_GETTER_H_
-#define COMPONENTS_DOWNLOAD_PUBLIC_COMMON_DOWNLOAD_URL_LOADER_FACTORY_GETTER_H_
-
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/sequenced_task_runner_helpers.h"
-#include "components/download/public/common/download_export.h"
-
-namespace network {
-class SharedURLLoaderFactory;
-}  // namespace network
-
-namespace download {
-
-struct DownloadURLLoaderFactoryGetterDeleter;
-
-// Class for retrieving a URLLoaderFactory on IO thread. This class can be
-// created on any thread and will be destroyed on the IO thread.
-// GetURLLoaderFactory() has to be called on the IO thread.
-class COMPONENTS_DOWNLOAD_EXPORT DownloadURLLoaderFactoryGetter
-    : public base::RefCountedThreadSafe<DownloadURLLoaderFactoryGetter,
-                                        DownloadURLLoaderFactoryGetterDeleter> {
- public:
-  DownloadURLLoaderFactoryGetter();
-
-  // Called on the IO thread to get a URLLoaderFactory.
-  virtual scoped_refptr<network::SharedURLLoaderFactory>
-  GetURLLoaderFactory() = 0;
-
- protected:
-  virtual ~DownloadURLLoaderFactoryGetter();
-
- private:
-  friend class base::DeleteHelper<DownloadURLLoaderFactoryGetter>;
-  friend class base::RefCountedThreadSafe<
-      DownloadURLLoaderFactoryGetter,
-      DownloadURLLoaderFactoryGetterDeleter>;
-  friend struct DownloadURLLoaderFactoryGetterDeleter;
-
-  void DeleteOnCorrectThread() const;
-
-  DISALLOW_COPY_AND_ASSIGN(DownloadURLLoaderFactoryGetter);
-};
-
-struct DownloadURLLoaderFactoryGetterDeleter {
-  static void Destruct(const DownloadURLLoaderFactoryGetter* factory_getter) {
-    factory_getter->DeleteOnCorrectThread();
-  }
-};
-
-}  // namespace download
-
-#endif  // COMPONENTS_DOWNLOAD_PUBLIC_COMMON_DOWNLOAD_URL_LOADER_FACTORY_GETTER_H_
diff --git a/components/download/public/common/download_url_loader_factory_getter_impl.h b/components/download/public/common/download_url_loader_factory_getter_impl.h
deleted file mode 100644
index dcfb250..0000000
--- a/components/download/public/common/download_url_loader_factory_getter_impl.h
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_DOWNLOAD_PUBLIC_COMMON_DOWNLOAD_URL_LOADER_FACTORY_GETTER_IMPL_H_
-#define COMPONENTS_DOWNLOAD_PUBLIC_COMMON_DOWNLOAD_URL_LOADER_FACTORY_GETTER_IMPL_H_
-
-#include "components/download/public/common/download_url_loader_factory_getter.h"
-#include "services/network/public/cpp/shared_url_loader_factory.h"
-
-namespace download {
-
-// Class for retrieving a fixed SharedURLLoaderFactory.
-class COMPONENTS_DOWNLOAD_EXPORT DownloadURLLoaderFactoryGetterImpl
-    : public DownloadURLLoaderFactoryGetter {
- public:
-  explicit DownloadURLLoaderFactoryGetterImpl(
-      std::unique_ptr<network::SharedURLLoaderFactoryInfo> url_loader_factory);
-
-  // download::DownloadURLLoaderFactoryGetter implementation.
-  scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override;
-
- protected:
-  ~DownloadURLLoaderFactoryGetterImpl() override;
-
- private:
-  // Only one of the following two members is ever set. Initially that would be
-  // |url_loader_factory_info_|, but after GetURLLoaderFactory is called for the
-  // first time instead |url_loader_factory_| will be set. This is safe because
-  // GetURLLoaderFactory is always called from the same thread.
-  std::unique_ptr<network::SharedURLLoaderFactoryInfo> url_loader_factory_info_;
-  scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
-
-  DISALLOW_COPY_AND_ASSIGN(DownloadURLLoaderFactoryGetterImpl);
-};
-
-}  // namespace download
-
-#endif  // COMPONENTS_DOWNLOAD_PUBLIC_COMMON_DOWNLOAD_URL_LOADER_FACTORY_GETTER_IMPL_H_
diff --git a/components/download/public/common/in_progress_download_manager.h b/components/download/public/common/in_progress_download_manager.h
index dcad17d5..2dc066c 100644
--- a/components/download/public/common/in_progress_download_manager.h
+++ b/components/download/public/common/in_progress_download_manager.h
@@ -26,6 +26,7 @@
 
 namespace network {
 struct ResourceResponse;
+class SharedURLLoaderFactory;
 }  // namespace network
 
 namespace service_manager {
@@ -40,7 +41,6 @@
 
 class DownloadDBCache;
 class DownloadStartObserver;
-class DownloadURLLoaderFactoryGetter;
 class DownloadUrlParameters;
 struct DownloadDBEntry;
 
@@ -100,13 +100,13 @@
   DownloadItem* GetDownloadByGuid(const std::string& guid) override;
 
   // Called to start a download.
-  void BeginDownload(
-      std::unique_ptr<DownloadUrlParameters> params,
-      scoped_refptr<DownloadURLLoaderFactoryGetter> url_loader_factory_getter,
-      bool is_new_download,
-      const GURL& site_url,
-      const GURL& tab_url,
-      const GURL& tab_referrer_url);
+  void BeginDownload(std::unique_ptr<DownloadUrlParameters> params,
+                     std::unique_ptr<network::SharedURLLoaderFactoryInfo>
+                         url_loader_factory_info,
+                     bool is_new_download,
+                     const GURL& site_url,
+                     const GURL& tab_url,
+                     const GURL& tab_referrer_url);
 
   // Intercepts a download from navigation.
   void InterceptDownloadFromNavigation(
@@ -121,12 +121,13 @@
       scoped_refptr<network::ResourceResponse> response_head,
       mojo::ScopedDataPipeConsumerHandle response_body,
       network::mojom::URLLoaderClientEndpointsPtr url_loader_client_endpoints,
-      scoped_refptr<DownloadURLLoaderFactoryGetter> url_loader_factory_getter);
+      std::unique_ptr<network::SharedURLLoaderFactoryInfo>
+          url_loader_factory_info);
 
   void StartDownload(
       std::unique_ptr<DownloadCreateInfo> info,
       std::unique_ptr<InputStream> stream,
-      scoped_refptr<DownloadURLLoaderFactoryGetter> url_loader_factory_getter,
+      base::WeakPtr<URLLoaderFactoryProvider> url_loader_factory_provider,
       DownloadJob::CancelRequestCallback cancel_request_callback,
       const DownloadUrlParameters::OnStartedCallback& on_started);
 
@@ -186,9 +187,9 @@
   }
   DownloadFileFactory* file_factory() { return file_factory_.get(); }
 
-  void set_url_loader_factory_getter(
-      scoped_refptr<DownloadURLLoaderFactoryGetter> url_loader_factory_getter) {
-    url_loader_factory_getter_ = std::move(url_loader_factory_getter);
+  void set_url_loader_factory(
+      scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory) {
+    url_loader_factory_ = url_loader_factory;
   }
 
   void SetDelegate(Delegate* delegate);
@@ -210,7 +211,7 @@
   void OnUrlDownloadStarted(
       std::unique_ptr<DownloadCreateInfo> download_create_info,
       std::unique_ptr<InputStream> input_stream,
-      scoped_refptr<DownloadURLLoaderFactoryGetter> shared_url_loader_factory,
+      base::WeakPtr<URLLoaderFactoryProvider> url_loader_factory_provider,
       UrlDownloadHandler* downloader,
       const DownloadUrlParameters::OnStartedCallback& callback) override;
   void OnUrlDownloadStopped(UrlDownloadHandler* downloader) override;
@@ -229,7 +230,7 @@
   // Start a DownloadItemImpl.
   void StartDownloadWithItem(
       std::unique_ptr<InputStream> stream,
-      scoped_refptr<DownloadURLLoaderFactoryGetter> url_loader_factory_getter,
+      base::WeakPtr<URLLoaderFactoryProvider> url_loader_factory_provider,
       DownloadJob::CancelRequestCallback cancel_request_callback,
       std::unique_ptr<DownloadCreateInfo> info,
       DownloadItemImpl* download,
@@ -288,9 +289,9 @@
   // A list of download GUIDs that should not be persisted.
   std::set<std::string> non_persistent_download_guids_;
 
-  // URLLoaderFactoryGetter for issuing network request when DownloadMangerImpl
+  // URLLoaderFactory for issuing network request when DownloadManagerImpl
   // is not available.
-  scoped_refptr<DownloadURLLoaderFactoryGetter> url_loader_factory_getter_;
+  scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
 
   // Mapping between download URIs and display names.
   // TODO(qinmin): move display name to history and in-progress DB.
diff --git a/components/download/public/common/mock_download_item_impl.h b/components/download/public/common/mock_download_item_impl.h
index 87d59eef..ac239342 100644
--- a/components/download/public/common/mock_download_item_impl.h
+++ b/components/download/public/common/mock_download_item_impl.h
@@ -53,8 +53,8 @@
   void Start(std::unique_ptr<DownloadFile> download_file,
              DownloadJob::CancelRequestCallback cancel_request_callback,
              const DownloadCreateInfo& create_info,
-             scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-                 url_loader_factory_getter) override {
+             base::WeakPtr<URLLoaderFactoryProvider>
+                 url_loader_factory_provider) override {
     MockStart(download_file.get());
   }
 
diff --git a/components/download/public/common/url_download_handler.h b/components/download/public/common/url_download_handler.h
index e76fec5..5e19283 100644
--- a/components/download/public/common/url_download_handler.h
+++ b/components/download/public/common/url_download_handler.h
@@ -5,14 +5,13 @@
 #ifndef COMPONENTS_DOWNLOAD_PUBLIC_COMMON_URL_DOWNLOAD_HANDLER_H_
 #define COMPONENTS_DOWNLOAD_PUBLIC_COMMON_URL_DOWNLOAD_HANDLER_H_
 
+#include "base/memory/weak_ptr.h"
 #include "components/download/public/common/download_export.h"
-#include "components/download/public/common/download_url_loader_factory_getter.h"
 #include "components/download/public/common/download_url_parameters.h"
-#include "services/network/public/cpp/shared_url_loader_factory.h"
+#include "components/download/public/common/url_loader_factory_provider.h"
 
 namespace download {
 struct DownloadCreateInfo;
-class DownloadURLLoaderFactoryGetter;
 class InputStream;
 
 // Class for handling the download of a url. Implemented by child classes.
@@ -26,7 +25,7 @@
     virtual void OnUrlDownloadStarted(
         std::unique_ptr<DownloadCreateInfo> download_create_info,
         std::unique_ptr<InputStream> input_stream,
-        scoped_refptr<DownloadURLLoaderFactoryGetter> url_loader_factory_getter,
+        base::WeakPtr<URLLoaderFactoryProvider> url_loader_factory_provider,
         UrlDownloadHandler* downloader,
         const DownloadUrlParameters::OnStartedCallback& callback) = 0;
 
diff --git a/components/download/public/common/url_download_handler_factory.h b/components/download/public/common/url_download_handler_factory.h
index 978ae5a..b20def27 100644
--- a/components/download/public/common/url_download_handler_factory.h
+++ b/components/download/public/common/url_download_handler_factory.h
@@ -14,7 +14,6 @@
 }  // namespace service_manager
 
 namespace download {
-class DownloadURLLoaderFactoryGetter;
 class DownloadUrlParameters;
 
 // Class for handling the creation of a URLDownloadHandler. This is used to
@@ -27,8 +26,7 @@
   static UrlDownloadHandler::UniqueUrlDownloadHandlerPtr Create(
       std::unique_ptr<download::DownloadUrlParameters> params,
       base::WeakPtr<download::UrlDownloadHandler::Delegate> delegate,
-      scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-          url_loader_factory_getter,
+      scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
       const URLSecurityPolicy& url_security_policy,
       std::unique_ptr<service_manager::Connector> connector,
       const scoped_refptr<base::SingleThreadTaskRunner>& task_runner);
diff --git a/components/download/public/common/url_loader_factory_provider.h b/components/download/public/common/url_loader_factory_provider.h
new file mode 100644
index 0000000..356091b6
--- /dev/null
+++ b/components/download/public/common/url_loader_factory_provider.h
@@ -0,0 +1,29 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_DOWNLOAD_PUBLIC_COMMON_URL_LOADER_FACTORY_PROVIDER_H_
+#define COMPONENTS_DOWNLOAD_PUBLIC_COMMON_URL_LOADER_FACTORY_PROVIDER_H_
+
+#include "components/download/public/common/download_export.h"
+#include "services/network/public/cpp/shared_url_loader_factory.h"
+
+namespace download {
+
+// Interface for providing a SharedURLLoaderFactory on IO thread that can be
+// used to create parallel download requests.
+class COMPONENTS_DOWNLOAD_EXPORT URLLoaderFactoryProvider {
+ public:
+  URLLoaderFactoryProvider();
+  virtual ~URLLoaderFactoryProvider();
+
+  // Called on the io thread to get the URL loader.
+  virtual scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory();
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(URLLoaderFactoryProvider);
+};
+
+}  // namespace download
+
+#endif  // COMPONENTS_DOWNLOAD_PUBLIC_COMMON_URL_LOADER_FACTORY_PROVIDER_H_
diff --git a/components/metrics/metrics_state_manager.cc b/components/metrics/metrics_state_manager.cc
index 8a3adc0..b0010a7 100644
--- a/components/metrics/metrics_state_manager.cc
+++ b/components/metrics/metrics_state_manager.cc
@@ -159,6 +159,11 @@
     // UMA is not enabled at this point, it's unlikely it will be enabled in
     // the same session since that requires the user to manually do that via
     // settings page after they unchecked it on the download page.
+    //
+    // Note: Windows first run is covered by browser tests
+    // FirstRunMasterPrefsVariationsSeedTest.PRE_SecondRun and
+    // FirstRunMasterPrefsVariationsSeedTest.SecondRun. If the platform ifdef
+    // for this logic changes, the tests should be updated as well.
     if (client_id_.empty())
       provisional_client_id_ = base::GenerateGUID();
 #endif  // !defined(OS_WIN)
diff --git a/components/omnibox/browser/omnibox_edit_model.cc b/components/omnibox/browser/omnibox_edit_model.cc
index bf09e29..6438e7fc 100644
--- a/components/omnibox/browser/omnibox_edit_model.cc
+++ b/components/omnibox/browser/omnibox_edit_model.cc
@@ -368,15 +368,21 @@
                                          base::string16* text,
                                          GURL* url_from_text,
                                          bool* write_url) {
+  DCHECK(text);
+  DCHECK(url_from_text);
+  DCHECK(write_url);
+
   *write_url = false;
 
   // Do not adjust if selection did not start at the beginning of the field.
   if (sel_min != 0)
     return;
 
-  // If the user has not modified the display text and is copying the whole
-  // display text, copy the omnibox contents as a hyperlink to the current page.
-  if (!user_input_in_progress_ && *text == display_text_) {
+  // If the user has not modified the display text and is copying the whole URL
+  // text (whether it's in the elided or unelided form), copy the omnibox
+  // contents as a hyperlink to the current page.
+  if (!user_input_in_progress_ &&
+      (*text == display_text_ || *text == url_for_editing_)) {
     *url_from_text = controller()->GetLocationBarModel()->GetURL();
     *write_url = true;
 
@@ -402,8 +408,10 @@
   if (AutocompleteMatch::IsSearchType(match_from_text.type))
     return;
 
+  // Make our best GURL interpretation of |text|.
   *url_from_text = match_from_text.destination_url;
 
+  // Get the current page GURL (or the GURL of the currently selected match).
   GURL current_page_url = controller()->GetLocationBarModel()->GetURL();
   if (PopupIsOpen()) {
     AutocompleteMatch current_match = CurrentMatch(nullptr);
@@ -415,15 +423,16 @@
     }
   }
 
-  // Only if the user has not altered the host piece of the Omnibox text, then
-  // we can infer the correct scheme from the current page's URL, and prepend it
-  // to the selected text on-copy. Otherwise, we cannot guess at user intent, so
-  // we copy the Omnibox contents as plain text.
-  if (current_page_url.SchemeIsHTTPOrHTTPS() &&
-      url_from_text->SchemeIsHTTPOrHTTPS() &&
-      current_page_url.host_piece() == url_from_text->host_piece()) {
-    *write_url = true;
+  // If the user has altered the host piece of the omnibox text, then we cannot
+  // guess at user intent, so early exit and leave |text| as-is as plain text.
+  if (!current_page_url.SchemeIsHTTPOrHTTPS() ||
+      !url_from_text->SchemeIsHTTPOrHTTPS() ||
+      current_page_url.host_piece() != url_from_text->host_piece()) {
+    return;
+  }
 
+  // Infer the correct scheme for the copied text, and prepend it if necessary.
+  {
     base::string16 http = base::ASCIIToUTF16(url::kHttpScheme) +
                           base::ASCIIToUTF16(url::kStandardSchemeSeparator);
     base::string16 https = base::ASCIIToUTF16(url::kHttpsScheme) +
@@ -442,6 +451,13 @@
       *url_from_text = url_from_text->ReplaceComponents(replace_scheme);
     }
   }
+
+  // If the URL derived from |text| is valid, mark |write_url| true, and modify
+  // |text| to contain the canonical URL spec with non-ASCII characters escaped.
+  if (url_from_text->is_valid()) {
+    *write_url = true;
+    *text = base::UTF8ToUTF16(url_from_text->spec());
+  }
 }
 
 bool OmniboxEditModel::ShouldShowCurrentPageIcon() const {
diff --git a/components/omnibox/browser/omnibox_edit_model.h b/components/omnibox/browser/omnibox_edit_model.h
index c0753394..1a18435c 100644
--- a/components/omnibox/browser/omnibox_edit_model.h
+++ b/components/omnibox/browser/omnibox_edit_model.h
@@ -121,8 +121,22 @@
   // case, will not be modified.
   //
   // |sel_min| gives the minimum of the selection, e.g. min(sel_start, sel_end).
-  // |text| is the currently selected text. If the copied text is interpreted
-  // as a URL, |write_url| is set to true and |url_from_text| set to the URL.
+  // |text| is the currently selected text, and may be modified by this method.
+  // |url_from_text| is the GURL interpretation of the selected text, and may
+  // be used for drag-and-drop models or writing hyperlink data types to
+  // system clipboards.
+  //
+  // If the copied text is interpreted as a URL:
+  //  - |write_url| is set to true.
+  //  - |url_from_text| is set to the URL.
+  //  - |text| is set to the URL's spec. The output will be pure ASCII and
+  //    %-escaped, since canonical URLs are always encoded to ASCII.
+  //
+  // If the copied text is *NOT* interpreted as a URL:
+  //  - |write_url| is set to false.
+  //  - |url_from_text| may be modified, but might not contain a valid GURL.
+  //  - |text| is full UTF-16 and not %-escaped. This is because we are not
+  //    interpreting |text| as a URL, so we leave the Unicode characters as-is.
   void AdjustTextForCopy(int sel_min,
                          base::string16* text,
                          GURL* url_from_text,
diff --git a/components/omnibox/browser/omnibox_edit_model_unittest.cc b/components/omnibox/browser/omnibox_edit_model_unittest.cc
index 6b648fd..dda6b050 100644
--- a/components/omnibox/browser/omnibox_edit_model_unittest.cc
+++ b/components/omnibox/browser/omnibox_edit_model_unittest.cc
@@ -96,7 +96,7 @@
       // a scheme.
       {"a.de/", 0, "", false, "http://a.de/", "http://a.de/", true,
        "http://a.de/"},
-      {"a.de/", 0, "", false, "HTtp://a.de/", "HTtp://a.de/", true,
+      {"a.de/", 0, "", false, "HTtp://a.de/", "http://a.de/", true,
        "http://a.de/"},
       {"https://a.de/", 0, "", false, "https://a.de/", "https://a.de/", true,
        "https://a.de/"},
@@ -134,13 +134,35 @@
       // Steady State Elisions test for re-adding an elided 'https://'.
       {"https://a.de/b", 0, "", false, "a.de/b", "https://a.de/b", true,
        "https://a.de/b", "a.de/b"},
+
+      // Verifies that non-ASCII characters are %-escaped for valid copied URLs,
+      // as long as the host has not been modified from the page URL.
+      {u8"https://ja.wikipedia.org/wiki/目次", 0, "", false,
+       u8"https://ja.wikipedia.org/wiki/目次",
+       "https://ja.wikipedia.org/wiki/%E7%9B%AE%E6%AC%A1", true,
+       "https://ja.wikipedia.org/wiki/%E7%9B%AE%E6%AC%A1"},
+      // Test escaping when part of the path was not copied.
+      {u8"https://ja.wikipedia.org/wiki/目次", 0, "", false,
+       u8"https://ja.wikipedia.org/wiki/目",
+       "https://ja.wikipedia.org/wiki/%E7%9B%AE", true,
+       "https://ja.wikipedia.org/wiki/%E7%9B%AE"},
+      // Correctly handle escaping in the scheme-elided case as well.
+      {u8"https://ja.wikipedia.org/wiki/目次", 0, "", false,
+       u8"ja.wikipedia.org/wiki/目次",
+       "https://ja.wikipedia.org/wiki/%E7%9B%AE%E6%AC%A1", true,
+       "https://ja.wikipedia.org/wiki/%E7%9B%AE%E6%AC%A1",
+       u8"ja.wikipedia.org/wiki/目次"},
+      // Don't escape when host was modified.
+      {u8"https://ja.wikipedia.org/wiki/目次", 0, "", false,
+       u8"https://wikipedia.org/wiki/目次", u8"https://wikipedia.org/wiki/目次",
+       false, ""},
   };
 
   for (size_t i = 0; i < base::size(input); ++i) {
     location_bar_model()->set_formatted_full_url(
-        base::ASCIIToUTF16(input[i].url_for_editing));
+        base::UTF8ToUTF16(input[i].url_for_editing));
     location_bar_model()->set_url_for_display(
-        base::ASCIIToUTF16(input[i].url_for_display));
+        base::UTF8ToUTF16(input[i].url_for_display));
 
     // Set the location bar model's URL to be a valid GURL that would generate
     // the test case's url_for_editing.
@@ -156,11 +178,11 @@
     match.destination_url = GURL(input[i].match_destination_url);
     model()->SetCurrentMatchForTest(match);
 
-    base::string16 result = base::ASCIIToUTF16(input[i].input);
+    base::string16 result = base::UTF8ToUTF16(input[i].input);
     GURL url;
     bool write_url;
     model()->AdjustTextForCopy(input[i].sel_start, &result, &url, &write_url);
-    EXPECT_EQ(base::ASCIIToUTF16(input[i].expected_output), result)
+    EXPECT_EQ(base::UTF8ToUTF16(input[i].expected_output), result)
         << "@: " << i;
     EXPECT_EQ(input[i].write_url, write_url) << " @" << i;
     if (write_url)
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json
index b8ecf3e..872fcd3 100644
--- a/components/policy/resources/policy_templates.json
+++ b/components/policy/resources/policy_templates.json
@@ -17479,13 +17479,13 @@
       'tags': [],
       'desc': '''Controls whether users are allowed to upload or download password protected files when scanning is required.  This restriction only applies to files that would need scanning as determined by <ph name="SEND_FILES_FOR_MALWARE_CHECK_POLICY_NAME">SendFilesForMalwareCheck</ph>, <ph name="CHECK_CONTENT_COMPLIANCE_POLICY_NAME">CheckContentCompliance</ph> and the policies that control the list of domains for which checks are enabled.
 
-      If this policy is not set or set to 'None', <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> blocks the user from upload or download password protected files.
+      If this policy is set to 'None', <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> blocks the user from upload or download password protected files.
 
       If this policy is set to 'Allow downloads', <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> allows the user to download password protected files.
 
       If this policy is set to 'Allow uploads', <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> allows the user to upload password protected files.
 
-      If this policy is set to 'Allow uploads and downloads', <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> behaves according to the rules described under 'Allow downloads' and 'Allow uploads'.
+      If this policy is not set or set to 'Allow uploads and downloads', <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> behaves according to the rules described under 'Allow downloads' and 'Allow uploads'.
       '''
     },
     {
diff --git a/components/safe_browsing/common/safe_browsing_prefs.cc b/components/safe_browsing/common/safe_browsing_prefs.cc
index e6342dcb..32e9d5e 100644
--- a/components/safe_browsing/common/safe_browsing_prefs.cc
+++ b/components/safe_browsing/common/safe_browsing_prefs.cc
@@ -106,8 +106,6 @@
     "safebrowsing.password_protection_warning_trigger";
 const char kAdvancedProtectionLastRefreshInUs[] =
     "safebrowsing.advanced_protection_last_refresh";
-const char kPasswordProtectedAllowed[] =
-    "safebrowsing.password_protected_allowed";
 const char kSafeBrowsingRealTimeLookupEnabled[] =
     "safebrowsing.real_time_lookup_enabled";
 const char kSafeBrowsingSendFilesForMalwareCheck[] =
@@ -187,7 +185,6 @@
   registry->RegisterIntegerPref(prefs::kPasswordProtectionWarningTrigger,
                                 PASSWORD_PROTECTION_OFF);
   registry->RegisterInt64Pref(prefs::kAdvancedProtectionLastRefreshInUs, 0);
-  registry->RegisterBooleanPref(prefs::kPasswordProtectedAllowed, true);
   registry->RegisterBooleanPref(prefs::kSafeBrowsingRealTimeLookupEnabled,
                                 false);
   registry->RegisterIntegerPref(prefs::kSafeBrowsingSendFilesForMalwareCheck,
@@ -199,7 +196,9 @@
   registry->RegisterBooleanPref(prefs::kUnsafeEventsReportingEnabled, false);
   registry->RegisterIntegerPref(prefs::kBlockLargeFileTransfer, 0);
   registry->RegisterIntegerPref(prefs::kDelayDeliveryUntilVerdict, 0);
-  registry->RegisterIntegerPref(prefs::kAllowPasswordProtectedFiles, 0);
+  registry->RegisterIntegerPref(
+      prefs::kAllowPasswordProtectedFiles,
+      AllowPasswordProtectedFilesValues::ALLOW_UPLOADS_AND_DOWNLOADS);
   registry->RegisterIntegerPref(prefs::kCheckContentCompliance, 0);
 }
 
diff --git a/components/safe_browsing/common/safe_browsing_prefs.h b/components/safe_browsing/common/safe_browsing_prefs.h
index 8d950e89..ec407798 100644
--- a/components/safe_browsing/common/safe_browsing_prefs.h
+++ b/components/safe_browsing/common/safe_browsing_prefs.h
@@ -81,9 +81,6 @@
 // microseconds);
 extern const char kAdvancedProtectionLastRefreshInUs[];
 
-// Whether or not to allow downloads of password-protected files.
-extern const char kPasswordProtectedAllowed[];
-
 // Whether or not to check URLs in real time. This is configured by enterprise
 // policy. For consumers, this pref is irrelevant.
 extern const char kSafeBrowsingRealTimeLookupEnabled[];
@@ -176,12 +173,21 @@
 // Enum representing possible values of the CheckContentCompliance policy. This
 // must be kept in sync with policy_templates.json
 enum CheckContentComplianceValues {
-  NONE = 0,
+  CHECK_NONE = 0,
   CHECK_DOWNLOADS = 1,
   CHECK_UPLOADS = 2,
   CHECK_UPLOADS_AND_DOWNLOADS = 3,
 };
 
+// Enum representing possible values of the AllowPasswordProtectedFiles policy.
+// This must be kept in sync with policy_templates.json
+enum AllowPasswordProtectedFilesValues {
+  ALLOW_NONE = 0,
+  ALLOW_DOWNLOADS = 1,
+  ALLOW_UPLOADS = 2,
+  ALLOW_UPLOADS_AND_DOWNLOADS = 3,
+};
+
 // Returns whether the currently active Safe Browsing Extended Reporting
 // preference exists (eg: has been set before).
 bool ExtendedReportingPrefExists(const PrefService& prefs);
diff --git a/components/safe_browsing/features.cc b/components/safe_browsing/features.cc
index 2d38d9e8..8405ba7 100644
--- a/components/safe_browsing/features.cc
+++ b/components/safe_browsing/features.cc
@@ -81,6 +81,9 @@
 const base::Feature kUploadForMalwareCheck{"SafeBrowsingUploadForMalwareCheck",
                                            base::FEATURE_DISABLED_BY_DEFAULT};
 
+const base::Feature kDeepScanningOfDownloads{
+    "SafeBrowsingDeepScanningOfDownloads", base::FEATURE_ENABLED_BY_DEFAULT};
+
 constexpr base::FeatureParam<bool> kShouldFillOldPhishGuardProto{
     &kPasswordProtectionForSignedInUsers, "DeprecateOldProto", false};
 
diff --git a/components/safe_browsing/features.h b/components/safe_browsing/features.h
index a773353..c6260e1 100644
--- a/components/safe_browsing/features.h
+++ b/components/safe_browsing/features.h
@@ -92,6 +92,11 @@
 // scanning.
 extern const base::Feature kUploadForMalwareCheck;
 
+// Controls whether to do deep scanning of downloads. If both this feature and
+// the enterprise policies are enabled, the downloaded file is sent for
+// scanning.
+extern const base::Feature kDeepScanningOfDownloads;
+
 base::ListValue GetFeatureStatusList();
 
 // Returns whether or not to stop filling in the SyncAccountType and
diff --git a/components/send_tab_to_self/OWNERS b/components/send_tab_to_self/OWNERS
index a49acc9..37c75ef 100644
--- a/components/send_tab_to_self/OWNERS
+++ b/components/send_tab_to_self/OWNERS
@@ -1,5 +1,6 @@
 hansberry@chromium.org
 jeffreycohen@chromium.org
+ramyan@chromium.org
 sebsg@chromium.org
 tgupta@chromium.org
 
diff --git a/components/test/data/payments/payment_handler.html b/components/test/data/payments/payment_handler.html
new file mode 100644
index 0000000..1f64d06
--- /dev/null
+++ b/components/test/data/payments/payment_handler.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<!--
+Copyright 2019 The Chromium Authors. All rights reserved.
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta
+      name="viewport"
+      content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1">
+    <title>Payment Handler Test</title>
+    <link rel="manifest" href="manifest.json">
+    <link rel="stylesheet" type="text/css" href="style.css">
+  </head>
+  <body>
+    <div>
+      <button onclick="install()" id="install">Install Payment handler</button>
+    </div>
+    <div>
+      <button onclick="launch()" id="testNoHandler">Launch Payment Handler</button>
+    </div>
+    <script src="payment_handler.js"></script>
+  </body>
+</html>
diff --git a/components/test/data/payments/payment_handler.js b/components/test/data/payments/payment_handler.js
new file mode 100644
index 0000000..f14b9b969
--- /dev/null
+++ b/components/test/data/payments/payment_handler.js
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2019 The Chromium Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+const methodName = window.location.origin + '/pay';
+const swSrcUrl = 'payment_handler_sw.js';
+
+/** Installs the payment handler. */
+async function install() { // eslint-disable-line no-unused-vars
+  try {
+    let registration =
+        await navigator.serviceWorker.getRegistration(swSrcUrl);
+    if (registration) {
+      return 'The payment handler is already installed.';
+    }
+
+    await navigator.serviceWorker.register(swSrcUrl);
+    registration = await navigator.serviceWorker.ready;
+    if (!registration.paymentManager) {
+      return 'PaymentManager API not found.';
+    }
+
+    await registration.paymentManager.instruments.set('instrument-id', {
+      name: 'Instrument Name',
+      method: methodName,
+    });
+    return 'success';
+  } catch (e) {
+    return e.toString();
+  }
+}
+
+/**
+ * Launches the payment handler.
+ */
+async function launch() { // eslint-disable-line no-unused-vars
+  try {
+    const request = new PaymentRequest([{supportedMethods: methodName}], {
+      total: {label: 'Total', amount: {currency: 'USD', value: '0.01'}},
+    });
+    const response = await request.show();
+    await response.complete('success');
+    return 'success';
+  } catch (e) {
+    return e.toString();
+  }
+}
diff --git a/components/test/data/payments/payment_handler_sw.js b/components/test/data/payments/payment_handler_sw.js
new file mode 100644
index 0000000..e4f9f77
--- /dev/null
+++ b/components/test/data/payments/payment_handler_sw.js
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2019 The Chromium Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+let method = null;
+let respond = null;
+
+self.addEventListener('canmakepayment', (evt) => {
+  evt.respondWith(true);
+});
+
+self.addEventListener('message', (evt) => {
+  respond({methodName: method, details: {status: 'success'}});
+});
+
+self.addEventListener('paymentrequest', (evt) => {
+  method = evt.methodData[0].supportedMethods;
+  evt.respondWith(new Promise((responder) => {
+    respond = responder;
+    evt.openWindow('payment_handler_window.html');
+  }));
+});
diff --git a/components/test/data/payments/payment_handler_window.html b/components/test/data/payments/payment_handler_window.html
new file mode 100644
index 0000000..25ac0e6d2
--- /dev/null
+++ b/components/test/data/payments/payment_handler_window.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<!--
+Copyright 2019 The Chromium Authors. All rights reserved.
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta
+      name="viewport"
+      content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1">
+    <title>Payment Handler Window</title>
+    <link rel="manifest" href="manifest.json">
+    <link rel="stylesheet" type="text/css" href="style.css">
+  </head>
+  <body>
+    This window will auto-close.
+    <script>
+      navigator.serviceWorker.controller.postMessage('confirm');
+    </script>
+  </body>
+</html>
diff --git a/components/user_manager/user.cc b/components/user_manager/user.cc
index 9ab431c0..2e6c2a7 100644
--- a/components/user_manager/user.cc
+++ b/components/user_manager/user.cc
@@ -263,8 +263,10 @@
 }
 
 void User::AddProfileCreatedObserver(base::OnceClosure on_profile_created) {
-  DCHECK(!profile_is_created_);
-  on_profile_created_observers_.push_back(std::move(on_profile_created));
+  if (profile_is_created_)
+    std::move(on_profile_created).Run();
+  else
+    on_profile_created_observers_.push_back(std::move(on_profile_created));
 }
 
 bool User::IsAffiliated() const {
diff --git a/components/user_manager/user_manager.cc b/components/user_manager/user_manager.cc
index d2b7a2c9..caa9a29 100644
--- a/components/user_manager/user_manager.cc
+++ b/components/user_manager/user_manager.cc
@@ -28,29 +28,23 @@
 void UserManager::Observer::OnUsersSignInConstraintsChanged() {}
 
 void UserManager::UserSessionStateObserver::ActiveUserChanged(
-    const User* active_user) {
-}
+    User* active_user) {}
 
 void UserManager::UserSessionStateObserver::UserAddedToSession(
-    const User* active_user) {
-}
+    const User* active_user) {}
 
 void UserManager::UserSessionStateObserver::ActiveUserHashChanged(
-    const std::string& hash) {
-}
+    const std::string& hash) {}
 
-UserManager::UserSessionStateObserver::~UserSessionStateObserver() {
-}
+UserManager::UserSessionStateObserver::~UserSessionStateObserver() {}
 
 UserManager::UserAccountData::UserAccountData(
     const base::string16& display_name,
     const base::string16& given_name,
     const std::string& locale)
-    : display_name_(display_name), given_name_(given_name), locale_(locale) {
-}
+    : display_name_(display_name), given_name_(given_name), locale_(locale) {}
 
-UserManager::UserAccountData::~UserAccountData() {
-}
+UserManager::UserAccountData::~UserAccountData() {}
 
 void UserManager::Initialize() {
   DCHECK(!UserManager::instance);
@@ -144,16 +138,4 @@
   return USER_TYPE_REGULAR;
 }
 
-ScopedUserSessionStateObserver::ScopedUserSessionStateObserver(
-    UserManager::UserSessionStateObserver* observer)
-    : observer_(observer) {
-  if (UserManager::IsInitialized())
-    UserManager::Get()->AddSessionStateObserver(observer_);
-}
-
-ScopedUserSessionStateObserver::~ScopedUserSessionStateObserver() {
-  if (UserManager::IsInitialized())
-    UserManager::Get()->RemoveSessionStateObserver(observer_);
-}
-
 }  // namespace user_manager
diff --git a/components/user_manager/user_manager.h b/components/user_manager/user_manager.h
index c2d817fc..0d892fa 100644
--- a/components/user_manager/user_manager.h
+++ b/components/user_manager/user_manager.h
@@ -66,7 +66,7 @@
   class UserSessionStateObserver {
    public:
     // Called when active user has changed.
-    virtual void ActiveUserChanged(const User* active_user);
+    virtual void ActiveUserChanged(User* active_user);
 
     // Called when another user got added to the existing session.
     virtual void UserAddedToSession(const User* added_user);
@@ -408,19 +408,6 @@
   static UserManager* SetForTesting(UserManager* user_manager);
 };
 
-// TODO(xiyuan): Move this along with UserSessionStateObserver
-class USER_MANAGER_EXPORT ScopedUserSessionStateObserver {
- public:
-  explicit ScopedUserSessionStateObserver(
-      UserManager::UserSessionStateObserver* observer);
-  ~ScopedUserSessionStateObserver();
-
- private:
-  UserManager::UserSessionStateObserver* const observer_;
-
-  DISALLOW_COPY_AND_ASSIGN(ScopedUserSessionStateObserver);
-};
-
 }  // namespace user_manager
 
 #endif  // COMPONENTS_USER_MANAGER_USER_MANAGER_H_
diff --git a/components/user_manager/user_manager_base.cc b/components/user_manager/user_manager_base.cc
index 21e7da4..ec0a254 100644
--- a/components/user_manager/user_manager_base.cc
+++ b/components/user_manager/user_manager_base.cc
@@ -940,7 +940,7 @@
   known_user::SetIsEphemeralUser(active_user_->GetAccountId(), true);
 }
 
-void UserManagerBase::NotifyActiveUserChanged(const User* active_user) {
+void UserManagerBase::NotifyActiveUserChanged(User* active_user) {
   DCHECK(!task_runner_ || task_runner_->RunsTasksInCurrentSequence());
   for (auto& observer : session_state_observer_list_)
     observer.ActiveUserChanged(active_user);
diff --git a/components/user_manager/user_manager_base.h b/components/user_manager/user_manager_base.h
index 8f36625..a4f2d8e58 100644
--- a/components/user_manager/user_manager_base.h
+++ b/components/user_manager/user_manager_base.h
@@ -168,7 +168,7 @@
       std::set<AccountId>* device_local_accounts_set) = 0;
 
   // Notifies observers that active user has changed.
-  void NotifyActiveUserChanged(const User* active_user);
+  void NotifyActiveUserChanged(User* active_user);
 
   // Notifies that user has logged in.
   virtual void NotifyOnLogin();
diff --git a/components/viz/demo/demo_main.cc b/components/viz/demo/demo_main.cc
index f5785dc..efe75036 100644
--- a/components/viz/demo/demo_main.cc
+++ b/components/viz/demo/demo_main.cc
@@ -119,7 +119,7 @@
 #elif defined(OS_WIN)
     return std::make_unique<ui::WinWindow>(this, props.bounds);
 #elif defined(USE_X11)
-    auto x11_window = std::make_unique<ui::X11Window>(this, nullptr);
+    auto x11_window = std::make_unique<ui::X11Window>(this);
     x11_window->Initialize(std::move(props));
     return x11_window;
 #else
diff --git a/components/viz/service/display_embedder/image_context_impl.cc b/components/viz/service/display_embedder/image_context_impl.cc
index 49fd177..629121b0 100644
--- a/components/viz/service/display_embedder/image_context_impl.cc
+++ b/components/viz/service/display_embedder/image_context_impl.cc
@@ -68,7 +68,6 @@
     gpu::SharedContextState* context_state,
     gpu::SharedImageRepresentationFactory* representation_factory,
     gpu::MailboxManager* mailbox_manager,
-    const gl::GLVersionInfo* gl_version_info,
     std::vector<GrBackendSemaphore>* begin_semaphores,
     std::vector<GrBackendSemaphore>* end_semaphores) {
   // Prepare for accessing shared image.
@@ -161,9 +160,9 @@
   }
 
   GrBackendTexture backend_texture;
-  gpu::GetGrBackendTexture(gl_version_info, texture_base->target(), size(),
-                           texture_base->service_id(), resource_format(),
-                           &backend_texture);
+  gpu::GetGrBackendTexture(
+      context_state->feature_info(), texture_base->target(), size(),
+      texture_base->service_id(), resource_format(), &backend_texture);
   if (!backend_texture.isValid()) {
     DLOG(ERROR) << "Failed to fulfill the promise texture.";
     CreateFallbackImage(context_state);
diff --git a/components/viz/service/display_embedder/image_context_impl.h b/components/viz/service/display_embedder/image_context_impl.h
index 0909a648..e56c198 100644
--- a/components/viz/service/display_embedder/image_context_impl.h
+++ b/components/viz/service/display_embedder/image_context_impl.h
@@ -25,10 +25,6 @@
 class SkColorSpace;
 class SkPromiseImageTexture;
 
-namespace gl {
-struct GLVersionInfo;
-}
-
 namespace gpu {
 class MailboxManager;
 class SharedContextState;
@@ -77,7 +73,6 @@
       gpu::SharedContextState* context_state,
       gpu::SharedImageRepresentationFactory* representation_factory,
       gpu::MailboxManager* mailbox_manager,
-      const gl::GLVersionInfo* gl_version_info,
       std::vector<GrBackendSemaphore>* begin_semaphores,
       std::vector<GrBackendSemaphore>* end_semaphores);
   void EndAccessIfNecessary();
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl.cc b/components/viz/service/display_embedder/skia_output_surface_impl.cc
index 906c2cb1..ff4d6adb 100644
--- a/components/viz/service/display_embedder/skia_output_surface_impl.cc
+++ b/components/viz/service/display_embedder/skia_output_surface_impl.cc
@@ -26,6 +26,7 @@
 #include "gpu/command_buffer/common/swap_buffers_complete_params.h"
 #include "gpu/command_buffer/service/scheduler.h"
 #include "gpu/command_buffer/service/shared_image_representation.h"
+#include "gpu/command_buffer/service/skia_utils.h"
 #include "gpu/ipc/single_task_sequence.h"
 #include "gpu/vulkan/buildflags.h"
 #include "ui/gfx/skia_util.h"
@@ -638,11 +639,10 @@
   if (!is_using_vulkan_) {
     DCHECK(!ycbcr_info);
     // Convert internal format from GLES2 to platform GL.
-    const auto* version_info = impl_on_gpu_->gl_version_info();
-    unsigned int texture_storage_format = TextureStorageFormat(resource_format);
-    return GrBackendFormat::MakeGL(
-        gl::GetInternalFormat(version_info, texture_storage_format),
-        gl_texture_target);
+    unsigned int texture_storage_format = gpu::GetGrGLBackendTextureFormat(
+        impl_on_gpu_->GetFeatureInfo(), resource_format);
+
+    return GrBackendFormat::MakeGL(texture_storage_format, gl_texture_target);
   } else {
 #if BUILDFLAG(ENABLE_VULKAN)
     if (!ycbcr_info)
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 27ca8d6..9ca960a 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
@@ -234,12 +234,6 @@
 
 base::AtomicSequenceNumber g_next_command_buffer_id;
 
-scoped_refptr<gpu::gles2::FeatureInfo> CreateFeatureInfo(
-    SkiaOutputSurfaceDependency* deps) {
-  return base::MakeRefCounted<gpu::gles2::FeatureInfo>(
-      deps->GetGpuDriverBugWorkarounds(), deps->GetGpuFeatureInfo());
-}
-
 scoped_refptr<gpu::SyncPointClientState> CreateSyncPointClientState(
     SkiaOutputSurfaceDependency* deps,
     gpu::SequenceId sequence_id) {
@@ -613,7 +607,7 @@
     const BufferPresentedCallback& buffer_presented_callback,
     const ContextLostCallback& context_lost_callback)
     : dependency_(std::move(deps)),
-      feature_info_(CreateFeatureInfo(dependency_)),
+      feature_info_(dependency_->GetSharedContextState()->feature_info()),
       sync_point_client_state_(
           CreateSyncPointClientState(dependency_, sequence_id)),
       shared_image_representation_factory_(
@@ -1140,8 +1134,7 @@
     } else {
       context->BeginAccessIfNecessary(
           context_state_.get(), shared_image_representation_factory_.get(),
-          dependency_->GetMailboxManager(), gl_version_info_, begin_semaphores,
-          end_semaphores);
+          dependency_->GetMailboxManager(), begin_semaphores, end_semaphores);
     }
   }
 }
diff --git a/content/OWNERS b/content/OWNERS
index f0f46588..9e035c8c 100644
--- a/content/OWNERS
+++ b/content/OWNERS
@@ -17,6 +17,7 @@
 
 # For threading (BrowserThread, BrowserMainLoop, ThreadPool, etc.)
 per-file *browser_main_loop*=gab@chromium.org
+per-file *browser_task_environment*=gab@chromium.org
 per-file *browser_thread*=gab@chromium.org
 
 # Mac Sandbox profiles.
diff --git a/content/app/strings/content_strings.grd b/content/app/strings/content_strings.grd
index 47303ea..38b452eb 100644
--- a/content/app/strings/content_strings.grd
+++ b/content/app/strings/content_strings.grd
@@ -273,7 +273,7 @@
         checkbox
       </message>
       <message name="IDS_AX_ROLE_CONTENT_INFO" desc="Accessibility role description for credits and information about the content of the page, like copyrights and privacy statements">
-        content info
+        content information
       </message>
       <message name="IDS_AX_ROLE_DATE" desc="Accessibility role description for a date input">
         date picker
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
index 18f6564..f10e1a8 100644
--- a/content/browser/BUILD.gn
+++ b/content/browser/BUILD.gn
@@ -812,16 +812,12 @@
     "download/drag_download_file.h",
     "download/drag_download_util.cc",
     "download/drag_download_util.h",
-    "download/file_download_url_loader_factory_getter.cc",
-    "download/file_download_url_loader_factory_getter.h",
-    "download/file_system_download_url_loader_factory_getter.cc",
-    "download/file_system_download_url_loader_factory_getter.h",
     "download/mhtml_extra_parts_impl.cc",
     "download/mhtml_extra_parts_impl.h",
     "download/mhtml_generation_manager.cc",
     "download/mhtml_generation_manager.h",
-    "download/network_download_url_loader_factory_getter.cc",
-    "download/network_download_url_loader_factory_getter.h",
+    "download/network_download_url_loader_factory_info.cc",
+    "download/network_download_url_loader_factory_info.h",
     "download/save_file.cc",
     "download/save_file.h",
     "download/save_file_manager.cc",
@@ -832,8 +828,6 @@
     "download/save_package.h",
     "download/save_types.cc",
     "download/save_types.h",
-    "download/web_ui_download_url_loader_factory_getter.cc",
-    "download/web_ui_download_url_loader_factory_getter.h",
     "field_trial_recorder.cc",
     "field_trial_recorder.h",
     "file_url_loader_factory.cc",
diff --git a/content/browser/accessibility/browser_accessibility.cc b/content/browser/accessibility/browser_accessibility.cc
index a0829c02..03a00a2c 100644
--- a/content/browser/accessibility/browser_accessibility.cc
+++ b/content/browser/accessibility/browser_accessibility.cc
@@ -1860,6 +1860,9 @@
     case ax::mojom::Role::kColorWell:
       return content_client->GetLocalizedString(IDS_AX_ROLE_COLOR_WELL);
 
+    case ax::mojom::Role::kContentInfo:
+      return content_client->GetLocalizedString(IDS_AX_ROLE_CONTENT_INFO);
+
     case ax::mojom::Role::kDate:
       return content_client->GetLocalizedString(IDS_AX_ROLE_DATE);
 
diff --git a/content/browser/accessibility/cross_platform_accessibility_browsertest.cc b/content/browser/accessibility/cross_platform_accessibility_browsertest.cc
index 48af764..6333e21 100644
--- a/content/browser/accessibility/cross_platform_accessibility_browsertest.cc
+++ b/content/browser/accessibility/cross_platform_accessibility_browsertest.cc
@@ -676,7 +676,7 @@
   TestLocalizedLandmarkType(1, ax::mojom::Role::kComplementary, "aside",
                             base::ASCIIToUTF16("complementary"));
   TestLocalizedLandmarkType(2, ax::mojom::Role::kFooter, "footer",
-                            base::ASCIIToUTF16("content info"));
+                            base::ASCIIToUTF16("content information"));
   TestLocalizedLandmarkType(3, ax::mojom::Role::kForm, "form");
   TestLocalizedLandmarkType(4, ax::mojom::Role::kMain, "main");
   TestLocalizedLandmarkType(5, ax::mojom::Role::kNavigation, "nav");
@@ -689,7 +689,7 @@
   TestLocalizedLandmarkType(9, ax::mojom::Role::kComplementary, "complementary",
                             base::ASCIIToUTF16("complementary"));
   TestLocalizedLandmarkType(10, ax::mojom::Role::kContentInfo, "contentinfo",
-                            base::ASCIIToUTF16("content info"));
+                            base::ASCIIToUTF16("content information"));
   TestLocalizedLandmarkType(11, ax::mojom::Role::kForm, "role_form");
   TestLocalizedLandmarkType(12, ax::mojom::Role::kMain, "role_main");
   TestLocalizedLandmarkType(13, ax::mojom::Role::kNavigation, "role_nav");
@@ -720,14 +720,15 @@
       "<input type='week'>"
       "<meter></meter>"
       "<output></output>"
-      "<time></time>");
+      "<time></time>"
+      "<div role='contentinfo' aria-label='contentinfo'></div>");
 
   NavigateToURL(shell(), url);
   waiter.WaitForNotification();
 
   BrowserAccessibility* root = GetManager()->GetRoot();
   ASSERT_NE(nullptr, root);
-  ASSERT_EQ(15u, root->PlatformChildCount());
+  ASSERT_EQ(16u, root->PlatformChildCount());
 
   auto TestLocalizedRoleDescription =
       [root](int child_index,
@@ -756,6 +757,7 @@
   TestLocalizedRoleDescription(12, base::ASCIIToUTF16("meter"));
   TestLocalizedRoleDescription(13, base::ASCIIToUTF16("output"));
   TestLocalizedRoleDescription(14, base::ASCIIToUTF16("time"));
+  TestLocalizedRoleDescription(15, base::ASCIIToUTF16("content information"));
 }
 
 IN_PROC_BROWSER_TEST_F(CrossPlatformAccessibilityBrowserTest,
diff --git a/content/browser/background_fetch/background_fetch_service_impl.cc b/content/browser/background_fetch/background_fetch_service_impl.cc
index 08ff86f..fac7450 100644
--- a/content/browser/background_fetch/background_fetch_service_impl.cc
+++ b/content/browser/background_fetch/background_fetch_service_impl.cc
@@ -17,6 +17,7 @@
 #include "content/browser/background_fetch/background_fetch_registration_notifier.h"
 #include "content/browser/background_fetch/background_fetch_request_match_params.h"
 #include "content/browser/bad_message.h"
+#include "content/browser/service_worker/service_worker_info.h"
 #include "content/browser/storage_partition_impl.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
@@ -34,7 +35,7 @@
 
 // static
 void BackgroundFetchServiceImpl::CreateForWorker(
-    const ServiceWorkerRunningInfo& info,
+    const ServiceWorkerVersionInfo& info,
     mojo::PendingReceiver<blink::mojom::BackgroundFetchService> receiver) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   RenderProcessHost* render_process_host =
@@ -50,7 +51,7 @@
           WrapRefCounted(static_cast<StoragePartitionImpl*>(
                              render_process_host->GetStoragePartition())
                              ->GetBackgroundFetchContext()),
-          url::Origin::Create(info.script_url),
+          info.script_origin,
           /* render_frame_tree_node_id= */ 0,
           /* wc_getter= */ base::NullCallback(), std::move(receiver)));
 }
diff --git a/content/browser/background_fetch/background_fetch_service_impl.h b/content/browser/background_fetch/background_fetch_service_impl.h
index c8727609..eb77999 100644
--- a/content/browser/background_fetch/background_fetch_service_impl.h
+++ b/content/browser/background_fetch/background_fetch_service_impl.h
@@ -19,7 +19,7 @@
 
 namespace content {
 
-class BackgroundFetchContext;
+struct ServiceWorkerVersionInfo;
 
 class CONTENT_EXPORT BackgroundFetchServiceImpl
     : public blink::mojom::BackgroundFetchService {
@@ -32,7 +32,7 @@
   ~BackgroundFetchServiceImpl() override;
 
   static void CreateForWorker(
-      const ServiceWorkerRunningInfo& info,
+      const ServiceWorkerVersionInfo& info,
       mojo::PendingReceiver<blink::mojom::BackgroundFetchService> receiver);
 
   static void CreateForFrame(
diff --git a/content/browser/browser_interface_binders.cc b/content/browser/browser_interface_binders.cc
index e82fb86..f9d3d6f5 100644
--- a/content/browser/browser_interface_binders.cc
+++ b/content/browser/browser_interface_binders.cc
@@ -115,12 +115,10 @@
 }
 
 // Service workers
-ServiceWorkerRunningInfo GetContextForHost(ServiceWorkerProviderHost* host) {
+ServiceWorkerVersionInfo GetContextForHost(ServiceWorkerProviderHost* host) {
   DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
 
-  // TODO(crbug.com/993409): pass Origin instead of GURL
-  return {host->running_hosted_version()->script_origin().GetURL(),
-          host->running_hosted_version()->version_id(), host->process_id()};
+  return host->running_hosted_version()->GetInfo();
 }
 
 void PopulateServiceWorkerBinders(ServiceWorkerProviderHost* host,
@@ -132,7 +130,7 @@
 
 void PopulateBinderMapWithContext(
     ServiceWorkerProviderHost* host,
-    service_manager::BinderMapWithContext<const ServiceWorkerRunningInfo&>*
+    service_manager::BinderMapWithContext<const ServiceWorkerVersionInfo&>*
         map) {
   DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
 
diff --git a/content/browser/browser_interface_binders.h b/content/browser/browser_interface_binders.h
index 4715337..b67c392 100644
--- a/content/browser/browser_interface_binders.h
+++ b/content/browser/browser_interface_binders.h
@@ -5,7 +5,7 @@
 #ifndef CONTENT_BROWSER_BROWSER_INTERFACE_BINDERS_H_
 #define CONTENT_BROWSER_BROWSER_INTERFACE_BINDERS_H_
 
-#include "content/public/browser/service_worker_running_info.h"
+#include "content/browser/service_worker/service_worker_info.h"
 #include "services/service_manager/public/cpp/binder_map.h"
 #include "url/origin.h"
 
@@ -56,9 +56,9 @@
                        service_manager::BinderMap* map);
 void PopulateBinderMapWithContext(
     ServiceWorkerProviderHost* host,
-    service_manager::BinderMapWithContext<const ServiceWorkerRunningInfo&>*
+    service_manager::BinderMapWithContext<const ServiceWorkerVersionInfo&>*
         map);
-ServiceWorkerRunningInfo GetContextForHost(ServiceWorkerProviderHost* host);
+ServiceWorkerVersionInfo GetContextForHost(ServiceWorkerProviderHost* host);
 
 }  // namespace internal
 }  // namespace content
diff --git a/content/browser/download/download_manager_impl.cc b/content/browser/download/download_manager_impl.cc
index d9c91baf..2ac05f67 100644
--- a/content/browser/download/download_manager_impl.cc
+++ b/content/browser/download/download_manager_impl.cc
@@ -31,8 +31,6 @@
 #include "components/download/public/common/download_item_impl.h"
 #include "components/download/public/common/download_stats.h"
 #include "components/download/public/common/download_task_runner.h"
-#include "components/download/public/common/download_url_loader_factory_getter.h"
-#include "components/download/public/common/download_url_loader_factory_getter_impl.h"
 #include "components/download/public/common/download_url_parameters.h"
 #include "components/download/public/common/download_utils.h"
 #include "components/download/public/common/input_stream.h"
@@ -41,10 +39,9 @@
 #include "content/browser/child_process_security_policy_impl.h"
 #include "content/browser/data_url_loader_factory.h"
 #include "content/browser/devtools/devtools_instrumentation.h"
-#include "content/browser/download/file_download_url_loader_factory_getter.h"
-#include "content/browser/download/file_system_download_url_loader_factory_getter.h"
-#include "content/browser/download/network_download_url_loader_factory_getter.h"
-#include "content/browser/download/web_ui_download_url_loader_factory_getter.h"
+#include "content/browser/download/network_download_url_loader_factory_info.h"
+#include "content/browser/file_url_loader_factory.h"
+#include "content/browser/fileapi/file_system_url_loader_factory.h"
 #include "content/browser/renderer_host/render_view_host_impl.h"
 #include "content/browser/storage_partition_impl.h"
 #include "content/browser/web_contents/web_contents_impl.h"
@@ -60,8 +57,10 @@
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/render_process_host.h"
 #include "content/public/browser/resource_context.h"
+#include "content/public/browser/shared_cors_origin_access_list.h"
 #include "content/public/browser/system_connector.h"
 #include "content/public/browser/web_contents_delegate.h"
+#include "content/public/browser/web_ui_url_loader_factory.h"
 #include "content/public/common/origin_util.h"
 #include "content/public/common/previews_state.h"
 #include "content/public/common/referrer.h"
@@ -73,6 +72,7 @@
 #include "net/base/upload_bytes_element_reader.h"
 #include "services/metrics/public/cpp/ukm_source_id.h"
 #include "services/network/public/cpp/features.h"
+#include "services/network/public/cpp/shared_url_loader_factory.h"
 #include "services/network/public/cpp/wrapper_shared_url_loader_factory.h"
 #include "services/service_manager/public/cpp/connector.h"
 
@@ -135,9 +135,9 @@
   failed_created_info->result = reason;
   base::PostTask(
       FROM_HERE, {BrowserThread::UI},
-      base::BindOnce(&DownloadManager::StartDownload, download_manager,
+      base::BindOnce(&DownloadManagerImpl::StartDownload, download_manager,
                      std::move(failed_created_info),
-                     std::make_unique<download::InputStream>(), nullptr,
+                     std::make_unique<download::InputStream>(),
                      params->callback()));
 }
 
@@ -219,10 +219,10 @@
 }
 #endif
 
-scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-CreateDownloadURLLoaderFactoryGetter(StoragePartitionImpl* storage_partition,
-                                     RenderFrameHost* rfh,
-                                     bool is_download) {
+std::unique_ptr<network::SharedURLLoaderFactoryInfo>
+CreateSharedURLLoaderFactoryInfo(StoragePartitionImpl* storage_partition,
+                                 RenderFrameHost* rfh,
+                                 bool is_download) {
   // TODO(crbug.com/955171): Replace these with PendingRemote and
   // PendingReceiver.
   network::mojom::URLLoaderFactoryPtrInfo proxy_factory_ptr_info;
@@ -251,31 +251,28 @@
         nullptr /* bypass_redirect_checks */);
 
     // If anyone above indicated that they care about proxying, pass the
-    // intermediate pipe along to the NetworkDownloadURLLoaderFactoryGetter.
+    // intermediate pipe along to the NetworkDownloadURLLoaderFactoryInfo.
     if (should_proxy) {
       proxy_factory_ptr_info = std::move(maybe_proxy_factory_ptr_info);
       proxy_factory_request = std::move(maybe_proxy_factory_receiver);
     }
   }
 
-  return base::MakeRefCounted<NetworkDownloadURLLoaderFactoryGetter>(
+  return std::make_unique<NetworkDownloadURLLoaderFactoryInfo>(
       storage_partition->url_loader_factory_getter(),
       std::move(proxy_factory_ptr_info), std::move(proxy_factory_request));
 }
 
-scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-CreateDownloadURLLoaderFactoryGetterFromURLLoaderFactory(
+std::unique_ptr<network::SharedURLLoaderFactoryInfo>
+CreateSharedURLLoaderFactoryInfoFromURLLoaderFactory(
     std::unique_ptr<network::mojom::URLLoaderFactory> factory) {
   network::mojom::URLLoaderFactoryPtr factory_ptr;
   mojo::MakeStrongBinding(std::move(factory), mojo::MakeRequest(&factory_ptr));
   network::mojom::URLLoaderFactoryPtrInfo factory_ptr_info =
       factory_ptr.PassInterface();
 
-  auto wrapper_factory =
-      std::make_unique<network::WrapperSharedURLLoaderFactoryInfo>(
-          std::move(factory_ptr_info));
-  return base::MakeRefCounted<download::DownloadURLLoaderFactoryGetterImpl>(
-      std::move(wrapper_factory));
+  return std::make_unique<network::WrapperSharedURLLoaderFactoryInfo>(
+      std::move(factory_ptr_info));
 }
 
 }  // namespace
@@ -631,13 +628,11 @@
 void DownloadManagerImpl::StartDownload(
     std::unique_ptr<download::DownloadCreateInfo> info,
     std::unique_ptr<download::InputStream> stream,
-    scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-        url_loader_factory_getter,
     const download::DownloadUrlParameters::OnStartedCallback& on_started) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   DCHECK(info);
   in_progress_manager_->StartDownload(std::move(info), std::move(stream),
-                                      std::move(url_loader_factory_getter),
+                                      nullptr /* url_loader_factory_provider */,
                                       base::DoNothing(), on_started);
 }
 
@@ -1182,8 +1177,8 @@
       tab_url, tab_referrer_url, std::move(url_chain), std::move(cert_status),
       std::move(response_head), std::move(response_body),
       std::move(url_loader_client_endpoints),
-      CreateDownloadURLLoaderFactoryGetter(storage_partition, render_frame_host,
-                                           false));
+      CreateSharedURLLoaderFactoryInfo(storage_partition, render_frame_host,
+                                       false));
 }
 
 void DownloadManagerImpl::BeginResourceDownloadOnChecksComplete(
@@ -1210,22 +1205,28 @@
   }
 
   DCHECK_EQ(params->url().SchemeIsBlob(), bool{blob_url_loader_factory});
-  scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-      url_loader_factory_getter;
+  std::unique_ptr<network::SharedURLLoaderFactoryInfo> url_loader_factory_info;
   if (blob_url_loader_factory) {
     DCHECK(params->url().SchemeIsBlob());
-    url_loader_factory_getter =
-        base::MakeRefCounted<download::DownloadURLLoaderFactoryGetterImpl>(
-            blob_url_loader_factory->Clone());
+    url_loader_factory_info = blob_url_loader_factory->Clone();
   } else if (params->url().SchemeIsFile()) {
-    url_loader_factory_getter =
-        base::MakeRefCounted<FileDownloadURLLoaderFactoryGetter>(
-            params->url(), browser_context_->GetPath(),
-            browser_context_->GetSharedCorsOriginAccessList());
+    url_loader_factory_info =
+        CreateSharedURLLoaderFactoryInfoFromURLLoaderFactory(
+            std::make_unique<FileURLLoaderFactory>(
+                browser_context_->GetPath(),
+                browser_context_->GetSharedCorsOriginAccessList(),
+                // USER_VISIBLE because download should progress
+                // even when there is high priority work to do.
+                base::TaskPriority::USER_VISIBLE));
   } else if (rfh && params->url().SchemeIs(content::kChromeUIScheme)) {
-    url_loader_factory_getter =
-        base::MakeRefCounted<WebUIDownloadURLLoaderFactoryGetter>(
-            rfh, params->url());
+    network::mojom::URLLoaderFactoryPtrInfo url_loader_factory_ptr_info;
+    mojo::MakeStrongBinding(CreateWebUIURLLoader(rfh, params->url().scheme(),
+                                                 base::flat_set<std::string>()),
+                            MakeRequest(&url_loader_factory_ptr_info));
+    url_loader_factory_info =
+        CreateSharedURLLoaderFactoryInfoFromURLLoaderFactory(
+            CreateWebUIURLLoader(rfh, params->url().scheme(),
+                                 base::flat_set<std::string>()));
   } else if (rfh && params->url().SchemeIsFileSystem()) {
     StoragePartitionImpl* storage_partition =
         static_cast<StoragePartitionImpl*>(
@@ -1240,13 +1241,14 @@
           browser_context_, site_url, true, &storage_domain, &partition_name,
           &in_memory);
     }
-    url_loader_factory_getter =
-        base::MakeRefCounted<FileSystemDownloadURLLoaderFactoryGetter>(
-            params->url(), rfh, storage_partition->GetFileSystemContext(),
-            storage_domain);
+    url_loader_factory_info =
+        CreateSharedURLLoaderFactoryInfoFromURLLoaderFactory(
+            CreateFileSystemURLLoaderFactory(
+                rfh->GetProcess()->GetID(), rfh->GetFrameTreeNodeId(),
+                storage_partition->GetFileSystemContext(), storage_domain));
   } else if (params->url().SchemeIs(url::kDataScheme)) {
-    url_loader_factory_getter =
-        CreateDownloadURLLoaderFactoryGetterFromURLLoaderFactory(
+    url_loader_factory_info =
+        CreateSharedURLLoaderFactoryInfoFromURLLoaderFactory(
             std::make_unique<DataURLLoaderFactory>(params->url()));
   } else if (rfh && !IsURLHandledByNetworkService(params->url())) {
     ContentBrowserClient::NonNetworkURLLoaderFactoryMap
@@ -1262,8 +1264,8 @@
       DLOG(ERROR) << "No URLLoaderFactory found to download " << params->url();
       return;
     } else {
-      url_loader_factory_getter =
-          CreateDownloadURLLoaderFactoryGetterFromURLLoaderFactory(
+      url_loader_factory_info =
+          CreateSharedURLLoaderFactoryInfoFromURLLoaderFactory(
               std::move(it->second));
     }
   } else {
@@ -1271,12 +1273,12 @@
         static_cast<StoragePartitionImpl*>(
             BrowserContext::GetStoragePartitionForSite(browser_context_,
                                                        site_url));
-    url_loader_factory_getter =
-        CreateDownloadURLLoaderFactoryGetter(storage_partition, rfh, true);
+    url_loader_factory_info =
+        CreateSharedURLLoaderFactoryInfo(storage_partition, rfh, true);
   }
 
   in_progress_manager_->BeginDownload(
-      std::move(params), std::move(url_loader_factory_getter), is_new_download,
+      std::move(params), std::move(url_loader_factory_info), is_new_download,
       site_url, tab_url, tab_referrer_url);
 }
 
diff --git a/content/browser/download/download_manager_impl.h b/content/browser/download/download_manager_impl.h
index b799e36..248f04f 100644
--- a/content/browser/download/download_manager_impl.h
+++ b/content/browser/download/download_manager_impl.h
@@ -80,12 +80,6 @@
       download::SimpleDownloadManager::DownloadVector* result) override;
   void GetUninitializedActiveDownloadsIfAny(
       download::SimpleDownloadManager::DownloadVector* result) override;
-  void StartDownload(std::unique_ptr<download::DownloadCreateInfo> info,
-                     std::unique_ptr<download::InputStream> stream,
-                     scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-                         url_loader_factory_getter,
-                     const download::DownloadUrlParameters::OnStartedCallback&
-                         on_started) override;
   int RemoveDownloadsByURLAndTime(
       const base::Callback<bool(const GURL&)>& url_filter,
       base::Time remove_begin,
@@ -139,6 +133,11 @@
   download::DownloadItem* GetDownloadByGuid(const std::string& guid) override;
   void GetNextId(GetNextIdCallback callback) override;
 
+  void StartDownload(
+      std::unique_ptr<download::DownloadCreateInfo> info,
+      std::unique_ptr<download::InputStream> stream,
+      const download::DownloadUrlParameters::OnStartedCallback& on_started);
+
   // For testing; specifically, accessed from TestFileErrorInjector.
   void SetDownloadItemFactoryForTesting(
       std::unique_ptr<download::DownloadItemFactory> item_factory);
diff --git a/content/browser/download/download_manager_impl_unittest.cc b/content/browser/download/download_manager_impl_unittest.cc
index fc45f52..b32bf929 100644
--- a/content/browser/download/download_manager_impl_unittest.cc
+++ b/content/browser/download/download_manager_impl_unittest.cc
@@ -588,7 +588,7 @@
 
   mock_download_item_factory_->set_is_download_persistent(true);
   download_manager_->StartDownload(
-      std::move(info), std::move(input_stream), nullptr,
+      std::move(info), std::move(input_stream),
       download::DownloadUrlParameters::OnStartedCallback());
   EXPECT_TRUE(download_manager_->GetDownload(local_id));
 }
@@ -623,7 +623,7 @@
       .WillOnce(Return(mock_file));
 
   download_manager_->StartDownload(
-      std::move(info), std::move(input_stream), nullptr,
+      std::move(info), std::move(input_stream),
       download::DownloadUrlParameters::OnStartedCallback());
   EXPECT_TRUE(download_manager_->GetDownload(1));
 }
diff --git a/content/browser/download/file_download_url_loader_factory_getter.cc b/content/browser/download/file_download_url_loader_factory_getter.cc
deleted file mode 100644
index 18fe41f..0000000
--- a/content/browser/download/file_download_url_loader_factory_getter.cc
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2018 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 "content/browser/download/file_download_url_loader_factory_getter.h"
-
-#include "base/task/post_task.h"
-#include "base/task/task_traits.h"
-#include "components/download/public/common/download_task_runner.h"
-#include "content/browser/file_url_loader_factory.h"
-#include "content/browser/url_loader_factory_getter.h"
-#include "mojo/public/cpp/bindings/strong_binding.h"
-#include "services/network/public/cpp/wrapper_shared_url_loader_factory.h"
-#include "services/network/public/mojom/url_loader_factory.mojom.h"
-
-namespace content {
-
-FileDownloadURLLoaderFactoryGetter::FileDownloadURLLoaderFactoryGetter(
-    const GURL& url,
-    const base::FilePath& profile_path,
-    scoped_refptr<SharedCorsOriginAccessList> shared_cors_origin_access_list)
-    : url_(url),
-      profile_path_(profile_path),
-      shared_cors_origin_access_list_(
-          std::move(shared_cors_origin_access_list)) {
-  DCHECK(url.SchemeIs(url::kFileScheme));
-}
-
-FileDownloadURLLoaderFactoryGetter::~FileDownloadURLLoaderFactoryGetter() =
-    default;
-
-scoped_refptr<network::SharedURLLoaderFactory>
-FileDownloadURLLoaderFactoryGetter::GetURLLoaderFactory() {
-  DCHECK(download::GetIOTaskRunner()->BelongsToCurrentThread());
-
-  network::mojom::URLLoaderFactoryPtrInfo url_loader_factory_ptr_info;
-  mojo::MakeStrongBinding(std::make_unique<FileURLLoaderFactory>(
-                              profile_path_, shared_cors_origin_access_list_,
-                              // USER_VISIBLE because download should progress
-                              // even when there is high priority work to do.
-                              base::TaskPriority::USER_VISIBLE),
-                          MakeRequest(&url_loader_factory_ptr_info));
-
-  return base::MakeRefCounted<network::WrapperSharedURLLoaderFactory>(
-      std::move(url_loader_factory_ptr_info));
-}
-
-}  // namespace content
diff --git a/content/browser/download/file_download_url_loader_factory_getter.h b/content/browser/download/file_download_url_loader_factory_getter.h
deleted file mode 100644
index 779b9f4..0000000
--- a/content/browser/download/file_download_url_loader_factory_getter.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2018 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 CONTENT_BROWSER_DOWNLOAD_FILE_DOWNLOAD_URL_LOADER_FACTORY_GETTER_H_
-#define CONTENT_BROWSER_DOWNLOAD_FILE_DOWNLOAD_URL_LOADER_FACTORY_GETTER_H_
-
-#include "base/files/file_path.h"
-#include "base/memory/scoped_refptr.h"
-#include "components/download/public/common/download_url_loader_factory_getter.h"
-#include "content/public/browser/shared_cors_origin_access_list.h"
-#include "url/gurl.h"
-
-namespace content {
-
-// Class for retrieving the URLLoaderFactory for a file URL.
-class FileDownloadURLLoaderFactoryGetter
-    : public download::DownloadURLLoaderFactoryGetter {
- public:
-  FileDownloadURLLoaderFactoryGetter(
-      const GURL& url,
-      const base::FilePath& profile_path,
-      scoped_refptr<SharedCorsOriginAccessList> shared_cors_origin_access_list);
-
-  // download::DownloadURLLoaderFactoryGetter implementation.
-  scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override;
-
- protected:
-  ~FileDownloadURLLoaderFactoryGetter() override;
-
- private:
-  GURL url_;
-  base::FilePath profile_path_;
-  const scoped_refptr<SharedCorsOriginAccessList>
-      shared_cors_origin_access_list_;
-
-  DISALLOW_COPY_AND_ASSIGN(FileDownloadURLLoaderFactoryGetter);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_BROWSER_DOWNLOAD_FILE_DOWNLOAD_URL_LOADER_FACTORY_GETTER_H_
diff --git a/content/browser/download/file_system_download_url_loader_factory_getter.cc b/content/browser/download/file_system_download_url_loader_factory_getter.cc
deleted file mode 100644
index 13da85d0..0000000
--- a/content/browser/download/file_system_download_url_loader_factory_getter.cc
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2018 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 "content/browser/download/file_system_download_url_loader_factory_getter.h"
-
-#include "base/task/post_task.h"
-#include "base/task/task_traits.h"
-#include "components/download/public/common/download_task_runner.h"
-#include "content/browser/fileapi/file_system_url_loader_factory.h"
-#include "content/browser/url_loader_factory_getter.h"
-#include "content/public/browser/render_frame_host.h"
-#include "content/public/browser/render_process_host.h"
-#include "mojo/public/cpp/bindings/strong_binding.h"
-#include "services/network/public/cpp/wrapper_shared_url_loader_factory.h"
-#include "services/network/public/mojom/url_loader_factory.mojom.h"
-
-namespace content {
-
-FileSystemDownloadURLLoaderFactoryGetter::
-    FileSystemDownloadURLLoaderFactoryGetter(
-        const GURL& url,
-        RenderFrameHost* rfh,
-        scoped_refptr<storage::FileSystemContext> file_system_context,
-        const std::string& storage_domain)
-    : rfh_(rfh),
-      file_system_context_(file_system_context),
-      storage_domain_(storage_domain) {
-  DCHECK(url.SchemeIs(url::kFileSystemScheme));
-  DCHECK(rfh);
-}
-
-FileSystemDownloadURLLoaderFactoryGetter::
-    ~FileSystemDownloadURLLoaderFactoryGetter() = default;
-
-scoped_refptr<network::SharedURLLoaderFactory>
-FileSystemDownloadURLLoaderFactoryGetter::GetURLLoaderFactory() {
-  DCHECK(download::GetIOTaskRunner()->BelongsToCurrentThread());
-
-  std::unique_ptr<network::mojom::URLLoaderFactory> factory =
-      CreateFileSystemURLLoaderFactory(rfh_->GetProcess()->GetID(),
-                                       rfh_->GetFrameTreeNodeId(),
-                                       file_system_context_, storage_domain_);
-
-  network::mojom::URLLoaderFactoryPtrInfo url_loader_factory_ptr_info;
-  mojo::MakeStrongBinding(std::move(factory),
-                          MakeRequest(&url_loader_factory_ptr_info));
-
-  return base::MakeRefCounted<network::WrapperSharedURLLoaderFactory>(
-      std::move(url_loader_factory_ptr_info));
-}
-
-}  // namespace content
diff --git a/content/browser/download/file_system_download_url_loader_factory_getter.h b/content/browser/download/file_system_download_url_loader_factory_getter.h
deleted file mode 100644
index fae54d0a..0000000
--- a/content/browser/download/file_system_download_url_loader_factory_getter.h
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2018 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 CONTENT_BROWSER_DOWNLOAD_FILE_SYSTEM_DOWNLOAD_URL_LOADER_FACTORY_GETTER_H_
-#define CONTENT_BROWSER_DOWNLOAD_FILE_SYSTEM_DOWNLOAD_URL_LOADER_FACTORY_GETTER_H_
-
-#include <string>
-
-#include "base/memory/scoped_refptr.h"
-#include "components/download/public/common/download_url_loader_factory_getter.h"
-#include "url/gurl.h"
-
-namespace storage {
-class FileSystemContext;
-}
-
-namespace content {
-
-class RenderFrameHost;
-
-// Class for retrieving the URLLoaderFactory for a file URL.
-class FileSystemDownloadURLLoaderFactoryGetter
-    : public download::DownloadURLLoaderFactoryGetter {
- public:
-  FileSystemDownloadURLLoaderFactoryGetter(
-      const GURL& url,
-      RenderFrameHost* rfh,
-      scoped_refptr<storage::FileSystemContext> file_system_context,
-      const std::string& storage_domain);
-
-  // download::DownloadURLLoaderFactoryGetter implementation.
-  scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override;
-
- protected:
-  ~FileSystemDownloadURLLoaderFactoryGetter() override;
-
- private:
-  RenderFrameHost* rfh_;
-  scoped_refptr<storage::FileSystemContext> file_system_context_;
-  const std::string storage_domain_;
-
-  DISALLOW_COPY_AND_ASSIGN(FileSystemDownloadURLLoaderFactoryGetter);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_BROWSER_DOWNLOAD_FILE_SYSTEM_DOWNLOAD_URL_LOADER_FACTORY_GETTER_H_
diff --git a/content/browser/download/network_download_url_loader_factory_getter.cc b/content/browser/download/network_download_url_loader_factory_getter.cc
deleted file mode 100644
index fe132fb..0000000
--- a/content/browser/download/network_download_url_loader_factory_getter.cc
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2018 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 "content/browser/download/network_download_url_loader_factory_getter.h"
-
-#include "components/download/public/common/download_task_runner.h"
-#include "content/browser/url_loader_factory_getter.h"
-#include "services/network/public/cpp/shared_url_loader_factory.h"
-#include "services/network/public/cpp/wrapper_shared_url_loader_factory.h"
-
-namespace content {
-
-NetworkDownloadURLLoaderFactoryGetter::NetworkDownloadURLLoaderFactoryGetter(
-    scoped_refptr<URLLoaderFactoryGetter> url_loader_factory_getter,
-    network::mojom::URLLoaderFactoryPtrInfo proxy_factory_ptr_info,
-    network::mojom::URLLoaderFactoryRequest proxy_factory_request)
-    : url_loader_factory_getter_(url_loader_factory_getter),
-      proxy_factory_ptr_info_(std::move(proxy_factory_ptr_info)),
-      proxy_factory_request_(std::move(proxy_factory_request)) {}
-
-NetworkDownloadURLLoaderFactoryGetter::
-    ~NetworkDownloadURLLoaderFactoryGetter() = default;
-
-scoped_refptr<network::SharedURLLoaderFactory>
-NetworkDownloadURLLoaderFactoryGetter::GetURLLoaderFactory() {
-  DCHECK(download::GetIOTaskRunner());
-  DCHECK(download::GetIOTaskRunner()->BelongsToCurrentThread());
-  if (lazy_factory_)
-    return lazy_factory_;
-  if (proxy_factory_request_.is_pending()) {
-    url_loader_factory_getter_->CloneNetworkFactory(
-        std::move(proxy_factory_request_));
-    lazy_factory_ =
-        base::MakeRefCounted<network::WrapperSharedURLLoaderFactory>(
-            std::move(proxy_factory_ptr_info_));
-  } else {
-    lazy_factory_ = url_loader_factory_getter_->GetNetworkFactory();
-  }
-  return lazy_factory_;
-}
-
-}  // namespace content
diff --git a/content/browser/download/network_download_url_loader_factory_getter.h b/content/browser/download/network_download_url_loader_factory_getter.h
deleted file mode 100644
index 95eb893..0000000
--- a/content/browser/download/network_download_url_loader_factory_getter.h
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2018 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 CONTENT_BROWSER_DOWNLOAD_NETWORK_DOWNLOAD_URL_LOADER_FACTORY_GETTER_H_
-#define CONTENT_BROWSER_DOWNLOAD_NETWORK_DOWNLOAD_URL_LOADER_FACTORY_GETTER_H_
-
-#include "components/download/public/common/download_url_loader_factory_getter.h"
-#include "services/network/public/mojom/url_loader_factory.mojom.h"
-
-namespace content {
-
-class URLLoaderFactoryGetter;
-
-// Wrapper of URLLoaderFactoryGetter to retrieve URLLoaderFactory.
-class NetworkDownloadURLLoaderFactoryGetter
-    : public download::DownloadURLLoaderFactoryGetter {
- public:
-  NetworkDownloadURLLoaderFactoryGetter(
-      scoped_refptr<URLLoaderFactoryGetter> url_loader_factory_getter,
-      network::mojom::URLLoaderFactoryPtrInfo proxy_factory_ptr_info,
-      network::mojom::URLLoaderFactoryRequest proxy_factory_request);
-
-  // download::DownloadURLLoaderFactoryGetter implementation.
-  scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override;
-
- protected:
-  ~NetworkDownloadURLLoaderFactoryGetter() override;
-
- private:
-  scoped_refptr<URLLoaderFactoryGetter> url_loader_factory_getter_;
-  scoped_refptr<network::SharedURLLoaderFactory> lazy_factory_;
-  network::mojom::URLLoaderFactoryPtrInfo proxy_factory_ptr_info_;
-  network::mojom::URLLoaderFactoryRequest proxy_factory_request_;
-
-  DISALLOW_COPY_AND_ASSIGN(NetworkDownloadURLLoaderFactoryGetter);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_BROWSER_DOWNLOAD_NETWORK_DOWNLOAD_URL_LOADER_FACTORY_GETTER_H_
diff --git a/content/browser/download/network_download_url_loader_factory_info.cc b/content/browser/download/network_download_url_loader_factory_info.cc
new file mode 100644
index 0000000..ecc6a7e8
--- /dev/null
+++ b/content/browser/download/network_download_url_loader_factory_info.cc
@@ -0,0 +1,43 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/browser/download/network_download_url_loader_factory_info.h"
+
+#include "components/download/public/common/download_task_runner.h"
+#include "content/browser/url_loader_factory_getter.h"
+#include "services/network/public/cpp/shared_url_loader_factory.h"
+#include "services/network/public/cpp/wrapper_shared_url_loader_factory.h"
+
+namespace content {
+
+NetworkDownloadURLLoaderFactoryInfo::NetworkDownloadURLLoaderFactoryInfo(
+    scoped_refptr<URLLoaderFactoryGetter> url_loader_factory_getter,
+    network::mojom::URLLoaderFactoryPtrInfo proxy_factory_ptr_info,
+    network::mojom::URLLoaderFactoryRequest proxy_factory_request)
+    : url_loader_factory_getter_(url_loader_factory_getter),
+      proxy_factory_ptr_info_(std::move(proxy_factory_ptr_info)),
+      proxy_factory_request_(std::move(proxy_factory_request)) {}
+
+NetworkDownloadURLLoaderFactoryInfo::~NetworkDownloadURLLoaderFactoryInfo() =
+    default;
+
+scoped_refptr<network::SharedURLLoaderFactory>
+NetworkDownloadURLLoaderFactoryInfo::CreateFactory() {
+  DCHECK(download::GetIOTaskRunner());
+  DCHECK(download::GetIOTaskRunner()->BelongsToCurrentThread());
+  if (lazy_factory_)
+    return lazy_factory_;
+  if (proxy_factory_request_.is_pending()) {
+    url_loader_factory_getter_->CloneNetworkFactory(
+        std::move(proxy_factory_request_));
+    lazy_factory_ =
+        base::MakeRefCounted<network::WrapperSharedURLLoaderFactory>(
+            std::move(proxy_factory_ptr_info_));
+  } else {
+    lazy_factory_ = url_loader_factory_getter_->GetNetworkFactory();
+  }
+  return lazy_factory_;
+}
+
+}  // namespace content
diff --git a/content/browser/download/network_download_url_loader_factory_info.h b/content/browser/download/network_download_url_loader_factory_info.h
new file mode 100644
index 0000000..660afc3
--- /dev/null
+++ b/content/browser/download/network_download_url_loader_factory_info.h
@@ -0,0 +1,41 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_BROWSER_DOWNLOAD_NETWORK_DOWNLOAD_URL_LOADER_FACTORY_INFO_H_
+#define CONTENT_BROWSER_DOWNLOAD_NETWORK_DOWNLOAD_URL_LOADER_FACTORY_INFO_H_
+
+#include "services/network/public/cpp/shared_url_loader_factory.h"
+#include "services/network/public/mojom/url_loader_factory.mojom.h"
+
+namespace content {
+
+class URLLoaderFactoryGetter;
+
+// Wrapper of a URLLoaderFactoryGetter that can be passed to another thread
+// to retrieve URLLoaderFactory.
+class NetworkDownloadURLLoaderFactoryInfo
+    : public network::SharedURLLoaderFactoryInfo {
+ public:
+  NetworkDownloadURLLoaderFactoryInfo(
+      scoped_refptr<URLLoaderFactoryGetter> url_loader_factory_getter,
+      network::mojom::URLLoaderFactoryPtrInfo proxy_factory_ptr_info,
+      network::mojom::URLLoaderFactoryRequest proxy_factory_request);
+  ~NetworkDownloadURLLoaderFactoryInfo() override;
+
+ protected:
+  // SharedURLLoaderFactoryInfo implementation.
+  scoped_refptr<network::SharedURLLoaderFactory> CreateFactory() override;
+
+ private:
+  scoped_refptr<URLLoaderFactoryGetter> url_loader_factory_getter_;
+  scoped_refptr<network::SharedURLLoaderFactory> lazy_factory_;
+  network::mojom::URLLoaderFactoryPtrInfo proxy_factory_ptr_info_;
+  network::mojom::URLLoaderFactoryRequest proxy_factory_request_;
+
+  DISALLOW_COPY_AND_ASSIGN(NetworkDownloadURLLoaderFactoryInfo);
+};
+
+}  // namespace content
+
+#endif  // CONTENT_BROWSER_DOWNLOAD_NETWORK_DOWNLOAD_URL_LOADER_FACTORY_INFO_H_
diff --git a/content/browser/download/web_ui_download_url_loader_factory_getter.cc b/content/browser/download/web_ui_download_url_loader_factory_getter.cc
deleted file mode 100644
index a4419bc..0000000
--- a/content/browser/download/web_ui_download_url_loader_factory_getter.cc
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2018 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 "content/browser/download/web_ui_download_url_loader_factory_getter.h"
-
-#include "base/task/post_task.h"
-#include "content/public/browser/browser_task_traits.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/web_ui_url_loader_factory.h"
-#include "services/network/public/cpp/wrapper_shared_url_loader_factory.h"
-
-namespace content {
-
-WebUIDownloadURLLoaderFactoryGetter::WebUIDownloadURLLoaderFactoryGetter(
-    RenderFrameHost* rfh,
-    const GURL& url) {
-  auto factory_request = mojo::MakeRequest(&factory_info_);
-  factory_ =
-      CreateWebUIURLLoader(rfh, url.scheme(), base::flat_set<std::string>());
-  factory_->Clone(std::move(factory_request));
-}
-
-WebUIDownloadURLLoaderFactoryGetter::~WebUIDownloadURLLoaderFactoryGetter() {
-  base::CreateSingleThreadTaskRunner({BrowserThread::UI})
-      ->DeleteSoon(FROM_HERE, std::move(factory_));
-}
-
-scoped_refptr<network::SharedURLLoaderFactory>
-WebUIDownloadURLLoaderFactoryGetter::GetURLLoaderFactory() {
-  return base::MakeRefCounted<network::WrapperSharedURLLoaderFactory>(
-      std::move(factory_info_));
-}
-
-}  // namespace content
diff --git a/content/browser/download/web_ui_download_url_loader_factory_getter.h b/content/browser/download/web_ui_download_url_loader_factory_getter.h
deleted file mode 100644
index 5f39fd7..0000000
--- a/content/browser/download/web_ui_download_url_loader_factory_getter.h
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2018 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 CONTENT_BROWSER_DOWNLOAD_WEB_UI_DOWNLOAD_URL_LOADER_FACTORY_GETTER_H_
-#define CONTENT_BROWSER_DOWNLOAD_WEB_UI_DOWNLOAD_URL_LOADER_FACTORY_GETTER_H_
-
-#include "base/files/file_path.h"
-#include "components/download/public/common/download_url_loader_factory_getter.h"
-#include "services/network/public/mojom/url_loader_factory.mojom.h"
-
-class GURL;
-
-namespace content {
-class RenderFrameHost;
-
-// Class for retrieving the URLLoaderFactory for a webui URL.
-class WebUIDownloadURLLoaderFactoryGetter
-    : public download::DownloadURLLoaderFactoryGetter {
- public:
-  WebUIDownloadURLLoaderFactoryGetter(RenderFrameHost* rfh, const GURL& url);
-
-  // download::DownloadURLLoaderFactoryGetter implementation.
-  scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override;
-
- protected:
-  ~WebUIDownloadURLLoaderFactoryGetter() override;
-
- private:
-  network::mojom::URLLoaderFactoryPtrInfo factory_info_;
-
-  // Lives on the UI thread and must be deleted there.
-  std::unique_ptr<network::mojom::URLLoaderFactory> factory_;
-
-  DISALLOW_COPY_AND_ASSIGN(WebUIDownloadURLLoaderFactoryGetter);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_BROWSER_DOWNLOAD_WEB_UI_DOWNLOAD_URL_LOADER_FACTORY_GETTER_H_
diff --git a/content/browser/native_file_system/mock_native_file_system_permission_context.cc b/content/browser/native_file_system/mock_native_file_system_permission_context.cc
index c5cbad1..2220295 100644
--- a/content/browser/native_file_system/mock_native_file_system_permission_context.cc
+++ b/content/browser/native_file_system/mock_native_file_system_permission_context.cc
@@ -31,4 +31,12 @@
                                    frame_id, callback);
 }
 
+void MockNativeFileSystemPermissionContext::PerformSafeBrowsingChecks(
+    std::unique_ptr<NativeFileSystemWriteItem> item,
+    int process_id,
+    int frame_id,
+    base::OnceCallback<void(SafeBrowsingResult)> callback) {
+  PerformSafeBrowsingChecks_(item.get(), process_id, frame_id, callback);
+}
+
 }  // namespace content
diff --git a/content/browser/native_file_system/mock_native_file_system_permission_context.h b/content/browser/native_file_system/mock_native_file_system_permission_context.h
index cfffbc0..23c6fac 100644
--- a/content/browser/native_file_system/mock_native_file_system_permission_context.h
+++ b/content/browser/native_file_system/mock_native_file_system_permission_context.h
@@ -61,6 +61,17 @@
            int process_id,
            int frame_id,
            base::OnceCallback<void(SensitiveDirectoryResult)>& callback));
+
+  void PerformSafeBrowsingChecks(
+      std::unique_ptr<NativeFileSystemWriteItem> item,
+      int process_id,
+      int frame_id,
+      base::OnceCallback<void(SafeBrowsingResult)> callback) override;
+  MOCK_METHOD4(PerformSafeBrowsingChecks_,
+               void(NativeFileSystemWriteItem* item,
+                    int process_id,
+                    int frame_id,
+                    base::OnceCallback<void(SafeBrowsingResult)>& callback));
 };
 
 }  // namespace content
diff --git a/content/browser/native_file_system/native_file_system_file_writer_impl.cc b/content/browser/native_file_system/native_file_system_file_writer_impl.cc
index 61efea5..f4992dd 100644
--- a/content/browser/native_file_system/native_file_system_file_writer_impl.cc
+++ b/content/browser/native_file_system/native_file_system_file_writer_impl.cc
@@ -34,12 +34,21 @@
   return result;
 }
 
-std::pair<base::File::Error, std::string> ReadAndComputeSHA256Checksum(
-    const base::FilePath& path) {
+// For safe browsing we need the hash and size of the file. That data is
+// calculated on a worker thread, and this struct is used to pass it back.
+struct HashResult {
+  base::File::Error status;
+  // SHA256 hash of the file contents, an empty string if some error occurred.
+  std::string hash;
+  // Can be -1 to indicate an error calculating the hash and/or size.
+  int64_t file_size = -1;
+};
+
+HashResult ReadAndComputeSHA256ChecksumAndSize(const base::FilePath& path) {
   base::File file(path, base::File::FLAG_OPEN | base::File::FLAG_READ);
 
   if (!file.IsValid())
-    return std::make_pair(file.error_details(), std::string());
+    return {file.error_details(), std::string(), -1};
 
   std::unique_ptr<crypto::SecureHash> hash =
       crypto::SecureHash::Create(crypto::SecureHash::SHA256);
@@ -53,12 +62,12 @@
 
   // If bytes_read is -ve, it means there were issues reading from disk.
   if (bytes_read < 0)
-    return std::make_pair(file.error_details(), std::string());
+    return {file.error_details(), std::string(), -1};
 
   std::string hash_str(hash->GetHashLength(), 0);
   hash->Finish(base::data(hash_str), hash_str.size());
 
-  return std::make_pair(file.error_details(), hash_str);
+  return {file.error_details(), hash_str, file.GetLength()};
 }
 
 }  // namespace
@@ -283,13 +292,85 @@
 
   // Should the writer be destructed at this point, we want to allow the
   // close operation to run its course, so we should not purge the swap file.
+  // If the safe browsing check fails, the callback for that will clean up the
+  // swap file even if the writer was destroyed at that point.
   state_ = State::kClosePending;
 
+  if (!require_safe_browsing_check() || !manager()->permission_context()) {
+    DidPassSafeBrowsingCheck(std::move(callback));
+    return;
+  }
+
+  ComputeHashForSwapFile(base::BindOnce(
+      &NativeFileSystemFileWriterImpl::DoSafeBrowsingCheck,
+      weak_factory_.GetWeakPtr(), swap_url().path(), std::move(callback)));
+}
+
+// static
+void NativeFileSystemFileWriterImpl::DoSafeBrowsingCheck(
+    base::WeakPtr<NativeFileSystemFileWriterImpl> file_writer,
+    const base::FilePath& swap_path,
+    NativeFileSystemFileWriterImpl::CloseCallback callback,
+    base::File::Error hash_result,
+    const std::string& hash,
+    int64_t size) {
+  if (!file_writer || hash_result != base::File::FILE_OK) {
+    // If writer was deleted, or calculating the hash failed try deleting the
+    // swap file and invoke the callback.
+    base::PostTask(FROM_HERE, {base::ThreadPool(), base::MayBlock()},
+                   base::BindOnce(base::IgnoreResult(&base::DeleteFile),
+                                  swap_path, /*recursive=*/false));
+    std::move(callback).Run(native_file_system_error::FromStatus(
+        NativeFileSystemStatus::kOperationAborted,
+        "Failed to perform Safe Browsing check."));
+    return;
+  }
+
+  auto item = std::make_unique<NativeFileSystemWriteItem>();
+  item->target_file_path = file_writer->url().path();
+  item->full_path = file_writer->swap_url().path();
+  item->sha256_hash = hash;
+  item->size = size;
+  item->frame_url = file_writer->context().url;
+  item->has_user_gesture = file_writer->has_transient_user_activation_;
+  file_writer->manager()->permission_context()->PerformSafeBrowsingChecks(
+      std::move(item), file_writer->context().process_id,
+      file_writer->context().frame_id,
+      base::BindOnce(&NativeFileSystemFileWriterImpl::DidSafeBrowsingCheck,
+                     file_writer, swap_path, std::move(callback)));
+}
+
+// static
+void NativeFileSystemFileWriterImpl::DidSafeBrowsingCheck(
+    base::WeakPtr<NativeFileSystemFileWriterImpl> file_writer,
+    const base::FilePath& swap_path,
+    NativeFileSystemFileWriterImpl::CloseCallback callback,
+    NativeFileSystemPermissionContext::SafeBrowsingResult result) {
+  if (file_writer &&
+      result == NativeFileSystemPermissionContext::SafeBrowsingResult::kAllow) {
+    file_writer->DidPassSafeBrowsingCheck(std::move(callback));
+    return;
+  }
+
+  // Writer is gone, or safe browsing check failed. In this case we should
+  // try deleting the swap file and call the callback to report that close
+  // failed.
+  base::PostTask(FROM_HERE, {base::ThreadPool(), base::MayBlock()},
+                 base::BindOnce(base::IgnoreResult(&base::DeleteFile),
+                                swap_path, /*recursive=*/false));
+  std::move(callback).Run(native_file_system_error::FromStatus(
+      NativeFileSystemStatus::kOperationAborted,
+      "Write operation blocked by Safe Browsing."));
+  return;
+}
+
+void NativeFileSystemFileWriterImpl::DidPassSafeBrowsingCheck(
+    CloseCallback callback) {
+  DCHECK_CURRENTLY_ON(BrowserThread::IO);
   // If the move operation succeeds, the path pointing to the swap file
   // will not exist anymore.
   // In case of error, the swap file URL will point to a valid filesystem
   // location. The file at this URL will be deleted when the mojo pipe closes.
-  // TODO(https://crbug.com/968556): Hook safebrowsing here, before the move.
   operation_runner()->Move(
       swap_url(), url(),
       storage::FileSystemOperation::OPTION_PRESERVE_LAST_MODIFIED,
@@ -355,11 +436,11 @@
   DCHECK_EQ(swap_url().type(), storage::kFileSystemTypeNativeLocal);
   base::PostTaskAndReplyWithResult(
       FROM_HERE, {base::ThreadPool(), base::MayBlock()},
-      base::BindOnce(&ReadAndComputeSHA256Checksum, swap_url().path()),
+      base::BindOnce(&ReadAndComputeSHA256ChecksumAndSize, swap_url().path()),
       base::BindOnce(
-          [](HashCallback callback,
-             const std::pair<base::File::Error, std::string>& result) {
-            std::move(callback).Run(result.first, result.second);
+          [](HashCallback callback, HashResult result) {
+            std::move(callback).Run(result.status, result.hash,
+                                    result.file_size);
           },
           std::move(callback)));
 }
diff --git a/content/browser/native_file_system/native_file_system_file_writer_impl.h b/content/browser/native_file_system/native_file_system_file_writer_impl.h
index cf36fd6..7e81909 100644
--- a/content/browser/native_file_system/native_file_system_file_writer_impl.h
+++ b/content/browser/native_file_system/native_file_system_file_writer_impl.h
@@ -62,14 +62,11 @@
     skip_quarantine_check_for_testing_ = true;
   }
 
-  using HashCallback = base::OnceCallback<void(base::File::Error error,
-                                               const std::string& hash)>;
+  using HashCallback = base::OnceCallback<
+      void(base::File::Error error, const std::string& hash, int64_t size)>;
   void ComputeHashForSwapFileForTesting(HashCallback callback) {
     ComputeHashForSwapFile(std::move(callback));
   }
-  bool HasTransientUserActivationForTesting() const {
-    return has_transient_user_activation_;
-  }
 
  private:
   // State that is kept for the duration of a write operation, to keep track of
@@ -91,17 +88,36 @@
                 bool complete);
   void TruncateImpl(uint64_t length, TruncateCallback callback);
   void CloseImpl(CloseCallback callback);
+  // The following two methods are static, because they need to be invoked to
+  // perform cleanup even if the writer was deleted before they were invoked.
+  static void DoSafeBrowsingCheck(
+      base::WeakPtr<NativeFileSystemFileWriterImpl> file_writer,
+      const base::FilePath& swap_path,
+      NativeFileSystemFileWriterImpl::CloseCallback callback,
+      base::File::Error hash_result,
+      const std::string& hash,
+      int64_t size);
+  static void DidSafeBrowsingCheck(
+      base::WeakPtr<NativeFileSystemFileWriterImpl> file_writer,
+      const base::FilePath& swap_path,
+      NativeFileSystemFileWriterImpl::CloseCallback callback,
+      NativeFileSystemPermissionContext::SafeBrowsingResult result);
+  void DidPassSafeBrowsingCheck(CloseCallback callback);
   void DidSwapFileBeforeClose(CloseCallback callback, base::File::Error result);
   void DidAnnotateFile(CloseCallback callback,
                        quarantine::mojom::QuarantineFileResult result);
 
+  // Safe browsing checks only apply to native local paths.
+  bool require_safe_browsing_check() {
+    return url().type() == storage::kFileSystemTypeNativeLocal;
+  }
+
   // Quarantine checks only apply to native local paths.
   bool CanSkipQuarantineCheck() const {
     return skip_quarantine_check_for_testing_ ||
            url().type() != storage::kFileSystemTypeNativeLocal;
   }
 
-  // TODO(https://crbug.com/968556): Integrate with Close writer flow.
   void ComputeHashForSwapFile(HashCallback callback);
 
   enum class State {
diff --git a/content/browser/native_file_system/native_file_system_file_writer_impl_unittest.cc b/content/browser/native_file_system/native_file_system_file_writer_impl_unittest.cc
index 01a7513..2bcae92 100644
--- a/content/browser/native_file_system/native_file_system_file_writer_impl_unittest.cc
+++ b/content/browser/native_file_system/native_file_system_file_writer_impl_unittest.cc
@@ -11,9 +11,11 @@
 #include "base/guid.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/test/bind_test_util.h"
+#include "base/test/gmock_callback_support.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
 #include "content/browser/native_file_system/fixed_native_file_system_permission_grant.h"
+#include "content/browser/native_file_system/mock_native_file_system_permission_context.h"
 #include "content/public/test/browser_task_environment.h"
 #include "mojo/public/cpp/system/data_pipe_producer.h"
 #include "mojo/public/cpp/system/string_data_source.h"
@@ -33,6 +35,11 @@
 using storage::FileSystemURL;
 using storage::IsolatedContext;
 
+using testing::_;
+using testing::AllOf;
+using testing::Eq;
+using testing::Field;
+
 namespace content {
 
 std::string GetHexEncodedString(const std::string& input) {
@@ -47,6 +54,10 @@
         blink::features::kNativeFileSystemAPI);
   }
 
+  virtual NativeFileSystemPermissionContext* permission_context() {
+    return nullptr;
+  }
+
   void SetUp() override {
     ASSERT_TRUE(dir_.CreateUniqueTempDir());
     file_system_context_ = CreateFileSystemContextForTesting(
@@ -83,14 +94,13 @@
 
     manager_ = base::MakeRefCounted<NativeFileSystemManagerImpl>(
         file_system_context_, chrome_blob_context_,
-        /*permission_context=*/nullptr,
+        /*permission_context=*/permission_context(),
         /*off_the_record=*/false);
 
     handle_ = std::make_unique<NativeFileSystemFileWriterImpl>(
         manager_.get(),
-        NativeFileSystemManagerImpl::BindingContext(
-            kTestOrigin, kTestURL, /*process_id=*/1,
-            /*frame_id=*/MSG_ROUTING_NONE),
+        NativeFileSystemManagerImpl::BindingContext(kTestOrigin, kTestURL,
+                                                    kProcessId, kFrameId),
         test_file_url_, test_swap_url_,
         NativeFileSystemManagerImpl::SharedHandleState(
             permission_grant_, permission_grant_, std::move(fs)),
@@ -235,6 +245,8 @@
  protected:
   const GURL kTestURL = GURL("https://example.com/test");
   const url::Origin kTestOrigin = url::Origin::Create(kTestURL);
+  const int kProcessId = 1;
+  const int kFrameId = 2;
   base::test::ScopedFeatureList scoped_feature_list_;
   BrowserTaskEnvironment task_environment_;
 
@@ -288,11 +300,13 @@
 
   base::RunLoop loop;
   handle_->ComputeHashForSwapFileForTesting(base::BindLambdaForTesting(
-      [&](base::File::Error result, const std::string& hash_value) {
+      [&](base::File::Error result, const std::string& hash_value,
+          int64_t size) {
         EXPECT_EQ(base::File::FILE_OK, result);
         EXPECT_EQ(
             "BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD",
             GetHexEncodedString(hash_value));
+        EXPECT_EQ(3, size);
         loop.Quit();
       }));
   loop.Run();
@@ -301,11 +315,13 @@
 TEST_F(NativeFileSystemFileWriterImplTest, HashEmptyOK) {
   base::RunLoop loop;
   handle_->ComputeHashForSwapFileForTesting(base::BindLambdaForTesting(
-      [&](base::File::Error result, const std::string& hash_value) {
+      [&](base::File::Error result, const std::string& hash_value,
+          int64_t size) {
         EXPECT_EQ(base::File::FILE_OK, result);
         EXPECT_EQ(
             "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
             GetHexEncodedString(hash_value));
+        EXPECT_EQ(0, size);
         loop.Quit();
       }));
   loop.Run();
@@ -318,7 +334,8 @@
                                         /*recursive=*/false));
   base::RunLoop loop;
   handle_->ComputeHashForSwapFileForTesting(base::BindLambdaForTesting(
-      [&](base::File::Error result, const std::string& hash_value) {
+      [&](base::File::Error result, const std::string& hash_value,
+          int64_t size) {
         EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, result);
         loop.Quit();
       }));
@@ -335,11 +352,13 @@
 
   base::RunLoop loop;
   handle_->ComputeHashForSwapFileForTesting(base::BindLambdaForTesting(
-      [&](base::File::Error result, const std::string& hash_value) {
+      [&](base::File::Error result, const std::string& hash_value,
+          int64_t size) {
         EXPECT_EQ(base::File::FILE_OK, result);
         EXPECT_EQ(
             "34A82D28CB1E0BA92CADC4BE8497DC9EEA9AC4F63B9C445A9E52D298990AC491",
             GetHexEncodedString(hash_value));
+        EXPECT_EQ(int64_t{target_size}, size);
         loop.Quit();
       }));
   loop.Run();
@@ -478,4 +497,118 @@
 
 // TODO(mek): More tests, particularly for error conditions.
 
+class NativeFileSystemFileWriterSafeBrowsingTest
+    : public NativeFileSystemFileWriterImplTest {
+ public:
+  NativeFileSystemPermissionContext* permission_context() override {
+    return &permission_context_;
+  }
+
+ protected:
+  testing::StrictMock<MockNativeFileSystemPermissionContext>
+      permission_context_;
+};
+
+TEST_F(NativeFileSystemFileWriterSafeBrowsingTest, Allow) {
+  uint64_t bytes_written;
+  NativeFileSystemStatus result = WriteSync(0, "abc", &bytes_written);
+  EXPECT_EQ(result, NativeFileSystemStatus::kOk);
+  EXPECT_EQ(bytes_written, 3u);
+
+  std::vector<uint8_t> raw_expected_hash;
+  ASSERT_TRUE(base::HexStringToBytes(
+      "BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD",
+      &raw_expected_hash));
+  std::string expected_hash(raw_expected_hash.begin(), raw_expected_hash.end());
+
+  EXPECT_CALL(
+      permission_context_,
+      PerformSafeBrowsingChecks_(
+          AllOf(
+              Field(&NativeFileSystemWriteItem::target_file_path,
+                    Eq(test_file_url_.path())),
+              Field(&NativeFileSystemWriteItem::full_path,
+                    Eq(test_swap_url_.path())),
+              Field(&NativeFileSystemWriteItem::sha256_hash, Eq(expected_hash)),
+              Field(&NativeFileSystemWriteItem::size, Eq(3)),
+              Field(&NativeFileSystemWriteItem::frame_url, Eq(kTestURL)),
+              Field(&NativeFileSystemWriteItem::has_user_gesture, Eq(false))),
+          kProcessId, kFrameId, _))
+      .WillOnce(base::test::RunOnceCallback<3>(
+          NativeFileSystemPermissionContext::SafeBrowsingResult::kAllow));
+
+  result = CloseSync();
+  EXPECT_EQ(result, NativeFileSystemStatus::kOk);
+
+  task_environment_.RunUntilIdle();
+  EXPECT_FALSE(AsyncFileTestHelper::FileExists(
+      file_system_context_.get(), test_swap_url_,
+      AsyncFileTestHelper::kDontCheckSize));
+  EXPECT_TRUE(AsyncFileTestHelper::FileExists(file_system_context_.get(),
+                                              test_file_url_, 3));
+}
+
+TEST_F(NativeFileSystemFileWriterSafeBrowsingTest, Block) {
+  uint64_t bytes_written;
+  NativeFileSystemStatus result = WriteSync(0, "abc", &bytes_written);
+  EXPECT_EQ(result, NativeFileSystemStatus::kOk);
+  EXPECT_EQ(bytes_written, 3u);
+
+  EXPECT_CALL(permission_context_,
+              PerformSafeBrowsingChecks_(_, kProcessId, kFrameId, _))
+      .WillOnce(base::test::RunOnceCallback<3>(
+          NativeFileSystemPermissionContext::SafeBrowsingResult::kBlock));
+
+  result = CloseSync();
+  EXPECT_EQ(result, NativeFileSystemStatus::kOperationAborted);
+
+  task_environment_.RunUntilIdle();
+  EXPECT_FALSE(AsyncFileTestHelper::FileExists(
+      file_system_context_.get(), test_swap_url_,
+      AsyncFileTestHelper::kDontCheckSize));
+  EXPECT_TRUE(AsyncFileTestHelper::FileExists(file_system_context_.get(),
+                                              test_file_url_, 0));
+}
+
+TEST_F(NativeFileSystemFileWriterSafeBrowsingTest, HandleCloseDuringCheck) {
+  uint64_t bytes_written;
+  NativeFileSystemStatus result = WriteSync(0, "abc", &bytes_written);
+  EXPECT_EQ(result, NativeFileSystemStatus::kOk);
+  EXPECT_EQ(bytes_written, 3u);
+
+  using SBCallback = base::OnceCallback<void(
+      NativeFileSystemPermissionContext::SafeBrowsingResult)>;
+  SBCallback sb_callback;
+  base::RunLoop loop;
+  EXPECT_CALL(permission_context_, PerformSafeBrowsingChecks_)
+      .WillOnce(
+          testing::Invoke([&](NativeFileSystemWriteItem* item, int process_id,
+                              int frame_id, SBCallback& callback) {
+            sb_callback = std::move(callback);
+            loop.Quit();
+          }));
+
+  handle_->Close(base::DoNothing());
+  loop.Run();
+
+  handle_.reset();
+  // Destructor should not have deleted swap file with an active safe browsing
+  // check pending.
+  task_environment_.RunUntilIdle();
+  EXPECT_TRUE(AsyncFileTestHelper::FileExists(
+      file_system_context_.get(), test_swap_url_,
+      AsyncFileTestHelper::kDontCheckSize));
+
+  std::move(sb_callback)
+      .Run(NativeFileSystemPermissionContext::SafeBrowsingResult::kAllow);
+
+  // Swap file should now be deleted, target file should be unmodified.
+  task_environment_.RunUntilIdle();
+  EXPECT_FALSE(AsyncFileTestHelper::FileExists(
+      file_system_context_.get(), test_swap_url_,
+      AsyncFileTestHelper::kDontCheckSize));
+  EXPECT_TRUE(AsyncFileTestHelper::FileExists(file_system_context_.get(),
+                                              test_file_url_, 0));
+}
+
 }  // namespace content
diff --git a/content/browser/native_file_system/native_file_system_manager_impl.h b/content/browser/native_file_system/native_file_system_manager_impl.h
index ea2018e2..eed954b 100644
--- a/content/browser/native_file_system/native_file_system_manager_impl.h
+++ b/content/browser/native_file_system/native_file_system_manager_impl.h
@@ -159,6 +159,10 @@
   }
   storage::FileSystemOperationRunner* operation_runner();
 
+  NativeFileSystemPermissionContext* permission_context() {
+    return permission_context_;
+  }
+
   bool is_off_the_record() const { return off_the_record_; }
 
   void SetPermissionContextForTesting(
diff --git a/content/browser/renderer_host/media/media_stream_manager.cc b/content/browser/renderer_host/media/media_stream_manager.cc
index dbe97ac6..6b49aea 100644
--- a/content/browser/renderer_host/media/media_stream_manager.cc
+++ b/content/browser/renderer_host/media/media_stream_manager.cc
@@ -520,6 +520,10 @@
           /*tests_use_fake_render_frame_hosts=*/false);
     });
   }
+  if (base::FeatureList::IsEnabled(media::kUseFakeDeviceForMediaStream)) {
+    base::CommandLine::ForCurrentProcess()->AppendSwitch(
+        switches::kUseFakeDeviceForMediaStream);
+  }
 
   DCHECK(audio_system_);
 
diff --git a/content/browser/renderer_host/render_widget_host_input_event_router.cc b/content/browser/renderer_host/render_widget_host_input_event_router.cc
index dd85b56..8eedfe4 100644
--- a/content/browser/renderer_host/render_widget_host_input_event_router.cc
+++ b/content/browser/renderer_host/render_widget_host_input_event_router.cc
@@ -630,10 +630,29 @@
   // platforms where MouseUps are not received when the mouse cursor is off the
   // browser window.
   // Also, this is strictly necessary for touch emulation.
-  if (mouse_event.GetType() == blink::WebInputEvent::kMouseUp ||
-      !IsMouseButtonDown(mouse_event))
+  if (mouse_capture_target_ &&
+      (mouse_event.GetType() == blink::WebInputEvent::kMouseUp ||
+       !IsMouseButtonDown(mouse_event))) {
     mouse_capture_target_ = nullptr;
 
+    // Since capture is being lost it is possible that MouseMoves over a hit
+    // test region might have been going to a different region, and now the
+    // CursorManager might need to be notified that the view underneath the
+    // cursor has changed, which could cause the display cursor to update.
+    gfx::PointF transformed_point;
+    auto* hit_test_result =
+        FindViewAtLocation(root_view, mouse_event.PositionInWidget(),
+                           viz::EventSource::MOUSE, &transformed_point)
+            .view;
+    if (hit_test_result != target) {
+      SendMouseEnterOrLeaveEvents(
+          mouse_event, hit_test_result, root_view,
+          blink::WebInputEvent::Modifiers::kRelativeMotionEvent, true);
+      if (root_view->GetCursorManager())
+        root_view->GetCursorManager()->UpdateViewUnderCursor(hit_test_result);
+    }
+  }
+
   // When touch emulation is active, mouse events have to act like touch
   // events, which requires that there be implicit capture between MouseDown
   // and MouseUp.
@@ -914,7 +933,9 @@
 void RenderWidgetHostInputEventRouter::SendMouseEnterOrLeaveEvents(
     const blink::WebMouseEvent& event,
     RenderWidgetHostViewBase* target,
-    RenderWidgetHostViewBase* root_view) {
+    RenderWidgetHostViewBase* root_view,
+    blink::WebInputEvent::Modifiers extra_modifiers,
+    bool include_target_view) {
   // This method treats RenderWidgetHostViews as a tree, where the mouse
   // cursor is potentially leaving one node and entering another somewhere
   // else in the tree. Since iframes are graphically self-contained (i.e. an
@@ -997,6 +1018,7 @@
   for (auto* view : exited_views) {
     blink::WebMouseEvent mouse_leave(event);
     mouse_leave.SetType(blink::WebInputEvent::kMouseLeave);
+    mouse_leave.SetModifiers(mouse_leave.GetModifiers() | extra_modifiers);
     // There is a chance of a race if the last target has recently created a
     // new compositor surface. The SurfaceID for that might not have
     // propagated to its embedding surface, which makes it impossible to
@@ -1011,8 +1033,9 @@
   }
 
   // The ancestor might need to trigger MouseOut handlers.
-  if (common_ancestor && common_ancestor != target) {
+  if (common_ancestor && (include_target_view || common_ancestor != target)) {
     blink::WebMouseEvent mouse_move(event);
+    mouse_move.SetModifiers(mouse_move.GetModifiers() | extra_modifiers);
     mouse_move.SetType(blink::WebInputEvent::kMouseMove);
     if (!root_view->TransformPointToCoordSpaceForView(
             event.PositionInWidget(), common_ancestor, &transformed_point)) {
@@ -1025,9 +1048,10 @@
 
   // Send MouseMoves to trigger MouseEnter handlers.
   for (auto* view : entered_views) {
-    if (view == target)
+    if (view == target && !include_target_view)
       continue;
     blink::WebMouseEvent mouse_enter(event);
+    mouse_enter.SetModifiers(mouse_enter.GetModifiers() | extra_modifiers);
     mouse_enter.SetType(blink::WebInputEvent::kMouseMove);
     if (!root_view->TransformPointToCoordSpaceForView(
             event.PositionInWidget(), view, &transformed_point)) {
diff --git a/content/browser/renderer_host/render_widget_host_input_event_router.h b/content/browser/renderer_host/render_widget_host_input_event_router.h
index f6168c3..4099d8d 100644
--- a/content/browser/renderer_host/render_widget_host_input_event_router.h
+++ b/content/browser/renderer_host/render_widget_host_input_event_router.h
@@ -227,9 +227,16 @@
   // properly fire. This method determines which RenderWidgetHostViews other
   // than the actual target require notification, and sends the appropriate
   // events to them. |event| should be in |root_view|'s coordinate space.
-  void SendMouseEnterOrLeaveEvents(const blink::WebMouseEvent& event,
-                                   RenderWidgetHostViewBase* target,
-                                   RenderWidgetHostViewBase* root_view);
+  // |include_target_view| indicates whether a MouseEnter should also be sent
+  // to |target|, which is typically not needed if this is invoked while a
+  // MouseMove already being sent there.
+  void SendMouseEnterOrLeaveEvents(
+      const blink::WebMouseEvent& event,
+      RenderWidgetHostViewBase* target,
+      RenderWidgetHostViewBase* root_view,
+      blink::WebInputEvent::Modifiers extra_modifiers =
+          blink::WebInputEvent::Modifiers::kNoModifiers,
+      bool include_target_view = false);
 
   void CancelScrollBubbling();
 
diff --git a/content/browser/service_worker/service_worker_info.cc b/content/browser/service_worker/service_worker_info.cc
index 68e1c208..4289aa5 100644
--- a/content/browser/service_worker/service_worker_info.cc
+++ b/content/browser/service_worker/service_worker_info.cc
@@ -29,6 +29,7 @@
     ServiceWorkerVersion::Status status,
     ServiceWorkerVersion::FetchHandlerExistence fetch_handler_existence,
     const GURL& script_url,
+    const url::Origin& script_origin,
     int64_t registration_id,
     int64_t version_id,
     int process_id,
@@ -38,6 +39,7 @@
       status(status),
       fetch_handler_existence(fetch_handler_existence),
       script_url(script_url),
+      script_origin(script_origin),
       registration_id(registration_id),
       version_id(version_id),
       process_id(process_id),
diff --git a/content/browser/service_worker/service_worker_info.h b/content/browser/service_worker/service_worker_info.h
index ec97609..21f54cf2 100644
--- a/content/browser/service_worker/service_worker_info.h
+++ b/content/browser/service_worker/service_worker_info.h
@@ -16,6 +16,7 @@
 #include "content/common/content_export.h"
 #include "third_party/blink/public/mojom/service_worker/service_worker_provider_type.mojom.h"
 #include "url/gurl.h"
+#include "url/origin.h"
 
 namespace content {
 
@@ -30,6 +31,7 @@
       ServiceWorkerVersion::Status status,
       ServiceWorkerVersion::FetchHandlerExistence fetch_handler_existence,
       const GURL& script_url,
+      const url::Origin& origin,
       int64_t registration_id,
       int64_t version_id,
       int process_id,
@@ -43,6 +45,7 @@
   ServiceWorkerVersion::FetchHandlerExistence fetch_handler_existence;
   blink::mojom::NavigationPreloadState navigation_preload_state;
   GURL script_url;
+  url::Origin script_origin;
   int64_t registration_id;
   int64_t version_id;
   int process_id;
diff --git a/content/browser/service_worker/service_worker_provider_host.h b/content/browser/service_worker/service_worker_provider_host.h
index 504f1a9..f229fac5 100644
--- a/content/browser/service_worker/service_worker_provider_host.h
+++ b/content/browser/service_worker/service_worker_provider_host.h
@@ -702,7 +702,7 @@
   mojo::Binding<service_manager::mojom::InterfaceProvider>
       interface_provider_binding_;
   BrowserInterfaceBrokerImpl<ServiceWorkerProviderHost,
-                             const ServiceWorkerRunningInfo&>
+                             const ServiceWorkerVersionInfo&>
       broker_{this};
   mojo::Receiver<blink::mojom::BrowserInterfaceBroker> broker_receiver_{
       &broker_};
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc
index 54cb052..1e8ebf4c 100644
--- a/content/browser/service_worker/service_worker_version.cc
+++ b/content/browser/service_worker/service_worker_version.cc
@@ -235,6 +235,8 @@
     : version_id_(version_id),
       registration_id_(registration->id()),
       script_url_(script_url),
+      // Safe to convert GURL to Origin because service workers are restricted
+      // to secure contexts.
       script_origin_(url::Origin::Create(script_url_)),
       scope_(registration->scope()),
       script_type_(script_type),
@@ -371,8 +373,8 @@
   DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
   ServiceWorkerVersionInfo info(
       running_status(), status(), fetch_handler_existence(), script_url(),
-      registration_id(), version_id(), embedded_worker()->process_id(),
-      embedded_worker()->thread_id(),
+      script_origin(), registration_id(), version_id(),
+      embedded_worker()->process_id(), embedded_worker()->thread_id(),
       embedded_worker()->worker_devtools_agent_route_id());
   for (const auto& controllee : controllee_map_) {
     const ServiceWorkerProviderHost* host = controllee.second;
@@ -1180,6 +1182,15 @@
     return;
   }
 
+  if (!url.is_valid() ||
+      !url::Origin::Create(url).IsSameOriginWith(script_origin_)) {
+    mojo::ReportBadMessage(
+        "Received PaymentRequestEvent#openWindow() request for a cross-origin "
+        "URL.");
+    receiver_.reset();
+    return;
+  }
+
   PaymentHandlerSupport::ShowPaymentHandlerWindow(
       url, context_.get(),
       base::BindOnce(&DidShowPaymentHandlerWindow, url, context_),
@@ -1640,10 +1651,9 @@
 
   params->provider_info = std::move(provider_info);
 
-  embedded_worker_->Start(
-      std::move(params),
-      base::BindOnce(&ServiceWorkerVersion::OnStartSent,
-                     weak_factory_.GetWeakPtr()));
+  embedded_worker_->Start(std::move(params),
+                          base::BindOnce(&ServiceWorkerVersion::OnStartSent,
+                                         weak_factory_.GetWeakPtr()));
 }
 
 void ServiceWorkerVersion::StartTimeoutTimer() {
@@ -1835,8 +1845,7 @@
   message.append(".");
   OnReportException(base::UTF8ToUTF16(message), -1, -1, GURL());
   DVLOG(1) << message;
-  UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.TimeoutPhase",
-                            phase,
+  UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.TimeoutPhase", phase,
                             EmbeddedWorkerInstance::STARTING_PHASE_MAX_VALUE);
 }
 
diff --git a/content/browser/service_worker/service_worker_version.h b/content/browser/service_worker/service_worker_version.h
index 8002d38..360f98d 100644
--- a/content/browser/service_worker/service_worker_version.h
+++ b/content/browser/service_worker/service_worker_version.h
@@ -537,6 +537,11 @@
     return redundant_state_callstack_;
   }
 
+  mojo::AssociatedReceiver<blink::mojom::ServiceWorkerHost>&
+  service_worker_host_receiver_for_testing() {
+    return receiver_;
+  }
+
  private:
   friend class base::RefCounted<ServiceWorkerVersion>;
   friend class EmbeddedWorkerInstanceTest;
diff --git a/content/browser/site_per_process_hit_test_browsertest.cc b/content/browser/site_per_process_hit_test_browsertest.cc
index 2cea7191..1b42c32 100644
--- a/content/browser/site_per_process_hit_test_browsertest.cc
+++ b/content/browser/site_per_process_hit_test_browsertest.cc
@@ -3319,6 +3319,75 @@
   EXPECT_TRUE(d_frame_monitor.EventWasReceived());
 }
 
+// Verify that when mouse capture is released after dragging to a cross-process
+// frame, a special MouseMove is sent to the new frame to cause the cursor
+// to update.
+IN_PROC_BROWSER_TEST_P(SitePerProcessHitTestBrowserTest,
+                       CrossProcessMouseMoveAfterCaptureRelease) {
+  GURL main_url(embedded_test_server()->GetURL(
+      "a.com", "/cross_site_iframe_factory.html?a(b)"));
+  EXPECT_TRUE(NavigateToURL(shell(), main_url));
+
+  // It is safe to obtain the root frame tree node here, as it doesn't change.
+  FrameTreeNode* root =
+      static_cast<WebContentsImpl*>(web_contents())->GetFrameTree()->root();
+  ASSERT_EQ(1U, root->child_count());
+
+  FrameTreeNode* child_node = root->child_at(0);
+  EXPECT_EQ(
+      " Site A ------------ proxies for B\n"
+      "   +--Site B ------- proxies for A\n"
+      "Where A = http://a.com/\n"
+      "      B = http://b.com/",
+      DepictFrameTree(root));
+
+  // Create listeners for mouse events.
+  RenderWidgetHostMouseEventMonitor main_frame_monitor(
+      root->current_frame_host()->GetRenderWidgetHost());
+  RenderWidgetHostMouseEventMonitor child_frame_monitor(
+      child_node->current_frame_host()->GetRenderWidgetHost());
+
+  RenderWidgetHostViewBase* root_view = static_cast<RenderWidgetHostViewBase*>(
+      root->current_frame_host()->GetRenderWidgetHost()->GetView());
+  RenderWidgetHostViewBase* child_view = static_cast<RenderWidgetHostViewBase*>(
+      child_node->current_frame_host()->GetRenderWidgetHost()->GetView());
+
+  WaitForHitTestData(child_node->current_frame_host());
+
+  RenderWidgetHostInputEventRouter* router =
+      web_contents()->GetInputEventRouter();
+  scoped_refptr<SetMouseCaptureInterceptor> child_interceptor =
+      new SetMouseCaptureInterceptor(static_cast<RenderWidgetHostImpl*>(
+          child_node->current_frame_host()->GetRenderWidgetHost()));
+
+  // Send MouseDown to child frame to initiate capture.
+  DispatchMouseEventAndWaitUntilDispatch(web_contents(), child_view,
+                                         gfx::PointF(5.0, 5.0), child_view,
+                                         gfx::PointF(5.0, 5.0));
+
+  child_interceptor->Wait();
+  EXPECT_TRUE(child_interceptor->Capturing());
+
+  EXPECT_FALSE(main_frame_monitor.EventWasReceived());
+  EXPECT_TRUE(child_frame_monitor.EventWasReceived());
+  main_frame_monitor.ResetEventReceived();
+  child_frame_monitor.ResetEventReceived();
+
+  // Send MouseUp to location over parent frame, which should still go to
+  // the child frame, but the parent frame should receive a MouseMove with
+  // the kRelativeMotionEvent modifier set.
+  blink::WebMouseEvent mouse_event;
+  mouse_event.SetType(blink::WebInputEvent::kMouseUp);
+  mouse_event.SetModifiers(blink::WebInputEvent::kNoModifiers);
+  SetWebEventPositions(&mouse_event, gfx::Point(2, 2), root_view);
+  RouteMouseEventAndWaitUntilDispatch(router, root_view, child_view,
+                                      &mouse_event);
+  EXPECT_TRUE(main_frame_monitor.EventWasReceived());
+  EXPECT_TRUE(child_frame_monitor.EventWasReceived());
+  EXPECT_TRUE(main_frame_monitor.event().GetModifiers() &
+              blink::WebInputEvent::Modifiers::kRelativeMotionEvent);
+}
+
 // Verify that mouse capture works on a RenderWidgetHostView level.
 // This test checks that a MouseDown triggers mouse capture when it hits
 // a scrollbar thumb or a subframe, and does not trigger mouse
diff --git a/content/public/browser/BUILD.gn b/content/public/browser/BUILD.gn
index acdb1d3c..36cf6041 100644
--- a/content/public/browser/BUILD.gn
+++ b/content/public/browser/BUILD.gn
@@ -213,6 +213,8 @@
     "native_file_system_permission_context.h",
     "native_file_system_permission_grant.cc",
     "native_file_system_permission_grant.h",
+    "native_file_system_write_item.cc",
+    "native_file_system_write_item.h",
     "native_web_keyboard_event.h",
     "navigation_controller.cc",
     "navigation_controller.h",
diff --git a/content/public/browser/download_manager.h b/content/public/browser/download_manager.h
index 78eb41c..d7355b8 100644
--- a/content/public/browser/download_manager.h
+++ b/content/public/browser/download_manager.h
@@ -51,11 +51,6 @@
 
 class GURL;
 
-namespace download {
-struct DownloadCreateInfo;
-class DownloadURLLoaderFactoryGetter;
-}  // namespace download
-
 namespace content {
 
 class BrowserContext;
@@ -114,18 +109,6 @@
     virtual ~Observer() {}
   };
 
-  // Called by a download source (Currently DownloadResourceHandler)
-  // to initiate the non-source portions of a download.
-  // If the DownloadCreateInfo specifies an id, that id will be used.
-  // If |url_loader_factory_getter| is provided, it can be used to issue
-  // parallel download requests.
-  virtual void StartDownload(
-      std::unique_ptr<download::DownloadCreateInfo> info,
-      std::unique_ptr<download::InputStream> stream,
-      scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-          url_loader_factory_getter,
-      const download::DownloadUrlParameters::OnStartedCallback& on_started) = 0;
-
   // Remove downloads whose URLs match the |url_filter| and are within
   // the given time constraints - after remove_begin (inclusive) and before
   // remove_end (exclusive). You may pass in null Time values to do an unbounded
diff --git a/content/public/browser/native_file_system_permission_context.h b/content/public/browser/native_file_system_permission_context.h
index 1a924a3..b5a36b0 100644
--- a/content/public/browser/native_file_system_permission_context.h
+++ b/content/public/browser/native_file_system_permission_context.h
@@ -7,6 +7,7 @@
 
 #include "base/files/file_path.h"
 #include "content/public/browser/native_file_system_permission_grant.h"
+#include "content/public/browser/native_file_system_write_item.h"
 #include "url/origin.h"
 
 namespace content {
@@ -93,6 +94,15 @@
       int frame_id,
       base::OnceCallback<void(SensitiveDirectoryResult)> callback) = 0;
 
+  enum class SafeBrowsingResult { kAllow, kBlock };
+  // Runs a recently finished write operation through Safe Browsing code to
+  // determine if the write should be allowed or blocked.
+  virtual void PerformSafeBrowsingChecks(
+      std::unique_ptr<NativeFileSystemWriteItem> item,
+      int process_id,
+      int frame_id,
+      base::OnceCallback<void(SafeBrowsingResult)> callback) = 0;
+
  protected:
   virtual ~NativeFileSystemPermissionContext() = default;
 };
diff --git a/content/public/browser/native_file_system_write_item.cc b/content/public/browser/native_file_system_write_item.cc
new file mode 100644
index 0000000..eb3958bb
--- /dev/null
+++ b/content/public/browser/native_file_system_write_item.cc
@@ -0,0 +1,12 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/public/browser/native_file_system_write_item.h"
+
+namespace content {
+
+NativeFileSystemWriteItem::NativeFileSystemWriteItem() = default;
+NativeFileSystemWriteItem::~NativeFileSystemWriteItem() = default;
+
+}  // namespace content
diff --git a/content/public/browser/native_file_system_write_item.h b/content/public/browser/native_file_system_write_item.h
new file mode 100644
index 0000000..39276260
--- /dev/null
+++ b/content/public/browser/native_file_system_write_item.h
@@ -0,0 +1,56 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_PUBLIC_BROWSER_NATIVE_FILE_SYSTEM_WRITE_ITEM_H_
+#define CONTENT_PUBLIC_BROWSER_NATIVE_FILE_SYSTEM_WRITE_ITEM_H_
+
+#include <cstdint>
+#include <string>
+
+#include "base/files/file_path.h"
+#include "content/common/content_export.h"
+#include "url/gurl.h"
+#include "url/origin.h"
+
+namespace content {
+class BrowserContext;
+class WebContents;
+
+// Represents the state of a NativeFileSystemFileWriter when it is closed,
+// containing all the data necessary to do a safe browsing download protection
+// check on the data written to disk.
+struct CONTENT_EXPORT NativeFileSystemWriteItem {
+  NativeFileSystemWriteItem();
+  ~NativeFileSystemWriteItem();
+  NativeFileSystemWriteItem(const NativeFileSystemWriteItem&) = delete;
+  NativeFileSystemWriteItem& operator=(const NativeFileSystemWriteItem&) =
+      delete;
+
+  // The path on disk where the data will eventually end up.
+  base::FilePath target_file_path;
+  // The path on disk where the data was written to. If the safe browsing check
+  // completes the file at |full_path| will be moved to |target_file_path|.
+  base::FilePath full_path;
+  // SHA256 hash of the file contents.
+  std::string sha256_hash;
+  // Size of the file in bytes.
+  int64_t size = 0;
+
+  // URL of the frame in which the write operation took place.
+  GURL frame_url;
+  // True iff the frame had a transient user activation when the writer was
+  // created.
+  bool has_user_gesture = false;
+
+  // BrowserContext and WebContents the writer is associated with. These fields
+  // can be nullptr when calling
+  // NativeFileSystemPermissionContext::PerformSafeBrowsingChecks(), in which
+  // case they will be filled by that method.
+  WebContents* web_contents = nullptr;
+  BrowserContext* browser_context = nullptr;
+};
+
+}  // namespace content
+
+#endif  // CONTENT_PUBLIC_BROWSER_NATIVE_FILE_SYSTEM_WRITE_ITEM_H_
diff --git a/content/public/test/mock_download_manager.cc b/content/public/test/mock_download_manager.cc
index 96fd08f..0cb92ef 100644
--- a/content/public/test/mock_download_manager.cc
+++ b/content/public/test/mock_download_manager.cc
@@ -5,7 +5,6 @@
 #include "content/public/test/mock_download_manager.h"
 
 #include "components/download/public/common/download_create_info.h"
-#include "components/download/public/common/download_url_loader_factory_getter.h"
 #include "content/browser/byte_stream.h"
 
 namespace content {
@@ -113,15 +112,6 @@
 
 MockDownloadManager::~MockDownloadManager() {}
 
-void MockDownloadManager::StartDownload(
-    std::unique_ptr<download::DownloadCreateInfo> info,
-    std::unique_ptr<download::InputStream> stream,
-    scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-        url_loader_factory_getter,
-    const download::DownloadUrlParameters::OnStartedCallback& callback) {
-  MockStartDownload(info.get(), stream.get());
-}
-
 download::DownloadItem* MockDownloadManager::CreateDownloadItem(
     const std::string& guid,
     uint32_t id,
diff --git a/content/public/test/mock_download_manager.h b/content/public/test/mock_download_manager.h
index 6b9ba1dd..80ca49f5 100644
--- a/content/public/test/mock_download_manager.h
+++ b/content/public/test/mock_download_manager.h
@@ -102,17 +102,6 @@
   MOCK_METHOD0(Shutdown, void());
   MOCK_METHOD1(GetAllDownloads, void(DownloadVector* downloads));
   MOCK_METHOD1(Init, bool(BrowserContext* browser_context));
-
-  // Gasket for handling scoped_ptr arguments.
-  void StartDownload(std::unique_ptr<download::DownloadCreateInfo> info,
-                     std::unique_ptr<download::InputStream> stream,
-                     scoped_refptr<download::DownloadURLLoaderFactoryGetter>
-                         url_loader_factory_getter,
-                     const download::DownloadUrlParameters::OnStartedCallback&
-                         callback) override;
-
-  MOCK_METHOD2(MockStartDownload,
-               void(download::DownloadCreateInfo*, download::InputStream*));
   MOCK_METHOD3(RemoveDownloadsByURLAndTime,
                int(const base::Callback<bool(const GURL&)>& url_filter,
                    base::Time remove_begin,
diff --git a/content/public/test/service_worker_host_interceptor.cc b/content/public/test/service_worker_host_interceptor.cc
new file mode 100644
index 0000000..eacf173
--- /dev/null
+++ b/content/public/test/service_worker_host_interceptor.cc
@@ -0,0 +1,94 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/public/test/service_worker_host_interceptor.h"
+
+#include <utility>
+
+#include "base/callback.h"
+#include "base/location.h"
+#include "base/run_loop.h"
+#include "content/browser/service_worker/service_worker_context_wrapper.h"
+#include "content/browser/service_worker/service_worker_version.h"
+#include "content/public/browser/browser_context.h"
+#include "content/public/browser/storage_partition.h"
+
+namespace content {
+
+ServiceWorkerHostInterceptor::ServiceWorkerHostInterceptor() = default;
+
+ServiceWorkerHostInterceptor::~ServiceWorkerHostInterceptor() = default;
+
+blink::ServiceWorkerStatusCode
+ServiceWorkerHostInterceptor::InterceptServiceWorkerHostWithScope(
+    BrowserContext* browser_context,
+    const GURL& scope,
+    int* service_worker_process_id_out) {
+  base::RunLoop run_loop;
+  scoped_refptr<ServiceWorkerContextWrapper> context =
+      static_cast<ServiceWorkerContextWrapper*>(
+          BrowserContext::GetDefaultStoragePartition(browser_context)
+              ->GetServiceWorkerContext());
+  BrowserThread::ID run_done_thread;
+  bool is_known_thread =
+      BrowserThread::GetCurrentThreadIdentifier(&run_done_thread);
+  DCHECK(is_known_thread);
+  RunOrPostTaskOnThread(
+      FROM_HERE, ServiceWorkerContext::GetCoreThreadId(),
+      base::BindOnce(&ServiceWorkerHostInterceptor::
+                         FindRegistrationOnServiceWorkerCoreThread,
+                     base::Unretained(this), context, scope, run_done_thread,
+                     run_loop.QuitClosure()));
+  run_loop.Run();
+  *service_worker_process_id_out = service_worker_process_id_;
+  return status_;
+}
+
+bool ServiceWorkerHostInterceptor::WillOpenPaymentHandlerWindow(GURL* url) {
+  return true;
+}
+
+blink::mojom::ServiceWorkerHost*
+ServiceWorkerHostInterceptor::GetForwardingInterface() {
+  return service_worker_version_;
+}
+
+void ServiceWorkerHostInterceptor::OpenPaymentHandlerWindow(
+    const GURL& url,
+    OpenPaymentHandlerWindowCallback callback) {
+  GURL url_copy = url;
+  if (WillOpenPaymentHandlerWindow(&url_copy)) {
+    GetForwardingInterface()->OpenPaymentHandlerWindow(url_copy,
+                                                       std::move(callback));
+  }
+}
+
+void ServiceWorkerHostInterceptor::FindRegistrationOnServiceWorkerCoreThread(
+    scoped_refptr<ServiceWorkerContextWrapper> context,
+    const GURL& scope,
+    BrowserThread::ID run_done_thread,
+    base::OnceClosure done) {
+  context->FindRegistrationForScope(
+      scope,
+      base::BindOnce(&ServiceWorkerHostInterceptor::
+                         OnFoundRegistrationOnServiceWorkerCoreThread,
+                     base::Unretained(this), run_done_thread, std::move(done)));
+}
+
+void ServiceWorkerHostInterceptor::OnFoundRegistrationOnServiceWorkerCoreThread(
+    BrowserThread::ID run_done_thread,
+    base::OnceClosure done,
+    blink::ServiceWorkerStatusCode status,
+    scoped_refptr<ServiceWorkerRegistration> registration) {
+  status_ = status;
+  service_worker_version_ = registration->active_version();
+  service_worker_process_id_ =
+      service_worker_version_->embedded_worker()->process_id();
+  forwarding_interface_ =
+      service_worker_version_->service_worker_host_receiver_for_testing()
+          .SwapImplForTesting(this);
+  RunOrPostTaskOnThread(FROM_HERE, run_done_thread, std::move(done));
+}
+
+}  // namespace content
diff --git a/content/public/test/service_worker_host_interceptor.h b/content/public/test/service_worker_host_interceptor.h
new file mode 100644
index 0000000..7232334
--- /dev/null
+++ b/content/public/test/service_worker_host_interceptor.h
@@ -0,0 +1,82 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_PUBLIC_TEST_SERVICE_WORKER_HOST_INTERCEPTOR_H_
+#define CONTENT_PUBLIC_TEST_SERVICE_WORKER_HOST_INTERCEPTOR_H_
+
+#include "base/callback_forward.h"
+#include "base/macros.h"
+#include "base/memory/scoped_refptr.h"
+#include "content/public/browser/browser_thread.h"
+#include "third_party/blink/public/common/service_worker/service_worker_status_code.h"
+#include "third_party/blink/public/mojom/service_worker/service_worker.mojom-test-utils.h"
+#include "third_party/blink/public/mojom/service_worker/service_worker.mojom.h"
+
+class GURL;
+
+namespace content {
+
+class BrowserContext;
+class ServiceWorkerContextWrapper;
+class ServiceWorkerRegistration;
+class ServiceWorkerVersion;
+
+// Allows intercepting calls to mojom::ServiceWorkerHost (e.g.
+// OpenPaymentHandlerWindow) just before they are dispatched to the
+// implementation. This enables browser tests to alter the parameters.
+class ServiceWorkerHostInterceptor
+    : public blink::mojom::ServiceWorkerHostInterceptorForTesting {
+ public:
+  ServiceWorkerHostInterceptor();
+  ~ServiceWorkerHostInterceptor() override;
+
+  // Looks for the service worker with the |scope| and starts intercepting calls
+  // to its mojom::ServiceWorkerHost. Blocks while looking up the service worker
+  // information on the "service worker core" thread.
+  //
+  // On success, sets |service_worker_process_id_out| to the identifier of the
+  // process of the service worker, which can be used to observe process
+  // shutdown, and returns blink::ServiceWorkerStatusCode::kOk.
+  blink::ServiceWorkerStatusCode InterceptServiceWorkerHostWithScope(
+      BrowserContext* browser_context,
+      const GURL& scope,
+      int* service_worker_process_id_out);
+
+  // This method can be overridden to change the |url| of the payment handler
+  // window or to prevent the OpenPaymentHandlerWindow call from going through
+  // by returning false. By default, this method does not modify the |url| and
+  // returns true.
+  virtual bool WillOpenPaymentHandlerWindow(GURL* url);
+
+ private:
+  // mojom::ServiceWorkerHostInterceptorForTesting:
+  blink::mojom::ServiceWorkerHost* GetForwardingInterface() override;
+  void OpenPaymentHandlerWindow(
+      const GURL& url,
+      OpenPaymentHandlerWindowCallback callback) override;
+
+  void FindRegistrationOnServiceWorkerCoreThread(
+      scoped_refptr<ServiceWorkerContextWrapper> context,
+      const GURL& scope,
+      BrowserThread::ID run_done_thread,
+      base::OnceClosure done);
+
+  void OnFoundRegistrationOnServiceWorkerCoreThread(
+      BrowserThread::ID run_done_thread,
+      base::OnceClosure done,
+      blink::ServiceWorkerStatusCode status,
+      scoped_refptr<ServiceWorkerRegistration> registration);
+
+  blink::ServiceWorkerStatusCode status_ =
+      blink::ServiceWorkerStatusCode::kErrorFailed;
+  int service_worker_process_id_ = -1;
+  ServiceWorkerVersion* service_worker_version_ = nullptr;
+  blink::mojom::ServiceWorkerHost* forwarding_interface_ = nullptr;
+
+  DISALLOW_COPY_AND_ASSIGN(ServiceWorkerHostInterceptor);
+};
+
+}  // namespace content
+
+#endif  // CONTENT_PUBLIC_TEST_SERVICE_WORKER_HOST_INTERCEPTOR_H_
diff --git a/content/renderer/input/input_target_client_impl.cc b/content/renderer/input/input_target_client_impl.cc
index 3704cc4e..c5b1dd9 100644
--- a/content/renderer/input/input_target_client_impl.cc
+++ b/content/renderer/input/input_target_client_impl.cc
@@ -12,15 +12,15 @@
 namespace content {
 
 InputTargetClientImpl::InputTargetClientImpl(RenderFrameImpl* render_frame)
-    : render_frame_(render_frame), binding_(this) {}
+    : render_frame_(render_frame) {}
 
 InputTargetClientImpl::~InputTargetClientImpl() {}
 
-void InputTargetClientImpl::BindToRequest(
-    viz::mojom::InputTargetClientRequest request) {
-  DCHECK(!binding_.is_bound());
-  binding_.Bind(std::move(request), render_frame_->GetTaskRunner(
-                                        blink::TaskType::kInternalDefault));
+void InputTargetClientImpl::BindToReceiver(
+    mojo::PendingReceiver<viz::mojom::InputTargetClient> receiver) {
+  DCHECK(!receiver_.is_bound());
+  receiver_.Bind(std::move(receiver), render_frame_->GetTaskRunner(
+                                          blink::TaskType::kInternalDefault));
 }
 
 void InputTargetClientImpl::FrameSinkIdAt(const gfx::PointF& point,
diff --git a/content/renderer/input/input_target_client_impl.h b/content/renderer/input/input_target_client_impl.h
index 4a9fc70..4db6ca0 100644
--- a/content/renderer/input/input_target_client_impl.h
+++ b/content/renderer/input/input_target_client_impl.h
@@ -5,7 +5,7 @@
 #ifndef CONTENT_RENDERER_INPUT_INPUT_TARGET_CLIENT_IMPL_H_
 #define CONTENT_RENDERER_INPUT_INPUT_TARGET_CLIENT_IMPL_H_
 
-#include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/receiver.h"
 #include "services/viz/public/mojom/hit_test/input_target_client.mojom.h"
 
 namespace content {
@@ -18,7 +18,8 @@
   explicit InputTargetClientImpl(RenderFrameImpl* render_frame);
   ~InputTargetClientImpl() override;
 
-  void BindToRequest(viz::mojom::InputTargetClientRequest request);
+  void BindToReceiver(
+      mojo::PendingReceiver<viz::mojom::InputTargetClient> receiver);
 
   // viz::mojom::InputTargetClient:
   void FrameSinkIdAt(const gfx::PointF& point,
@@ -28,7 +29,7 @@
  private:
   RenderFrameImpl* const render_frame_;
 
-  mojo::Binding<viz::mojom::InputTargetClient> binding_;
+  mojo::Receiver<viz::mojom::InputTargetClient> receiver_{this};
 
   DISALLOW_COPY_AND_ASSIGN(InputTargetClientImpl);
 };
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 4e37ab3..b9731cf8 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -7462,7 +7462,7 @@
       &FrameInputHandlerImpl::CreateMojoService, weak_factory_.GetWeakPtr()));
 
   registry_.AddInterface(
-      base::BindRepeating(&InputTargetClientImpl::BindToRequest,
+      base::BindRepeating(&InputTargetClientImpl::BindToReceiver,
                           base::Unretained(&input_target_client_impl_)));
 
   registry_.AddInterface(base::BindRepeating(&RenderFrameImpl::BindWidget,
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
index 5b056c72..c9a02e3d 100644
--- a/content/test/BUILD.gn
+++ b/content/test/BUILD.gn
@@ -165,6 +165,8 @@
     "../public/test/render_view_test.h",
     "../public/test/scoped_overscroll_modes.cc",
     "../public/test/scoped_overscroll_modes.h",
+    "../public/test/service_worker_host_interceptor.cc",
+    "../public/test/service_worker_host_interceptor.h",
     "../public/test/service_worker_test_helpers.cc",
     "../public/test/service_worker_test_helpers.h",
     "../public/test/signed_exchange_browser_test_helper.cc",
diff --git a/content/test/data/accessibility/aria/aria-contentinfo-expected-android.txt b/content/test/data/accessibility/aria/aria-contentinfo-expected-android.txt
index b27e2440..0c7d874e 100644
--- a/content/test/data/accessibility/aria/aria-contentinfo-expected-android.txt
+++ b/content/test/data/accessibility/aria/aria-contentinfo-expected-android.txt
@@ -1,2 +1,2 @@
 android.webkit.WebView focusable focused scrollable
-++android.view.View role_description='content info' name='This is ARIA role contentinfo.'
\ No newline at end of file
+++android.view.View role_description='content information' name='This is ARIA role contentinfo.'
\ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-contentinfo-expected-uia-win.txt b/content/test/data/accessibility/aria/aria-contentinfo-expected-uia-win.txt
new file mode 100644
index 0000000..99519c3c
--- /dev/null
+++ b/content/test/data/accessibility/aria/aria-contentinfo-expected-uia-win.txt
@@ -0,0 +1,3 @@
+document
+++contentinfo LocalizedControlType='content information' LocalizedLandmarkType='content information'
+++++description Name='This is ARIA role contentinfo.'
diff --git a/content/test/data/accessibility/aria/aria-contentinfo-expected-win.txt b/content/test/data/accessibility/aria/aria-contentinfo-expected-win.txt
index 2071e6d..6583f9a 100644
--- a/content/test/data/accessibility/aria/aria-contentinfo-expected-win.txt
+++ b/content/test/data/accessibility/aria/aria-contentinfo-expected-win.txt
@@ -1,3 +1,3 @@
 ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE
-++IA2_ROLE_LANDMARK xml-roles:contentinfo
+++IA2_ROLE_LANDMARK xml-roles:contentinfo localized_extended_role='content information'
 ++++ROLE_SYSTEM_STATICTEXT name='This is ARIA role contentinfo.'
\ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-contentinfo.html b/content/test/data/accessibility/aria/aria-contentinfo.html
index 637ddc3..a8fde58 100644
--- a/content/test/data/accessibility/aria/aria-contentinfo.html
+++ b/content/test/data/accessibility/aria/aria-contentinfo.html
@@ -2,6 +2,9 @@
 @MAC-ALLOW:AXRole=*
 @MAC-ALLOW:AXSubrole=*
 @MAC-ALLOW:AXRoleDescription=*
+@UIA-WIN-ALLOW:LocalizedControlType='content information'
+@UIA-WIN-ALLOW:LocalizedLandmarkType='content information'
+@WIN-ALLOW:localized_extended_role='content information'
 @WIN-ALLOW:xml-roles:*
 @AURALINUX-ALLOW:xml-roles:*
 -->
diff --git a/content/test/data/accessibility/html/footer-expected-uia-win.txt b/content/test/data/accessibility/html/footer-expected-uia-win.txt
index 2cb67be..061970c20 100644
--- a/content/test/data/accessibility/html/footer-expected-uia-win.txt
+++ b/content/test/data/accessibility/html/footer-expected-uia-win.txt
@@ -1,3 +1,3 @@
 document
-++contentinfo
+++contentinfo LocalizedLandmarkType='content information'
 ++++description Name='Footer element'
diff --git a/content/test/data/accessibility/html/footer.html b/content/test/data/accessibility/html/footer.html
index 4087ce2..b5e12d9 100644
--- a/content/test/data/accessibility/html/footer.html
+++ b/content/test/data/accessibility/html/footer.html
@@ -1,6 +1,7 @@
 <!--
 @MAC-ALLOW:AXRole*
 @MAC-ALLOW:AXSubrole*
+@UIA-WIN-ALLOW:LocalizedLandmarkType='content information'
 @WIN-ALLOW:xml-roles:*
 @AURALINUX-ALLOW:xml-roles:*
 -->
diff --git a/content/test/data/accessibility/html/landmark-expected-android.txt b/content/test/data/accessibility/html/landmark-expected-android.txt
index 8dd34dd..da18dadd 100644
--- a/content/test/data/accessibility/html/landmark-expected-android.txt
+++ b/content/test/data/accessibility/html/landmark-expected-android.txt
@@ -9,7 +9,7 @@
 ++android.view.View role_description='application' name='This is an ARIA application landmark.'
 ++android.view.View role_description='banner' name='This is an ARIA banner landmark.'
 ++android.view.View role_description='complementary' name='This is an ARIA complementary landmark.'
-++android.view.View role_description='content info' name='This is an ARIA contentinfo landmark.'
+++android.view.View role_description='content information' name='This is an ARIA contentinfo landmark.'
 ++android.view.View name='This is an ARIA form landmark.'
 ++android.view.View role_description='main' name='This is an ARIA main landmark.'
 ++android.view.View role_description='navigation' name='This is an ARIA navigation landmark.'
diff --git a/device/bluetooth/chromeos/bluetooth_utils_unittest.cc b/device/bluetooth/chromeos/bluetooth_utils_unittest.cc
index 9341d422..4681935 100644
--- a/device/bluetooth/chromeos/bluetooth_utils_unittest.cc
+++ b/device/bluetooth/chromeos/bluetooth_utils_unittest.cc
@@ -71,8 +71,8 @@
     EXPECT_EQ(num_expected_remaining_devices, filtered_device_list.size());
   }
 
-  void EnableAggressiveAppearanceFilter() {
-    feature_list_.InitAndEnableFeature(
+  void DisableAggressiveAppearanceFilter() {
+    feature_list_.InitAndDisableFeature(
         chromeos::features::kBluetoothAggressiveAppearanceFilter);
   }
 
@@ -180,8 +180,6 @@
 TEST_F(
     BluetoothUtilsTest,
     TestFilterBluetoothDeviceList_FilterKnown_KeepDualDevicesWithNamesAndAppearances) {
-  EnableAggressiveAppearanceFilter();
-
   auto* mock_bluetooth_device =
       AddMockBluetoothDeviceToAdapter(BLUETOOTH_TRANSPORT_DUAL);
   EXPECT_CALL(*mock_bluetooth_device, GetDeviceType)
@@ -194,6 +192,8 @@
 TEST_F(
     BluetoothUtilsTest,
     TestFilterBluetoothDeviceList_FilterKnown_DualDevicesWithoutAppearances_KeepWithFilterFlagDisabled) {
+  DisableAggressiveAppearanceFilter();
+
   AddMockBluetoothDeviceToAdapter(BLUETOOTH_TRANSPORT_DUAL);
 
   VerifyFilterBluetoothDeviceList(BluetoothFilterType::KNOWN,
@@ -203,8 +203,6 @@
 TEST_F(
     BluetoothUtilsTest,
     TestFilterBluetoothDeviceList_FilterKnown_DualDevicesWithoutAppearances_RemoveWithFilterFlagEnabled) {
-  EnableAggressiveAppearanceFilter();
-
   AddMockBluetoothDeviceToAdapter(BLUETOOTH_TRANSPORT_DUAL);
 
   VerifyFilterBluetoothDeviceList(BluetoothFilterType::KNOWN,
@@ -214,6 +212,8 @@
 TEST_F(
     BluetoothUtilsTest,
     TestFilterBluetoothDeviceList_FilterKnown_AppearanceComputer_KeepWithFilterFlagDisabled) {
+  DisableAggressiveAppearanceFilter();
+
   auto* mock_bluetooth_device =
       AddMockBluetoothDeviceToAdapter(BLUETOOTH_TRANSPORT_CLASSIC);
   ON_CALL(*mock_bluetooth_device, GetDeviceType)
@@ -226,8 +226,6 @@
 TEST_F(
     BluetoothUtilsTest,
     TestFilterBluetoothDeviceList_FilterKnown_AppearanceComputer_RemoveWithFilterFlagEnabled) {
-  EnableAggressiveAppearanceFilter();
-
   auto* mock_bluetooth_device_1 =
       AddMockBluetoothDeviceToAdapter(BLUETOOTH_TRANSPORT_CLASSIC);
   EXPECT_CALL(*mock_bluetooth_device_1, GetDeviceType)
diff --git a/device/vr/BUILD.gn b/device/vr/BUILD.gn
index 9d89f93..cf71125 100644
--- a/device/vr/BUILD.gn
+++ b/device/vr/BUILD.gn
@@ -28,6 +28,8 @@
       "util/sample_queue.h",
       "util/sliding_average.cc",
       "util/sliding_average.h",
+      "util/transform_utils.cc",
+      "util/transform_utils.h",
       "util/xr_standard_gamepad_builder.cc",
       "util/xr_standard_gamepad_builder.h",
       "vr_device.h",
@@ -69,6 +71,8 @@
         "android/gvr/gvr_gamepad_data_fetcher.cc",
         "android/gvr/gvr_gamepad_data_fetcher.h",
         "android/gvr/gvr_gamepad_data_provider.h",
+        "android/gvr/gvr_utils.cc",
+        "android/gvr/gvr_utils.h",
       ]
 
       if (enable_arcore) {
diff --git a/device/vr/android/gvr/gvr_delegate.cc b/device/vr/android/gvr/gvr_delegate.cc
index 45b5dac..9b596da 100644
--- a/device/vr/android/gvr/gvr_delegate.cc
+++ b/device/vr/android/gvr/gvr_delegate.cc
@@ -5,6 +5,7 @@
 #include "device/vr/android/gvr/gvr_delegate.h"
 
 #include "base/trace_event/trace_event.h"
+#include "device/vr/android/gvr/gvr_utils.h"
 #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/gvr.h"
 #include "ui/gfx/geometry/vector3d_f.h"
 #include "ui/gfx/transform.h"
@@ -22,13 +23,6 @@
 // less than a frame.
 static constexpr int64_t kAngularVelocityEpsilonNanos = 1000000;
 
-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]);
-}
-
 gfx::Vector3dF GetAngularVelocityFromPoses(gfx::Transform head_mat,
                                            gfx::Transform head_mat_2,
                                            double epsilon_seconds) {
@@ -117,7 +111,7 @@
   gvr::Mat4f head_mat = gvr_api->ApplyNeckModel(
       gvr_api->GetHeadSpaceFromStartSpaceRotation(target_time), 1.0f);
 
-  GvrMatToTransform(head_mat, out);
+  gvr_utils::GvrMatToTransform(head_mat, out);
 }
 
 /* static */
@@ -141,7 +135,7 @@
   gfx::Transform head_mat;
   if (!head_mat_ptr)
     head_mat_ptr = &head_mat;
-  GvrMatToTransform(gvr_head_mat, head_mat_ptr);
+  gvr_utils::GvrMatToTransform(gvr_head_mat, head_mat_ptr);
 
   mojom::VRPosePtr pose = GvrDelegate::VRPosePtrFromGvrPose(*head_mat_ptr);
 
@@ -150,7 +144,7 @@
   gvr::Mat4f gvr_head_mat_2 =
       gvr_api->GetHeadSpaceFromStartSpaceRotation(target_time);
   gfx::Transform head_mat_2;
-  GvrMatToTransform(gvr_head_mat_2, &head_mat_2);
+  gvr_utils::GvrMatToTransform(gvr_head_mat_2, &head_mat_2);
 
   // Add headset angular velocity to the pose.
   double epsilon_seconds = kAngularVelocityEpsilonNanos * 1e-9;
diff --git a/device/vr/android/gvr/gvr_device.cc b/device/vr/android/gvr/gvr_device.cc
index 6afd2fd..084f186 100644
--- a/device/vr/android/gvr/gvr_device.cc
+++ b/device/vr/android/gvr/gvr_device.cc
@@ -18,6 +18,7 @@
 #include "device/vr/android/gvr/gvr_delegate_provider.h"
 #include "device/vr/android/gvr/gvr_delegate_provider_factory.h"
 #include "device/vr/android/gvr/gvr_device_provider.h"
+#include "device/vr/android/gvr/gvr_utils.h"
 #include "device/vr/jni_headers/NonPresentingGvrContext_jni.h"
 #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/gvr.h"
 #include "ui/gfx/geometry/rect_f.h"
@@ -86,8 +87,14 @@
   eye_params->field_of_view->right_degrees = eye_fov.right;
 
   gvr::Mat4f eye_mat = gvr_api->GetEyeFromHeadMatrix(eye);
-  eye_params->offset =
-      gfx::Vector3dF(-eye_mat.m[0][3], -eye_mat.m[1][3], -eye_mat.m[2][3]);
+  gfx::Transform eye_from_head;
+  gvr_utils::GvrMatToTransform(eye_mat, &eye_from_head);
+  DCHECK(eye_from_head.IsInvertible());
+  gfx::Transform head_from_eye;
+  if (eye_from_head.GetInverse(&head_from_eye)) {
+    eye_params->head_from_eye = head_from_eye;
+  }
+
   return eye_params;
 }
 
diff --git a/device/vr/android/gvr/gvr_utils.cc b/device/vr/android/gvr/gvr_utils.cc
new file mode 100644
index 0000000..973e994d
--- /dev/null
+++ b/device/vr/android/gvr/gvr_utils.cc
@@ -0,0 +1,20 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "device/vr/android/gvr/gvr_utils.h"
+
+#include "ui/gfx/transform.h"
+
+namespace device {
+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]);
+}
+
+}  // namespace gvr_utils
+}  // namespace device
diff --git a/device/vr/android/gvr/gvr_utils.h b/device/vr/android/gvr/gvr_utils.h
new file mode 100644
index 0000000..151a080
--- /dev/null
+++ b/device/vr/android/gvr/gvr_utils.h
@@ -0,0 +1,22 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef DEVICE_VR_ANDROID_GVR_GVR_UTILS_H_
+#define DEVICE_VR_ANDROID_GVR_GVR_UTILS_H_
+
+#include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/gvr_types.h"
+
+namespace gfx {
+class Transform;
+}  // namespace gfx
+
+namespace device {
+namespace gvr_utils {
+
+void GvrMatToTransform(const gvr::Mat4f& in, gfx::Transform* out);
+
+}  // namespace gvr_utils
+}  // namespace device
+
+#endif  // DEVICE_VR_ANDROID_GVR_GVR_UTILS_H_
diff --git a/device/vr/oculus/oculus_device.cc b/device/vr/oculus/oculus_device.cc
index 2cf7031..9f15d2e 100644
--- a/device/vr/oculus/oculus_device.cc
+++ b/device/vr/oculus/oculus_device.cc
@@ -15,6 +15,7 @@
 #include "build/build_config.h"
 #include "device/vr/oculus/oculus_render_loop.h"
 #include "device/vr/oculus/oculus_type_converters.h"
+#include "device/vr/util/transform_utils.h"
 #include "third_party/libovr/src/Include/OVR_CAPI.h"
 #include "third_party/libovr/src/Include/OVR_CAPI_D3D.h"
 #include "ui/gfx/geometry/angle_conversions.h"
@@ -39,8 +40,13 @@
   eye_parameters->field_of_view->right_degrees =
       gfx::RadToDeg(atanf(render_desc.Fov.RightTan));
 
+  // TODO(crbug.com/999353): Query eye-to-head transform from the device and use
+  // that instead of just building a transformation matrix from the translation
+  // component. This requireds updating libovr to v1.25 because v1.16 doesn't
+  // have HmdToEyePose (tracked by crbug.com/999355).
   auto offset = render_desc.HmdToEyeOffset;
-  eye_parameters->offset = gfx::Vector3dF(offset.x, offset.y, offset.z);
+  eye_parameters->head_from_eye =
+      vr_utils::MakeTranslationTransform(offset.x, offset.y, offset.z);
 
   auto texture_size =
       ovr_GetFovTextureSize(session, eye, render_desc.Fov, 1.0f);
diff --git a/device/vr/openvr/openvr_device.cc b/device/vr/openvr/openvr_device.cc
index 138161d..8110ff3 100644
--- a/device/vr/openvr/openvr_device.cc
+++ b/device/vr/openvr/openvr_device.cc
@@ -30,7 +30,6 @@
 
 namespace {
 
-constexpr float kDefaultIPD = 0.06f;  // Default average IPD.
 constexpr base::TimeDelta kPollingInterval =
     base::TimeDelta::FromSecondsD(0.25);
 
@@ -61,6 +60,13 @@
   // clang-format on
 }
 
+// OpenVR uses A_to_B convention for naming transformation matrices, but we pass
+// matrices through mojo using the B_from_A naming convention since that what
+// blink uses.
+gfx::Transform HeadFromEyeTransform(vr::IVRSystem* vr_system, vr::Hmd_Eye eye) {
+  return HmdMatrix34ToTransform(vr_system->GetEyeToHeadTransform(eye));
+}
+
 mojom::VRDisplayInfoPtr CreateVRDisplayInfo(vr::IVRSystem* vr_system,
                                             device::mojom::XRDeviceId id) {
   mojom::VRDisplayInfoPtr display_info = mojom::VRDisplayInfo::New();
@@ -83,15 +89,8 @@
   left_eye->field_of_view = OpenVRFovToWebVRFov(vr_system, vr::Eye_Left);
   right_eye->field_of_view = OpenVRFovToWebVRFov(vr_system, vr::Eye_Right);
 
-  vr::TrackedPropertyError error = vr::TrackedProp_Success;
-  float ipd = vr_system->GetFloatTrackedDeviceProperty(
-      vr::k_unTrackedDeviceIndex_Hmd, vr::Prop_UserIpdMeters_Float, &error);
-
-  if (error != vr::TrackedProp_Success)
-    ipd = kDefaultIPD;
-
-  left_eye->offset = gfx::Vector3dF(-ipd * 0.5, 0.0, 0.0);
-  right_eye->offset = gfx::Vector3dF(ipd * 0.5, 0.0, 0.0);
+  left_eye->head_from_eye = HeadFromEyeTransform(vr_system, vr::Eye_Left);
+  right_eye->head_from_eye = HeadFromEyeTransform(vr_system, vr::Eye_Right);
 
   uint32_t width, height;
   vr_system->GetRecommendedRenderTargetSize(&width, &height);
diff --git a/device/vr/openxr/openxr_device.cc b/device/vr/openxr/openxr_device.cc
index ec72024..2983f9ce 100644
--- a/device/vr/openxr/openxr_device.cc
+++ b/device/vr/openxr/openxr_device.cc
@@ -9,6 +9,7 @@
 #include "base/bind_helpers.h"
 #include "device/vr/openxr/openxr_api_wrapper.h"
 #include "device/vr/openxr/openxr_render_loop.h"
+#include "device/vr/util/transform_utils.h"
 
 namespace device {
 
@@ -22,14 +23,10 @@
 
 constexpr float kFramebufferScale = 1.0f;
 constexpr float kFov = 45.0f;
-constexpr float kInterpupillaryDistance = 0.1f;  // 10cm
 
 constexpr unsigned int kRenderWidth = 1024;
 constexpr unsigned int kRenderHeight = 1024;
 
-constexpr gfx::Vector3dF kLeftOffset = {-kInterpupillaryDistance * 0.5, 0, 0};
-constexpr gfx::Vector3dF kRightOffset = {kInterpupillaryDistance * 0.5, 0, 0};
-
 constexpr float kStageSizeX = 0.0f;
 constexpr float kStageSizeZ = 0.0f;
 // OpenXR doesn't give out display info until you start a session.
@@ -58,8 +55,10 @@
   display_info->right_eye->field_of_view =
       display_info->left_eye->field_of_view.Clone();
 
-  display_info->left_eye->offset = kLeftOffset;
-  display_info->right_eye->offset = kRightOffset;
+  display_info->left_eye->head_from_eye =
+      vr_utils::DefaultHeadFromLeftEyeTransform();
+  display_info->right_eye->head_from_eye =
+      vr_utils::DefaultHeadFromRightEyeTransform();
 
   display_info->left_eye->render_width = kRenderWidth;
   display_info->left_eye->render_height = kRenderHeight;
diff --git a/device/vr/openxr/openxr_render_loop.cc b/device/vr/openxr/openxr_render_loop.cc
index 888a0468..442e5cb8 100644
--- a/device/vr/openxr/openxr_render_loop.cc
+++ b/device/vr/openxr/openxr_render_loop.cc
@@ -8,6 +8,7 @@
 
 #include "device/vr/openxr/openxr_api_wrapper.h"
 #include "device/vr/openxr/openxr_gamepad_helper.h"
+#include "device/vr/util/transform_utils.h"
 
 namespace device {
 
@@ -226,12 +227,15 @@
                                  mojom::VREyeParametersPtr* eye) const {
   bool changed = false;
 
-  gfx::Vector3dF offset = gfx::Vector3dF(view.pose.position.x - center.x(),
-                                         view.pose.position.y - center.y(),
-                                         view.pose.position.z - center.z());
+  // TODO(crbug.com/999573): Query eye-to-head transform from the device and use
+  // that instead of just building a transformation matrix from the translation
+  // component.
+  gfx::Transform head_from_eye = vr_utils::MakeTranslationTransform(
+      view.pose.position.x - center.x(), view.pose.position.y - center.y(),
+      view.pose.position.z - center.z());
 
-  if ((*eye)->offset != offset) {
-    (*eye)->offset = offset;
+  if ((*eye)->head_from_eye != head_from_eye) {
+    (*eye)->head_from_eye = head_from_eye;
     changed = true;
   }
 
diff --git a/device/vr/public/mojom/vr_service.mojom b/device/vr/public/mojom/vr_service.mojom
index f12fd04..4cdeb02 100644
--- a/device/vr/public/mojom/vr_service.mojom
+++ b/device/vr/public/mojom/vr_service.mojom
@@ -216,7 +216,13 @@
 // Information about the optical properties for an eye in a VRDisplay.
 struct VREyeParameters {
   VRFieldOfView field_of_view;
-  gfx.mojom.Vector3dF offset;
+
+  // Describes the relationship between the head and eye space for this device.
+  // It should always include translation that is based on IPD (interpupillary
+  // distance), and will sometimes include rotation if the device has angled
+  // screens.
+  gfx.mojom.Transform head_from_eye;
+
   uint32 render_width;
   uint32 render_height;
 };
diff --git a/device/vr/test/fake_vr_device.cc b/device/vr/test/fake_vr_device.cc
index 3eb2eaf..9567c1c 100644
--- a/device/vr/test/fake_vr_device.cc
+++ b/device/vr/test/fake_vr_device.cc
@@ -4,6 +4,8 @@
 
 #include "device/vr/test/fake_vr_device.h"
 
+#include "ui/gfx/transform_util.h"
+
 namespace device {
 
 FakeVRDevice::FakeVRDevice(mojom::XRDeviceId id)
@@ -39,7 +41,9 @@
   eye->field_of_view->left_degrees = fov;
   eye->field_of_view->right_degrees = fov;
 
-  eye->offset = gfx::Vector3dF(offset, 0.0f, 0.0f);
+  gfx::DecomposedTransform decomp;
+  decomp.translate[0] = offset;
+  eye->head_from_eye = gfx::ComposeTransform(decomp);
 
   eye->render_width = size;
   eye->render_height = size;
diff --git a/device/vr/util/transform_utils.cc b/device/vr/util/transform_utils.cc
new file mode 100644
index 0000000..c6a80e8
--- /dev/null
+++ b/device/vr/util/transform_utils.cc
@@ -0,0 +1,38 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "device/vr/util/transform_utils.h"
+
+#include "ui/gfx/geometry/vector3d_f.h"
+#include "ui/gfx/transform.h"
+#include "ui/gfx/transform_util.h"
+
+namespace device {
+namespace vr_utils {
+
+gfx::Transform MakeTranslationTransform(float x, float y, float z) {
+  gfx::DecomposedTransform decomp;
+  decomp.translate[0] = x;
+  decomp.translate[1] = y;
+  decomp.translate[2] = z;
+  return gfx::ComposeTransform(decomp);
+}
+
+gfx::Transform MakeTranslationTransform(const gfx::Vector3dF& translation) {
+  return MakeTranslationTransform(translation.x(), translation.y(),
+                                  translation.z());
+}
+
+constexpr float kDefaultIPD = 0.1f;  // 10cm
+
+gfx::Transform DefaultHeadFromLeftEyeTransform() {
+  return MakeTranslationTransform(-kDefaultIPD * 0.5, 0, 0);
+}
+
+gfx::Transform DefaultHeadFromRightEyeTransform() {
+  return MakeTranslationTransform(kDefaultIPD * 0.5, 0, 0);
+}
+
+}  // namespace vr_utils
+}  // namespace device
diff --git a/device/vr/util/transform_utils.h b/device/vr/util/transform_utils.h
new file mode 100644
index 0000000..d78e4b4
--- /dev/null
+++ b/device/vr/util/transform_utils.h
@@ -0,0 +1,24 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef DEVICE_VR_UTIL_TRANSFORM_UTILS_H_
+#define DEVICE_VR_UTIL_TRANSFORM_UTILS_H_
+
+namespace gfx {
+class Transform;
+class Vector3dF;
+}  // namespace gfx
+
+namespace device {
+namespace vr_utils {
+
+gfx::Transform MakeTranslationTransform(float x, float y, float z);
+gfx::Transform MakeTranslationTransform(const gfx::Vector3dF& translation);
+gfx::Transform DefaultHeadFromLeftEyeTransform();
+gfx::Transform DefaultHeadFromRightEyeTransform();
+
+}  // namespace vr_utils
+}  // namespace device
+
+#endif  // DEVICE_VR_UTIL_TRANSFORM_UTILS_H_
diff --git a/device/vr/windows_mixed_reality/mixed_reality_device.cc b/device/vr/windows_mixed_reality/mixed_reality_device.cc
index 5a330db..0ef4c48 100644
--- a/device/vr/windows_mixed_reality/mixed_reality_device.cc
+++ b/device/vr/windows_mixed_reality/mixed_reality_device.cc
@@ -13,6 +13,7 @@
 #include "base/numerics/math_constants.h"
 #include "base/threading/thread.h"
 #include "build/build_config.h"
+#include "device/vr/util/transform_utils.h"
 #include "device/vr/windows_mixed_reality/mixed_reality_renderloop.h"
 #include "ui/gfx/geometry/angle_conversions.h"
 
@@ -44,9 +45,8 @@
   left_eye->field_of_view = mojom::VRFieldOfView::New(45, 45, 45, 45);
   right_eye->field_of_view = mojom::VRFieldOfView::New(45, 45, 45, 45);
 
-  constexpr float interpupillary_distance = 0.1f;  // 10cm
-  left_eye->offset = {-interpupillary_distance * 0.5, 0, 0};
-  right_eye->offset = {interpupillary_distance * 0.5, 0, 0};
+  left_eye->head_from_eye = vr_utils::DefaultHeadFromLeftEyeTransform();
+  right_eye->head_from_eye = vr_utils::DefaultHeadFromRightEyeTransform();
 
   constexpr uint32_t width = 1024;
   constexpr uint32_t height = 1024;
diff --git a/device/vr/windows_mixed_reality/mixed_reality_renderloop.cc b/device/vr/windows_mixed_reality/mixed_reality_renderloop.cc
index c7cc71c..747221d 100644
--- a/device/vr/windows_mixed_reality/mixed_reality_renderloop.cc
+++ b/device/vr/windows_mixed_reality/mixed_reality_renderloop.cc
@@ -20,6 +20,7 @@
 #include "base/win/scoped_co_mem.h"
 #include "base/win/scoped_hstring.h"
 #include "device/vr/test/test_hook.h"
+#include "device/vr/util/transform_utils.h"
 #include "device/vr/windows/d3d11_texture_helper.h"
 #include "device/vr/windows_mixed_reality/mixed_reality_input_helper.h"
 #include "device/vr/windows_mixed_reality/mixed_reality_statics.h"
@@ -499,8 +500,8 @@
 
 struct PoseAndEyeTransform {
   mojom::VRPosePtr pose;
-  gfx::Vector3dF left_offset;
-  gfx::Vector3dF right_offset;
+  gfx::Transform head_from_left_eye;
+  gfx::Transform head_from_right_eye;
 };
 
 PoseAndEyeTransform GetStereoViewData(const HolographicStereoTransform& view) {
@@ -512,25 +513,25 @@
       (left_eye.eye_in_world_space.z() + right_eye.eye_in_world_space.z()) / 2);
 
   // We calculate the overal headset pose to be the slerp of per-eye poses as
-  // calculated by the view transform's decompositions.  Although this works, we
-  // should consider using per-eye rotation as well as translation for eye
-  // parameters. See https://crbug.com/928433 for a similar issue.
+  // calculated by the view transform's decompositions.
   gfx::Quaternion world_to_view_rotation = left_eye.world_to_eye_rotation;
   world_to_view_rotation.Slerp(right_eye.world_to_eye_rotation, 0.5f);
 
   // Calculate new eye offsets.
   PoseAndEyeTransform ret;
-  ret.left_offset = left_eye.eye_in_world_space - center;
-  ret.right_offset = right_eye.eye_in_world_space - center;
+  gfx::Vector3dF left_offset = left_eye.eye_in_world_space - center;
+  gfx::Vector3dF right_offset = right_eye.eye_in_world_space - center;
 
   gfx::Transform transform(world_to_view_rotation);  // World to view.
   transform.Transpose();                             // Now it is view to world.
 
-  transform.TransformVector(&(ret.left_offset));  // Offset is now in view space
-  transform.TransformVector(&(ret.right_offset));
-
-  // TODO(https://crbug.com/928433): We don't currently support per-eye rotation
-  // in the mojo interface, but we should.
+  // TODO(crbug.com/980791): Get the actual eye-to-head transforms instead of
+  // building them from just the translation components so that angled screens
+  // are handled properly.
+  transform.TransformVector(&left_offset);  // Offset is now in view space
+  transform.TransformVector(&right_offset);
+  ret.head_from_left_eye = vr_utils::MakeTranslationTransform(left_offset);
+  ret.head_from_right_eye = vr_utils::MakeTranslationTransform(right_offset);
 
   ret.pose = mojom::VRPose::New();
 
@@ -793,21 +794,21 @@
     PoseAndEyeTransform pose_and_eye_transform = GetStereoViewData(view);
     ret->pose = std::move(pose_and_eye_transform.pose);
 
-    if (current_display_info_->left_eye->offset !=
-            pose_and_eye_transform.left_offset ||
-        current_display_info_->right_eye->offset !=
-            pose_and_eye_transform.right_offset) {
-      current_display_info_->left_eye->offset =
-          std::move(pose_and_eye_transform.left_offset);
-      current_display_info_->right_eye->offset =
-          std::move(pose_and_eye_transform.right_offset);
+    if (current_display_info_->left_eye->head_from_eye !=
+            pose_and_eye_transform.head_from_left_eye ||
+        current_display_info_->right_eye->head_from_eye !=
+            pose_and_eye_transform.head_from_right_eye) {
+      current_display_info_->left_eye->head_from_eye =
+          std::move(pose_and_eye_transform.head_from_left_eye);
+      current_display_info_->right_eye->head_from_eye =
+          std::move(pose_and_eye_transform.head_from_right_eye);
       send_new_display_info = true;
     }
   } else {
     ret->pose = GetMonoViewData(view);
-    gfx::Vector3dF offset;
-    if (current_display_info_->left_eye->offset != offset) {
-      current_display_info_->left_eye->offset = offset;
+    gfx::Transform head_from_eye;
+    if (current_display_info_->left_eye->head_from_eye != head_from_eye) {
+      current_display_info_->left_eye->head_from_eye = head_from_eye;
       send_new_display_info = true;
     }
   }
diff --git a/docs/infra/cq_builders.md b/docs/infra/cq_builders.md
index 25974ead..73ba49c8 100644
--- a/docs/infra/cq_builders.md
+++ b/docs/infra/cq_builders.md
@@ -326,3 +326,9 @@
 
   * Experimental percentage: 10
 
+* [linux-chromeos-coverage-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux-chromeos-coverage-rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/linux-chromeos-coverage-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux-chromeos-coverage-rel))
+
+  https://crbug.com/1000367
+
+  * Experimental percentage: 3
+
diff --git a/extensions/browser/api/alarms/alarm_manager.cc b/extensions/browser/api/alarms/alarm_manager.cc
index 4129bb3..12db37d 100644
--- a/extensions/browser/api/alarms/alarm_manager.cc
+++ b/extensions/browser/api/alarms/alarm_manager.cc
@@ -19,7 +19,6 @@
 #include "base/values.h"
 #include "extensions/browser/api/alarms/alarms_api_constants.h"
 #include "extensions/browser/event_router.h"
-#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_factory.h"
 #include "extensions/browser/extension_system.h"
 #include "extensions/browser/state_store.h"
@@ -114,8 +113,7 @@
 AlarmManager::AlarmManager(content::BrowserContext* context)
     : browser_context_(context),
       clock_(base::DefaultClock::GetInstance()),
-      delegate_(new DefaultAlarmDelegate(context)),
-      extension_registry_observer_(this) {
+      delegate_(new DefaultAlarmDelegate(context)) {
   extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context_));
 
   StateStore* storage = ExtensionSystem::Get(browser_context_)->state_store();
diff --git a/extensions/browser/api/alarms/alarm_manager.h b/extensions/browser/api/alarms/alarm_manager.h
index ab84025..93b1481 100644
--- a/extensions/browser/api/alarms/alarm_manager.h
+++ b/extensions/browser/api/alarms/alarm_manager.h
@@ -17,6 +17,7 @@
 #include "base/scoped_observer.h"
 #include "base/timer/timer.h"
 #include "extensions/browser/browser_context_keyed_api_factory.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 #include "extensions/common/api/alarms.h"
 #include "extensions/common/extension_id.h"
@@ -31,7 +32,6 @@
 
 namespace extensions {
 class ExtensionAlarmsSchedulingTest;
-class ExtensionRegistry;
 
 struct Alarm {
   Alarm();
@@ -225,7 +225,7 @@
 
   // Listen to extension load notifications.
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
 
   // The timer for this alarm manager.
   base::OneShotTimer timer_;
diff --git a/extensions/browser/api/api_resource_manager.h b/extensions/browser/api/api_resource_manager.h
index 3141f848..ae047659 100644
--- a/extensions/browser/api/api_resource_manager.h
+++ b/extensions/browser/api/api_resource_manager.h
@@ -105,9 +105,7 @@
                            public ProcessManagerObserver {
  public:
   explicit ApiResourceManager(content::BrowserContext* context)
-      : data_(base::MakeRefCounted<ApiResourceData>()),
-        extension_registry_observer_(this),
-        process_manager_observer_(this) {
+      : data_(base::MakeRefCounted<ApiResourceData>()) {
     extension_registry_observer_.Add(ExtensionRegistry::Get(context));
     process_manager_observer_.Add(ProcessManager::Get(context));
   }
@@ -378,9 +376,9 @@
   scoped_refptr<ApiResourceData> data_;
 
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
   ScopedObserver<ProcessManager, ProcessManagerObserver>
-      process_manager_observer_;
+      process_manager_observer_{this};
 
   SEQUENCE_CHECKER(sequence_checker_);
 };
diff --git a/extensions/browser/api/bluetooth/bluetooth_event_router.cc b/extensions/browser/api/bluetooth/bluetooth_event_router.cc
index 88945ef1..9a7c13af 100644
--- a/extensions/browser/api/bluetooth/bluetooth_event_router.cc
+++ b/extensions/browser/api/bluetooth/bluetooth_event_router.cc
@@ -29,7 +29,6 @@
 #include "extensions/browser/api/bluetooth/bluetooth_private_api.h"
 #include "extensions/browser/event_router.h"
 #include "extensions/browser/extension_host.h"
-#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/notification_types.h"
 #include "extensions/common/api/bluetooth.h"
 #include "extensions/common/api/bluetooth_private.h"
@@ -57,9 +56,7 @@
 namespace bt_private = api::bluetooth_private;
 
 BluetoothEventRouter::BluetoothEventRouter(content::BrowserContext* context)
-    : browser_context_(context),
-      adapter_(nullptr),
-      extension_registry_observer_(this) {
+    : browser_context_(context), adapter_(nullptr) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   BLUETOOTH_LOG(USER) << "BluetoothEventRouter()";
   DCHECK(browser_context_);
diff --git a/extensions/browser/api/bluetooth/bluetooth_event_router.h b/extensions/browser/api/bluetooth/bluetooth_event_router.h
index 8dd778a..593a217 100644
--- a/extensions/browser/api/bluetooth/bluetooth_event_router.h
+++ b/extensions/browser/api/bluetooth/bluetooth_event_router.h
@@ -17,6 +17,7 @@
 #include "device/bluetooth/bluetooth_adapter.h"
 #include "device/bluetooth/bluetooth_adapter_factory.h"
 #include "extensions/browser/extension_event_histogram_value.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 #include "extensions/common/api/bluetooth.h"
 #include "extensions/common/api/bluetooth_private.h"
@@ -34,7 +35,6 @@
 
 namespace extensions {
 class BluetoothApiPairingDelegate;
-class ExtensionRegistry;
 struct EventListenerInfo;
 
 class BluetoothEventRouter : public device::BluetoothAdapter::Observer,
@@ -181,7 +181,7 @@
   content::NotificationRegistrar registrar_;
 
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
 
   base::WeakPtrFactory<BluetoothEventRouter> weak_ptr_factory_{this};
 
diff --git a/extensions/browser/api/bluetooth_low_energy/bluetooth_low_energy_event_router.cc b/extensions/browser/api/bluetooth_low_energy/bluetooth_low_energy_event_router.cc
index 926612a..e64c166c 100644
--- a/extensions/browser/api/bluetooth_low_energy/bluetooth_low_energy_event_router.cc
+++ b/extensions/browser/api/bluetooth_low_energy/bluetooth_low_energy_event_router.cc
@@ -29,7 +29,6 @@
 #include "extensions/browser/api/bluetooth_low_energy/utils.h"
 #include "extensions/browser/event_listener_map.h"
 #include "extensions/browser/event_router.h"
-#include "extensions/browser/extension_registry.h"
 #include "extensions/common/api/bluetooth/bluetooth_manifest_data.h"
 #include "extensions/common/extension.h"
 
@@ -237,10 +236,7 @@
 
 BluetoothLowEnergyEventRouter::BluetoothLowEnergyEventRouter(
     content::BrowserContext* context)
-    : adapter_(NULL),
-      last_callback_request_id_(0),
-      browser_context_(context),
-      extension_registry_observer_(this) {
+    : browser_context_(context) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   DCHECK(browser_context_);
   VLOG(1) << "Initializing BluetoothLowEnergyEventRouter.";
diff --git a/extensions/browser/api/bluetooth_low_energy/bluetooth_low_energy_event_router.h b/extensions/browser/api/bluetooth_low_energy/bluetooth_low_energy_event_router.h
index 7deb98e..5c4c975 100644
--- a/extensions/browser/api/bluetooth_low_energy/bluetooth_low_energy_event_router.h
+++ b/extensions/browser/api/bluetooth_low_energy/bluetooth_low_energy_event_router.h
@@ -26,6 +26,7 @@
 #include "device/bluetooth/bluetooth_remote_gatt_service.h"
 #include "device/bluetooth/public/cpp/bluetooth_uuid.h"
 #include "extensions/browser/extension_event_histogram_value.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 #include "extensions/common/api/bluetooth_low_energy.h"
 
@@ -55,7 +56,6 @@
 class BluetoothLowEnergyConnection;
 class BluetoothLowEnergyNotifySession;
 class Extension;
-class ExtensionRegistry;
 
 // The BluetoothLowEnergyEventRouter is used by the bluetoothLowEnergy API to
 // interface with the internal Bluetooth API in device/bluetooth.
@@ -573,7 +573,7 @@
   // requests.
   ExtensionToRequestsMap requests_;
   // The last request ID we used.
-  size_t last_callback_request_id_;
+  size_t last_callback_request_id_ = 0;
 
   // Map of locally hosted GATT service ids created by app_id. Used for cleanup.
   std::map<std::string, std::vector<std::string>> app_id_to_service_ids_;
@@ -583,7 +583,7 @@
 
   // Listen to extension unloaded notification.
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
 
   // Note: This should remain the last member so it'll be destroyed and
   // invalidate its weak pointers before any other members are destroyed.
diff --git a/extensions/browser/api/declarative/rules_registry_service.cc b/extensions/browser/api/declarative/rules_registry_service.cc
index de614d4..78d8eba39 100644
--- a/extensions/browser/api/declarative/rules_registry_service.cc
+++ b/extensions/browser/api/declarative/rules_registry_service.cc
@@ -20,7 +20,6 @@
 #include "extensions/browser/api/declarative_webrequest/webrequest_rules_registry.h"
 #include "extensions/browser/api/extensions_api_client.h"
 #include "extensions/browser/api/web_request/web_request_api.h"
-#include "extensions/browser/extension_registry.h"
 #include "extensions/common/extension.h"
 #include "extensions/common/features/feature.h"
 #include "extensions/common/features/feature_provider.h"
@@ -44,7 +43,6 @@
 RulesRegistryService::RulesRegistryService(content::BrowserContext* context)
     : current_rules_registry_id_(kDefaultRulesRegistryID),
       content_rules_registry_(NULL),
-      extension_registry_observer_(this),
       browser_context_(context) {
   if (browser_context_) {
     extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context_));
diff --git a/extensions/browser/api/declarative/rules_registry_service.h b/extensions/browser/api/declarative/rules_registry_service.h
index 77ca616..5d89ff4 100644
--- a/extensions/browser/api/declarative/rules_registry_service.h
+++ b/extensions/browser/api/declarative/rules_registry_service.h
@@ -17,6 +17,7 @@
 #include "extensions/browser/api/declarative/rules_cache_delegate.h"
 #include "extensions/browser/api/declarative/rules_registry.h"
 #include "extensions/browser/browser_context_keyed_api_factory.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 
 namespace content {
@@ -25,7 +26,6 @@
 
 namespace extensions {
 class ContentRulesRegistry;
-class ExtensionRegistry;
 }
 
 namespace extensions {
@@ -165,7 +165,7 @@
 
   // Listen to extension load, unloaded notification.
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
 
   content::BrowserContext* browser_context_;
 
diff --git a/extensions/browser/api/declarative_net_request/rules_monitor_service.cc b/extensions/browser/api/declarative_net_request/rules_monitor_service.cc
index ffac35c..604d6be 100644
--- a/extensions/browser/api/declarative_net_request/rules_monitor_service.cc
+++ b/extensions/browser/api/declarative_net_request/rules_monitor_service.cc
@@ -26,7 +26,6 @@
 #include "extensions/browser/extension_file_task_runner.h"
 #include "extensions/browser/extension_prefs.h"
 #include "extensions/browser/extension_prefs_factory.h"
-#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_factory.h"
 #include "extensions/browser/warning_service.h"
 #include "extensions/browser/warning_service_factory.h"
@@ -145,8 +144,7 @@
 
 RulesMonitorService::RulesMonitorService(
     content::BrowserContext* browser_context)
-    : registry_observer_(this),
-      file_sequence_bridge_(std::make_unique<FileSequenceBridge>()),
+    : file_sequence_bridge_(std::make_unique<FileSequenceBridge>()),
       prefs_(ExtensionPrefs::Get(browser_context)),
       extension_registry_(ExtensionRegistry::Get(browser_context)),
       warning_service_(WarningService::Get(browser_context)),
diff --git a/extensions/browser/api/declarative_net_request/rules_monitor_service.h b/extensions/browser/api/declarative_net_request/rules_monitor_service.h
index 1349a41..2d3bc2d 100644
--- a/extensions/browser/api/declarative_net_request/rules_monitor_service.h
+++ b/extensions/browser/api/declarative_net_request/rules_monitor_service.h
@@ -17,6 +17,7 @@
 #include "base/scoped_observer.h"
 #include "extensions/browser/api/declarative_net_request/ruleset_manager.h"
 #include "extensions/browser/browser_context_keyed_api_factory.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 #include "extensions/common/extension_id.h"
 
@@ -26,7 +27,6 @@
 
 namespace extensions {
 class ExtensionPrefs;
-class ExtensionRegistry;
 class WarningService;
 
 namespace api {
@@ -118,7 +118,7 @@
                      std::unique_ptr<RulesetMatcher> ruleset_matcher);
 
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      registry_observer_;
+      registry_observer_{this};
 
   std::set<ExtensionId> extensions_with_rulesets_;
 
diff --git a/extensions/browser/api/idle/idle_manager.cc b/extensions/browser/api/idle/idle_manager.cc
index 8b82b48..df63f46 100644
--- a/extensions/browser/api/idle/idle_manager.cc
+++ b/extensions/browser/api/idle/idle_manager.cc
@@ -10,7 +10,6 @@
 #include "content/public/browser/browser_context.h"
 #include "extensions/browser/api/idle/idle_api_constants.h"
 #include "extensions/browser/event_router.h"
-#include "extensions/browser/extension_registry.h"
 #include "extensions/common/api/idle.h"
 #include "extensions/common/extension.h"
 
@@ -124,8 +123,7 @@
     : context_(context),
       last_state_(ui::IDLE_STATE_ACTIVE),
       idle_time_provider_(new DefaultIdleProvider()),
-      event_delegate_(new DefaultEventDelegate(context)),
-      extension_registry_observer_(this) {}
+      event_delegate_(new DefaultEventDelegate(context)) {}
 
 IdleManager::~IdleManager() {
 }
diff --git a/extensions/browser/api/idle/idle_manager.h b/extensions/browser/api/idle/idle_manager.h
index 766180c..9ab7de7 100644
--- a/extensions/browser/api/idle/idle_manager.h
+++ b/extensions/browser/api/idle/idle_manager.h
@@ -16,6 +16,7 @@
 #include "base/timer/timer.h"
 #include "components/keyed_service/core/keyed_service.h"
 #include "extensions/browser/event_router.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 #include "ui/base/idle/idle.h"
 
@@ -28,7 +29,6 @@
 }  // namespace content
 
 namespace extensions {
-class ExtensionRegistry;
 
 struct IdleMonitor {
   explicit IdleMonitor(ui::IdleState initial_state);
@@ -138,7 +138,7 @@
 
   // Listen to extension unloaded notification.
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
 
   DISALLOW_COPY_AND_ASSIGN(IdleManager);
 };
diff --git a/extensions/browser/api/lock_screen_data/lock_screen_item_storage.cc b/extensions/browser/api/lock_screen_data/lock_screen_item_storage.cc
index 9eaf2e9..0df643e1 100644
--- a/extensions/browser/api/lock_screen_data/lock_screen_item_storage.cc
+++ b/extensions/browser/api/lock_screen_data/lock_screen_item_storage.cc
@@ -22,7 +22,6 @@
 #include "extensions/browser/api/storage/backend_task_runner.h"
 #include "extensions/browser/api/storage/local_value_store_cache.h"
 #include "extensions/browser/event_router.h"
-#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extensions_browser_client.h"
 #include "extensions/browser/value_store/value_store.h"
 #include "extensions/browser/value_store/value_store_factory_impl.h"
@@ -141,7 +140,6 @@
       crypto_key_(crypto_key),
       local_state_(local_state),
       tick_clock_(base::DefaultTickClock::GetInstance()),
-      extension_registry_observer_(this),
       value_store_cache_(CreateValueStoreCache(storage_root.Append(user_id_))) {
   CHECK(!user_id_.empty());
   extension_registry_observer_.Add(ExtensionRegistry::Get(context));
diff --git a/extensions/browser/api/lock_screen_data/lock_screen_item_storage.h b/extensions/browser/api/lock_screen_data/lock_screen_item_storage.h
index 14e210d3..a5a4721 100644
--- a/extensions/browser/api/lock_screen_data/lock_screen_item_storage.h
+++ b/extensions/browser/api/lock_screen_data/lock_screen_item_storage.h
@@ -18,6 +18,7 @@
 #include "base/scoped_observer.h"
 #include "base/sequenced_task_runner.h"
 #include "extensions/browser/api/lock_screen_data/data_item.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 #include "extensions/common/extension_id.h"
 
@@ -35,7 +36,6 @@
 namespace extensions {
 
 class Extension;
-class ExtensionRegistry;
 class LocalValueStoreCache;
 
 namespace lock_screen_data {
@@ -310,7 +310,7 @@
   SessionLockedState session_locked_state_ = SessionLockedState::kUnknown;
 
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
 
   // The deprecated (shared) lock screen data value store cache. Items in this
   // value store should be migrated to |value_store_cache_|.
diff --git a/extensions/browser/api/management/management_api.cc b/extensions/browser/api/management/management_api.cc
index d1af375..4a47609 100644
--- a/extensions/browser/api/management/management_api.cc
+++ b/extensions/browser/api/management/management_api.cc
@@ -990,7 +990,7 @@
 }
 
 ManagementEventRouter::ManagementEventRouter(content::BrowserContext* context)
-    : browser_context_(context), extension_registry_observer_(this) {
+    : browser_context_(context) {
   extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context_));
 }
 
diff --git a/extensions/browser/api/management/management_api.h b/extensions/browser/api/management/management_api.h
index d51007f..16e66b9 100644
--- a/extensions/browser/api/management/management_api.h
+++ b/extensions/browser/api/management/management_api.h
@@ -291,7 +291,7 @@
   content::BrowserContext* browser_context_;
 
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
 
   DISALLOW_COPY_AND_ASSIGN(ManagementEventRouter);
 };
diff --git a/extensions/browser/api/media_perception_private/media_perception_api_manager.cc b/extensions/browser/api/media_perception_private/media_perception_api_manager.cc
index b1f3d85..26a2f48 100644
--- a/extensions/browser/api/media_perception_private/media_perception_api_manager.cc
+++ b/extensions/browser/api/media_perception_private/media_perception_api_manager.cc
@@ -12,7 +12,6 @@
 #include "base/files/file_path.h"
 #include "base/lazy_instance.h"
 #include "chromeos/dbus/dbus_thread_manager.h"
-#include "chromeos/dbus/media_analytics/media_analytics_client.h"
 #include "chromeos/dbus/upstart/upstart_client.h"
 #include "extensions/browser/api/extensions_api_client.h"
 #include "extensions/browser/api/media_perception_private/conversion_utils.h"
@@ -130,8 +129,7 @@
 MediaPerceptionAPIManager::MediaPerceptionAPIManager(
     content::BrowserContext* context)
     : browser_context_(context),
-      analytics_process_state_(AnalyticsProcessState::IDLE),
-      scoped_observer_(this) {
+      analytics_process_state_(AnalyticsProcessState::IDLE) {
   scoped_observer_.Add(chromeos::MediaAnalyticsClient::Get());
 }
 
diff --git a/extensions/browser/api/media_perception_private/media_perception_api_manager.h b/extensions/browser/api/media_perception_private/media_perception_api_manager.h
index a30d706..b288bd4 100644
--- a/extensions/browser/api/media_perception_private/media_perception_api_manager.h
+++ b/extensions/browser/api/media_perception_private/media_perception_api_manager.h
@@ -158,8 +158,9 @@
   std::unique_ptr<MediaPerceptionControllerClient>
       media_perception_controller_client_;
 
-  ScopedObserver<chromeos::MediaAnalyticsClient, MediaPerceptionAPIManager>
-      scoped_observer_;
+  ScopedObserver<chromeos::MediaAnalyticsClient,
+                 chromeos::MediaAnalyticsClient::Observer>
+      scoped_observer_{this};
   base::WeakPtrFactory<MediaPerceptionAPIManager> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(MediaPerceptionAPIManager);
diff --git a/extensions/browser/api/networking_config/networking_config_service.cc b/extensions/browser/api/networking_config/networking_config_service.cc
index fa84db2..c5a36b0 100644
--- a/extensions/browser/api/networking_config/networking_config_service.cc
+++ b/extensions/browser/api/networking_config/networking_config_service.cc
@@ -67,13 +67,11 @@
     std::unique_ptr<EventDelegate> event_delegate,
     ExtensionRegistry* extension_registry)
     : browser_context_(browser_context),
-      registry_observer_(this),
       event_delegate_(std::move(event_delegate)) {
   registry_observer_.Add(extension_registry);
 }
 
-NetworkingConfigService::~NetworkingConfigService() {
-}
+NetworkingConfigService::~NetworkingConfigService() = default;
 
 void NetworkingConfigService::OnExtensionUnloaded(
     content::BrowserContext* browser_context,
diff --git a/extensions/browser/api/networking_config/networking_config_service.h b/extensions/browser/api/networking_config/networking_config_service.h
index dd94dbe..bb579a9 100644
--- a/extensions/browser/api/networking_config/networking_config_service.h
+++ b/extensions/browser/api/networking_config/networking_config_service.h
@@ -133,7 +133,7 @@
   base::Closure authentication_callback_;
 
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      registry_observer_;
+      registry_observer_{this};
 
   std::unique_ptr<EventDelegate> event_delegate_;
 
diff --git a/extensions/browser/api/printer_provider/printer_provider_api.cc b/extensions/browser/api/printer_provider/printer_provider_api.cc
index f626365..2c748ea8 100644
--- a/extensions/browser/api/printer_provider/printer_provider_api.cc
+++ b/extensions/browser/api/printer_provider/printer_provider_api.cc
@@ -302,10 +302,10 @@
       pending_usb_printer_info_requests_;
 
   ScopedObserver<PrinterProviderInternalAPI, PrinterProviderInternalAPIObserver>
-      internal_api_observer_;
+      internal_api_observer_{this};
 
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
 
   DISALLOW_COPY_AND_ASSIGN(PrinterProviderAPIImpl);
 };
@@ -503,9 +503,7 @@
 
 PrinterProviderAPIImpl::PrinterProviderAPIImpl(
     content::BrowserContext* browser_context)
-    : browser_context_(browser_context),
-      internal_api_observer_(this),
-      extension_registry_observer_(this) {
+    : browser_context_(browser_context) {
   internal_api_observer_.Add(
       PrinterProviderInternalAPI::GetFactoryInstance()->Get(browser_context));
   extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context));
diff --git a/extensions/browser/api/runtime/runtime_api.cc b/extensions/browser/api/runtime/runtime_api.cc
index 78ba73c7..d8f9d8f 100644
--- a/extensions/browser/api/runtime/runtime_api.cc
+++ b/extensions/browser/api/runtime/runtime_api.cc
@@ -27,7 +27,6 @@
 #include "extensions/browser/events/lazy_event_dispatch_util.h"
 #include "extensions/browser/extension_host.h"
 #include "extensions/browser/extension_prefs.h"
-#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_system.h"
 #include "extensions/browser/extension_util.h"
 #include "extensions/browser/extensions_browser_client.h"
@@ -179,8 +178,6 @@
 
 RuntimeAPI::RuntimeAPI(content::BrowserContext* context)
     : browser_context_(context),
-      extension_registry_observer_(this),
-      process_manager_observer_(this),
       minimum_duration_between_restarts_(base::TimeDelta::FromHours(
           kMinDurationBetweenSuccessiveRestartsHours)),
       dispatch_chrome_updated_event_(false),
diff --git a/extensions/browser/api/runtime/runtime_api.h b/extensions/browser/api/runtime/runtime_api.h
index 3dcda83a..bb06f62 100644
--- a/extensions/browser/api/runtime/runtime_api.h
+++ b/extensions/browser/api/runtime/runtime_api.h
@@ -16,6 +16,7 @@
 #include "extensions/browser/browser_context_keyed_api_factory.h"
 #include "extensions/browser/events/lazy_event_dispatch_util.h"
 #include "extensions/browser/extension_function.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 #include "extensions/browser/lazy_context_task_queue.h"
 #include "extensions/browser/process_manager.h"
@@ -149,9 +150,9 @@
 
   // Listen to extension notifications.
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
   ScopedObserver<ProcessManager, ProcessManagerObserver>
-      process_manager_observer_;
+      process_manager_observer_{this};
 
   // The ID of the first extension to call the restartAfterDelay API. Any other
   // extensions to call this API after that will fail.
diff --git a/extensions/browser/app_window/app_window_geometry_cache.cc b/extensions/browser/app_window/app_window_geometry_cache.cc
index 57db19c9..28cc2ad3 100644
--- a/extensions/browser/app_window/app_window_geometry_cache.cc
+++ b/extensions/browser/app_window/app_window_geometry_cache.cc
@@ -14,7 +14,6 @@
 #include "components/keyed_service/content/browser_context_dependency_manager.h"
 #include "extensions/browser/extension_prefs.h"
 #include "extensions/browser/extension_prefs_factory.h"
-#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extensions_browser_client.h"
 #include "extensions/common/extension.h"
 
@@ -31,8 +30,7 @@
 AppWindowGeometryCache::AppWindowGeometryCache(content::BrowserContext* context,
                                                ExtensionPrefs* prefs)
     : prefs_(prefs),
-      sync_delay_(base::TimeDelta::FromMilliseconds(kSyncTimeoutMilliseconds)),
-      extension_registry_observer_(this) {
+      sync_delay_(base::TimeDelta::FromMilliseconds(kSyncTimeoutMilliseconds)) {
   extension_registry_observer_.Add(ExtensionRegistry::Get(context));
 }
 
diff --git a/extensions/browser/app_window/app_window_geometry_cache.h b/extensions/browser/app_window/app_window_geometry_cache.h
index a0b6b6f8..6fe525b 100644
--- a/extensions/browser/app_window/app_window_geometry_cache.h
+++ b/extensions/browser/app_window/app_window_geometry_cache.h
@@ -20,6 +20,7 @@
 #include "base/values.h"
 #include "components/keyed_service/content/browser_context_keyed_service_factory.h"
 #include "components/keyed_service/core/keyed_service.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 #include "ui/base/ui_base_types.h"
 #include "ui/gfx/geometry/rect.h"
@@ -27,7 +28,6 @@
 namespace extensions {
 
 class ExtensionPrefs;
-class ExtensionRegistry;
 
 // A cache for persisted geometry of app windows, both to not have to wait
 // for IO when creating a new window, and to not cause IO on every window
@@ -149,7 +149,7 @@
 
   // Listen to extension load, unloaded notifications.
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
 
   base::ObserverList<Observer>::Unchecked observers_;
 };
diff --git a/extensions/browser/content_verifier.cc b/extensions/browser/content_verifier.cc
index a8c35d1..3cef80c7 100644
--- a/extensions/browser/content_verifier.cc
+++ b/extensions/browser/content_verifier.cc
@@ -26,7 +26,6 @@
 #include "extensions/browser/content_hash_reader.h"
 #include "extensions/browser/content_verifier_delegate.h"
 #include "extensions/browser/extension_file_task_runner.h"
-#include "extensions/browser/extension_registry.h"
 #include "extensions/common/constants.h"
 #include "extensions/common/extension_l10n_util.h"
 #include "extensions/common/file_util.h"
@@ -389,7 +388,7 @@
 ContentVerifier::ContentVerifier(
     content::BrowserContext* context,
     std::unique_ptr<ContentVerifierDelegate> delegate)
-    : context_(context), delegate_(std::move(delegate)), observer_(this) {}
+    : context_(context), delegate_(std::move(delegate)) {}
 
 ContentVerifier::~ContentVerifier() {
 }
diff --git a/extensions/browser/content_verifier.h b/extensions/browser/content_verifier.h
index 1c275b47..368c2bb 100644
--- a/extensions/browser/content_verifier.h
+++ b/extensions/browser/content_verifier.h
@@ -19,6 +19,7 @@
 #include "extensions/browser/content_verifier_delegate.h"
 #include "extensions/browser/content_verifier_io_data.h"
 #include "extensions/browser/content_verify_job.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 #include "services/network/public/cpp/shared_url_loader_factory.h"
 
@@ -180,7 +181,7 @@
   std::unique_ptr<ContentVerifierDelegate> delegate_;
 
   // For observing the ExtensionRegistry.
-  ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver> observer_;
+  ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver> observer_{this};
 
   // Data that should only be used on the IO thread.
   ContentVerifierIOData io_data_;
diff --git a/extensions/browser/declarative_user_script_manager.cc b/extensions/browser/declarative_user_script_manager.cc
index 48075a5f..84f7e266 100644
--- a/extensions/browser/declarative_user_script_manager.cc
+++ b/extensions/browser/declarative_user_script_manager.cc
@@ -7,13 +7,12 @@
 #include "content/public/browser/browser_context.h"
 #include "extensions/browser/declarative_user_script_manager_factory.h"
 #include "extensions/browser/declarative_user_script_master.h"
-#include "extensions/browser/extension_registry.h"
 
 namespace extensions {
 
 DeclarativeUserScriptManager::DeclarativeUserScriptManager(
     content::BrowserContext* browser_context)
-    : browser_context_(browser_context), extension_registry_observer_(this) {
+    : browser_context_(browser_context) {
   extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context));
 }
 
diff --git a/extensions/browser/declarative_user_script_manager.h b/extensions/browser/declarative_user_script_manager.h
index 83c481c..5ebed9f 100644
--- a/extensions/browser/declarative_user_script_manager.h
+++ b/extensions/browser/declarative_user_script_manager.h
@@ -10,6 +10,7 @@
 #include "base/macros.h"
 #include "base/scoped_observer.h"
 #include "components/keyed_service/core/keyed_service.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 #include "extensions/common/host_id.h"
 
@@ -57,7 +58,7 @@
   content::BrowserContext* browser_context_;
 
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
 
   DISALLOW_COPY_AND_ASSIGN(DeclarativeUserScriptManager);
 };
diff --git a/extensions/browser/event_router.cc b/extensions/browser/event_router.cc
index 3ce3d17d..96b9ab85 100644
--- a/extensions/browser/event_router.cc
+++ b/extensions/browser/event_router.cc
@@ -26,7 +26,6 @@
 #include "extensions/browser/events/lazy_event_dispatcher.h"
 #include "extensions/browser/extension_host.h"
 #include "extensions/browser/extension_prefs.h"
-#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_system.h"
 #include "extensions/browser/extensions_browser_client.h"
 #include "extensions/browser/process_manager.h"
@@ -168,8 +167,6 @@
                          ExtensionPrefs* extension_prefs)
     : browser_context_(browser_context),
       extension_prefs_(extension_prefs),
-      extension_registry_observer_(this),
-      listeners_(this),
       lazy_event_dispatch_util_(browser_context_) {
   extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context_));
 }
diff --git a/extensions/browser/event_router.h b/extensions/browser/event_router.h
index d709564..3b1f759 100644
--- a/extensions/browser/event_router.h
+++ b/extensions/browser/event_router.h
@@ -23,6 +23,7 @@
 #include "extensions/browser/events/event_ack_data.h"
 #include "extensions/browser/events/lazy_event_dispatch_util.h"
 #include "extensions/browser/extension_event_histogram_value.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 #include "extensions/browser/lazy_context_task_queue.h"
 #include "extensions/common/constants.h"
@@ -42,7 +43,6 @@
 namespace extensions {
 class Extension;
 class ExtensionPrefs;
-class ExtensionRegistry;
 
 struct Event;
 struct EventListenerInfo;
@@ -380,9 +380,9 @@
   ExtensionPrefs* const extension_prefs_;
 
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
 
-  EventListenerMap listeners_;
+  EventListenerMap listeners_{this};
 
   // Map from base event name to observer.
   using ObserverMap = std::unordered_map<std::string, Observer*>;
diff --git a/extensions/browser/events/lazy_event_dispatch_util.cc b/extensions/browser/events/lazy_event_dispatch_util.cc
index 83d3637..d0ab433 100644
--- a/extensions/browser/events/lazy_event_dispatch_util.cc
+++ b/extensions/browser/events/lazy_event_dispatch_util.cc
@@ -8,7 +8,6 @@
 #include "content/public/browser/browser_context.h"
 #include "extensions/browser/event_router.h"
 #include "extensions/browser/extension_prefs.h"
-#include "extensions/browser/extension_registry.h"
 
 namespace extensions {
 
@@ -27,7 +26,7 @@
 
 LazyEventDispatchUtil::LazyEventDispatchUtil(
     content::BrowserContext* browser_context)
-    : browser_context_(browser_context), extension_registry_observer_(this) {
+    : browser_context_(browser_context) {
   extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context_));
 }
 
diff --git a/extensions/browser/events/lazy_event_dispatch_util.h b/extensions/browser/events/lazy_event_dispatch_util.h
index 2606a73..3fe41e6 100644
--- a/extensions/browser/events/lazy_event_dispatch_util.h
+++ b/extensions/browser/events/lazy_event_dispatch_util.h
@@ -7,6 +7,7 @@
 
 #include "base/observer_list.h"
 #include "base/scoped_observer.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 #include "extensions/browser/uninstall_reason.h"
 
@@ -64,7 +65,7 @@
   content::BrowserContext* browser_context_;
   base::ObserverList<Observer>::Unchecked observers_;
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
 
   DISALLOW_COPY_AND_ASSIGN(LazyEventDispatchUtil);
 };
diff --git a/extensions/browser/extension_function_dispatcher.cc b/extensions/browser/extension_function_dispatcher.cc
index 96509e3..24b3892 100644
--- a/extensions/browser/extension_function_dispatcher.cc
+++ b/extensions/browser/extension_function_dispatcher.cc
@@ -210,9 +210,8 @@
   }
 
   base::WeakPtr<ExtensionFunctionDispatcher> dispatcher_;
-  ScopedObserver<content::RenderProcessHost,
-                 UIThreadWorkerResponseCallbackWrapper>
-      observer_;
+  ScopedObserver<content::RenderProcessHost, content::RenderProcessHostObserver>
+      observer_{this};
   content::RenderProcessHost* const render_process_host_;
   const int worker_thread_id_;
   base::WeakPtrFactory<UIThreadWorkerResponseCallbackWrapper> weak_ptr_factory_{
diff --git a/extensions/browser/extension_user_script_loader.cc b/extensions/browser/extension_user_script_loader.cc
index 276012c9..06fde25a 100644
--- a/extensions/browser/extension_user_script_loader.cc
+++ b/extensions/browser/extension_user_script_loader.cc
@@ -29,7 +29,6 @@
 #include "extensions/browser/component_extension_resource_manager.h"
 #include "extensions/browser/content_verifier.h"
 #include "extensions/browser/extension_file_task_runner.h"
-#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_system.h"
 #include "extensions/browser/extensions_browser_client.h"
 #include "extensions/common/file_util.h"
@@ -207,8 +206,7 @@
     bool listen_for_extension_system_loaded)
     : UserScriptLoader(browser_context, host_id),
       content_verifier_(
-          ExtensionSystem::Get(browser_context)->content_verifier()),
-      extension_registry_observer_(this) {
+          ExtensionSystem::Get(browser_context)->content_verifier()) {
   extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context));
   if (listen_for_extension_system_loaded) {
     ExtensionSystem::Get(browser_context)
diff --git a/extensions/browser/extension_user_script_loader.h b/extensions/browser/extension_user_script_loader.h
index eb5a4ec4..479d7e5 100644
--- a/extensions/browser/extension_user_script_loader.h
+++ b/extensions/browser/extension_user_script_loader.h
@@ -6,6 +6,7 @@
 #define EXTENSIONS_BROWSER_EXTENSION_USER_SCRIPT_LOADER_H_
 
 #include "base/macros.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 #include "extensions/browser/user_script_loader.h"
 #include "extensions/common/extension.h"
@@ -17,7 +18,6 @@
 namespace extensions {
 
 class ContentVerifier;
-class ExtensionRegistry;
 
 // UserScriptLoader for extensions.
 class ExtensionUserScriptLoader : public UserScriptLoader,
@@ -65,7 +65,7 @@
   scoped_refptr<ContentVerifier> content_verifier_;
 
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
 
   base::WeakPtrFactory<ExtensionUserScriptLoader> weak_factory_{this};
 
diff --git a/extensions/browser/guest_view/mime_handler_view/mime_handler_stream_manager.cc b/extensions/browser/guest_view/mime_handler_view/mime_handler_stream_manager.cc
index f09e14162..2687f31 100644
--- a/extensions/browser/guest_view/mime_handler_view/mime_handler_stream_manager.cc
+++ b/extensions/browser/guest_view/mime_handler_view/mime_handler_stream_manager.cc
@@ -12,7 +12,6 @@
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/render_process_host.h"
 #include "content/public/browser/web_contents.h"
-#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extensions_browser_client.h"
 #include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h"
 
@@ -110,12 +109,8 @@
   content::RenderFrameHost* new_host_;
 };
 
-MimeHandlerStreamManager::MimeHandlerStreamManager()
-    : extension_registry_observer_(this) {
-}
-
-MimeHandlerStreamManager::~MimeHandlerStreamManager() {
-}
+MimeHandlerStreamManager::MimeHandlerStreamManager() = default;
+MimeHandlerStreamManager::~MimeHandlerStreamManager() = default;
 
 // static
 MimeHandlerStreamManager* MimeHandlerStreamManager::Get(
diff --git a/extensions/browser/guest_view/mime_handler_view/mime_handler_stream_manager.h b/extensions/browser/guest_view/mime_handler_view/mime_handler_stream_manager.h
index ca8d1e3..a9659ed 100644
--- a/extensions/browser/guest_view/mime_handler_view/mime_handler_stream_manager.h
+++ b/extensions/browser/guest_view/mime_handler_view/mime_handler_stream_manager.h
@@ -10,9 +10,11 @@
 #include <string>
 
 #include "base/gtest_prod_util.h"
+#include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/scoped_observer.h"
 #include "components/keyed_service/core/keyed_service.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 
 namespace content {
@@ -73,7 +75,9 @@
   std::map<std::string, std::unique_ptr<EmbedderObserver>> embedder_observers_;
 
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
+
+  DISALLOW_COPY_AND_ASSIGN(MimeHandlerStreamManager);
 };
 
 }  // namespace extensions
diff --git a/extensions/browser/lazy_background_task_queue.cc b/extensions/browser/lazy_background_task_queue.cc
index 523134f..b97fba1 100644
--- a/extensions/browser/lazy_background_task_queue.cc
+++ b/extensions/browser/lazy_background_task_queue.cc
@@ -13,7 +13,6 @@
 #include "content/public/browser/site_instance.h"
 #include "content/public/browser/web_contents.h"
 #include "extensions/browser/extension_host.h"
-#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extensions_browser_client.h"
 #include "extensions/browser/lazy_background_task_queue_factory.h"
 #include "extensions/browser/lazy_context_id.h"
@@ -43,7 +42,7 @@
 
 LazyBackgroundTaskQueue::LazyBackgroundTaskQueue(
     content::BrowserContext* browser_context)
-    : browser_context_(browser_context), extension_registry_observer_(this) {
+    : browser_context_(browser_context) {
   registrar_.Add(this,
                  extensions::NOTIFICATION_EXTENSION_HOST_DID_STOP_FIRST_LOAD,
                  content::NotificationService::AllBrowserContextsAndSources());
diff --git a/extensions/browser/lazy_background_task_queue.h b/extensions/browser/lazy_background_task_queue.h
index bf9f15c..8606ebca 100644
--- a/extensions/browser/lazy_background_task_queue.h
+++ b/extensions/browser/lazy_background_task_queue.h
@@ -18,6 +18,7 @@
 #include "components/keyed_service/core/keyed_service.h"
 #include "content/public/browser/notification_observer.h"
 #include "content/public/browser/notification_registrar.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 #include "extensions/browser/lazy_context_id.h"
 #include "extensions/browser/lazy_context_task_queue.h"
@@ -30,7 +31,6 @@
 namespace extensions {
 class Extension;
 class ExtensionHost;
-class ExtensionRegistry;
 
 // This class maintains a queue of tasks that should execute when an
 // extension's lazy background page is loaded. It is also in charge of loading
@@ -114,7 +114,7 @@
   PendingTasksMap pending_tasks_;
 
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
 
   DISALLOW_COPY_AND_ASSIGN(LazyBackgroundTaskQueue);
 };
diff --git a/extensions/browser/mojo/keep_alive_impl.cc b/extensions/browser/mojo/keep_alive_impl.cc
index 9de0d43..c4b3577c 100644
--- a/extensions/browser/mojo/keep_alive_impl.cc
+++ b/extensions/browser/mojo/keep_alive_impl.cc
@@ -8,7 +8,6 @@
 
 #include "base/bind.h"
 #include "content/public/browser/browser_context.h"
-#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/process_manager.h"
 
 namespace extensions {
@@ -27,7 +26,6 @@
                              KeepAliveRequest request)
     : context_(context),
       extension_(extension),
-      extension_registry_observer_(this),
       binding_(this, std::move(request)) {
   ProcessManager::Get(context_)->IncrementLazyKeepaliveCount(
       extension_, Activity::MOJO, std::string());
diff --git a/extensions/browser/mojo/keep_alive_impl.h b/extensions/browser/mojo/keep_alive_impl.h
index a65517bd..98d2e79f9 100644
--- a/extensions/browser/mojo/keep_alive_impl.h
+++ b/extensions/browser/mojo/keep_alive_impl.h
@@ -8,6 +8,7 @@
 #include "base/callback.h"
 #include "base/macros.h"
 #include "base/scoped_observer.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 #include "extensions/common/mojom/keep_alive.mojom.h"
 #include "mojo/public/cpp/bindings/binding.h"
@@ -48,7 +49,8 @@
 
   content::BrowserContext* context_;
   const Extension* extension_;
-  ScopedObserver<ExtensionRegistry, KeepAliveImpl> extension_registry_observer_;
+  ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
+      extension_registry_observer_{this};
   mojo::Binding<KeepAlive> binding_;
 
   DISALLOW_COPY_AND_ASSIGN(KeepAliveImpl);
diff --git a/extensions/browser/process_manager.cc b/extensions/browser/process_manager.cc
index 145c7ef..55dcd62b 100644
--- a/extensions/browser/process_manager.cc
+++ b/extensions/browser/process_manager.cc
@@ -27,7 +27,6 @@
 #include "content/public/browser/navigation_entry.h"
 #include "content/public/browser/notification_service.h"
 #include "content/public/browser/render_frame_host.h"
-#include "content/public/browser/render_process_host.h"
 #include "content/public/browser/render_view_host.h"
 #include "content/public/browser/service_worker_context.h"
 #include "content/public/browser/site_instance.h"
@@ -258,8 +257,7 @@
       worker_task_runner_(
           base::CreateSingleThreadTaskRunner({content::BrowserThread::IO})),
       startup_background_hosts_created_(false),
-      last_background_close_sequence_id_(0),
-      process_observer_(this) {
+      last_background_close_sequence_id_(0) {
   // ExtensionRegistry is shared between incognito and regular contexts.
   DCHECK_EQ(original_context, extension_registry_->browser_context());
   extension_registry_->AddObserver(this);
diff --git a/extensions/browser/process_manager.h b/extensions/browser/process_manager.h
index 70b0a1a..7a43601 100644
--- a/extensions/browser/process_manager.h
+++ b/extensions/browser/process_manager.h
@@ -24,6 +24,7 @@
 #include "content/public/browser/devtools_agent_host_observer.h"
 #include "content/public/browser/notification_observer.h"
 #include "content/public/browser/notification_registrar.h"
+#include "content/public/browser/render_process_host.h"
 #include "content/public/browser/render_process_host_observer.h"
 #include "extensions/browser/activity.h"
 #include "extensions/browser/event_page_tracker.h"
@@ -387,7 +388,7 @@
 
   // Observers of Service Worker RPH this ProcessManager manages.
   ScopedObserver<content::RenderProcessHost, content::RenderProcessHostObserver>
-      process_observer_;
+      process_observer_{this};
   // Maps render render_process_id -> extension_id for all Service Workers this
   // ProcessManager manages.
   std::map<int, std::set<ExtensionId>> worker_process_to_extension_ids_;
diff --git a/extensions/browser/service_worker_manager.cc b/extensions/browser/service_worker_manager.cc
index 9fa18be..cc80965 100644
--- a/extensions/browser/service_worker_manager.cc
+++ b/extensions/browser/service_worker_manager.cc
@@ -9,13 +9,12 @@
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/service_worker_context.h"
 #include "content/public/browser/storage_partition.h"
-#include "extensions/browser/extension_registry.h"
 
 namespace extensions {
 
 ServiceWorkerManager::ServiceWorkerManager(
     content::BrowserContext* browser_context)
-    : browser_context_(browser_context), registry_observer_(this) {
+    : browser_context_(browser_context) {
   registry_observer_.Add(ExtensionRegistry::Get(browser_context_));
 }
 
diff --git a/extensions/browser/service_worker_manager.h b/extensions/browser/service_worker_manager.h
index 48889f5..2fa6e61 100644
--- a/extensions/browser/service_worker_manager.h
+++ b/extensions/browser/service_worker_manager.h
@@ -7,6 +7,7 @@
 
 #include "base/macros.h"
 #include "base/scoped_observer.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 
 namespace content {
@@ -35,7 +36,7 @@
   content::BrowserContext* browser_context_;
 
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      registry_observer_;
+      registry_observer_{this};
 
   DISALLOW_COPY_AND_ASSIGN(ServiceWorkerManager);
 };
diff --git a/extensions/browser/shared_user_script_master.cc b/extensions/browser/shared_user_script_master.cc
index b0cda169..9d573c7 100644
--- a/extensions/browser/shared_user_script_master.cc
+++ b/extensions/browser/shared_user_script_master.cc
@@ -4,7 +4,6 @@
 
 #include "extensions/browser/shared_user_script_master.h"
 
-#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_util.h"
 #include "extensions/common/host_id.h"
 #include "extensions/common/manifest_handlers/content_scripts_handler.h"
@@ -16,8 +15,7 @@
     : loader_(browser_context,
               HostID(),
               true /* listen_for_extension_system_loaded */),
-      browser_context_(browser_context),
-      extension_registry_observer_(this) {
+      browser_context_(browser_context) {
   extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context_));
 }
 
diff --git a/extensions/browser/shared_user_script_master.h b/extensions/browser/shared_user_script_master.h
index 8c44622..3a5b005 100644
--- a/extensions/browser/shared_user_script_master.h
+++ b/extensions/browser/shared_user_script_master.h
@@ -10,6 +10,7 @@
 
 #include "base/macros.h"
 #include "base/scoped_observer.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 #include "extensions/browser/extension_user_script_loader.h"
 #include "extensions/common/extension.h"
@@ -21,8 +22,6 @@
 
 namespace extensions {
 
-class ExtensionRegistry;
-
 // Manages statically-defined user scripts for all extensions. Owns a
 // UserScriptLoader to which file loading and shared memory management
 // operations are delegated.
@@ -53,7 +52,7 @@
   content::BrowserContext* browser_context_;
 
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
 
   DISALLOW_COPY_AND_ASSIGN(SharedUserScriptMaster);
 };
diff --git a/extensions/browser/state_store.cc b/extensions/browser/state_store.cc
index 8944c3a..7516687 100644
--- a/extensions/browser/state_store.cc
+++ b/extensions/browser/state_store.cc
@@ -15,7 +15,6 @@
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/notification_service.h"
 #include "content/public/browser/notification_types.h"
-#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/value_store/value_store_factory.h"
 #include "extensions/common/extension.h"
 
@@ -76,8 +75,7 @@
                        ValueStoreFrontend::BackendType backend_type,
                        bool deferred_load)
     : store_(new ValueStoreFrontend(store_factory, backend_type)),
-      task_queue_(new DelayedTaskQueue()),
-      extension_registry_observer_(this) {
+      task_queue_(new DelayedTaskQueue()) {
   extension_registry_observer_.Add(ExtensionRegistry::Get(context));
 
   if (deferred_load) {
diff --git a/extensions/browser/state_store.h b/extensions/browser/state_store.h
index af44a32..db881ac 100644
--- a/extensions/browser/state_store.h
+++ b/extensions/browser/state_store.h
@@ -15,6 +15,7 @@
 #include "base/scoped_observer.h"
 #include "content/public/browser/notification_observer.h"
 #include "content/public/browser/notification_registrar.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 #include "extensions/browser/value_store/value_store_frontend.h"
 
@@ -24,7 +25,6 @@
 
 namespace extensions {
 
-class ExtensionRegistry;
 class ValueStoreFactory;
 
 // A storage area for per-extension state that needs to be persisted to disk.
@@ -123,7 +123,7 @@
   content::NotificationRegistrar registrar_;
 
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
 
   DISALLOW_COPY_AND_ASSIGN(StateStore);
 };
diff --git a/extensions/browser/test_extension_registry_observer.cc b/extensions/browser/test_extension_registry_observer.cc
index fbb0054..9ac3d1d 100644
--- a/extensions/browser/test_extension_registry_observer.cc
+++ b/extensions/browser/test_extension_registry_observer.cc
@@ -8,7 +8,6 @@
 
 #include "base/macros.h"
 #include "base/run_loop.h"
-#include "extensions/browser/extension_registry.h"
 
 namespace extensions {
 
@@ -51,7 +50,6 @@
       loaded_waiter_(std::make_unique<Waiter>()),
       ready_waiter_(std::make_unique<Waiter>()),
       unloaded_waiter_(std::make_unique<Waiter>()),
-      extension_registry_observer_(this),
       extension_id_(extension_id) {
   extension_registry_observer_.Add(registry);
 }
diff --git a/extensions/browser/test_extension_registry_observer.h b/extensions/browser/test_extension_registry_observer.h
index 11954955..bfec3dde 100644
--- a/extensions/browser/test_extension_registry_observer.h
+++ b/extensions/browser/test_extension_registry_observer.h
@@ -10,10 +10,10 @@
 
 #include "base/macros.h"
 #include "base/scoped_observer.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 
 namespace extensions {
-class ExtensionRegistry;
 
 // A helper class that listen for ExtensionRegistry notifications.
 class TestExtensionRegistryObserver : public ExtensionRegistryObserver {
@@ -68,7 +68,7 @@
   std::unique_ptr<Waiter> unloaded_waiter_;
 
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
 
   std::string extension_id_;
 
diff --git a/extensions/browser/uninstall_ping_sender.cc b/extensions/browser/uninstall_ping_sender.cc
index 6b224dd7..865c01cd 100644
--- a/extensions/browser/uninstall_ping_sender.cc
+++ b/extensions/browser/uninstall_ping_sender.cc
@@ -5,14 +5,13 @@
 #include "extensions/browser/uninstall_ping_sender.h"
 
 #include "base/version.h"
-#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/updater/update_service.h"
 
 namespace extensions {
 
 UninstallPingSender::UninstallPingSender(ExtensionRegistry* registry,
                                          const Filter& filter)
-    : filter_(filter), observer_(this) {
+    : filter_(filter) {
   observer_.Add(registry);
 }
 
diff --git a/extensions/browser/uninstall_ping_sender.h b/extensions/browser/uninstall_ping_sender.h
index a349d5c..6a02028 100644
--- a/extensions/browser/uninstall_ping_sender.h
+++ b/extensions/browser/uninstall_ping_sender.h
@@ -8,6 +8,7 @@
 #include "base/callback.h"
 #include "base/macros.h"
 #include "base/scoped_observer.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 
 namespace content {
@@ -37,12 +38,12 @@
                               const Extension* extension,
                               UninstallReason reason) override;
 
+ private:
   // Callback for determining whether to send uninstall pings.
   Filter filter_;
 
-  ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver> observer_;
+  ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver> observer_{this};
 
- private:
   DISALLOW_COPY_AND_ASSIGN(UninstallPingSender);
 };
 
diff --git a/extensions/browser/url_loader_factory_manager.cc b/extensions/browser/url_loader_factory_manager.cc
index 5b000fd..fabb40eb 100644
--- a/extensions/browser/url_loader_factory_manager.cc
+++ b/extensions/browser/url_loader_factory_manager.cc
@@ -59,7 +59,6 @@
 // Migration plan for extension developers is described at
 // https://chromium.org/Home/chromium-security/extension-content-script-fetches
 const char* kHardcodedPartOfCorbAllowlist[] = {
-    "0149C10F1124F1ED6ACAD85C45E87A76A9DDC667",
     "039F93DD1DF836F1D4E2084C1BEFDB46A854A9D1",
     "03E5D80A49C309F7B55ED6BD2B0EDEB38021ED4E",
     "072D729E856B1F2C9894AEEC3A5DF65E519D6BEE",
@@ -168,11 +167,9 @@
     "93934B0B87347437699EB62A8921F59F40C36D7A",
     "93BBF911E8871F6FCC8170448FD2DF5B9EF233E5",
     "95E78675D2DB61DC688586CD7A24202A260907A4",
-    "965A185A30475F208A7365E134F48C64CF08C997",
     "973E35633030AD27DABEC99609424A61386C7309",
     "9784343657207FE88A629E8EAA7A4A19C7C8CBE0",
     "97E04C5632954E778306CAC40B3F95C470B463B6",
-    "98EF7B1601119AEE1FCC28EE5CE247DED5676539",
     "999BD8D1929F9ABB817E9368480D93BAB2A0983D",
     "99E06C364BBB2D1F82A9D20BC1645BF21E478259",
     "9C6A186F8D3C5FD0CC8DCF49682FA726BD8A7705",
@@ -185,7 +182,6 @@
     "A733063124AC9E1E6E1E331FFBAAE32D81AC2581",
     "A8FB3967ADE404B77AC3FB5815A399C0660C3C63",
     "A9A4B26C2387BA2A5861C790B0FF39F230427AC8",
-    "A9F78610B717B3992F92F490E82FC63FFF46C5FA",
     "AA3DE48E23B2465B21F5D33E993FD959F611DD10",
     "ADD14F4517B9A87D4E841369417E5BDB5FDFF263",
     "AE063CF9FF5D718AD6F1CF242FABAC39B57ADEBA",
diff --git a/extensions/browser/warning_service.cc b/extensions/browser/warning_service.cc
index ea53c8c..45a9699 100644
--- a/extensions/browser/warning_service.cc
+++ b/extensions/browser/warning_service.cc
@@ -5,7 +5,6 @@
 #include "extensions/browser/warning_service.h"
 
 #include "content/public/browser/browser_thread.h"
-#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extensions_browser_client.h"
 #include "extensions/browser/warning_service_factory.h"
 #include "extensions/common/extension_set.h"
@@ -15,7 +14,7 @@
 namespace extensions {
 
 WarningService::WarningService(content::BrowserContext* browser_context)
-    : browser_context_(browser_context), extension_registry_observer_(this) {
+    : browser_context_(browser_context) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   if (browser_context_) {
     extension_registry_observer_.Add(ExtensionRegistry::Get(
diff --git a/extensions/browser/warning_service.h b/extensions/browser/warning_service.h
index 8c2bd94..0e0d02bc 100644
--- a/extensions/browser/warning_service.h
+++ b/extensions/browser/warning_service.h
@@ -9,9 +9,11 @@
 #include <string>
 #include <vector>
 
+#include "base/macros.h"
 #include "base/observer_list.h"
 #include "base/scoped_observer.h"
 #include "components/keyed_service/core/keyed_service.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 #include "extensions/browser/warning_set.h"
 
@@ -23,8 +25,6 @@
 
 namespace extensions {
 
-class ExtensionRegistry;
-
 // Manages a set of warnings caused by extensions. These warnings (e.g.
 // conflicting modifications of network requests by extensions, slow extensions,
 // etc.) trigger a warning badge in the UI and and provide means to resolve
@@ -85,9 +85,11 @@
 
   // Listen to extension unloaded notifications.
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
 
   base::ObserverList<Observer>::Unchecked observer_list_;
+
+  DISALLOW_COPY_AND_ASSIGN(WarningService);
 };
 
 }  // namespace extensions
diff --git a/extensions/shell/browser/shell_keep_alive_requester.cc b/extensions/shell/browser/shell_keep_alive_requester.cc
index 5af5f25..32f804b 100644
--- a/extensions/shell/browser/shell_keep_alive_requester.cc
+++ b/extensions/shell/browser/shell_keep_alive_requester.cc
@@ -8,14 +8,11 @@
 #include "components/keep_alive_registry/keep_alive_types.h"
 #include "components/keep_alive_registry/scoped_keep_alive.h"
 #include "extensions/browser/extension_prefs.h"
-#include "extensions/browser/extension_registry.h"
-#include "extensions/browser/extension_registry_observer.h"
 
 namespace extensions {
 
 ShellKeepAliveRequester::ShellKeepAliveRequester(
-    content::BrowserContext* browser_context)
-    : extension_registry_observer_(this), app_lifetime_monitor_observer_(this) {
+    content::BrowserContext* browser_context) {
   extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context));
   app_lifetime_monitor_observer_.Add(
       apps::AppLifetimeMonitorFactory::GetForBrowserContext(browser_context));
diff --git a/extensions/shell/browser/shell_keep_alive_requester.h b/extensions/shell/browser/shell_keep_alive_requester.h
index 3c03fac..cff079c5 100644
--- a/extensions/shell/browser/shell_keep_alive_requester.h
+++ b/extensions/shell/browser/shell_keep_alive_requester.h
@@ -9,6 +9,7 @@
 #include "base/containers/flat_map.h"
 #include "base/macros.h"
 #include "base/scoped_observer.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 #include "extensions/common/extension_id.h"
 
@@ -20,8 +21,6 @@
 
 namespace extensions {
 
-class ExtensionRegistry;
-
 // Maintains keep-alives while apps are loading or launching.
 //
 // Motivation: When an app reloads, its app windows close. If these were the
@@ -66,9 +65,9 @@
       app_reloading_keep_alives_;
 
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      extension_registry_observer_;
+      extension_registry_observer_{this};
   ScopedObserver<apps::AppLifetimeMonitor, apps::AppLifetimeMonitor::Observer>
-      app_lifetime_monitor_observer_;
+      app_lifetime_monitor_observer_{this};
 
   DISALLOW_COPY_AND_ASSIGN(ShellKeepAliveRequester);
 };
diff --git a/extensions/test/extension_test_notification_observer.cc b/extensions/test/extension_test_notification_observer.cc
index edd4210..8256704 100644
--- a/extensions/test/extension_test_notification_observer.cc
+++ b/extensions/test/extension_test_notification_observer.cc
@@ -11,9 +11,7 @@
 #include "content/public/browser/notification_service.h"
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/test/test_utils.h"
-#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/notification_types.h"
-#include "extensions/browser/process_manager.h"
 #include "extensions/common/extension.h"
 
 namespace extensions {
@@ -35,9 +33,9 @@
 ////////////////////////////////////////////////////////////////////////////////
 // ExtensionTestNotificationObserver::NotificationSet
 
-ExtensionTestNotificationObserver::NotificationSet::NotificationSet()
-    : process_manager_observer_(this) {}
-ExtensionTestNotificationObserver::NotificationSet::~NotificationSet() {}
+ExtensionTestNotificationObserver::NotificationSet::NotificationSet() = default;
+ExtensionTestNotificationObserver::NotificationSet::~NotificationSet() =
+    default;
 
 void ExtensionTestNotificationObserver::NotificationSet::Add(
     int type,
@@ -75,8 +73,7 @@
     : context_(context),
       extension_installs_observed_(0),
       extension_load_errors_observed_(0),
-      crx_installers_done_observed_(0),
-      registry_observer_(this) {
+      crx_installers_done_observed_(0) {
   if (context_)
     registry_observer_.Add(ExtensionRegistry::Get(context_));
 }
diff --git a/extensions/test/extension_test_notification_observer.h b/extensions/test/extension_test_notification_observer.h
index fe2aa8e..55de83d 100644
--- a/extensions/test/extension_test_notification_observer.h
+++ b/extensions/test/extension_test_notification_observer.h
@@ -14,7 +14,9 @@
 #include "base/scoped_observer.h"
 #include "content/public/browser/notification_observer.h"
 #include "content/public/browser/notification_registrar.h"
+#include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
+#include "extensions/browser/process_manager.h"
 #include "extensions/browser/process_manager_observer.h"
 
 namespace content {
@@ -24,8 +26,6 @@
 }
 
 namespace extensions {
-class ExtensionRegistry;
-class ProcessManager;
 
 // Test helper class for observing extension-related events.
 class ExtensionTestNotificationObserver : public content::NotificationObserver,
@@ -107,7 +107,7 @@
     base::CallbackList<void()> callback_list_;
     ScopedObserver<extensions::ProcessManager,
                    extensions::ProcessManagerObserver>
-        process_manager_observer_;
+        process_manager_observer_{this};
     DISALLOW_COPY_AND_ASSIGN(NotificationSet);
   };
 
@@ -143,7 +143,7 @@
 
   // Listens to extension loaded notifications.
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
-      registry_observer_;
+      registry_observer_{this};
 
   DISALLOW_COPY_AND_ASSIGN(ExtensionTestNotificationObserver);
 };
diff --git a/extensions/test/test_background_page_first_load_observer.cc b/extensions/test/test_background_page_first_load_observer.cc
index 7f8300aa..4e1e319a 100644
--- a/extensions/test/test_background_page_first_load_observer.cc
+++ b/extensions/test/test_background_page_first_load_observer.cc
@@ -6,7 +6,6 @@
 
 #include "base/logging.h"
 #include "extensions/browser/extension_host.h"
-#include "extensions/browser/process_manager.h"
 
 namespace extensions {
 
@@ -14,8 +13,7 @@
     content::BrowserContext* browser_context,
     const ExtensionId& extension_id)
     : extension_id_(extension_id),
-      process_manager_(ProcessManager::Get(browser_context)),
-      process_manager_observer_(this) {
+      process_manager_(ProcessManager::Get(browser_context)) {
   process_manager_observer_.Add(process_manager_);
   extension_host_ =
       process_manager_->GetBackgroundHostForExtension(extension_id_);
diff --git a/extensions/test/test_background_page_first_load_observer.h b/extensions/test/test_background_page_first_load_observer.h
index 63a2bc5..6c9776236 100644
--- a/extensions/test/test_background_page_first_load_observer.h
+++ b/extensions/test/test_background_page_first_load_observer.h
@@ -9,6 +9,7 @@
 #include "base/run_loop.h"
 #include "base/scoped_observer.h"
 #include "extensions/browser/deferred_start_render_host_observer.h"
+#include "extensions/browser/process_manager.h"
 #include "extensions/browser/process_manager_observer.h"
 #include "extensions/common/extension_id.h"
 
@@ -21,7 +22,6 @@
 namespace extensions {
 
 class ExtensionHost;
-class ProcessManager;
 
 class TestBackgroundPageFirstLoadObserver
     : public ProcessManagerObserver,
@@ -48,7 +48,7 @@
   ExtensionHost* extension_host_ = nullptr;
   base::RunLoop run_loop_;
   ScopedObserver<ProcessManager, ProcessManagerObserver>
-      process_manager_observer_;
+      process_manager_observer_{this};
 
   DISALLOW_COPY_AND_ASSIGN(TestBackgroundPageFirstLoadObserver);
 };
diff --git a/gpu/command_buffer/service/shared_context_state.cc b/gpu/command_buffer/service/shared_context_state.cc
index 5927f31..27eb0385 100644
--- a/gpu/command_buffer/service/shared_context_state.cc
+++ b/gpu/command_buffer/service/shared_context_state.cc
@@ -168,9 +168,7 @@
     LOG(ERROR) << "OOP raster support disabled: GrContext creation "
                   "failed.";
   } else {
-    constexpr int kMaxGaneshResourceCacheCount = 16384;
-    gr_context_->setResourceCacheLimits(kMaxGaneshResourceCacheCount,
-                                        max_resource_cache_bytes_);
+    gr_context_->setResourceCacheLimit(max_resource_cache_bytes_);
   }
   transfer_cache_ = std::make_unique<ServiceTransferCache>();
 }
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc b/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc
index c3c17d1..00788068 100644
--- a/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc
+++ b/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc
@@ -271,8 +271,8 @@
         promise_texture_(cached_promise_texture) {
     if (!promise_texture_) {
       GrBackendTexture backend_texture;
-      GetGrBackendTexture(gl::GLContext::GetCurrent()->GetVersionInfo(), target,
-                          size(), service_id, format(), &backend_texture);
+      GetGrBackendTexture(context_state_->feature_info(), target, size(),
+                          service_id, format(), &backend_texture);
       promise_texture_ = SkPromiseImageTexture::Make(backend_texture);
     }
 #if DCHECK_IS_ON()
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_iosurface.mm b/gpu/command_buffer/service/shared_image_backing_factory_iosurface.mm
index 83dbdec..37763d4 100644
--- a/gpu/command_buffer/service/shared_image_backing_factory_iosurface.mm
+++ b/gpu/command_buffer/service/shared_image_backing_factory_iosurface.mm
@@ -450,10 +450,9 @@
       gles2_texture = GenGLTexture();
       if (!gles2_texture)
         return nullptr;
-      GetGrBackendTexture(gl::GLContext::GetCurrent()->GetVersionInfo(),
-                          gles2_texture->target(), size(),
-                          gles2_texture->service_id(), format(),
-                          &gr_backend_texture);
+      GetGrBackendTexture(
+          context_state->feature_info(), gles2_texture->target(), size(),
+          gles2_texture->service_id(), format(), &gr_backend_texture);
     }
     if (context_state->GrContextIsMetal()) {
       if (!mtl_texture_) {
diff --git a/gpu/command_buffer/service/shared_image_representation_skia_gl.cc b/gpu/command_buffer/service/shared_image_representation_skia_gl.cc
index 746300a..83613f6 100644
--- a/gpu/command_buffer/service/shared_image_representation_skia_gl.cc
+++ b/gpu/command_buffer/service/shared_image_representation_skia_gl.cc
@@ -38,7 +38,7 @@
     SharedImageBacking* backing,
     MemoryTypeTracker* tracker) {
   GrBackendTexture backend_texture;
-  if (!GetGrBackendTexture(gl::GLContext::GetCurrent()->GetVersionInfo(),
+  if (!GetGrBackendTexture(context_state->feature_info(),
                            gl_representation->GetTexture()->target(),
                            backing->size(),
                            gl_representation->GetTexture()->service_id(),
diff --git a/gpu/command_buffer/service/skia_utils.cc b/gpu/command_buffer/service/skia_utils.cc
index bb82e21d..a2b41ae 100644
--- a/gpu/command_buffer/service/skia_utils.cc
+++ b/gpu/command_buffer/service/skia_utils.cc
@@ -7,6 +7,7 @@
 #include "base/logging.h"
 #include "components/viz/common/gpu/vulkan_context_provider.h"
 #include "components/viz/common/resources/resource_format_utils.h"
+#include "gpu/command_buffer/service/feature_info.h"
 #include "gpu/command_buffer/service/shared_context_state.h"
 #include "third_party/skia/include/gpu/GrBackendSurface.h"
 #include "third_party/skia/include/gpu/gl/GrGLTypes.h"
@@ -39,7 +40,23 @@
 
 }  // namespace
 
-bool GetGrBackendTexture(const gl::GLVersionInfo* version_info,
+GLuint GetGrGLBackendTextureFormat(const gles2::FeatureInfo* feature_info,
+                                   viz::ResourceFormat resource_format) {
+  const gl::GLVersionInfo* version_info = &feature_info->gl_version_info();
+  GLuint internal_format = gl::GetInternalFormat(
+      version_info, viz::TextureStorageFormat(resource_format));
+
+  // We tell Skia to use es2 which does not have GL_R8_EXT
+  if (feature_info->gl_version_info().is_es3 &&
+      feature_info->workarounds().use_es2_for_oopr) {
+    if (internal_format == GL_R8_EXT)
+      internal_format = GL_LUMINANCE8;
+  }
+
+  return internal_format;
+}
+
+bool GetGrBackendTexture(const gles2::FeatureInfo* feature_info,
                          GLenum target,
                          const gfx::Size& size,
                          GLuint service_id,
@@ -54,8 +71,8 @@
   GrGLTextureInfo texture_info;
   texture_info.fID = service_id;
   texture_info.fTarget = target;
-  texture_info.fFormat = gl::GetInternalFormat(
-      version_info, viz::TextureStorageFormat(resource_format));
+  texture_info.fFormat =
+      GetGrGLBackendTextureFormat(feature_info, resource_format);
   *gr_texture = GrBackendTexture(size.width(), size.height(), GrMipMapped::kNo,
                                  texture_info);
   return true;
diff --git a/gpu/command_buffer/service/skia_utils.h b/gpu/command_buffer/service/skia_utils.h
index e5e1a965..9fe069c 100644
--- a/gpu/command_buffer/service/skia_utils.h
+++ b/gpu/command_buffer/service/skia_utils.h
@@ -22,26 +22,32 @@
 class Size;
 }  // namespace gfx
 
-namespace gl {
-struct GLVersionInfo;
-}  // namespace gl
-
 namespace viz {
 class VulkanContextProvider;
 }  // namespace viz
 
 namespace gpu {
 
+namespace gles2 {
+class FeatureInfo;
+}  // namespace gles2
+
 class SharedContextState;
 
+// Returns internal gl format of texture for Skia
+GPU_GLES2_EXPORT GLuint
+GetGrGLBackendTextureFormat(const gles2::FeatureInfo* feature_info,
+                            viz::ResourceFormat resource_format);
+
 // Creates a GrBackendTexture from a service ID. Skia does not take ownership.
 // Returns true on success.
-GPU_GLES2_EXPORT bool GetGrBackendTexture(const gl::GLVersionInfo* version_info,
-                                          GLenum target,
-                                          const gfx::Size& size,
-                                          GLuint service_id,
-                                          viz::ResourceFormat resource_format,
-                                          GrBackendTexture* gr_texture);
+GPU_GLES2_EXPORT bool GetGrBackendTexture(
+    const gles2::FeatureInfo* feature_info,
+    GLenum target,
+    const gfx::Size& size,
+    GLuint service_id,
+    viz::ResourceFormat resource_format,
+    GrBackendTexture* gr_texture);
 
 // Adds a task to be executed when the flush in |flush_info| is complete.
 GPU_GLES2_EXPORT void AddCleanupTaskForSkiaFlush(base::OnceClosure task,
diff --git a/gpu/skia_bindings/grcontext_for_gles2_interface.cc b/gpu/skia_bindings/grcontext_for_gles2_interface.cc
index d58f28ef..f3e4c06 100644
--- a/gpu/skia_bindings/grcontext_for_gles2_interface.cc
+++ b/gpu/skia_bindings/grcontext_for_gles2_interface.cc
@@ -29,10 +29,6 @@
     size_t max_resource_cache_bytes,
     size_t max_glyph_cache_texture_bytes)
     : context_support_(context_support) {
-  // The limit of the number of GPU resources we hold in the GrContext's
-  // GPU cache.
-  static const int kMaxGaneshResourceCacheCount = 16384;
-
   GrContextOptions options;
   options.fGlyphCacheTextureMaximumBytes = max_glyph_cache_texture_bytes;
   options.fAvoidStencilBuffers = capabilities.avoid_stencil_buffers;
@@ -46,8 +42,7 @@
       skia_bindings::CreateGLES2InterfaceBindings(gl, context_support));
   gr_context_ = GrContext::MakeGL(std::move(interface), options);
   if (gr_context_) {
-    gr_context_->setResourceCacheLimits(kMaxGaneshResourceCacheCount,
-                                        max_resource_cache_bytes);
+    gr_context_->setResourceCacheLimit(max_resource_cache_bytes);
     context_support_->SetGrContext(gr_context_.get());
   }
 }
diff --git a/gpu/vulkan/demo/vulkan_demo.cc b/gpu/vulkan/demo/vulkan_demo.cc
index 2e2bc6b..cbfe195 100644
--- a/gpu/vulkan/demo/vulkan_demo.cc
+++ b/gpu/vulkan/demo/vulkan_demo.cc
@@ -44,7 +44,7 @@
 
   ui::PlatformWindowInitProperties properties;
   properties.bounds = gfx::Rect(100, 100, 800, 600);
-  auto x11_window = std::make_unique<ui::X11Window>(this, nullptr);
+  auto x11_window = std::make_unique<ui::X11Window>(this);
   x11_window->Initialize(std::move(properties));
 
   window_ = std::move(x11_window);
diff --git a/infra/config/commit-queue.cfg b/infra/config/commit-queue.cfg
index 024a7d7..bc0b6e0 100644
--- a/infra/config/commit-queue.cfg
+++ b/infra/config/commit-queue.cfg
@@ -372,6 +372,11 @@
         name: "chromium/try/ios-simulator-xcode-clang"
         experiment_percentage: 10
       }
+      # https://crbug.com/1000367
+      builders {
+        name: "chromium/try/linux-chromeos-coverage-rel"
+        experiment_percentage: 3
+      }
 
       retry_config {
         single_quota: 1
diff --git a/infra/config/cr-buildbucket.cfg b/infra/config/cr-buildbucket.cfg
index 18bc9f5..d49f8a9 100644
--- a/infra/config/cr-buildbucket.cfg
+++ b/infra/config/cr-buildbucket.cfg
@@ -2214,6 +2214,13 @@
       dimensions: "cores:8"
     }
     builders {
+      name: "Win10 Tests x64 1803"
+      mixins: "fyi-ci"
+      dimensions: "os:Windows-10"
+      dimensions: "cpu:x86-64"
+      dimensions: "cores:8"
+    }
+    builders {
       name: "Win10 Tests x64 (dbg)"
       mixins: "win-ci"
       dimensions: "os:Windows-10"
diff --git a/infra/config/luci-milo.cfg b/infra/config/luci-milo.cfg
index 765e113..b5b384a 100644
--- a/infra/config/luci-milo.cfg
+++ b/infra/config/luci-milo.cfg
@@ -2456,6 +2456,10 @@
     category: "win10"
   }
   builders {
+    name: "buildbucket/luci.chromium.ci/Win10 Tests x64 1803"
+    category: "win10|1803"
+  }
+  builders {
     name: "buildbucket/luci.chromium.ci/win-celab-builder-rel"
     category: "celab"
   }
diff --git a/ios/chrome/app/strings/ios_strings.grd b/ios/chrome/app/strings/ios_strings.grd
index 2b1fabe..de74848 100644
--- a/ios/chrome/app/strings/ios_strings.grd
+++ b/ios/chrome/app/strings/ios_strings.grd
@@ -2110,6 +2110,9 @@
       <message name="IDS_IOS_NAVIGATION_BAR_ADD_BUTTON" desc="Label of the button allowing the user to add a new credit card to the list of their saved credit cards.">
           Add
       </message>
+      <message name="IDS_IOS_LOCATION_BAR_SIGN_IN" desc="Text shown in the location bar while an HTTP authentication dialog is displayed.">
+          Sign in to website
+      </message>
     </messages>
   </release>
 </grit>
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm
index 0e64d8c5..c61fb8f 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm
@@ -305,7 +305,6 @@
 
   // Set Navigation Bar, Toolbar and TableView appearance.
   self.navigationController.navigationBarHidden = NO;
-  self.navigationController.toolbar.translucent = YES;
   // Add a tableFooterView in order to disable separators at the bottom of the
   // tableView.
   self.tableView.tableFooterView = [[UIView alloc] init];
diff --git a/ios/chrome/browser/ui/location_bar/BUILD.gn b/ios/chrome/browser/ui/location_bar/BUILD.gn
index 14d1ebfb..d518d1a6 100644
--- a/ios/chrome/browser/ui/location_bar/BUILD.gn
+++ b/ios/chrome/browser/ui/location_bar/BUILD.gn
@@ -43,6 +43,7 @@
     "//ios/chrome/browser/main",
     "//ios/chrome/browser/ntp",
     "//ios/chrome/browser/overlays",
+    "//ios/chrome/browser/overlays/public/web_content_area",
     "//ios/chrome/browser/search_engines",
     "//ios/chrome/browser/ssl",
     "//ios/chrome/browser/ui:feature_flags",
diff --git a/ios/chrome/browser/ui/location_bar/location_bar_mediator.mm b/ios/chrome/browser/ui/location_bar/location_bar_mediator.mm
index ea71bb8..7e4d7a7 100644
--- a/ios/chrome/browser/ui/location_bar/location_bar_mediator.mm
+++ b/ios/chrome/browser/ui/location_bar/location_bar_mediator.mm
@@ -10,6 +10,9 @@
 #include "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/overlays/public/overlay_presenter.h"
 #import "ios/chrome/browser/overlays/public/overlay_presenter_observer_bridge.h"
+#include "ios/chrome/browser/overlays/public/overlay_request.h"
+#import "ios/chrome/browser/overlays/public/overlay_request_queue.h"
+#import "ios/chrome/browser/overlays/public/web_content_area/http_auth_overlay.h"
 #import "ios/chrome/browser/search_engines/search_engine_observer_bridge.h"
 #import "ios/chrome/browser/search_engines/search_engines_util.h"
 #include "ios/chrome/browser/ssl/ios_security_state_tab_helper.h"
@@ -19,6 +22,7 @@
 #import "ios/chrome/browser/ui/util/uikit_ui_util.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/chrome/grit/ios_strings.h"
 #include "ios/chrome/grit/ios_theme_resources.h"
 #include "ios/web/public/navigation/navigation_item.h"
 #import "ios/web/public/navigation/navigation_manager.h"
@@ -27,6 +31,7 @@
 #import "ios/web/public/web_state.h"
 #import "ios/web/public/web_state/web_state_observer_bridge.h"
 #include "skia/ext/skia_utils_ios.h"
+#include "ui/base/l10n/l10n_util.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
@@ -47,6 +52,11 @@
 @property(nonatomic, assign, getter=isWebContentAreaShowingOverlay)
     BOOL webContentAreaShowingOverlay;
 
+// Whether an HTTP authentication dialog is currently presented over the
+// web content area.
+@property(nonatomic, assign, getter=isWebContentAreaShowingHTTPAuthDialog)
+    BOOL webContentAreaShowingHTTPAuthDialog;
+
 @end
 
 @implementation LocationBarMediator {
@@ -136,16 +146,19 @@
   _webState = nullptr;
 }
 
-#pragma mark - OverlayPresesenterObserving
+#pragma mark - OverlayPresenterObserving
 
 - (void)overlayPresenter:(OverlayPresenter*)presenter
     willShowOverlayForRequest:(OverlayRequest*)request {
   self.webContentAreaShowingOverlay = YES;
+  self.webContentAreaShowingHTTPAuthDialog =
+      !!request->GetConfig<HTTPAuthOverlayRequestConfig>();
 }
 
 - (void)overlayPresenter:(OverlayPresenter*)presenter
     didHideOverlayForRequest:(OverlayRequest*)request {
   self.webContentAreaShowingOverlay = NO;
+  self.webContentAreaShowingHTTPAuthDialog = NO;
 }
 
 #pragma mark - WebStateListObserver
@@ -248,6 +261,17 @@
   [self.consumer updateLocationShareable:[self isSharingEnabled]];
 }
 
+- (void)setWebContentAreaShowingHTTPAuthDialog:
+    (BOOL)webContentAreaShowingHTTPAuthDialog {
+  if (_webContentAreaShowingHTTPAuthDialog ==
+      webContentAreaShowingHTTPAuthDialog) {
+    return;
+  }
+  _webContentAreaShowingHTTPAuthDialog = webContentAreaShowingHTTPAuthDialog;
+  [self notifyConsumerOfChangedLocation];
+  [self notifyConsumerOfChangedSecurityIcon];
+}
+
 #pragma mark - private
 
 - (void)notifyConsumerOfChangedLocation {
@@ -263,14 +287,14 @@
 
 - (void)notifyConsumerOfChangedSecurityIcon {
   [self.consumer updateLocationIcon:[self currentLocationIcon]
-                 securityStatusText:base::SysUTF16ToNSString(
-                                        self.locationBarModel
-                                            ->GetSecureAccessibilityText())];
+                 securityStatusText:[self securityStatusText]];
 }
 
 #pragma mark Location helpers
 
 - (NSString*)currentLocationString {
+  if (self.webContentAreaShowingHTTPAuthDialog)
+    return l10n_util::GetNSString(IDS_IOS_LOCATION_BAR_SIGN_IN);
   base::string16 string = self.locationBarModel->GetURLForDisplay();
   return base::SysUTF16ToNSString(string);
 }
@@ -278,6 +302,8 @@
 // Some URLs (data://) should have their tail clipped when presented; while for
 // others (http://) it would be more appropriate to clip the head.
 - (BOOL)locationShouldClipTail {
+  if (self.webContentAreaShowingHTTPAuthDialog)
+    return YES;
   GURL url = self.locationBarModel->GetURL();
   return url.SchemeIs(url::kDataScheme);
 }
@@ -285,7 +311,8 @@
 #pragma mark Security status icon helpers
 
 - (UIImage*)currentLocationIcon {
-  if (!self.locationBarModel->ShouldDisplayURL()) {
+  if (!self.locationBarModel->ShouldDisplayURL() ||
+      self.webContentAreaShowingHTTPAuthDialog) {
     return nil;
   }
 
@@ -303,6 +330,14 @@
       imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
 }
 
+// The status text associated with the current location icon.
+- (NSString*)securityStatusText {
+  if (self.webContentAreaShowingHTTPAuthDialog)
+    return nil;
+  return base::SysUTF16ToNSString(
+      self.locationBarModel->GetSecureAccessibilityText());
+}
+
 #pragma mark Shareability helpers
 
 - (BOOL)isSharingEnabled {
diff --git a/ios/chrome/browser/ui/location_bar/location_bar_mediator_unittest.mm b/ios/chrome/browser/ui/location_bar/location_bar_mediator_unittest.mm
index 21a3091..22da2e3 100644
--- a/ios/chrome/browser/ui/location_bar/location_bar_mediator_unittest.mm
+++ b/ios/chrome/browser/ui/location_bar/location_bar_mediator_unittest.mm
@@ -10,15 +10,19 @@
 #import "ios/chrome/browser/overlays/public/overlay_presenter.h"
 #import "ios/chrome/browser/overlays/public/overlay_request.h"
 #import "ios/chrome/browser/overlays/public/overlay_request_queue.h"
+#import "ios/chrome/browser/overlays/public/web_content_area/http_auth_overlay.h"
 #import "ios/chrome/browser/overlays/public/web_content_area/java_script_alert_overlay.h"
 #include "ios/chrome/browser/overlays/test/fake_overlay_presentation_context.h"
 #import "ios/chrome/browser/ui/location_bar/test/fake_location_bar_consumer.h"
 #import "ios/chrome/browser/web_state_list/fake_web_state_list_delegate.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/chrome/browser/web_state_list/web_state_opener.h"
+#import "ios/chrome/grit/ios_strings.h"
 #include "ios/web/public/test/fakes/test_web_state.h"
 #include "ios/web/public/test/web_task_environment.h"
+#include "testing/gtest_mac.h"
 #include "testing/platform_test.h"
+#include "ui/base/l10n/l10n_util.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
@@ -88,4 +92,31 @@
   EXPECT_TRUE(consumer_.locationShareable);
 }
 
+// Tests that the location text and page icon are updated when an HTTP auth
+// dialog is displayed.
+TEST_F(LocationBarMediatorTest, HTTPAuthDialog) {
+  const GURL kUrl("https://chromium.test");
+  std::unique_ptr<web::TestWebState> passed_web_state =
+      std::make_unique<web::TestWebState>();
+  web::TestWebState* web_state = passed_web_state.get();
+  web_state->SetCurrentURL(kUrl);
+  web_state_list_.InsertWebState(0, std::move(passed_web_state),
+                                 WebStateList::INSERT_ACTIVATE,
+                                 WebStateOpener(nullptr));
+
+  // Present an HTTP authentication dialog over the WebState and verify the
+  // location text and page icon.
+  const std::string kMessage("message");
+  const std::string kDefaultUsername("username");
+  OverlayRequestQueue* queue = OverlayRequestQueue::FromWebState(
+      web_state, OverlayModality::kWebContentArea);
+  queue->AddRequest(
+      OverlayRequest::CreateWithConfig<HTTPAuthOverlayRequestConfig>(
+          kMessage, kDefaultUsername));
+  EXPECT_NSEQ(l10n_util::GetNSString(IDS_IOS_LOCATION_BAR_SIGN_IN),
+              consumer_.locationText);
+  EXPECT_FALSE(consumer_.icon);
+  EXPECT_FALSE(consumer_.statusText);
+}
+
 // TODO(crbug.com/992578): Add more tests to this suite.
diff --git a/ios/chrome/browser/ui/payments/address_edit_mediator_unittest.mm b/ios/chrome/browser/ui/payments/address_edit_mediator_unittest.mm
index cb3d68242..a6e96e4 100644
--- a/ios/chrome/browser/ui/payments/address_edit_mediator_unittest.mm
+++ b/ios/chrome/browser/ui/payments/address_edit_mediator_unittest.mm
@@ -282,7 +282,7 @@
       initWithAutofillUIType:AutofillUITypeProfileHomePhoneWholeNumber
                    fieldType:EditorFieldTypeTextField
                        label:@""
-                       value:@"1506853121"  // Missing one last digit.
+                       value:@"15068531"  // It is too short.
                     required:YES];
   NSString* validationError =
       [mediator paymentRequestEditViewController:nil
diff --git a/ios/chrome/browser/ui/payments/contact_info_edit_mediator_unittest.mm b/ios/chrome/browser/ui/payments/contact_info_edit_mediator_unittest.mm
index b98b78b..88d2a5c0 100644
--- a/ios/chrome/browser/ui/payments/contact_info_edit_mediator_unittest.mm
+++ b/ios/chrome/browser/ui/payments/contact_info_edit_mediator_unittest.mm
@@ -259,7 +259,7 @@
       initWithAutofillUIType:AutofillUITypeProfileHomePhoneWholeNumber
                    fieldType:EditorFieldTypeTextField
                        label:@""
-                       value:@"1506853121"  // Missing one last digit.
+                       value:@"15068531"  // It is too short.
                     required:YES];
   NSString* validationError =
       [mediator paymentRequestEditViewController:nil
diff --git a/ios/chrome/browser/ui/settings/google_services/google_services_settings_coordinator.mm b/ios/chrome/browser/ui/settings/google_services/google_services_settings_coordinator.mm
index 9e30da4..e4822c7 100644
--- a/ios/chrome/browser/ui/settings/google_services/google_services_settings_coordinator.mm
+++ b/ios/chrome/browser/ui/settings/google_services/google_services_settings_coordinator.mm
@@ -184,6 +184,11 @@
 }
 
 - (void)openReauthDialogAsSyncIsInAuthError {
+  ChromeIdentity* identity = self.authService->GetAuthenticatedIdentity();
+  if (self.authService->HasCachedMDMErrorForIdentity(identity)) {
+    self.authService->ShowMDMErrorDialogForIdentity(identity);
+    return;
+  }
   // Sync enters in a permanent auth error state when fetching an access token
   // fails with invalid credentials. This corresponds to Gaia responding with an
   // "invalid grant" error. The current implementation of the iOS SSOAuth
diff --git a/ios/chrome/browser/ui/side_swipe/card_side_swipe_view.mm b/ios/chrome/browser/ui/side_swipe/card_side_swipe_view.mm
index 948ac92..5268357 100644
--- a/ios/chrome/browser/ui/side_swipe/card_side_swipe_view.mm
+++ b/ios/chrome/browser/ui/side_swipe/card_side_swipe_view.mm
@@ -106,7 +106,7 @@
       [[background bottomAnchor] constraintEqualToAnchor:self.bottomAnchor]
     ]];
 
-    background.backgroundColor = UIColorFromRGB(kGridBackgroundColor);
+    background.backgroundColor = [UIColor colorNamed:kGridBackgroundColor];
 
     _rightCard =
         [[SwipeView alloc] initWithFrame:CGRectZero topMargin:topMargin];
diff --git a/ios/chrome/browser/ui/tab_grid/BUILD.gn b/ios/chrome/browser/ui/tab_grid/BUILD.gn
index 4610f390a..fa35a00 100644
--- a/ios/chrome/browser/ui/tab_grid/BUILD.gn
+++ b/ios/chrome/browser/ui/tab_grid/BUILD.gn
@@ -54,6 +54,10 @@
     "tab_grid_constants.h",
     "tab_grid_constants.mm",
   ]
+
+  deps = [
+    "resources:grid_background_color",
+  ]
 }
 
 source_set("tab_grid_ui") {
diff --git a/ios/chrome/browser/ui/tab_grid/grid/grid_cell.mm b/ios/chrome/browser/ui/tab_grid/grid/grid_cell.mm
index be3ac58..44fb0515 100644
--- a/ios/chrome/browser/ui/tab_grid/grid/grid_cell.mm
+++ b/ios/chrome/browser/ui/tab_grid/grid/grid_cell.mm
@@ -354,10 +354,10 @@
 - (void)setupSelectedBackgroundView {
   self.selectedBackgroundView = [[UIView alloc] init];
   self.selectedBackgroundView.backgroundColor =
-      UIColorFromRGB(kGridBackgroundColor);
+      [UIColor colorNamed:kGridBackgroundColor];
   UIView* border = [[UIView alloc] init];
   border.translatesAutoresizingMaskIntoConstraints = NO;
-  border.backgroundColor = UIColorFromRGB(kGridBackgroundColor);
+  border.backgroundColor = [UIColor colorNamed:kGridBackgroundColor];
   border.layer.cornerRadius = kGridCellCornerRadius +
                               kGridCellSelectionRingGapWidth +
                               kGridCellSelectionRingTintWidth;
diff --git a/ios/chrome/browser/ui/tab_grid/grid/grid_constants.h b/ios/chrome/browser/ui/tab_grid/grid/grid_constants.h
index 00f3d8b..7f2847e 100644
--- a/ios/chrome/browser/ui/tab_grid/grid/grid_constants.h
+++ b/ios/chrome/browser/ui/tab_grid/grid/grid_constants.h
@@ -17,12 +17,8 @@
 // Accessibility identifier for the close button in a grid cell.
 extern NSString* const kGridCellCloseButtonIdentifier;
 
-// All kxxxColor constants are RGB values stored in a Hex integer. These will be
-// converted into UIColors using the UIColorFromRGB() function, from
-// uikit_ui_util.h
-
 // Grid styling.
-extern const int kGridBackgroundColor;
+extern NSString* const kGridBackgroundColor;
 
 // GridLayout.
 // Extra-small screens require a slightly different layout configuration (e.g.,
@@ -56,23 +52,12 @@
 extern const CGFloat kReorderingActiveCellScale;
 
 // GridCell styling.
-// Common colors.
-extern const int kGridCellIconBackgroundColor;
-extern const int kGridCellSnapshotBackgroundColor;
-// Light theme colors.
-extern const int kGridLightThemeCellTitleColor;
-extern const int kGridLightThemeCellHeaderColor;
-extern const int kGridLightThemeCellSelectionColor;
-extern const int kGridLightThemeCellCloseButtonTintColor;
-// Dark theme colors.
-extern const int kGridDarkThemeCellTitleColor;
-extern const int kGridDarkThemeCellHeaderColor;
-extern const int kGridDarkThemeCellSelectionColor;
-extern const int kGridDarkThemeCellCloseButtonTintColor;
-extern const CGFloat kGridDarkThemeCellHighlightColorAlpha;
-extern const int kGridDarkThemeCellSeparatorColor;
-// TODO (crbug.com/981889): remove with iOS 12.
+// All kxxxColor constants after this are RGB values stored in a Hex integer.
+// These will be converted into UIColors using the UIColorFromRGB() function,
+// from uikit_ui_util.h.
+// TODO(crbug.com/981889): remove with iOS 12.
 // Extra dark theme colors until iOS 12 gets removed.
+extern const int kGridDarkThemeCellTitleColor;
 extern const int kGridDarkThemeCellDetailColor;
 extern const CGFloat kGridDarkThemeCellDetailAlpha;
 extern const int kGridDarkThemeCellTintColor;
diff --git a/ios/chrome/browser/ui/tab_grid/grid/grid_constants.mm b/ios/chrome/browser/ui/tab_grid/grid/grid_constants.mm
index 7671bff..c5c70a33 100644
--- a/ios/chrome/browser/ui/tab_grid/grid/grid_constants.mm
+++ b/ios/chrome/browser/ui/tab_grid/grid/grid_constants.mm
@@ -16,7 +16,7 @@
     @"GridCellCloseButtonIdentifier";
 
 // Grid styling.
-const int kGridBackgroundColor = 0x222222;
+NSString* const kGridBackgroundColor = @"grid_background_color";
 
 // Definition of limited width for applicable size classes. The first refers to
 // the horizontal size class; the second to the vertical.
@@ -49,22 +49,9 @@
 const CGFloat kReorderingActiveCellScale = 1.15;
 
 // GridCell styling.
-// Common colors.
-const int kGridCellIconBackgroundColor = 0xF1F3F4;
-const int kGridCellSnapshotBackgroundColor = 0xE8EAED;
-// Light theme colors.
-const int kGridLightThemeCellTitleColor = 0x000000;
-const int kGridLightThemeCellHeaderColor = 0xF8F9FA;
-const int kGridLightThemeCellSelectionColor = 0x1A73E8;
-const int kGridLightThemeCellCloseButtonTintColor = 0x3C4043;
 // Dark theme colors.
-const int kGridDarkThemeCellTitleColor = 0xFFFFFF;
-const int kGridDarkThemeCellHeaderColor = 0x5F6368;
-const int kGridDarkThemeCellSelectionColor = 0x9AA0A6;
-const int kGridDarkThemeCellCloseButtonTintColor = 0xFFFFFF;
-const CGFloat kGridDarkThemeCellHighlightColorAlpha = 0.7;
-const int kGridDarkThemeCellSeparatorColor = 0x535354;
 // Extra dark theme colors until iOS 12 gets removed.
+const int kGridDarkThemeCellTitleColor = 0xFFFFFF;
 const int kGridDarkThemeCellDetailColor = 0xEBEBF5;
 const CGFloat kGridDarkThemeCellDetailAlpha = 0.6;
 const int kGridDarkThemeCellTintColor = 0x8AB4F9;
diff --git a/ios/chrome/browser/ui/tab_grid/grid/grid_view_controller.mm b/ios/chrome/browser/ui/tab_grid/grid/grid_view_controller.mm
index 80749d5..49c1ec9 100644
--- a/ios/chrome/browser/ui/tab_grid/grid/grid_view_controller.mm
+++ b/ios/chrome/browser/ui/tab_grid/grid/grid_view_controller.mm
@@ -96,7 +96,7 @@
   collectionView.delegate = self;
   collectionView.backgroundView = [[UIView alloc] init];
   collectionView.backgroundView.backgroundColor =
-      UIColorFromRGB(kGridBackgroundColor);
+      [UIColor colorNamed:kGridBackgroundColor];
   // CollectionView, in contrast to TableView, doesn’t inset the
   // cell content to the safe area guide by default. We will just manage the
   // collectionView contentInset manually to fit in the safe area instead.
diff --git a/ios/chrome/browser/ui/tab_grid/resources/BUILD.gn b/ios/chrome/browser/ui/tab_grid/resources/BUILD.gn
index 8a884c2..79bc18b8 100644
--- a/ios/chrome/browser/ui/tab_grid/resources/BUILD.gn
+++ b/ios/chrome/browser/ui/tab_grid/resources/BUILD.gn
@@ -4,6 +4,12 @@
 
 import("//build/config/ios/asset_catalog.gni")
 
+colorset("grid_background_color") {
+  sources = [
+    "grid_background_color.colorset/Contents.json",
+  ]
+}
+
 imageset("new_tab_floating_button") {
   sources = [
     "new_tab_floating_button.imageset/Contents.json",
diff --git a/ios/chrome/browser/ui/tab_grid/resources/grid_background_color.colorset/Contents.json b/ios/chrome/browser/ui/tab_grid/resources/grid_background_color.colorset/Contents.json
new file mode 100644
index 0000000..aaad767e
--- /dev/null
+++ b/ios/chrome/browser/ui/tab_grid/resources/grid_background_color.colorset/Contents.json
@@ -0,0 +1,20 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  },
+  "colors" : [
+    {
+      "idiom" : "universal",
+      "color" : {
+        "color-space" : "display-p3",
+        "components" : {
+          "red" : "0x00",
+          "alpha" : "1.000",
+          "blue" : "0x00",
+          "green" : "0x00"
+        }
+      }
+    }
+  ]
+}
diff --git a/ios/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm b/ios/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm
index d83721a..9d72e3c 100644
--- a/ios/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm
+++ b/ios/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm
@@ -29,6 +29,7 @@
 #import "ios/chrome/browser/ui/util/rtl_geometry.h"
 #include "ios/chrome/browser/ui/util/ui_util.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
+#import "ios/chrome/common/colors/semantic_color_names.h"
 #import "ios/chrome/common/ui_util/constraints_ui_util.h"
 #include "ios/chrome/grit/ios_strings.h"
 #include "ios/web/public/thread/web_task_traits.h"
@@ -159,7 +160,7 @@
 
 - (void)viewDidLoad {
   [super viewDidLoad];
-  self.view.backgroundColor = UIColorFromRGB(kGridBackgroundColor);
+  self.view.backgroundColor = [UIColor colorNamed:kGridBackgroundColor];
   [self setupScrollView];
   [self setupIncognitoTabsViewController];
   [self setupRegularTabsViewController];
@@ -659,9 +660,7 @@
   // TODO(crbug.com/804589) : Dark style on remote tabs.
   // The styler must be set before the view controller is loaded.
   ChromeTableViewStyler* styler = [[ChromeTableViewStyler alloc] init];
-  styler.tableViewBackgroundColor = UIColorFromRGB(kGridBackgroundColor);
-  styler.cellHighlightColor =
-      [UIColor colorWithWhite:0 alpha:kGridDarkThemeCellHighlightColorAlpha];
+  styler.tableViewBackgroundColor = [UIColor colorNamed:kGridBackgroundColor];
   // To make using the compile guards easier, use a separate method.
   [self setupRemoteTabsViewControllerForDarkModeWithStyler:styler];
   self.remoteTabsViewController.styler = styler;
@@ -697,10 +696,13 @@
   // override is not available on pre-iOS 13 devices, so the dark mode colors
   // must be provided manually.
   if (@available(iOS 13, *)) {
+    styler.cellHighlightColor = [UIColor colorNamed:kTableViewRowHighlightColor];
     self.remoteTabsViewController.overrideUserInterfaceStyle =
         UIUserInterfaceStyleDark;
     return;
   }
+  styler.cellHighlightColor =
+      [UIColor colorNamed:kTableViewRowHighlightDarkColor];
   styler.cellTitleColor = UIColorFromRGB(kGridDarkThemeCellTitleColor);
   styler.headerFooterTitleColor = UIColorFromRGB(kGridDarkThemeCellTitleColor);
   styler.cellDetailColor = UIColorFromRGB(kGridDarkThemeCellDetailColor,
diff --git a/ios/chrome/browser/ui/table_view/table_view_navigation_controller.mm b/ios/chrome/browser/ui/table_view/table_view_navigation_controller.mm
index c9ee82b9..c23efe2 100644
--- a/ios/chrome/browser/ui/table_view/table_view_navigation_controller.mm
+++ b/ios/chrome/browser/ui/table_view/table_view_navigation_controller.mm
@@ -37,6 +37,7 @@
   self.navigationBar.prefersLargeTitles = YES;
 
   self.toolbar.translucent = NO;
+  self.toolbar.barTintColor = UIColor.cr_systemBackgroundColor;
 }
 
 @end
diff --git a/ios/showcase/payments/sc_payments_editor_egtest.mm b/ios/showcase/payments/sc_payments_editor_egtest.mm
index fd1c7a41..1a14a972 100644
--- a/ios/showcase/payments/sc_payments_editor_egtest.mm
+++ b/ios/showcase/payments/sc_payments_editor_egtest.mm
@@ -98,16 +98,6 @@
 
 @implementation SCPaymentsEditorTestCase
 
-// Per crbug.com/845186, Disable flakey iPad Retina tests that are limited
-// to iOS 10.2.
-+ (NSArray*)testInvocations {
-#if TARGET_IPHONE_SIMULATOR
-  if ([ChromeEarlGrey isIPadIdiom] && !base::ios::IsRunningOnOrLater(10, 3, 0))
-    return @[];
-#endif  // TARGET_IPHONE_SIMULATOR
-  return [super testInvocations];
-}
-
 - (void)setUp {
   [super setUp];
   Open(@"PaymentRequestEditViewController");
@@ -303,7 +293,8 @@
 // Tests tapping the return key on every textfield causes the next textfield to
 // get focus except for the last textfield in which case causes the focus to go
 // away from the textfield.
-- (void)testNavigationByTappingReturn {
+// TODO(crbug.com/997938): Test is Flaky on iOS13 iPad.
+- (void)FLAKY_testNavigationByTappingReturn {
   // Tap the name textfield.
   [[EarlGrey selectElementWithMatcher:grey_accessibilityID(@"Name_textField")]
       performAction:grey_tap()];
diff --git a/ios/web/navigation/crw_wk_navigation_handler.mm b/ios/web/navigation/crw_wk_navigation_handler.mm
index 1182261..34721f9 100644
--- a/ios/web/navigation/crw_wk_navigation_handler.mm
+++ b/ios/web/navigation/crw_wk_navigation_handler.mm
@@ -1642,6 +1642,16 @@
         // If URL is blocked due to Restriction, do not take any further
         // action as WKWebView will show a built-in error.
         if (!web::RequiresContentFilterBlockingWorkaround()) {
+          // On iOS13, immediately following this navigation, WebKit will
+          // navigate to an internal failure page. Unfortunately, due to how
+          // SlimNav session restoration works with same document navigations,
+          // this page blocked by a content filter puts WebKit into a state
+          // where all further restoration same-document navigations are 'stuck'
+          // on this failure page.  Instead, avoid restoring this page
+          // completely.  Consider revisiting this if and when a proper session
+          // restoration API is provided by WKWebView.
+          self.navigationManagerImpl->SetWKWebViewNextPendingUrlNotSerializable(
+              navigationContext->GetUrl());
           return;
         } else if (!PageTransitionIsNewNavigation(transition)) {
           if (transition & ui::PAGE_TRANSITION_RELOAD) {
diff --git a/ios/web/navigation/navigation_item_impl.h b/ios/web/navigation/navigation_item_impl.h
index 87e7103..0e1262a 100644
--- a/ios/web/navigation/navigation_item_impl.h
+++ b/ios/web/navigation/navigation_item_impl.h
@@ -96,6 +96,11 @@
   void SetShouldSkipRepostFormConfirmation(bool skip);
   bool ShouldSkipRepostFormConfirmation() const;
 
+  // Whether or not to bypass serializing this item to session storage.  Set to
+  // YES to skip saving this page (and therefore restoring this page).
+  void SetShouldSkipSerialization(bool skip);
+  bool ShouldSkipSerialization() const;
+
   // Data submitted with a POST request, persisted for resubmits.
   void SetPostData(NSData* post_data);
   NSData* GetPostData() const;
@@ -153,6 +158,7 @@
   bool has_state_been_replaced_;
   bool is_created_from_hash_change_;
   bool should_skip_repost_form_confirmation_;
+  bool should_skip_serialization_;
   NSData* post_data_;
   ErrorRetryStateMachine error_retry_state_machine_;
 
diff --git a/ios/web/navigation/navigation_item_impl.mm b/ios/web/navigation/navigation_item_impl.mm
index 3653f55..aff1281 100644
--- a/ios/web/navigation/navigation_item_impl.mm
+++ b/ios/web/navigation/navigation_item_impl.mm
@@ -48,6 +48,7 @@
       has_state_been_replaced_(false),
       is_created_from_hash_change_(false),
       should_skip_repost_form_confirmation_(false),
+      should_skip_serialization_(false),
       navigation_initiation_type_(web::NavigationInitiationType::NONE),
       is_untrusted_(false) {}
 
@@ -74,6 +75,7 @@
       is_created_from_hash_change_(item.is_created_from_hash_change_),
       should_skip_repost_form_confirmation_(
           item.should_skip_repost_form_confirmation_),
+      should_skip_serialization_(item.should_skip_serialization_),
       post_data_([item.post_data_ copy]),
       error_retry_state_machine_(item.error_retry_state_machine_),
       navigation_initiation_type_(item.navigation_initiation_type_),
@@ -281,6 +283,14 @@
   return should_skip_repost_form_confirmation_;
 }
 
+void NavigationItemImpl::SetShouldSkipSerialization(bool skip) {
+  should_skip_serialization_ = skip;
+}
+
+bool NavigationItemImpl::ShouldSkipSerialization() const {
+  return should_skip_serialization_;
+}
+
 void NavigationItemImpl::SetPostData(NSData* post_data) {
   post_data_ = post_data;
 }
diff --git a/ios/web/navigation/navigation_manager_impl.h b/ios/web/navigation/navigation_manager_impl.h
index 2e95d36c..ba194ff48 100644
--- a/ios/web/navigation/navigation_manager_impl.h
+++ b/ios/web/navigation/navigation_manager_impl.h
@@ -170,6 +170,10 @@
   // Applies the workaround for crbug.com/887497.
   virtual void ApplyWKWebViewForwardHistoryClobberWorkaround();
 
+  // Set ShouldSkipSerialization to true for the next pending item, provided it
+  // matches |url|.  Applies the workaround for crbug.com/997182
+  virtual void SetWKWebViewNextPendingUrlNotSerializable(const GURL& url);
+
   // Resets the transient url rewriter list.
   void RemoveTransientURLRewriters();
 
diff --git a/ios/web/navigation/navigation_manager_impl.mm b/ios/web/navigation/navigation_manager_impl.mm
index 45ab0fc..a0f15ab 100644
--- a/ios/web/navigation/navigation_manager_impl.mm
+++ b/ios/web/navigation/navigation_manager_impl.mm
@@ -131,6 +131,11 @@
   NOTREACHED();
 }
 
+void NavigationManagerImpl::SetWKWebViewNextPendingUrlNotSerializable(
+    const GURL& url) {
+  NOTREACHED();
+}
+
 void NavigationManagerImpl::RemoveTransientURLRewriters() {
   transient_url_rewriters_.clear();
 }
diff --git a/ios/web/navigation/session_storage_builder.mm b/ios/web/navigation/session_storage_builder.mm
index 2d7957e..6337b2a 100644
--- a/ios/web/navigation/session_storage_builder.mm
+++ b/ios/web/navigation/session_storage_builder.mm
@@ -43,8 +43,17 @@
        ++index) {
     web::NavigationItemImpl* item =
         navigation_manager->GetNavigationItemImplAtIndex(index);
+    if (item->ShouldSkipSerialization()) {
+      if (index <= static_cast<size_t>(
+                       navigation_manager->GetLastCommittedItemIndex())) {
+        session_storage.lastCommittedItemIndex--;
+      }
+      continue;
+    }
     [item_storages addObject:item_storage_builder.BuildStorage(item)];
   }
+  DCHECK_LT(session_storage.lastCommittedItemIndex,
+            static_cast<NSInteger>(item_storages.count));
   session_storage.itemStorages = item_storages;
   SessionCertificatePolicyCacheStorageBuilder cert_builder;
   session_storage.certPolicyCacheStorage = cert_builder.BuildStorage(
diff --git a/ios/web/navigation/wk_based_navigation_manager_impl.h b/ios/web/navigation/wk_based_navigation_manager_impl.h
index 3340cb61..b0be92c 100644
--- a/ios/web/navigation/wk_based_navigation_manager_impl.h
+++ b/ios/web/navigation/wk_based_navigation_manager_impl.h
@@ -118,6 +118,7 @@
   bool IsRestoreSessionInProgress() const override;
   void SetPendingItemIndex(int index) override;
   void ApplyWKWebViewForwardHistoryClobberWorkaround() override;
+  void SetWKWebViewNextPendingUrlNotSerializable(const GURL& url) override;
 
   // NavigationManager:
   BrowserState* GetBrowserState() const override;
@@ -300,6 +301,10 @@
   // committed item.
   bool going_to_back_forward_list_item_ = false;
 
+  // Set to an URL when the next created pending item should set
+  // ShouldSkipSerialization to true, provided it matches |url|.
+  GURL next_pending_url_should_skip_serialization_;
+
   // Non null during the session restoration. Created when session restoration
   // is started and reset when the restoration is finished. Used to log UMA
   // histogram that measures session restoration time.
diff --git a/ios/web/navigation/wk_based_navigation_manager_impl.mm b/ios/web/navigation/wk_based_navigation_manager_impl.mm
index 167b5fa..d846b9d 100644
--- a/ios/web/navigation/wk_based_navigation_manager_impl.mm
+++ b/ios/web/navigation/wk_based_navigation_manager_impl.mm
@@ -170,6 +170,12 @@
                                  GetLastCommittedItemWithUserAgentType(),
                                  pending_item_.get());
 
+  if (!next_pending_url_should_skip_serialization_.is_empty() &&
+      url == next_pending_url_should_skip_serialization_) {
+    pending_item_->SetShouldSkipSerialization(true);
+  }
+  next_pending_url_should_skip_serialization_ = GURL::EmptyGURL();
+
   // No need to detect renderer-initiated back/forward navigation in detached
   // mode because there is no renderer.
   if (!web_view_cache_.IsAttachedToWebView())
@@ -636,6 +642,11 @@
   UnsafeRestore(/*last_committed_item_index_=*/0, std::move(forward_items));
 }
 
+void WKBasedNavigationManagerImpl::SetWKWebViewNextPendingUrlNotSerializable(
+    const GURL& url) {
+  next_pending_url_should_skip_serialization_ = url;
+}
+
 void WKBasedNavigationManagerImpl::Restore(
     int last_committed_item_index,
     std::vector<std::unique_ptr<NavigationItem>> items) {
diff --git a/ios/web/navigation/wk_based_navigation_manager_impl_unittest.mm b/ios/web/navigation/wk_based_navigation_manager_impl_unittest.mm
index 730bd081..4b3fd23 100644
--- a/ios/web/navigation/wk_based_navigation_manager_impl_unittest.mm
+++ b/ios/web/navigation/wk_based_navigation_manager_impl_unittest.mm
@@ -1026,4 +1026,29 @@
   EXPECT_EQ(url2_, manager_->GetNavigationItemImplAtIndex(2)->GetURL());
 }
 
+// Tests that pending item is set to serializable when appropriate.
+TEST_F(WKBasedNavigationManagerDetachedModeTest, NotSerializable) {
+  manager_->AddPendingItem(
+      GURL("http://www.0.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
+      web::NavigationInitiationType::BROWSER_INITIATED,
+      web::NavigationManager::UserAgentOverrideOption::DESKTOP);
+  EXPECT_FALSE(manager_->GetPendingItemInCurrentOrRestoredSession()
+                   ->ShouldSkipSerialization());
+
+  manager_->SetWKWebViewNextPendingUrlNotSerializable(GURL("http://www.1.com"));
+  manager_->AddPendingItem(
+      GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
+      web::NavigationInitiationType::BROWSER_INITIATED,
+      web::NavigationManager::UserAgentOverrideOption::DESKTOP);
+  EXPECT_TRUE(manager_->GetPendingItemInCurrentOrRestoredSession()
+                  ->ShouldSkipSerialization());
+
+  manager_->AddPendingItem(
+      GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
+      web::NavigationInitiationType::BROWSER_INITIATED,
+      web::NavigationManager::UserAgentOverrideOption::DESKTOP);
+  EXPECT_FALSE(manager_->GetPendingItemInCurrentOrRestoredSession()
+                   ->ShouldSkipSerialization());
+}
+
 }  // namespace web
diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
index 08c606b..ad85ba9 100644
--- a/media/base/media_switches.cc
+++ b/media/base/media_switches.cc
@@ -573,6 +573,9 @@
 #endif
 };
 
+const base::Feature kUseFakeDeviceForMediaStream{
+    "use-fake-device-for-media-stream", base::FEATURE_DISABLED_BY_DEFAULT};
+
 bool IsVideoCaptureAcceleratedJpegDecodingEnabled() {
   if (base::CommandLine::ForCurrentProcess()->HasSwitch(
           switches::kDisableAcceleratedMjpegDecode)) {
diff --git a/media/base/media_switches.h b/media/base/media_switches.h
index 9728fc17..5c18a90e 100644
--- a/media/base/media_switches.h
+++ b/media/base/media_switches.h
@@ -134,6 +134,7 @@
 MEDIA_EXPORT extern const base::Feature kUnifiedAutoplay;
 MEDIA_EXPORT extern const base::Feature kUseAndroidOverlay;
 MEDIA_EXPORT extern const base::Feature kUseAndroidOverlayAggressively;
+MEDIA_EXPORT extern const base::Feature kUseFakeDeviceForMediaStream;
 MEDIA_EXPORT extern const base::Feature kUseNewMediaCache;
 MEDIA_EXPORT extern const base::Feature kUseR16Texture;
 MEDIA_EXPORT extern const base::Feature kUseSurfaceLayerForVideo;
diff --git a/mojo/public/cpp/bindings/associated_receiver.h b/mojo/public/cpp/bindings/associated_receiver.h
index 8672cd83..170257f 100644
--- a/mojo/public/cpp/bindings/associated_receiver.h
+++ b/mojo/public/cpp/bindings/associated_receiver.h
@@ -200,6 +200,11 @@
   // stimulus.
   void FlushForTesting() { binding_.FlushForTesting(); }
 
+  // Allows test code to swap the interface implementation.
+  ImplPointerType SwapImplForTesting(ImplPointerType new_impl) {
+    return binding_.SwapImplForTesting(new_impl);
+  }
+
  private:
   // TODO(https://crbug.com/875030): Move AssociatedBinding details into this
   // class.
diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_state.cc
index e7f04f42..460b9585 100644
--- a/net/http/transport_security_state.cc
+++ b/net/http/transport_security_state.cc
@@ -404,6 +404,10 @@
 }
 
 TransportSecurityState::TransportSecurityState()
+    : TransportSecurityState(std::vector<std::string>()) {}
+
+TransportSecurityState::TransportSecurityState(
+    std::vector<std::string> hsts_host_bypass_list)
     : enable_static_pins_(true),
       enable_static_expect_ct_(true),
       enable_pkp_bypass_for_local_trust_anchors_(true),
@@ -415,6 +419,11 @@
   enable_static_pins_ = false;
   enable_static_expect_ct_ = false;
 #endif
+  // Check that there no invalid entries in the static HSTS bypass list.
+  for (auto& host : hsts_host_bypass_list) {
+    DCHECK(host.find('.') == std::string::npos);
+    hsts_host_bypass_list_.insert(host);
+  }
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
 }
 
@@ -1140,7 +1149,8 @@
   if (!DecodeHSTSPreload(host, &result))
     return false;
 
-  if (result.force_https) {
+  if (hsts_host_bypass_list_.find(host) == hsts_host_bypass_list_.end() &&
+      result.force_https) {
     sts_result->domain = host.substr(result.hostname_offset);
     sts_result->include_subdomains = result.sts_include_subdomains;
     sts_result->last_observed = base::GetBuildTime();
diff --git a/net/http/transport_security_state.h b/net/http/transport_security_state.h
index 3488fb6..5758da2 100644
--- a/net/http/transport_security_state.h
+++ b/net/http/transport_security_state.h
@@ -334,6 +334,13 @@
   static const base::Feature kDynamicExpectCTFeature;
 
   TransportSecurityState();
+
+  // Creates a TransportSecurityState object that will skip the check to force
+  // HTTPS from static entries for the given set of hosts. All hostnames in the
+  // bypass list must consist of a single label, i.e. they must be a TLD.
+  explicit TransportSecurityState(
+      std::vector<std::string> hsts_host_bypass_list);
+
   ~TransportSecurityState();
 
   // These functions search for static and dynamic STS and PKP states, and
@@ -659,6 +666,8 @@
   ReportCache sent_hpkp_reports_cache_;
   ReportCache sent_expect_ct_reports_cache_;
 
+  std::set<std::string> hsts_host_bypass_list_;
+
   THREAD_CHECKER(thread_checker_);
 
   DISALLOW_COPY_AND_ASSIGN(TransportSecurityState);
diff --git a/net/http/transport_security_state_static_unittest_default.json b/net/http/transport_security_state_static_unittest_default.json
index 11a2f4e7..05179e4 100644
--- a/net/http/transport_security_state_static_unittest_default.json
+++ b/net/http/transport_security_state_static_unittest_default.json
@@ -36,6 +36,7 @@
   "entries": [
     { "name": "hsts-preloaded.test", "policy": "test", "mode": "force-https" },
     { "name": "include-subdomains-hsts-preloaded.test", "policy": "test", "mode": "force-https", "include_subdomains": true },
+    { "name": "example", "policy": "test", "mode": "force-https", "include_subdomains": true },
 
     { "name": "no-rejected-pins-pkp.preloaded.test", "policy": "test", "pins": "withoutRejectedPins" },
     { "name": "with-report-uri-pkp.preloaded.test", "policy": "test", "pins": "withReportUri" },
diff --git a/net/http/transport_security_state_unittest.cc b/net/http/transport_security_state_unittest.cc
index d8504f24..e40e749 100644
--- a/net/http/transport_security_state_unittest.cc
+++ b/net/http/transport_security_state_unittest.cc
@@ -1432,6 +1432,31 @@
   EXPECT_FALSE(GetExpectCTState(&state, "simple-entry.example.com", &ct_state));
 }
 
+TEST_F(TransportSecurityStateTest, HstsHostBypassList) {
+  SetTransportSecurityStateSourceForTesting(&test_default::kHSTSSource);
+
+  TransportSecurityState::STSState sts_state;
+  TransportSecurityState::PKPState pkp_state;
+
+  std::string preloaded_tld = "example";
+  std::string subdomain = "sub.example";
+
+  {
+    TransportSecurityState state;
+    // Check that "example" is preloaded with subdomains.
+    EXPECT_TRUE(state.ShouldUpgradeToSSL(preloaded_tld));
+    EXPECT_TRUE(state.ShouldUpgradeToSSL(subdomain));
+  }
+
+  {
+    // Add "example" to the bypass list.
+    TransportSecurityState state({preloaded_tld});
+    EXPECT_FALSE(state.ShouldUpgradeToSSL(preloaded_tld));
+    // The preloaded entry should still apply to the subdomain.
+    EXPECT_TRUE(state.ShouldUpgradeToSSL(subdomain));
+  }
+}
+
 // Tests that TransportSecurityState always consults the RequireCTDelegate,
 // if supplied.
 TEST_F(TransportSecurityStateTest, RequireCTConsultsDelegate) {
diff --git a/net/url_request/url_request_http_job_unittest.cc b/net/url_request/url_request_http_job_unittest.cc
index 8e11fabf..eed721f 100644
--- a/net/url_request/url_request_http_job_unittest.cc
+++ b/net/url_request/url_request_http_job_unittest.cc
@@ -18,6 +18,7 @@
 #include "base/run_loop.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
+#include "base/test/bind_test_util.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "net/base/auth.h"
 #include "net/base/request_priority.h"
@@ -32,6 +33,7 @@
 #include "net/socket/next_proto.h"
 #include "net/socket/socket_test_util.h"
 #include "net/test/cert_test_util.h"
+#include "net/test/embedded_test_server/default_handlers.h"
 #include "net/test/gtest_util.h"
 #include "net/test/test_data_directory.h"
 #include "net/test/test_with_task_environment.h"
@@ -1396,6 +1398,91 @@
   }
 }
 
+TEST_F(URLRequestHttpJobTest, HSTSInternalRedirectCallback) {
+  EmbeddedTestServer https_test(EmbeddedTestServer::TYPE_HTTPS);
+  https_test.AddDefaultHandlers(base::FilePath());
+  ASSERT_TRUE(https_test.Start());
+
+  TestURLRequestContext context;
+  context.transport_security_state()->AddHSTS(
+      "127.0.0.1", base::Time::Now() + base::TimeDelta::FromSeconds(10), true);
+  ASSERT_TRUE(
+      context.transport_security_state()->ShouldUpgradeToSSL("127.0.0.1"));
+
+  GURL::Replacements replace_scheme;
+  replace_scheme.SetSchemeStr("http");
+
+  {
+    GURL url(
+        https_test.GetURL("/echoheader").ReplaceComponents(replace_scheme));
+    TestDelegate delegate;
+    HttpRequestHeaders extra_headers;
+    extra_headers.SetHeader("X-HSTS-Test", "1");
+
+    HttpRawRequestHeaders raw_req_headers;
+
+    std::unique_ptr<URLRequest> r(context.CreateRequest(
+        url, DEFAULT_PRIORITY, &delegate, TRAFFIC_ANNOTATION_FOR_TESTS));
+    r->SetExtraRequestHeaders(extra_headers);
+    r->SetRequestHeadersCallback(base::Bind(
+        &HttpRawRequestHeaders::Assign, base::Unretained(&raw_req_headers)));
+
+    r->Start();
+    delegate.RunUntilRedirect();
+
+    EXPECT_FALSE(raw_req_headers.headers().empty());
+    std::string value;
+    EXPECT_TRUE(raw_req_headers.FindHeaderForTest("X-HSTS-Test", &value));
+    EXPECT_EQ("1", value);
+    EXPECT_EQ("GET /echoheader HTTP/1.1\r\n", raw_req_headers.request_line());
+
+    raw_req_headers = HttpRawRequestHeaders();
+
+    r->FollowDeferredRedirect(base::nullopt /* removed_headers */,
+                              base::nullopt /* modified_headers */);
+    delegate.RunUntilComplete();
+
+    EXPECT_FALSE(raw_req_headers.headers().empty());
+  }
+
+  {
+    GURL url(https_test.GetURL("/echoheader?foo=bar")
+                 .ReplaceComponents(replace_scheme));
+    TestDelegate delegate;
+
+    HttpRawRequestHeaders raw_req_headers;
+
+    std::unique_ptr<URLRequest> r(context.CreateRequest(
+        url, DEFAULT_PRIORITY, &delegate, TRAFFIC_ANNOTATION_FOR_TESTS));
+    r->SetRequestHeadersCallback(base::Bind(
+        &HttpRawRequestHeaders::Assign, base::Unretained(&raw_req_headers)));
+
+    r->Start();
+    delegate.RunUntilRedirect();
+
+    EXPECT_EQ("GET /echoheader?foo=bar HTTP/1.1\r\n",
+              raw_req_headers.request_line());
+  }
+
+  {
+    GURL url(
+        https_test.GetURL("/echoheader#foo").ReplaceComponents(replace_scheme));
+    TestDelegate delegate;
+
+    HttpRawRequestHeaders raw_req_headers;
+
+    std::unique_ptr<URLRequest> r(context.CreateRequest(
+        url, DEFAULT_PRIORITY, &delegate, TRAFFIC_ANNOTATION_FOR_TESTS));
+    r->SetRequestHeadersCallback(base::Bind(
+        &HttpRawRequestHeaders::Assign, base::Unretained(&raw_req_headers)));
+
+    r->Start();
+    delegate.RunUntilRedirect();
+
+    EXPECT_EQ("GET /echoheader HTTP/1.1\r\n", raw_req_headers.request_line());
+  }
+}
+
 class URLRequestHttpJobWithBrotliSupportTest : public TestWithTaskEnvironment {
  protected:
   URLRequestHttpJobWithBrotliSupportTest()
diff --git a/net/url_request/url_request_redirect_job.cc b/net/url_request/url_request_redirect_job.cc
index e59860b5..7cd18fd 100644
--- a/net/url_request/url_request_redirect_job.cc
+++ b/net/url_request/url_request_redirect_job.cc
@@ -17,12 +17,14 @@
 #include "net/base/load_timing_info.h"
 #include "net/base/net_errors.h"
 #include "net/http/http_log_util.h"
+#include "net/http/http_raw_request_headers.h"
 #include "net/http/http_response_headers.h"
 #include "net/http/http_util.h"
 #include "net/log/net_log.h"
 #include "net/log/net_log_event_type.h"
 #include "net/log/net_log_with_source.h"
 #include "net/url_request/url_request.h"
+#include "net/url_request/url_request_job.h"
 
 namespace net {
 
@@ -119,6 +121,20 @@
       NetLogEventType::URL_REQUEST_FAKE_RESPONSE_HEADERS_CREATED,
       fake_headers_.get());
 
+  // Send request headers along if there's a callback
+  if (request_headers_callback_) {
+    HttpRawRequestHeaders raw_request_headers;
+    for (const auto& header : request_headers.GetHeaderVector()) {
+      raw_request_headers.Add(header.key, header.value);
+    }
+
+    // Just to make extra sure everyone knows this is an internal header
+    raw_request_headers.set_request_line(
+        base::StringPrintf("%s %s HTTP/1.1\r\n", request_->method().c_str(),
+                           request_->url().PathForRequest().c_str()));
+    request_headers_callback_.Run(std::move(raw_request_headers));
+  }
+
   // TODO(mmenke):  Consider calling the NetworkDelegate with the headers here.
   // There's some weirdness about how to handle the case in which the delegate
   // tries to modify the redirect location, in terms of how IsSafeRedirect
@@ -126,4 +142,9 @@
   URLRequestJob::NotifyHeadersComplete();
 }
 
+void URLRequestRedirectJob::SetRequestHeadersCallback(
+    RequestHeadersCallback callback) {
+  request_headers_callback_ = std::move(callback);
+}
+
 }  // namespace net
diff --git a/net/url_request/url_request_redirect_job.h b/net/url_request/url_request_redirect_job.h
index 8d7b861..244de39 100644
--- a/net/url_request/url_request_redirect_job.h
+++ b/net/url_request/url_request_redirect_job.h
@@ -10,6 +10,7 @@
 #include "base/memory/weak_ptr.h"
 #include "base/time/time.h"
 #include "net/base/net_export.h"
+#include "net/http/http_raw_request_headers.h"
 #include "net/http/http_response_info.h"
 #include "net/url_request/url_request_job.h"
 
@@ -49,6 +50,7 @@
   void Start() override;
   void Kill() override;
   bool CopyFragmentOnRedirect(const GURL& location) const override;
+  void SetRequestHeadersCallback(RequestHeadersCallback callback) override;
 
  private:
   void StartAsync();
@@ -61,6 +63,8 @@
 
   scoped_refptr<HttpResponseHeaders> fake_headers_;
 
+  RequestHeadersCallback request_headers_callback_;
+
   base::WeakPtrFactory<URLRequestRedirectJob> weak_factory_{this};
 };
 
diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc
index 447794b..cb008715 100644
--- a/net/url_request/url_request_unittest.cc
+++ b/net/url_request/url_request_unittest.cc
@@ -11580,13 +11580,7 @@
   EXPECT_TRUE(cert_status & CERT_STATUS_REV_CHECKING_ENABLED);
 }
 
-// Disabled on NSS ports. See https://crbug.com/431716.
-#if defined(USE_NSS_CERTS)
-#define MAYBE_RevokedStapled DISABLED_RevokedStapled
-#else
-#define MAYBE_RevokedStapled RevokedStapled
-#endif
-TEST_F(HTTPSOCSPTest, MAYBE_RevokedStapled) {
+TEST_F(HTTPSOCSPTest, RevokedStapled) {
   if (!SystemSupportsOCSPStapling()) {
     LOG(WARNING)
         << "Skipping test because system doesn't support OCSP stapling";
@@ -11868,13 +11862,7 @@
     : public HTTPSOCSPTest,
       public testing::WithParamInterface<OCSPVerifyTestData> {};
 
-// TODO(crbug.com/949958): The test is flaky on Mac
-#if defined(OS_MACOSX)
-#define MAYBE_VerifyResult DISABLED_VerifyResult
-#else
-#define MAYBE_VerifyResult VerifyResult
-#endif
-TEST_P(HTTPSOCSPVerifyTest, MAYBE_VerifyResult) {
+TEST_P(HTTPSOCSPVerifyTest, VerifyResult) {
   SpawnedTestServer::SSLOptions ssl_options(
       SpawnedTestServer::SSLOptions::CERT_AUTO);
   OCSPVerifyTestData test = GetParam();
diff --git a/printing/backend/print_backend_cups.cc b/printing/backend/print_backend_cups.cc
index 30c10ada..909c97b 100644
--- a/printing/backend/print_backend_cups.cc
+++ b/printing/backend/print_backend_cups.cc
@@ -93,6 +93,10 @@
   return true;
 }
 
+void PrintBackendCUPS::DestinationDeleter::operator()(cups_dest_t* dest) const {
+  cupsFreeDests(1, dest);
+}
+
 bool PrintBackendCUPS::EnumeratePrinters(PrinterList* printer_list) {
   DCHECK(printer_list);
   printer_list->clear();
@@ -133,14 +137,12 @@
 
 bool PrintBackendCUPS::GetPrinterBasicInfo(const std::string& printer_name,
                                            PrinterBasicInfo* printer_info) {
-  cups_dest_t* dest = GetNamedDest(printer_name);
+  ScopedDestination dest = GetNamedDest(printer_name);
   if (!dest)
     return false;
 
   DCHECK_EQ(printer_name, dest->name);
-  bool ret = PrinterBasicInfoFromCUPS(*dest, printer_info);
-  cupsFreeDests(1, dest);
-  return ret;
+  return PrinterBasicInfoFromCUPS(*dest, printer_info);
 }
 
 bool PrintBackendCUPS::GetPrinterSemanticCapsAndDefaults(
@@ -191,7 +193,7 @@
     const std::string& printer_name) {
   std::string result;
 
-  cups_dest_t* dest = GetNamedDest(printer_name);
+  ScopedDestination dest = GetNamedDest(printer_name);
   if (!dest)
     return result;
 
@@ -200,17 +202,11 @@
       cupsGetOption(kDriverNameTagName, dest->num_options, dest->options);
   if (info)
     result = *info;
-  cupsFreeDests(1, dest);
   return result;
 }
 
 bool PrintBackendCUPS::IsValidPrinter(const std::string& printer_name) {
-  cups_dest_t* dest = GetNamedDest(printer_name);
-  if (!dest)
-    return false;
-
-  cupsFreeDests(1, dest);
-  return true;
+  return !!GetNamedDest(printer_name);
 }
 
 #if !defined(OS_CHROMEOS)
@@ -291,14 +287,18 @@
   return ppd_path;
 }
 
-cups_dest_t* PrintBackendCUPS::GetNamedDest(const std::string& printer_name) {
-  // Use default (local) print server.
-  if (print_server_url_.is_empty())
-    return cupsGetNamedDest(CUPS_HTTP_DEFAULT, printer_name.c_str(), nullptr);
-
-  HttpConnectionCUPS http(print_server_url_, cups_encryption_);
-  http.SetBlocking(blocking_);
-  return cupsGetNamedDest(http.http(), printer_name.c_str(), nullptr);
+PrintBackendCUPS::ScopedDestination PrintBackendCUPS::GetNamedDest(
+    const std::string& printer_name) {
+  cups_dest_t* dest;
+  if (print_server_url_.is_empty()) {
+    // Use default (local) print server.
+    dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, printer_name.c_str(), nullptr);
+  } else {
+    HttpConnectionCUPS http(print_server_url_, cups_encryption_);
+    http.SetBlocking(blocking_);
+    dest = cupsGetNamedDest(http.http(), printer_name.c_str(), nullptr);
+  }
+  return ScopedDestination(dest);
 }
 
 }  // namespace printing
diff --git a/printing/backend/print_backend_cups.h b/printing/backend/print_backend_cups.h
index e1eb435..fb2dadf 100644
--- a/printing/backend/print_backend_cups.h
+++ b/printing/backend/print_backend_cups.h
@@ -5,6 +5,7 @@
 #ifndef PRINTING_BACKEND_PRINT_BACKEND_CUPS_H_
 #define PRINTING_BACKEND_PRINT_BACKEND_CUPS_H_
 
+#include <memory>
 #include <string>
 
 #include "base/files/file_util.h"
@@ -27,6 +28,11 @@
       PrinterBasicInfo* printer_info);
 
  private:
+  struct DestinationDeleter {
+    void operator()(cups_dest_t* dest) const;
+  };
+  using ScopedDestination = std::unique_ptr<cups_dest_t, DestinationDeleter>;
+
   ~PrintBackendCUPS() override {}
 
   // PrintBackend implementation.
@@ -49,9 +55,8 @@
   int GetDests(cups_dest_t** dests);
   base::FilePath GetPPD(const char* name);
 
-  // Wrapper around cupsGetNamedDest(). Returned result should be freed with
-  // cupsFreeDests().
-  cups_dest_t* GetNamedDest(const std::string& printer_name);
+  // Wrapper around cupsGetNamedDest().
+  ScopedDestination GetNamedDest(const std::string& printer_name);
 
   GURL print_server_url_;
   http_encryption_t cups_encryption_;
diff --git a/services/audio/stream_factory.cc b/services/audio/stream_factory.cc
index e15e6c2..4f2076f 100644
--- a/services/audio/stream_factory.cc
+++ b/services/audio/stream_factory.cc
@@ -11,6 +11,7 @@
 #include "base/trace_event/trace_event.h"
 #include "base/unguessable_token.h"
 #include "components/crash/core/common/crash_key.h"
+#include "media/audio/audio_device_description.h"
 #include "services/audio/input_stream.h"
 #include "services/audio/local_muter.h"
 #include "services/audio/loopback_stream.h"
@@ -128,7 +129,11 @@
   // See //chromecast/media/cast_audio_manager.h for more information.
   const std::string device_id_or_group_id =
 #if defined(IS_CHROMECAST)
-      (group_id.ToString().empty()) ? output_device_id : group_id.ToString();
+      (::media::AudioDeviceDescription::IsCommunicationsDevice(
+           output_device_id) ||
+       group_id.is_empty())
+          ? output_device_id
+          : group_id.ToString();
 #else
       output_device_id;
 #endif
diff --git a/services/resource_coordinator/public/mojom/coordination_unit.mojom b/services/resource_coordinator/public/mojom/coordination_unit.mojom
index 2acc573..bda67fab 100644
--- a/services/resource_coordinator/public/mojom/coordination_unit.mojom
+++ b/services/resource_coordinator/public/mojom/coordination_unit.mojom
@@ -34,20 +34,6 @@
   kDefault,
 };
 
-// A list of interventions for which policy is communicated from individual
-// frames and propagated through the frame tree. As each frame loads it will
-// communicate the policy state to the associated FrameCoordinationUnit, and
-// these will eventually be aggregated to the parent PageCoordinationUnit and
-// applied to an entire frame tree.
-//
-// TODO(https://crbug.com/999594): Remove this enum once it is no longer
-// referenced in C++ code.
-enum PolicyControlledIntervention {
-  // Page lifecycles is a feature that causes pages to transition through
-  // lifecycle states in an attempt to save/reclaim resources.
-  kPageLifecycleTransitions,
-};
-
 // Interface used by a blink::Document to communicate state associated with
 // resource management to the embedder.
 interface DocumentCoordinationUnit {
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index ca338b1..ac5c188 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -2158,6 +2158,1930 @@
       "libANGLE"
     ]
   },
+  "Win10 Tests x64 1803": {
+    "gtest_tests": [
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "accessibility_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "angle_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "app_shell_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "aura_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "base_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "blink_common_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "blink_fuzzer_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "blink_heap_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "blink_platform_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "name": "webkit_unit_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "blink_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "boringssl_crypto_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "boringssl_ssl_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ],
+          "shards": 10
+        },
+        "test": "browser_tests"
+      },
+      {
+        "args": [
+          "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0",
+          "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter"
+        ],
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "name": "webui_html_imports_polyfill_browser_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "browser_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "cacheinvalidation_unittests"
+      },
+      {
+        "args": [
+          "--gtest_filter=-*UsingRealWebcam*"
+        ],
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "capture_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "cast_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "cc_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "chrome_app_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "chrome_cleaner_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "chrome_elf_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "chromedriver_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "components_browsertests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "components_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "compositor_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ],
+          "shards": 6
+        },
+        "test": "content_browsertests"
+      },
+      {
+        "args": [
+          "--disable-perfetto",
+          "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*"
+        ],
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "name": "nonperfetto_content_browsertests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "content_browsertests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "content_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "courgette_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "crashpad_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "cronet_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "cronet_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "crypto_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "delayloads_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "device_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "display_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "elevation_service_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "events_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "extensions_browsertests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "extensions_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "filesystem_service_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "gcm_unit_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "gcp_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "gfx_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "gin_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "google_apis_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "gpu_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "gwp_asan_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "headless_browsertests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "headless_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "install_static_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "integrity": "high",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "installer_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ],
+          "shards": 3
+        },
+        "test": "interactive_ui_tests"
+      },
+      {
+        "args": [
+          "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0",
+          "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_interactive_ui_tests.filter"
+        ],
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "name": "webui_html_imports_polyfill_interactive_ui_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "interactive_ui_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "ipc_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "jingle_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "latency_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "leveldb_service_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "libjingle_xmpp_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "media_blink_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "media_service_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "media_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "message_center_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "midi_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "mojo_core_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "mojo_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "nacl_loader_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "native_theme_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "net_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "notification_helper_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "pdf_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "perfetto_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "ppapi_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "printing_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "remoting_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "integrity": "high",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "sbox_integration_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "sbox_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "sbox_validation_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "service_manager_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "services_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "integrity": "high",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "setup_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "shell_dialogs_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "skia_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "snapshot_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "sql_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "storage_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "sync_integration_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "traffic_annotation_auditor_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "ui_base_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "ui_touch_selection_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "unit_tests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "url_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "views_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "viz_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "vr_common_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "vr_pixeltests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "wm_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "wtf_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        },
+        "test": "zucchini_unittests"
+      }
+    ],
+    "isolated_scripts": [
+      {
+        "isolate_name": "blink_python_tests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "blink_python_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        }
+      },
+      {
+        "args": [
+          "--test-type=integration"
+        ],
+        "isolate_name": "chromedriver_py_tests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "chromedriver_py_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        }
+      },
+      {
+        "isolate_name": "chromedriver_replay_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "chromedriver_replay_unittests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        }
+      },
+      {
+        "args": [
+          "--gtest-benchmark-name=components_perftests"
+        ],
+        "isolate_name": "components_perftests",
+        "merge": {
+          "args": [
+            "--smoke-test-mode"
+          ],
+          "script": "//tools/perf/process_perf_results.py"
+        },
+        "name": "components_perftests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        }
+      },
+      {
+        "isolate_name": "content_shell_crash_test",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "content_shell_crash_test",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        }
+      },
+      {
+        "isolate_name": "flatbuffers_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "flatbuffers_unittests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        }
+      },
+      {
+        "isolate_name": "grit_python_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "grit_python_unittests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        }
+      },
+      {
+        "isolate_name": "metrics_python_tests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "metrics_python_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        }
+      },
+      {
+        "isolate_name": "mini_installer_tests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "mini_installer_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "integrity": "high",
+              "os": "Windows-10-17134"
+            }
+          ]
+        }
+      },
+      {
+        "experiment_percentage": 100,
+        "isolate_name": "polymer_tools_python_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "polymer_tools_python_unittests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        }
+      },
+      {
+        "isolate_name": "telemetry_gpu_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "telemetry_gpu_unittests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ],
+          "idempotent": false
+        }
+      },
+      {
+        "isolate_name": "telemetry_perf_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "telemetry_perf_unittests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ],
+          "idempotent": false,
+          "shards": 12
+        }
+      },
+      {
+        "args": [
+          "--jobs=1",
+          "--extra-browser-args=--disable-gpu"
+        ],
+        "isolate_name": "telemetry_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "telemetry_unittests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ],
+          "idempotent": false,
+          "shards": 4
+        }
+      },
+      {
+        "args": [
+          "--gtest-benchmark-name=views_perftests"
+        ],
+        "isolate_name": "views_perftests",
+        "merge": {
+          "args": [
+            "--smoke-test-mode"
+          ],
+          "script": "//tools/perf/process_perf_results.py"
+        },
+        "name": "views_perftests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ]
+        }
+      },
+      {
+        "args": [
+          "--num-retries=3"
+        ],
+        "isolate_name": "blink_web_tests_exparchive",
+        "merge": {
+          "args": [
+            "--verbose"
+          ],
+          "script": "//third_party/blink/tools/merge_web_test_results.py"
+        },
+        "name": "webkit_layout_tests",
+        "results_handler": "layout tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
+          ],
+          "shards": 12
+        }
+      }
+    ],
+    "scripts": [
+      {
+        "name": "webkit_lint",
+        "script": "blink_lint_expectations.py",
+        "swarming": {}
+      }
+    ]
+  },
   "Win7 Builder (dbg) Goma Canary": {
     "additional_compile_targets": [
       "all"
@@ -5825,6 +7749,50 @@
     "additional_compile_targets": [
       "chromiumos_preflight"
     ],
+    "gtest_tests": [
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "device_type": "kevin",
+              "os": "ChromeOS",
+              "pool": "chrome-cros-dut"
+            }
+          ],
+          "idempotent": false
+        },
+        "test": "chrome_all_tast_tests_informational",
+        "trigger_script": {
+          "script": "//testing/trigger_scripts/chromeos_device_trigger.py"
+        }
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "device_type": "kevin",
+              "os": "ChromeOS",
+              "pool": "chrome-cros-dut"
+            }
+          ],
+          "idempotent": false
+        },
+        "test": "chrome_login_tast_tests",
+        "trigger_script": {
+          "script": "//testing/trigger_scripts/chromeos_device_trigger.py"
+        }
+      }
+    ],
     "isolated_scripts": [
       {
         "args": [
@@ -13776,8 +15744,10 @@
       {
         "isolate_name": "webdriver_wpt_tests",
         "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+          "args": [
+            "--verbose"
+          ],
+          "script": "//third_party/blink/tools/merge_web_test_results.py"
         },
         "name": "webdriver_tests_suite",
         "swarming": {
@@ -13786,7 +15756,8 @@
             {
               "os": "Ubuntu-16.04"
             }
-          ]
+          ],
+          "shards": 4
         }
       },
       {
@@ -21133,10 +23104,10 @@
           "dimension_sets": [
             {
               "gpu": "none",
-              "os": "Mac-10.10"
+              "os": "Mac-10.10.5"
             }
           ],
-          "shards": 12
+          "shards": 20
         }
       }
     ]
@@ -21161,10 +23132,10 @@
           "dimension_sets": [
             {
               "gpu": "none",
-              "os": "Mac-10.11"
+              "os": "Mac-10.11.6"
             }
           ],
-          "shards": 12
+          "shards": 20
         }
       }
     ]
@@ -21193,7 +23164,7 @@
               "os": "Mac-10.12.6"
             }
           ],
-          "shards": 12
+          "shards": 20
         }
       }
     ]
@@ -21223,7 +23194,7 @@
             }
           ],
           "hard_timeout": 900,
-          "shards": 12
+          "shards": 20
         }
       }
     ]
@@ -21253,7 +23224,7 @@
               "pool": "Chrome-GPU"
             }
           ],
-          "shards": 12
+          "shards": 20
         }
       }
     ]
diff --git a/testing/buildbot/chromium.linux.json b/testing/buildbot/chromium.linux.json
index 4b9b9c8..5f1680e 100644
--- a/testing/buildbot/chromium.linux.json
+++ b/testing/buildbot/chromium.linux.json
@@ -5716,8 +5716,10 @@
       {
         "isolate_name": "webdriver_wpt_tests",
         "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+          "args": [
+            "--verbose"
+          ],
+          "script": "//third_party/blink/tools/merge_web_test_results.py"
         },
         "name": "webdriver_tests_suite",
         "swarming": {
@@ -5726,7 +5728,8 @@
             {
               "os": "Ubuntu-16.04"
             }
-          ]
+          ],
+          "shards": 4
         }
       },
       {
@@ -7591,8 +7594,10 @@
       {
         "isolate_name": "webdriver_wpt_tests",
         "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+          "args": [
+            "--verbose"
+          ],
+          "script": "//third_party/blink/tools/merge_web_test_results.py"
         },
         "name": "webdriver_tests_suite",
         "swarming": {
@@ -7601,7 +7606,8 @@
             {
               "os": "Ubuntu-14.04"
             }
-          ]
+          ],
+          "shards": 4
         }
       },
       {
diff --git a/testing/buildbot/chromium.mac.json b/testing/buildbot/chromium.mac.json
index cd59b067..5dba695 100644
--- a/testing/buildbot/chromium.mac.json
+++ b/testing/buildbot/chromium.mac.json
@@ -1543,7 +1543,7 @@
               "os": "Mac-10.10.5"
             }
           ],
-          "shards": 12
+          "shards": 20
         }
       }
     ]
@@ -3080,7 +3080,7 @@
               "os": "Mac-10.11.6"
             }
           ],
-          "shards": 12
+          "shards": 20
         }
       }
     ]
@@ -4662,7 +4662,7 @@
               "os": "Mac-10.12.6"
             }
           ],
-          "shards": 12
+          "shards": 20
         }
       }
     ]
@@ -6222,7 +6222,7 @@
               "os": "Mac-10.13.6"
             }
           ],
-          "shards": 12
+          "shards": 20
         }
       }
     ],
diff --git a/testing/buildbot/mixins.pyl b/testing/buildbot/mixins.pyl
index 58450e72..304b3d7 100644
--- a/testing/buildbot/mixins.pyl
+++ b/testing/buildbot/mixins.pyl
@@ -584,6 +584,13 @@
       },
     },
   },
+  'win10-1803': {
+    'swarming': {
+      'dimensions': {
+        'os': 'Windows-10-17134',
+      },
+    },
+  },
   'win10_amd_rx_550': {
     'swarming': {
       'dimensions': {
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl
index 7c09e26..5ede085 100644
--- a/testing/buildbot/test_suite_exceptions.pyl
+++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -1778,45 +1778,27 @@
       },
       'mac10.10-blink-rel-dummy': {
         'swarming': {
-          'dimension_sets': [
-            { # This should match Mac10.10 Tests on chromium.mac.
-              'gpu': 'none',
-              'os': 'Mac-10.10',
-            }
-          ]
+          'shards': 20,
         },
       },
       'mac10.11-blink-rel-dummy': {
         'swarming': {
-          'dimension_sets': [
-            { # This should match Mac10.11 Tests on chromium.mac.
-              'gpu': 'none',
-              'os': 'Mac-10.11',
-            }
-          ]
+          'shards': 20,
         },
       },
       'mac10.12-blink-rel-dummy': {
         'swarming': {
-          'dimension_sets': [
-            { # This should match Mac10.12 Tests on chromium.mac.
-              'gpu': '8086:0a2e',
-              'hidpi': '0',
-              'os': 'Mac-10.12.6',
-            },
-          ],
+          'shards': 20,
         },
       },
       'mac10.13-blink-rel-dummy': {
         'swarming': {
-          'dimension_sets': [
-            { # This should match "Mac10.13 Tests" on the main waterfall.
-              'gpu': '8086:0a2e',
-              'hidpi': '0',
-              'os': 'Mac-10.13.6',
-            },
-          ],
-          'shards': 12,
+          'shards': 20,
+        },
+      },
+      'mac10.13_retina-blink-rel-dummy': {
+        'swarming': {
+          'shards': 20,
         },
       },
       'WebKit Linux composite_after_paint Dummy Builder': {
@@ -1861,6 +1843,7 @@
               'os': 'Mac-10.10.5',
             },
           ],
+          'shards': 20,
         },
       },
       'Mac10.11 Tests': {
@@ -1872,11 +1855,12 @@
               'os': 'Mac-10.11.6',
             },
           ],
+          'shards': 20,
         },
       },
       'Mac10.12 Tests': {
         'swarming': {
-          'shards': 12,
+          'shards': 20,
         },
       },
       'Mac10.13 Tests': {
@@ -1888,7 +1872,7 @@
               'gpu': '8086:0a2e',
             },
           ],
-          'shards': 12,
+          'shards': 20,
         },
       },
       'Mac10.13 Tests (dbg)': {
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl
index dd57c2f..87e3ea5 100644
--- a/testing/buildbot/test_suites.pyl
+++ b/testing/buildbot/test_suites.pyl
@@ -273,6 +273,19 @@
       'chromedriver_replay_unittests': {},
     },
 
+    'chromeos_device_all_chrome_tast_tests_informational': {
+      'chrome_all_tast_tests_informational': {
+        'swarming': {
+          'idempotent': False,  # https://crbug.com/923426#c27
+        }
+      },
+      'chrome_login_tast_tests': {
+        'swarming': {
+          'idempotent': False,  # https://crbug.com/923426#c27
+        }
+      },
+    },
+
     # Tests that run in Chrome OS VMs.
     # NOTE: We only want a small subset of test suites here, because most
     # suites assume that they stub out the underlying device hardware.
@@ -4171,8 +4184,14 @@
       },
       'webdriver_tests_suite': {
         'isolate_name': 'webdriver_wpt_tests',
+        'merge': {
+          'args': [
+            '--verbose',
+          ],
+          'script': '//third_party/blink/tools/merge_web_test_results.py',
+        },
         'swarming': {
-          'shards': 1,
+          'shards': 4,
         },
       },
     },
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl
index 708813a..9768aa5 100644
--- a/testing/buildbot/waterfalls.pyl
+++ b/testing/buildbot/waterfalls.pyl
@@ -1521,6 +1521,17 @@
           'libANGLE',
         ],
       },
+      'Win10 Tests x64 1803': {
+        'mixins': [
+          'x86-64',
+          'win10-1803',
+        ],
+        'test_suites': {
+          'gtest_tests': 'chromium_win_gtests',
+          'isolated_scripts': 'chromium_win_rel_isolated_scripts',
+          'scripts': 'chromium_scripts',
+        },
+      },
       'Win7 Builder (dbg) Goma Canary': {
         'additional_compile_targets': [
           'all',
@@ -1641,6 +1652,7 @@
           ],
         },
         'test_suites': {
+          'gtest_tests': 'chromeos_device_all_chrome_tast_tests_informational',
           'gpu_telemetry_tests': 'gpu_chromeos_telemetry_tests',
         },
         'os_type': 'chromeos',
@@ -1897,7 +1909,7 @@
         },
         'swarming': {
           'dimension_sets': [
-            {
+            { # This should match Mac10.10 Tests on chromium.mac.
               'gpu': 'none',
               'os': 'Mac-10.10.5',
             }
@@ -1910,7 +1922,7 @@
         },
         'swarming': {
           'dimension_sets': [
-            {
+            { # This should match Mac10.10 Tests on chromium.mac.
               'gpu': 'none',
               'os': 'Mac-10.11.6',
             }
@@ -1923,8 +1935,9 @@
         },
         'swarming': {
           'dimension_sets': [
-            {
-              'gpu': 'none',
+            { # This should match Mac10.12 Tests on chromium.mac.
+              'gpu': '8086:0a2e',
+              'hidpi': '0',
               'os': 'Mac-10.12.6',
             }
           ],
@@ -1937,6 +1950,7 @@
               # This matches the dimensions for "Chromium Mac10.13" in
               # chromium_fyi.py.
               'gpu': '8086:0a2e',
+              'hidpi': '0',
               'os': 'Mac-10.13.6',
             },
           ],
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 52a746c..6cc32e3 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -2251,6 +2251,27 @@
             ]
         }
     ],
+    "EnableHistoryFaviconsGoogleServerQuery": [
+        {
+            "platforms": [
+                "android",
+                "android_webview",
+                "chromeos",
+                "ios",
+                "linux",
+                "mac",
+                "windows"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "EnableHistoryFaviconsGoogleServerQuery"
+                    ]
+                }
+            ]
+        }
+    ],
     "EnableMediaRouter": [
         {
             "platforms": [
diff --git a/third_party/blink/renderer/core/animation/css_length_interpolation_type.cc b/third_party/blink/renderer/core/animation/css_length_interpolation_type.cc
index 7c6c05d..f07bde52 100644
--- a/third_party/blink/renderer/core/animation/css_length_interpolation_type.cc
+++ b/third_party/blink/renderer/core/animation/css_length_interpolation_type.cc
@@ -138,23 +138,22 @@
   Length length = To<InterpolableLength>(interpolable_value)
                       .CreateLength(conversion_data, value_range_);
   if (LengthPropertyFunctions::SetLength(CssProperty(), style, length)) {
-#if DCHECK_IS_ON()
+    // TODO(crbug.com/996037): Turn this block into DCHECK in version 3904
     // Assert that setting the length on ComputedStyle directly is identical to
     // the StyleBuilder code path. This check is useful for catching differences
     // in clamping behaviour.
     Length before;
     Length after;
-    DCHECK(LengthPropertyFunctions::GetLength(CssProperty(), style, before));
+    CHECK(LengthPropertyFunctions::GetLength(CssProperty(), style, before));
     StyleBuilder::ApplyProperty(GetProperty().GetCSSProperty(), state,
                                 *CSSValue::Create(length, zoom));
-    DCHECK(LengthPropertyFunctions::GetLength(CssProperty(), style, after));
-    DCHECK(before.IsSpecified());
-    DCHECK(after.IsSpecified());
+    CHECK(LengthPropertyFunctions::GetLength(CssProperty(), style, after));
+    CHECK(before.IsSpecified());
+    CHECK(after.IsSpecified());
     const float kSlack = 0.1;
     float delta =
         FloatValueForLength(after, 100) - FloatValueForLength(before, 100);
-    DCHECK_LT(std::abs(delta), kSlack);
-#endif
+    CHECK_LT(std::abs(delta), kSlack);
     return;
   }
   StyleBuilder::ApplyProperty(GetProperty().GetCSSProperty(), state,
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
index ed6a9d7..9c98370 100644
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -2159,14 +2159,14 @@
 
 const AtomicString& Document::dir() {
   Element* root_element = documentElement();
-  if (auto* html = ToHTMLHtmlElementOrNull(root_element))
+  if (auto* html = DynamicTo<HTMLHtmlElement>(root_element))
     return html->dir();
   return g_null_atom;
 }
 
 void Document::setDir(const AtomicString& value) {
   Element* root_element = documentElement();
-  if (auto* html = ToHTMLHtmlElementOrNull(root_element))
+  if (auto* html = DynamicTo<HTMLHtmlElement>(root_element))
     html->setDir(value);
 }
 
@@ -2462,7 +2462,7 @@
     // <html> root element with no background steals background from its first
     // <body> child.
     // Also see LayoutBoxModelObject::BackgroundTransfersToView()
-    if (body_style && IsHTMLHtmlElement(documentElement()) &&
+    if (body_style && IsA<HTMLHtmlElement>(documentElement()) &&
         IsA<HTMLBodyElement>(body) && !background_style->HasBackground()) {
       background_style = body_style;
     }
@@ -3737,7 +3737,7 @@
 }
 
 HTMLElement* Document::body() const {
-  if (!documentElement() || !IsHTMLHtmlElement(documentElement()))
+  if (!IsA<HTMLHtmlElement>(documentElement()))
     return nullptr;
 
   for (HTMLElement* child =
@@ -3751,7 +3751,7 @@
 }
 
 HTMLBodyElement* Document::FirstBodyElement() const {
-  if (!documentElement() || !IsHTMLHtmlElement(documentElement()))
+  if (!IsA<HTMLHtmlElement>(documentElement()))
     return nullptr;
 
   for (HTMLElement* child =
@@ -3835,7 +3835,7 @@
   if (!root_style || root_style->IsEnsuredInDisplayNone())
     return nullptr;
   if (body_element && root_style->IsOverflowVisible() &&
-      IsHTMLHtmlElement(*root_element))
+      IsA<HTMLHtmlElement>(root_element))
     return body_element;
   return root_element;
 }
@@ -4316,7 +4316,7 @@
   if (HaveRenderBlockingResourcesLoaded() && body())
     return true;
 
-  if (documentElement() && !IsHTMLHtmlElement(*documentElement()))
+  if (documentElement() && !IsA<HTMLHtmlElement>(documentElement()))
     return true;
 
   return false;
diff --git a/third_party/blink/renderer/core/dom/element_test.cc b/third_party/blink/renderer/core/dom/element_test.cc
index c3215cb..8ab66b1 100644
--- a/third_party/blink/renderer/core/dom/element_test.cc
+++ b/third_party/blink/renderer/core/dom/element_test.cc
@@ -28,7 +28,7 @@
 
 TEST_F(ElementTest, SupportsFocus) {
   Document& document = GetDocument();
-  DCHECK(IsHTMLHtmlElement(document.documentElement()));
+  DCHECK(IsA<HTMLHtmlElement>(document.documentElement()));
   document.setDesignMode("on");
   document.View()->UpdateAllLifecyclePhases(
       DocumentLifecycle::LifecycleUpdateReason::kTest);
diff --git a/third_party/blink/renderer/core/dom/range.cc b/third_party/blink/renderer/core/dom/range.cc
index b040510..44c86ad3 100644
--- a/third_party/blink/renderer/core/dom/range.cc
+++ b/third_party/blink/renderer/core/dom/range.cc
@@ -999,7 +999,7 @@
     element = node->parentElement();
 
   // Step 2.
-  if (!element || IsHTMLHtmlElement(element)) {
+  if (!element || IsA<HTMLHtmlElement>(element)) {
     Document& document = node->GetDocument();
 
     if (document.IsSVGDocument()) {
diff --git a/third_party/blink/renderer/core/editing/commands/editing_commands_utilities.cc b/third_party/blink/renderer/core/editing/commands/editing_commands_utilities.cc
index b6d5c08..574fa2d 100644
--- a/third_party/blink/renderer/core/editing/commands/editing_commands_utilities.cc
+++ b/third_party/blink/renderer/core/editing/commands/editing_commands_utilities.cc
@@ -520,7 +520,7 @@
     return;
 
   Element* const current_root = document.documentElement();
-  if (current_root && IsHTMLHtmlElement(current_root))
+  if (current_root && IsA<HTMLHtmlElement>(current_root))
     return;
   Element* const existing_head =
       current_root && IsA<HTMLHeadElement>(current_root) ? current_root
diff --git a/third_party/blink/renderer/core/editing/commands/editing_commands_utilities_test.cc b/third_party/blink/renderer/core/editing/commands/editing_commands_utilities_test.cc
index d307928..177d591f 100644
--- a/third_party/blink/renderer/core/editing/commands/editing_commands_utilities_test.cc
+++ b/third_party/blink/renderer/core/editing/commands/editing_commands_utilities_test.cc
@@ -61,7 +61,7 @@
   GetDocument().AppendChild(body);
   TidyUpHTMLStructure(GetDocument());
 
-  EXPECT_TRUE(IsHTMLHtmlElement(GetDocument().documentElement()));
+  EXPECT_TRUE(IsA<HTMLHtmlElement>(GetDocument().documentElement()));
   EXPECT_EQ(body, GetDocument().body());
   EXPECT_EQ(GetDocument().documentElement(), body->parentNode());
 }
@@ -73,7 +73,7 @@
   GetDocument().AppendChild(div);
   TidyUpHTMLStructure(GetDocument());
 
-  EXPECT_TRUE(IsHTMLHtmlElement(GetDocument().documentElement()));
+  EXPECT_TRUE(IsA<HTMLHtmlElement>(GetDocument().documentElement()));
   EXPECT_TRUE(IsA<HTMLBodyElement>(GetDocument().body()));
   EXPECT_EQ(GetDocument().body(), div->parentNode());
 }
@@ -85,7 +85,7 @@
   GetDocument().AppendChild(head);
   TidyUpHTMLStructure(GetDocument());
 
-  EXPECT_TRUE(IsHTMLHtmlElement(GetDocument().documentElement()));
+  EXPECT_TRUE(IsA<HTMLHtmlElement>(GetDocument().documentElement()));
   EXPECT_TRUE(IsA<HTMLBodyElement>(GetDocument().body()));
   EXPECT_EQ(GetDocument().documentElement(), head->parentNode());
 }
diff --git a/third_party/blink/renderer/core/editing/serializers/serialization.cc b/third_party/blink/renderer/core/editing/serializers/serialization.cc
index b0826b1..c94bee9 100644
--- a/third_party/blink/renderer/core/editing/serializers/serialization.cc
+++ b/third_party/blink/renderer/core/editing/serializers/serialization.cc
@@ -579,7 +579,7 @@
   Element* block =
       EnclosingBlock(context.StartPosition().NodeAsRangeFirstNode());
   bool use_clones_of_enclosing_block =
-      block && !IsA<HTMLBodyElement>(*block) && !IsHTMLHtmlElement(*block) &&
+      block && !IsA<HTMLBodyElement>(block) && !IsA<HTMLHtmlElement>(block) &&
       block != RootEditableElementOf(context.StartPosition());
 
   Vector<String> list;
@@ -695,8 +695,8 @@
   Node* next_node = nullptr;
   for (Node* node = fragment->firstChild(); node; node = next_node) {
     next_node = node->nextSibling();
-    if (IsHTMLHtmlElement(*node) || IsA<HTMLHeadElement>(*node) ||
-        IsA<HTMLBodyElement>(*node)) {
+    if (IsA<HTMLHtmlElement>(node) || IsA<HTMLHeadElement>(node) ||
+        IsA<HTMLBodyElement>(node)) {
       auto* element = To<HTMLElement>(node);
       if (Node* first_child = element->firstChild())
         next_node = first_child;
diff --git a/third_party/blink/renderer/core/events/portal_activate_event.h b/third_party/blink/renderer/core/events/portal_activate_event.h
index 7e7b67b..51cff48 100644
--- a/third_party/blink/renderer/core/events/portal_activate_event.h
+++ b/third_party/blink/renderer/core/events/portal_activate_event.h
@@ -81,7 +81,7 @@
   Member<HTMLPortalElement> adopted_portal_;
 
   base::UnguessableToken predecessor_portal_token_;
-  mojo::AssociatedRemote<mojom::blink::Portal> predecessor_portal_;
+  mojo::PendingAssociatedRemote<mojom::blink::Portal> predecessor_portal_;
   mojo::PendingAssociatedReceiver<mojom::blink::PortalClient>
       predecessor_portal_client_receiver_;
 
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc
index b286951e..58e4fbc 100644
--- a/third_party/blink/renderer/core/exported/web_view_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_view_impl.cc
@@ -334,9 +334,8 @@
 
 void WebViewImpl::HandleMouseDown(LocalFrame& main_frame,
                                   const WebMouseEvent& event) {
-  // If there is a popup open, close it as the user is clicking on the page
-  // (outside of the popup). We also save it so we can prevent a click on an
-  // element from immediately reopening the same popup.
+  // Save the popup so we can close it if needed after sending the event to
+  // the element.
   //
   // The popup would not be destroyed in this stack normally as it is owned by
   // closership from the RenderWidget, which is owned by the browser via the
@@ -347,8 +346,6 @@
   scoped_refptr<WebPagePopupImpl> page_popup;
   if (event.button == WebMouseEvent::Button::kLeft) {
     page_popup = page_popup_;
-    CancelPagePopup();
-    DCHECK(!page_popup_);
   }
 
   // Take capture on a mouse down on a plugin so we can send it mouse events.
@@ -378,11 +375,13 @@
         main_frame.GetEventHandler().TakeLastMouseDownGestureToken();
   }
 
+  // If there is a popup open and it is the same as the one we had before
+  // sending the event to the element it means that the user is clicking outside
+  // of the popup or on the element which was owning the current opened popup.
   if (page_popup_ && page_popup &&
       page_popup_->HasSamePopupClient(page_popup.get())) {
-    // That click triggered a page popup that is the same as the one we just
-    // closed.  It needs to be closed.
     CancelPagePopup();
+    DCHECK(!page_popup_);
   }
 
   // Dispatch the contextmenu event regardless of if the click was swallowed.
@@ -546,11 +545,14 @@
                 targeted_event);
       }
 
+      // If there is a popup open and it is the same as the one we had before
+      // sending the event to the element it means that the user is tapping
+      // outside of the popup or on the element which was owning the current
+      // opened popup.
       if (page_popup_ && last_hidden_page_popup_ &&
           page_popup_->HasSamePopupClient(last_hidden_page_popup_.get())) {
-        // The tap triggered a page popup that is the same as the one we just
-        // closed. It needs to be closed.
         CancelPagePopup();
+        DCHECK(!page_popup_);
       }
       // Don't have this value persist outside of a single tap gesture, plus
       // we're done with it now.
@@ -577,14 +579,11 @@
       // Touch pinch zoom and scroll on the page (outside of a popup) must hide
       // the popup. In case of a touch scroll or pinch zoom, this function is
       // called with GestureTapDown rather than a GSB/GSU/GSE or GPB/GPU/GPE.
-      // When we close a popup because of a GestureTapDown, we also save it so
-      // we can prevent the following GestureTap from immediately reopening the
-      // same popup.
+      // Save the popup so we can prevent the following GestureTap from
+      // immediately reopening the same popup and close it if needed then.
       // This value should not persist outside of a gesture, so is cleared by
       // GestureTap (where it is used) and by GestureCancel.
       last_hidden_page_popup_ = page_popup_;
-      CancelPagePopup();
-      DCHECK(!page_popup_);
       event_result =
           MainFrameImpl()->GetFrame()->GetEventHandler().HandleGestureEvent(
               targeted_event);
diff --git a/third_party/blink/renderer/core/frame/visual_viewport_test.cc b/third_party/blink/renderer/core/frame/visual_viewport_test.cc
index 57e3515..8995d112 100644
--- a/third_party/blink/renderer/core/frame/visual_viewport_test.cc
+++ b/third_party/blink/renderer/core/frame/visual_viewport_test.cc
@@ -1798,7 +1798,7 @@
   UpdateAllLifecyclePhases();
   LocalDOMWindow* window =
       web_view_impl->MainFrameImpl()->GetFrame()->DomWindow();
-  HTMLElement* html = ToHTMLHtmlElement(window->document()->documentElement());
+  auto* html = To<HTMLHtmlElement>(window->document()->documentElement());
 
   ASSERT_EQ(200, window->innerWidth());
   ASSERT_EQ(300, window->innerHeight());
diff --git a/third_party/blink/renderer/core/frame/web_frame_serializer_impl.cc b/third_party/blink/renderer/core/frame/web_frame_serializer_impl.cc
index 08d1a73..143c242d 100644
--- a/third_party/blink/renderer/core/frame/web_frame_serializer_impl.cc
+++ b/third_party/blink/renderer/core/frame/web_frame_serializer_impl.cc
@@ -148,7 +148,7 @@
       // serializing DOM.
       param->skip_meta_element = element;
       *need_skip = true;
-    } else if (IsHTMLHtmlElement(*element)) {
+    } else if (IsA<HTMLHtmlElement>(element)) {
       // Check something before processing the open tag of HEAD element.
       // First we add doc type declaration if original document has it.
       if (!param->have_seen_doc_type) {
diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc
index f15903c7..3adb6359 100644
--- a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc
+++ b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc
@@ -662,13 +662,11 @@
 void WebFrameWidgetImpl::HandleMouseDown(LocalFrame& main_frame,
                                          const WebMouseEvent& event) {
   WebViewImpl* view_impl = View();
-  // If there is a popup open, close it as the user is clicking on the page
-  // (outside of the popup). We also save it so we can prevent a click on an
-  // element from immediately reopening the same popup.
+  // Save the popup so we can close it if needed after sending the event to
+  // the element.
   scoped_refptr<WebPagePopupImpl> page_popup;
   if (event.button == WebMouseEvent::Button::kLeft) {
     page_popup = view_impl->GetPagePopup();
-    view_impl->CancelPagePopup();
   }
 
   // Take capture on a mouse down on a plugin so we can send it mouse events.
@@ -700,10 +698,11 @@
         main_frame.GetEventHandler().TakeLastMouseDownGestureToken();
   }
 
+  // If there is a popup open and it is the same as the one we had before
+  // sending the event to the element it means that the user is clicking outside
+  // of the popup or on the element which was owning the current opened popup.
   if (view_impl->GetPagePopup() && page_popup &&
       view_impl->GetPagePopup()->HasSamePopupClient(page_popup.get())) {
-    // That click triggered a page popup that is the same as the one we just
-    // closed.  It needs to be closed.
     view_impl->CancelPagePopup();
   }
 
diff --git a/third_party/blink/renderer/core/html/anchor_element_metrics_sender.cc b/third_party/blink/renderer/core/html/anchor_element_metrics_sender.cc
index 9a67c0de..00aa4df7 100644
--- a/third_party/blink/renderer/core/html/anchor_element_metrics_sender.cc
+++ b/third_party/blink/renderer/core/html/anchor_element_metrics_sender.cc
@@ -114,7 +114,7 @@
     return false;
 
   document->GetFrame()->GetInterfaceProvider().GetInterface(
-      mojo::MakeRequest(&metrics_host_));
+      metrics_host_.BindNewPipeAndPassReceiver());
   return true;
 }
 
diff --git a/third_party/blink/renderer/core/html/anchor_element_metrics_sender.h b/third_party/blink/renderer/core/html/anchor_element_metrics_sender.h
index 70cd462..27e43ccc 100644
--- a/third_party/blink/renderer/core/html/anchor_element_metrics_sender.h
+++ b/third_party/blink/renderer/core/html/anchor_element_metrics_sender.h
@@ -6,6 +6,7 @@
 #define THIRD_PARTY_BLINK_RENDERER_CORE_HTML_ANCHOR_ELEMENT_METRICS_SENDER_H_
 
 #include "base/macros.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "third_party/blink/public/mojom/loader/navigation_predictor.mojom-blink.h"
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/frame/local_frame_view.h"
@@ -70,7 +71,7 @@
   bool AssociateInterface();
 
   // Browser host to which the anchor element metrics are sent.
-  mojom::blink::AnchorElementMetricsHostPtr metrics_host_;
+  mojo::Remote<mojom::blink::AnchorElementMetricsHost> metrics_host_;
 
   // Collection of anchor elements in the document. Use a HashSet to ensure that
   // an element is inserted at most once.
diff --git a/third_party/blink/renderer/core/html/forms/html_select_element.cc b/third_party/blink/renderer/core/html/forms/html_select_element.cc
index f13b22b..84911d9c 100644
--- a/third_party/blink/renderer/core/html/forms/html_select_element.cc
+++ b/third_party/blink/renderer/core/html/forms/html_select_element.cc
@@ -1980,8 +1980,6 @@
 void HTMLSelectElement::ShowPopup() {
   if (PopupIsVisible())
     return;
-  if (GetDocument().GetPage()->GetChromeClient().HasOpenedPopup())
-    return;
   if (!GetLayoutObject() || !GetLayoutObject()->IsMenuList())
     return;
   if (VisibleBoundsInVisualViewport().IsEmpty())
diff --git a/third_party/blink/renderer/core/html/html_element.cc b/third_party/blink/renderer/core/html/html_element.cc
index a6f6cb34..bf4a1b05b 100644
--- a/third_party/blink/renderer/core/html/html_element.cc
+++ b/third_party/blink/renderer/core/html/html_element.cc
@@ -214,9 +214,9 @@
     // FIXME: Remove the following UseCounter code when we collect enough
     // data.
     UseCounter::Count(GetDocument(), WebFeature::kLangAttribute);
-    if (IsHTMLHtmlElement(*this))
+    if (IsA<HTMLHtmlElement>(this))
       UseCounter::Count(GetDocument(), WebFeature::kLangAttributeOnHTML);
-    else if (IsA<HTMLBodyElement>(*this))
+    else if (IsA<HTMLBodyElement>(this))
       UseCounter::Count(GetDocument(), WebFeature::kLangAttributeOnBody);
     String html_language = value.GetString();
     wtf_size_t first_separator = html_language.find('-');
diff --git a/third_party/blink/renderer/core/html/parser/html_construction_site.cc b/third_party/blink/renderer/core/html/parser/html_construction_site.cc
index ba1023e..1435bcf 100644
--- a/third_party/blink/renderer/core/html/parser/html_construction_site.cc
+++ b/third_party/blink/renderer/core/html/parser/html_construction_site.cc
@@ -412,7 +412,7 @@
   DCHECK(document_);
   HTMLHtmlElement* element;
   if (const auto* is_attribute = token->GetAttributeItem(html_names::kIsAttr)) {
-    element = ToHTMLHtmlElement(document_->CreateElement(
+    element = To<HTMLHtmlElement>(document_->CreateElement(
         html_names::kHTMLTag, GetCreateElementFlags(), is_attribute->Value()));
   } else {
     element = MakeGarbageCollected<HTMLHtmlElement>(*document_);
diff --git a/third_party/blink/renderer/core/html/parser/html_element_stack.cc b/third_party/blink/renderer/core/html/parser/html_element_stack.cc
index 40458c0..f7fd1e2 100644
--- a/third_party/blink/renderer/core/html/parser/html_element_stack.cc
+++ b/third_party/blink/renderer/core/html/parser/html_element_stack.cc
@@ -507,7 +507,7 @@
 }
 
 void HTMLElementStack::RemoveNonTopCommon(Element* element) {
-  DCHECK(!IsHTMLHtmlElement(element));
+  DCHECK(!IsA<HTMLHtmlElement>(element));
   DCHECK(!IsA<HTMLBodyElement>(element));
   DCHECK_NE(Top(), element);
   for (ElementRecord* pos = top_.Get(); pos; pos = pos->Next()) {
diff --git a/third_party/blink/renderer/core/html/portal/html_portal_element.cc b/third_party/blink/renderer/core/html/portal/html_portal_element.cc
index e9803d2..448a3788d 100644
--- a/third_party/blink/renderer/core/html/portal/html_portal_element.cc
+++ b/third_party/blink/renderer/core/html/portal/html_portal_element.cc
@@ -48,7 +48,7 @@
 HTMLPortalElement::HTMLPortalElement(
     Document& document,
     const base::UnguessableToken& portal_token,
-    mojo::AssociatedRemote<mojom::blink::Portal> remote_portal,
+    mojo::PendingAssociatedRemote<mojom::blink::Portal> remote_portal,
     mojo::PendingAssociatedReceiver<mojom::blink::PortalClient>
         portal_client_receiver)
     : HTMLFrameOwnerElement(html_names::kPortalTag, document),
diff --git a/third_party/blink/renderer/core/html/portal/html_portal_element.h b/third_party/blink/renderer/core/html/portal/html_portal_element.h
index 4fa8300..7462fd2 100644
--- a/third_party/blink/renderer/core/html/portal/html_portal_element.h
+++ b/third_party/blink/renderer/core/html/portal/html_portal_element.h
@@ -35,7 +35,7 @@
   explicit HTMLPortalElement(
       Document& document,
       const base::UnguessableToken& portal_token = base::UnguessableToken(),
-      mojo::AssociatedRemote<mojom::blink::Portal> remote_portal = {},
+      mojo::PendingAssociatedRemote<mojom::blink::Portal> remote_portal = {},
       mojo::PendingAssociatedReceiver<mojom::blink::PortalClient>
           portal_client_receiver = {});
   ~HTMLPortalElement() override;
diff --git a/third_party/blink/renderer/core/layout/layout_block.cc b/third_party/blink/renderer/core/layout/layout_block.cc
index 9474cc6..af040312 100644
--- a/third_party/blink/renderer/core/layout/layout_block.cc
+++ b/third_party/blink/renderer/core/layout/layout_block.cc
@@ -1441,8 +1441,8 @@
     // the flow thread, which will take care of that.
     const auto* block_flow = DynamicTo<LayoutBlockFlow>(this);
     if (!block_flow || !block_flow->MultiColumnFlowThread()) {
-      max_logical_width = LayoutUnit(scrollbar_width);
-      min_logical_width = LayoutUnit(scrollbar_width);
+      max_logical_width = min_logical_width =
+          ContentLogicalWidthForSizeContainment() + LayoutUnit(scrollbar_width);
       return;
     }
   } else if (DisplayLockInducesSizeContainment()) {
diff --git a/third_party/blink/renderer/core/layout/layout_box.cc b/third_party/blink/renderer/core/layout/layout_box.cc
index 7ba8cccd..29c0f7e5 100644
--- a/third_party/blink/renderer/core/layout/layout_box.cc
+++ b/third_party/blink/renderer/core/layout/layout_box.cc
@@ -2368,6 +2368,7 @@
   base::Optional<LayoutUnit> bfc_block_offset =
       cached_layout_result->BfcBlockOffset();
   LayoutUnit block_offset_delta;
+  NGMarginStrut end_margin_strut = cached_layout_result->EndMarginStrut();
 
   const NGConstraintSpace& old_space =
       cached_layout_result->GetConstraintSpaceForCaching();
@@ -2388,6 +2389,8 @@
     return nullptr;
   }
 
+  bool is_margin_strut_equal =
+      new_space.MarginStrut() == old_space.MarginStrut();
   bool is_exclusion_space_equal =
       new_space.ExclusionSpace() == old_space.ExclusionSpace();
 
@@ -2401,6 +2404,7 @@
   // layout result.
   if (!is_new_formatting_context &&
       (!are_bfc_offsets_equal || !is_exclusion_space_equal ||
+       !is_margin_strut_equal ||
        new_space.ClearanceOffset() != old_space.ClearanceOffset())) {
     DCHECK(!CreatesNewFormattingContext());
 
@@ -2416,9 +2420,9 @@
 
     DCHECK_EQ(cache_status, NGLayoutCacheStatus::kHit);
 
-    if (!MaySkipLayoutWithinBlockFormattingContext(*cached_layout_result,
-                                                   new_space, &bfc_block_offset,
-                                                   &block_offset_delta))
+    if (!MaySkipLayoutWithinBlockFormattingContext(
+            *cached_layout_result, new_space, &bfc_block_offset,
+            &block_offset_delta, &end_margin_strut))
       return nullptr;
   }
 
@@ -2458,7 +2462,7 @@
   // We can safely reuse this result if our BFC and "input" exclusion spaces
   // were equal.
   if (are_bfc_offsets_equal && is_exclusion_space_equal &&
-      !needs_cached_result_update) {
+      is_margin_strut_equal && !needs_cached_result_update) {
     // In order not to rebuild the internal derived-geometry "cache" of float
     // data, we need to move this to the new "output" exclusion space.
     cached_layout_result->ExclusionSpace().MoveAndUpdateDerivedGeometry(
@@ -2466,9 +2470,10 @@
     return cached_layout_result;
   }
 
-  scoped_refptr<const NGLayoutResult> new_result = base::AdoptRef(
-      new NGLayoutResult(*cached_layout_result, new_space, bfc_line_offset,
-                         bfc_block_offset, block_offset_delta));
+  scoped_refptr<const NGLayoutResult> new_result =
+      base::AdoptRef(new NGLayoutResult(*cached_layout_result, new_space,
+                                        end_margin_strut, bfc_line_offset,
+                                        bfc_block_offset, block_offset_delta));
 
   if (needs_cached_result_update)
     SetCachedLayoutResult(*new_result, break_token);
@@ -2895,8 +2900,9 @@
 void LayoutBox::ComputeLogicalWidth(
     LogicalExtentComputedValues& computed_values) const {
   if (ShouldApplySizeContainment()) {
-    computed_values.extent_ =
-        BorderAndPaddingLogicalWidth() + ScrollbarLogicalWidth();
+    computed_values.extent_ = ContentLogicalWidthForSizeContainment() +
+                              BorderAndPaddingLogicalWidth() +
+                              ScrollbarLogicalWidth();
   } else if (DisplayLockInducesSizeContainment()) {
     computed_values.extent_ =
         BorderAndPaddingLogicalWidth() + ScrollbarLogicalWidth() +
@@ -3401,7 +3407,8 @@
   // out what happens here if IsLayoutGrid() is true and size containment is
   // specified while the box is locked.
   if (ShouldApplySizeContainment() && !IsLayoutGrid()) {
-    height = BorderAndPaddingLogicalHeight() + ScrollbarLogicalHeight();
+    height = ContentLogicalHeightForSizeContainment() +
+             BorderAndPaddingLogicalHeight() + ScrollbarLogicalHeight();
   } else if (DisplayLockInducesSizeContainment()) {
     height = BorderAndPaddingLogicalHeight() + ScrollbarLogicalHeight() +
              GetDisplayLockContext()->GetLockedContentLogicalHeight();
@@ -3542,12 +3549,17 @@
 LayoutUnit LayoutBox::ComputeLogicalHeightWithoutLayout() const {
   LogicalExtentComputedValues computed_values;
 
-  if (!SelfNeedsLayout() && !ShouldApplySizeContainment() &&
-      DisplayLockInducesSizeContainment()) {
-    ComputeLogicalHeight(
-        BorderAndPaddingLogicalHeight() +
-            GetDisplayLockContext()->GetLockedContentLogicalHeight(),
-        LayoutUnit(), computed_values);
+  if (!SelfNeedsLayout()) {
+    if (ShouldApplySizeContainment()) {
+      ComputeLogicalHeight(ContentLogicalHeightForSizeContainment() +
+                               BorderAndPaddingLogicalHeight(),
+                           LayoutUnit(), computed_values);
+    } else if (DisplayLockInducesSizeContainment()) {
+      ComputeLogicalHeight(
+          BorderAndPaddingLogicalHeight() +
+              GetDisplayLockContext()->GetLockedContentLogicalHeight(),
+          LayoutUnit(), computed_values);
+    }
   } else {
     // TODO(cbiesinger): We should probably return something other than just
     // border + padding, but for now we have no good way to do anything else
diff --git a/third_party/blink/renderer/core/layout/layout_box.h b/third_party/blink/renderer/core/layout/layout_box.h
index a371103e..4dc16a0 100644
--- a/third_party/blink/renderer/core/layout/layout_box.h
+++ b/third_party/blink/renderer/core/layout/layout_box.h
@@ -605,6 +605,43 @@
                                                 : ContentWidth();
   }
 
+  // CSS content-size getters. This property only applies if size containment is
+  // specified, hence the names have ForSizeContainment suffix to distinguish
+  // them from above.
+  bool HasSpecifiedContentSizeForSizeContainment() {
+    return !StyleRef().GetContentSize().IsNone();
+  }
+  LayoutSize ContentLogicalSizeForSizeContainment() const {
+    return LayoutSize(ContentLogicalWidthForSizeContainment(),
+                      ContentLogicalHeightForSizeContainment());
+  }
+  LayoutUnit ContentLogicalWidthForSizeContainment() const {
+    DCHECK(ShouldApplySizeContainment());
+    const auto& style = StyleRef();
+    const auto& content_size = style.GetContentSize();
+    if (content_size.IsNone())
+      return LayoutUnit();
+    const auto& logical_width = style.IsHorizontalWritingMode()
+                                    ? content_size.GetWidth()
+                                    : content_size.GetHeight();
+    DCHECK(logical_width.IsFixed());
+    DCHECK_GE(logical_width.Value(), 0.f);
+    return LayoutUnit(logical_width.Value());
+  }
+  LayoutUnit ContentLogicalHeightForSizeContainment() const {
+    DCHECK(ShouldApplySizeContainment());
+    const auto& style = StyleRef();
+    const auto& content_size = style.GetContentSize();
+    if (content_size.IsNone())
+      return LayoutUnit();
+    const auto& logical_height = style.IsHorizontalWritingMode()
+                                     ? content_size.GetHeight()
+                                     : content_size.GetWidth();
+    DCHECK(logical_height.IsFixed());
+    DCHECK_GE(logical_height.Value(), 0.f);
+    return LayoutUnit(logical_height.Value());
+  }
+
   // IE extensions. Used to calculate offsetWidth/Height. Overridden by inlines
   // (LayoutFlow) to return the remaining width on a given line (and the height
   // of a single line).
diff --git a/third_party/blink/renderer/core/layout/layout_box_model_object.cc b/third_party/blink/renderer/core/layout/layout_box_model_object.cc
index c21d90b5..76de50c 100644
--- a/third_party/blink/renderer/core/layout/layout_box_model_object.cc
+++ b/third_party/blink/renderer/core/layout/layout_box_model_object.cc
@@ -1435,7 +1435,7 @@
     return false;
 
   Element* document_element = GetDocument().documentElement();
-  if (!IsHTMLHtmlElement(document_element))
+  if (!IsA<HTMLHtmlElement>(document_element))
     return false;
 
   if (!document_element_style)
diff --git a/third_party/blink/renderer/core/layout/layout_multi_column_flow_thread.cc b/third_party/blink/renderer/core/layout/layout_multi_column_flow_thread.cc
index 368f7d2..fa0e2eee 100644
--- a/third_party/blink/renderer/core/layout/layout_multi_column_flow_thread.cc
+++ b/third_party/blink/renderer/core/layout/layout_multi_column_flow_thread.cc
@@ -1345,7 +1345,8 @@
 
   DCHECK(!MultiColumnBlockFlow()->DisplayLockInducesSizeContainment());
   if (MultiColumnBlockFlow()->ShouldApplySizeContainment()) {
-    min_preferred_logical_width_ = max_preferred_logical_width_ = LayoutUnit();
+    min_preferred_logical_width_ = max_preferred_logical_width_ =
+        MultiColumnBlockFlow()->ContentLogicalWidthForSizeContainment();
     ClearPreferredLogicalWidthsDirty();
   } else {
     // Calculate and set new min_preferred_logical_width_ and
diff --git a/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.cc
index 7c13a6a..afe0d74 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.cc
@@ -136,27 +136,6 @@
           child_bfc_offset.block_offset - parent_bfc_offset.block_offset};
 }
 
-// Stop margin collapsing on one side of a block when
-// -webkit-margin-{after,before}-collapse is something other than 'collapse'
-// (the initial value)
-void StopMarginCollapsing(EMarginCollapse collapse_value,
-                          LayoutUnit this_margin,
-                          LayoutUnit* logical_block_offset,
-                          NGMarginStrut* margin_strut) {
-  DCHECK_NE(collapse_value, EMarginCollapse::kCollapse);
-  if (collapse_value == EMarginCollapse::kSeparate) {
-    // Separate margins between previously adjoining margins and this margin,
-    // AND between this margin and adjoining margins to come.
-    *logical_block_offset += margin_strut->Sum() + this_margin;
-    *margin_strut = NGMarginStrut();
-    return;
-  }
-  DCHECK_EQ(collapse_value, EMarginCollapse::kDiscard);
-  // Discard previously adjoining margins, this margin AND all adjoining margins
-  // to come, so that the sum becomes 0.
-  margin_strut->discard_margins = true;
-}
-
 }  // namespace
 
 NGBlockLayoutAlgorithm::NGBlockLayoutAlgorithm(
@@ -1028,6 +1007,14 @@
     // The BFC block offset of this container gets resolved because of this
     // child.
     child_determined_bfc_offset = true;
+
+    // The block-start margin of the child will only affect the parent's
+    // position if it is adjoining.
+    if (!child_margin_got_separated) {
+      SetSubtreeModifiedMarginStrutIfNeeded(
+          &child_style.MarginBeforeUsing(Style()));
+    }
+
     if (!ResolveBfcBlockOffset(previous_inflow_position,
                                child_bfc_offset_estimate)) {
       // If we need to abort here, it means that we had preceding unpositioned
@@ -1432,6 +1419,7 @@
     // present, but we shouldn't apply it (instead preferring the child's new
     // BFC block-offset).
     DCHECK(!ConstraintSpace().AncestorHasClearancePastAdjoiningFloats());
+
     if (!ResolveBfcBlockOffset(previous_inflow_position, bfc_block_offset,
                                /* forced_bfc_block_offset */ base::nullopt))
       return false;
@@ -1468,6 +1456,10 @@
     // do it now to separate the child's collapsed margin from this container.
     if (!ResolveBfcBlockOffset(previous_inflow_position))
       return false;
+  } else if (layout_result->SubtreeModifiedMarginStrut()) {
+    // The child doesn't have clearance, and modified its incoming
+    // margin-strut. Propagate this information up to our parent if needed.
+    SetSubtreeModifiedMarginStrutIfNeeded();
   }
 
   bool self_collapsing_child_needs_relayout = false;
@@ -1717,6 +1709,7 @@
   } else {
     margin_strut.Append(margins.block_start,
                         child.Style().HasMarginBeforeQuirk());
+    SetSubtreeModifiedMarginStrutIfNeeded(&child.Style().MarginBefore());
   }
 
   NGBfcOffset child_bfc_offset = {
@@ -1833,6 +1826,7 @@
         (is_self_collapsing && child.Style().HasMarginBeforeQuirk()) ||
         child.Style().HasMarginAfterQuirk();
     margin_strut.Append(child_data.margins.block_end, is_quirky);
+    SetSubtreeModifiedMarginStrutIfNeeded(&child.Style().MarginAfter());
   }
 
   // This flag is subtle, but in order to determine our size correctly we need
@@ -2204,6 +2198,29 @@
   return margins;
 }
 
+// Stop margin collapsing on one side of a block when
+// -webkit-margin-{after,before}-collapse is something other than 'collapse'
+// (the initial value)
+void NGBlockLayoutAlgorithm::StopMarginCollapsing(
+    EMarginCollapse collapse_value,
+    LayoutUnit this_margin,
+    LayoutUnit* logical_block_offset,
+    NGMarginStrut* margin_strut) {
+  DCHECK_NE(collapse_value, EMarginCollapse::kCollapse);
+  if (collapse_value == EMarginCollapse::kSeparate) {
+    // Separate margins between previously adjoining margins and this margin,
+    // AND between this margin and adjoining margins to come.
+    *logical_block_offset += margin_strut->Sum() + this_margin;
+    *margin_strut = NGMarginStrut();
+    return;
+  }
+  DCHECK_EQ(collapse_value, EMarginCollapse::kDiscard);
+  // Discard previously adjoining margins, this margin AND all adjoining margins
+  // to come, so that the sum becomes 0.
+  margin_strut->discard_margins = true;
+  SetSubtreeModifiedMarginStrutIfNeeded();
+}
+
 NGConstraintSpace NGBlockLayoutAlgorithm::CreateConstraintSpaceForChild(
     const NGLayoutInputNode child,
     const NGInflowChildData& child_data,
diff --git a/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.h b/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.h
index e3177c18..0f3f9ed 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.h
@@ -93,6 +93,11 @@
                               bool is_new_fc,
                               bool* margins_fully_resolved);
 
+  void StopMarginCollapsing(EMarginCollapse collapse_value,
+                            LayoutUnit this_margin,
+                            LayoutUnit* logical_block_offset,
+                            NGMarginStrut* margin_strut);
+
   // Creates a new constraint space for the current child.
   NGConstraintSpace CreateConstraintSpaceForChild(
       const NGLayoutInputNode child,
@@ -282,6 +287,18 @@
                                  NextBorderEdge(*previous_inflow_position));
   }
 
+  // Mark this fragment as modifying its incoming margin-strut if it hasn't
+  // resolved its BFC block-offset yet.
+  void SetSubtreeModifiedMarginStrutIfNeeded(const Length* margin = nullptr) {
+    if (container_builder_.BfcBlockOffset())
+      return;
+
+    if (margin && margin->IsZero())
+      return;
+
+    container_builder_.SetSubtreeModifiedMarginStrut();
+  }
+
   // Return true if the BFC block offset has changed and this means that we
   // need to abort layout.
   bool NeedsAbortOnBfcBlockOffsetChange() const;
diff --git a/third_party/blink/renderer/core/layout/ng/ng_block_node.cc b/third_party/blink/renderer/core/layout/ng/ng_block_node.cc
index 3a71cc6..ea60853 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_block_node.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_block_node.cc
@@ -744,7 +744,12 @@
 
   if (LIKELY(is_last_fragment))
     intrinsic_content_logical_height -= border_scrollbar_padding.BlockSum();
-  box_->SetIntrinsicContentLogicalHeight(intrinsic_content_logical_height);
+  if (!constraint_space.IsFixedBlockSize()) {
+    // If we had a fixed block size, our children will have sized themselves
+    // relative to the fixed size, which would make our intrinsic size
+    // incorrect (too big).
+    box_->SetIntrinsicContentLogicalHeight(intrinsic_content_logical_height);
+  }
 
   // TODO(mstensho): This should always be done by the parent algorithm, since
   // we may have auto margins, which only the parent is able to resolve. Remove
@@ -1179,8 +1184,8 @@
             old_space.PercentageResolutionSize();
     if (needs_cached_result_update) {
       layout_result = base::AdoptRef(new NGLayoutResult(
-          *layout_result, constraint_space, layout_result->BfcLineOffset(),
-          layout_result->BfcBlockOffset(),
+          *layout_result, constraint_space, layout_result->EndMarginStrut(),
+          layout_result->BfcLineOffset(), layout_result->BfcBlockOffset(),
           LayoutUnit() /* block_offset_delta */));
       box_->SetCachedLayoutResult(*layout_result, /* break_token */ nullptr);
     }
diff --git a/third_party/blink/renderer/core/layout/ng/ng_box_fragment_builder.h b/third_party/blink/renderer/core/layout/ng/ng_box_fragment_builder.h
index 7152d5a..8f8dd379 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_box_fragment_builder.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_box_fragment_builder.h
@@ -137,6 +137,13 @@
     previous_break_after_ = break_after;
   }
 
+  // Set when this subtree has modified the incoming margin-strut, such that it
+  // may change our final position.
+  void SetSubtreeModifiedMarginStrut() {
+    DCHECK(!BfcBlockOffset());
+    subtree_modified_margin_strut_ = true;
+  }
+
   // Join/"collapse" the previous (stored) break-after value with the next
   // break-before value, to determine how to deal with breaking between two
   // in-flow siblings.
@@ -254,6 +261,7 @@
   bool did_break_;
   bool has_forced_break_ = false;
   bool is_new_fc_ = false;
+  bool subtree_modified_margin_strut_ = false;
   bool has_seen_all_children_ = false;
   LayoutUnit consumed_block_size_;
 
diff --git a/third_party/blink/renderer/core/layout/ng/ng_constraint_space.h b/third_party/blink/renderer/core/layout/ng/ng_constraint_space.h
index d359e47..f9c1bca 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_constraint_space.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_constraint_space.h
@@ -587,8 +587,7 @@
     unsigned is_in_column_bfc : 1;
 
     bool MaySkipLayout(const RareData& other) const {
-      return margin_strut == other.margin_strut &&
-             table_cell_borders == other.table_cell_borders &&
+      return table_cell_borders == other.table_cell_borders &&
              table_cell_intrinsic_padding ==
                  other.table_cell_intrinsic_padding &&
              fragmentainer_block_size == other.fragmentainer_block_size &&
@@ -602,8 +601,7 @@
 
     // Must be kept in sync with members checked within |MaySkipLayout|.
     bool IsInitialForMaySkipLayout() const {
-      return margin_strut == NGMarginStrut() &&
-             table_cell_borders == NGBoxStrut() &&
+      return table_cell_borders == NGBoxStrut() &&
              table_cell_intrinsic_padding == NGBoxStrut() &&
              fragmentainer_block_size == kIndefiniteSize &&
              fragmentainer_space_at_bfc_start == kIndefiniteSize &&
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_input_node.cc b/third_party/blink/renderer/core/layout/ng/ng_layout_input_node.cc
index 67bff45..83e33bb 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_input_node.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_input_node.cc
@@ -76,9 +76,9 @@
     LogicalSize* aspect_ratio) const {
   DCHECK(IsReplaced());
   if (ShouldApplySizeContainment()) {
-    *computed_inline_size = LayoutUnit();
-    *computed_block_size = LayoutUnit();
-    *aspect_ratio = LogicalSize(LayoutUnit(), LayoutUnit());
+    *computed_inline_size = ContentInlineSizeForSizeContainment();
+    *computed_block_size = ContentBlockSizeForSizeContainment();
+    *aspect_ratio = LogicalSize(**computed_inline_size, **computed_block_size);
     return;
   }
   if (DisplayLockInducesSizeContainment()) {
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_input_node.h b/third_party/blink/renderer/core/layout/ng/ng_layout_input_node.h
index 44db8b2e..d5a0da8 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_input_node.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_input_node.h
@@ -177,6 +177,12 @@
   bool ShouldApplySizeContainment() const {
     return box_->ShouldApplySizeContainment();
   }
+  LayoutUnit ContentInlineSizeForSizeContainment() const {
+    return box_->ContentLogicalWidthForSizeContainment();
+  }
+  LayoutUnit ContentBlockSizeForSizeContainment() const {
+    return box_->ContentLogicalHeightForSizeContainment();
+  }
 
   // Display locking functionality.
   const DisplayLockContext& GetDisplayLockContext() const {
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_result.cc b/third_party/blink/renderer/core/layout/ng/ng_layout_result.cc
index c60b969..495711087 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_result.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_result.cc
@@ -42,6 +42,8 @@
                      /* cache_space */ true) {
   bitfields_.is_initial_block_size_indefinite =
       builder->is_initial_block_size_indefinite_;
+  bitfields_.subtree_modified_margin_strut =
+      builder->subtree_modified_margin_strut_;
   intrinsic_block_size_ = builder->intrinsic_block_size_;
   if (builder->minimal_space_shortage_ != LayoutUnit::Max())
     EnsureRareData()->minimal_space_shortage = builder->minimal_space_shortage_;
@@ -77,6 +79,7 @@
 
 NGLayoutResult::NGLayoutResult(const NGLayoutResult& other,
                                const NGConstraintSpace& new_space,
+                               const NGMarginStrut& new_end_margin_strut,
                                LayoutUnit bfc_line_offset,
                                base::Optional<LayoutUnit> bfc_block_offset,
                                LayoutUnit block_offset_delta)
@@ -108,6 +111,9 @@
   } else {
     space_.ExclusionSpace().MoveDerivedGeometry(new_exclusion_space);
   }
+
+  if (new_end_margin_strut != NGMarginStrut() || HasRareData())
+    EnsureRareData()->end_margin_strut = new_end_margin_strut;
 }
 
 NGLayoutResult::NGLayoutResult(
@@ -221,6 +227,9 @@
   DCHECK_EQ(bitfields_.adjoining_object_types,
             other.bitfields_.adjoining_object_types);
 
+  DCHECK_EQ(bitfields_.subtree_modified_margin_strut,
+            other.bitfields_.subtree_modified_margin_strut);
+
   DCHECK_EQ(bitfields_.initial_break_before,
             other.bitfields_.initial_break_before);
   DCHECK_EQ(bitfields_.final_break_after, other.bitfields_.final_break_after);
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 d4166fe..ae90f2a 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
@@ -47,6 +47,7 @@
   // still replaced with |nullopt|.
   NGLayoutResult(const NGLayoutResult& other,
                  const NGConstraintSpace& new_space,
+                 const NGMarginStrut& new_end_margin_strut,
                  LayoutUnit bfc_line_offset,
                  base::Optional<LayoutUnit> bfc_block_offset,
                  LayoutUnit block_offset_delta);
@@ -184,6 +185,12 @@
     return bitfields_.has_descendant_that_depends_on_percentage_block_size;
   }
 
+  // Returns true if this subtree modified the incoming margin-strut (i.e.
+  // appended a non-zero margin).
+  bool SubtreeModifiedMarginStrut() const {
+    return bitfields_.subtree_modified_margin_strut;
+  }
+
   // Returns true if the space stored with this layout result, is valid.
   bool HasValidConstraintSpaceForCaching() const {
     return bitfields_.has_valid_space;
@@ -330,6 +337,7 @@
           is_initial_block_size_indefinite(false),
           has_descendant_that_depends_on_percentage_block_size(
               has_descendant_that_depends_on_percentage_block_size),
+          subtree_modified_margin_strut(false),
           initial_break_before(static_cast<unsigned>(EBreakBetween::kAuto)),
           final_break_after(static_cast<unsigned>(EBreakBetween::kAuto)),
           status(static_cast<unsigned>(kSuccess)) {}
@@ -349,6 +357,8 @@
     unsigned is_initial_block_size_indefinite : 1;
     unsigned has_descendant_that_depends_on_percentage_block_size : 1;
 
+    unsigned subtree_modified_margin_strut : 1;
+
     unsigned initial_break_before : 4;  // EBreakBetween
     unsigned final_break_after : 4;     // EBreakBetween
 
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_result_caching_test.cc b/third_party/blink/renderer/core/layout/ng/ng_layout_result_caching_test.cc
index e88eebe..8690534 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_result_caching_test.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_result_caching_test.cc
@@ -122,6 +122,38 @@
             NGBfcOffset(LayoutUnit(100), LayoutUnit::Max()));
 }
 
+TEST_F(NGLayoutResultCachingTest, HitDifferentBFCOffsetSameMarginStrut) {
+  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
+
+  // Different BFC offset, same margin-strut.
+  SetBodyInnerHTML(R"HTML(
+    <style>
+      .bfc { display: flow-root; width: 300px; height: 300px; }
+    </style>
+    <div class="bfc">
+      <div style="height: 50px; margin-bottom: 20px;"></div>
+      <div id="test" style="height: 20px;"></div>
+    </div>
+    <div class="bfc">
+      <div style="height: 40px; margin-bottom: 20px;"></div>
+      <div id="src" style="height: 20px;"></div>
+    </div>
+  )HTML");
+
+  auto* test = To<LayoutBlockFlow>(GetLayoutObjectByElementId("test"));
+  auto* src = To<LayoutBlockFlow>(GetLayoutObjectByElementId("src"));
+
+  NGLayoutCacheStatus cache_status;
+  base::Optional<NGFragmentGeometry> fragment_geometry;
+  const NGConstraintSpace& space =
+      src->GetCachedLayoutResult()->GetConstraintSpaceForCaching();
+  scoped_refptr<const NGLayoutResult> result = test->CachedLayoutResult(
+      space, nullptr, &fragment_geometry, &cache_status);
+
+  EXPECT_EQ(cache_status, NGLayoutCacheStatus::kHit);
+  EXPECT_NE(result.get(), nullptr);
+}
+
 TEST_F(NGLayoutResultCachingTest, MissDescendantAboveBlockStart1) {
   ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
 
@@ -1113,5 +1145,284 @@
   EXPECT_EQ(result.get(), nullptr);
 }
 
+TEST_F(NGLayoutResultCachingTest, MarginStrutMovementSelfCollapsing) {
+  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
+
+  SetBodyInnerHTML(R"HTML(
+    <style>
+      .bfc { display: flow-root; width: 300px; height: 300px; }
+    </style>
+    <div class="bfc">
+      <div style="margin-top: 10px;">
+        <div id="test1">
+          <div></div>
+        </div>
+      </div>
+    </div>
+    <div class="bfc">
+      <div style="margin-top: 5px;">
+        <div id="src1">
+          <div></div>
+        </div>
+      </div>
+    </div>
+    <div class="bfc">
+      <div style="margin-top: 10px;">
+        <div id="test2">
+          <div style="margin-bottom: 8px;"></div>
+        </div>
+      </div>
+    </div>
+    <div class="bfc">
+      <div style="margin-top: 5px;">
+        <div id="src2">
+          <div style="margin-bottom: 8px;"></div>
+        </div>
+      </div>
+    </div>
+  )HTML");
+
+  auto* test1 = To<LayoutBlockFlow>(GetLayoutObjectByElementId("test1"));
+  auto* test2 = To<LayoutBlockFlow>(GetLayoutObjectByElementId("test2"));
+  auto* src1 = To<LayoutBlockFlow>(GetLayoutObjectByElementId("src1"));
+  auto* src2 = To<LayoutBlockFlow>(GetLayoutObjectByElementId("src2"));
+
+  NGLayoutCacheStatus cache_status;
+  base::Optional<NGFragmentGeometry> fragment_geometry;
+
+  NGConstraintSpace space =
+      src1->GetCachedLayoutResult()->GetConstraintSpaceForCaching();
+  scoped_refptr<const NGLayoutResult> result = test1->CachedLayoutResult(
+      space, nullptr, &fragment_geometry, &cache_status);
+
+  // Case 1: We can safely re-use this fragment as it doesn't append anything
+  // to the margin-strut within the sub-tree.
+  EXPECT_EQ(cache_status, NGLayoutCacheStatus::kHit);
+  EXPECT_NE(result.get(), nullptr);
+
+  // The "end" margin-strut should be updated.
+  NGMarginStrut expected_margin_strut;
+  expected_margin_strut.Append(LayoutUnit(5), false /* is_quirky */);
+  EXPECT_EQ(expected_margin_strut, result->EndMarginStrut());
+
+  fragment_geometry.reset();
+  space = src2->GetCachedLayoutResult()->GetConstraintSpaceForCaching();
+  result = test2->CachedLayoutResult(space, nullptr, &fragment_geometry,
+                                     &cache_status);
+
+  // Case 2: We can't re-use this fragment as it appended a non-zero value to
+  // the margin-strut within the sub-tree.
+  EXPECT_EQ(cache_status, NGLayoutCacheStatus::kNeedsLayout);
+  EXPECT_EQ(result.get(), nullptr);
+}
+
+TEST_F(NGLayoutResultCachingTest, MarginStrutMovementInFlow) {
+  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
+
+  SetBodyInnerHTML(R"HTML(
+    <style>
+      .bfc { display: flow-root; width: 300px; height: 300px; }
+    </style>
+    <div class="bfc">
+      <div style="margin-top: 10px;">
+        <div id="test1">
+          <div>text</div>
+        </div>
+      </div>
+    </div>
+    <div class="bfc">
+      <div style="margin-top: 5px;">
+        <div id="src1">
+          <div>text</div>
+        </div>
+      </div>
+    </div>
+    <div class="bfc">
+      <div style="margin-top: 10px;">
+        <div id="test2">
+          <div style="margin-top: 8px;">text</div>
+        </div>
+      </div>
+    </div>
+    <div class="bfc">
+      <div style="margin-top: 5px;">
+        <div id="src2">
+          <div style="margin-top: 8px;">text</div>
+        </div>
+      </div>
+    </div>
+    <div class="bfc">
+      <div style="margin-top: 10px;">
+        <div id="test3">
+          <div>
+            <div style="margin-top: 8px;"></div>
+          </div>
+          <div>text</div>
+        </div>
+      </div>
+    </div>
+    <div class="bfc">
+      <div style="margin-top: 5px;">
+        <div id="src3">
+          <div>
+            <div style="margin-top: 8px;"></div>
+          </div>
+          <div>text</div>
+        </div>
+      </div>
+    </div>
+  )HTML");
+
+  auto* test1 = To<LayoutBlockFlow>(GetLayoutObjectByElementId("test1"));
+  auto* test2 = To<LayoutBlockFlow>(GetLayoutObjectByElementId("test2"));
+  auto* test3 = To<LayoutBlockFlow>(GetLayoutObjectByElementId("test3"));
+  auto* src1 = To<LayoutBlockFlow>(GetLayoutObjectByElementId("src1"));
+  auto* src2 = To<LayoutBlockFlow>(GetLayoutObjectByElementId("src2"));
+  auto* src3 = To<LayoutBlockFlow>(GetLayoutObjectByElementId("src3"));
+
+  NGLayoutCacheStatus cache_status;
+  base::Optional<NGFragmentGeometry> fragment_geometry;
+
+  NGConstraintSpace space =
+      src1->GetCachedLayoutResult()->GetConstraintSpaceForCaching();
+  scoped_refptr<const NGLayoutResult> result = test1->CachedLayoutResult(
+      space, nullptr, &fragment_geometry, &cache_status);
+
+  // Case 1: We can safely re-use this fragment as it doesn't append anything
+  // to the margin-strut within the sub-tree.
+  EXPECT_EQ(cache_status, NGLayoutCacheStatus::kHit);
+  EXPECT_NE(result.get(), nullptr);
+
+  fragment_geometry.reset();
+  space = src2->GetCachedLayoutResult()->GetConstraintSpaceForCaching();
+  result = test2->CachedLayoutResult(space, nullptr, &fragment_geometry,
+                                     &cache_status);
+
+  // Case 2: We can't re-use this fragment as it appended a non-zero value to
+  // the margin-strut within the sub-tree.
+  EXPECT_EQ(cache_status, NGLayoutCacheStatus::kNeedsLayout);
+  EXPECT_EQ(result.get(), nullptr);
+
+  fragment_geometry.reset();
+  space = src3->GetCachedLayoutResult()->GetConstraintSpaceForCaching();
+  result = test3->CachedLayoutResult(space, nullptr, &fragment_geometry,
+                                     &cache_status);
+
+  // Case 3: We can't re-use this fragment as a (inner) self-collapsing block
+  // appended a non-zero value to the margin-strut within the sub-tree.
+  EXPECT_EQ(cache_status, NGLayoutCacheStatus::kNeedsLayout);
+  EXPECT_EQ(result.get(), nullptr);
+}
+
+TEST_F(NGLayoutResultCachingTest, MarginStrutMovementPercentage) {
+  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
+
+  SetBodyInnerHTML(R"HTML(
+    <style>
+      .bfc { display: flow-root; width: 300px; height: 300px; }
+    </style>
+    <div class="bfc">
+      <div style="margin-top: 10px;">
+        <div id="test1" style="width: 0px;">
+          <div style="margin-top: 50%;">text</div>
+        </div>
+      </div>
+    </div>
+    <div class="bfc">
+      <div style="margin-top: 5px;">
+        <div id="src1" style="width: 0px;">
+          <div style="margin-top: 50%;">text</div>
+        </div>
+      </div>
+    </div>
+  )HTML");
+
+  auto* test1 = To<LayoutBlockFlow>(GetLayoutObjectByElementId("test1"));
+  auto* src1 = To<LayoutBlockFlow>(GetLayoutObjectByElementId("src1"));
+
+  NGLayoutCacheStatus cache_status;
+  base::Optional<NGFragmentGeometry> fragment_geometry;
+
+  NGConstraintSpace space =
+      src1->GetCachedLayoutResult()->GetConstraintSpaceForCaching();
+  scoped_refptr<const NGLayoutResult> result = test1->CachedLayoutResult(
+      space, nullptr, &fragment_geometry, &cache_status);
+
+  // We can't re-use this fragment as it appended a non-zero value (50%) to the
+  // margin-strut within the sub-tree.
+  EXPECT_EQ(cache_status, NGLayoutCacheStatus::kNeedsLayout);
+  EXPECT_EQ(result.get(), nullptr);
+}
+
+TEST_F(NGLayoutResultCachingTest, MarginStrutMovementDiscard) {
+  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
+
+  SetBodyInnerHTML(R"HTML(
+    <style>
+      .bfc { display: flow-root; width: 300px; height: 300px; }
+    </style>
+    <div class="bfc">
+      <div style="margin-top: 10px;">
+        <div id="test1">
+          <div style="-webkit-margin-top-collapse: discard;">text</div>
+        </div>
+      </div>
+    </div>
+    <div class="bfc">
+      <div style="margin-top: 5px;">
+        <div id="src1">
+          <div style="-webkit-margin-top-collapse: discard;">text</div>
+        </div>
+      </div>
+    </div>
+    <div class="bfc">
+      <div style="margin-top: 10px;">
+        <div id="test2">
+          <div>
+            <div style="-webkit-margin-bottom-collapse: discard;"></div>
+          </div>
+          <div>text</div>
+        </div>
+      </div>
+    </div>
+    <div class="bfc">
+      <div style="margin-top: 5px;">
+        <div id="src2">
+          <div>
+            <div style="-webkit-margin-bottom-collapse: discard;"></div>
+          </div>
+          <div>text</div>
+        </div>
+      </div>
+    </div>
+  )HTML");
+
+  auto* test1 = To<LayoutBlockFlow>(GetLayoutObjectByElementId("test1"));
+  auto* test2 = To<LayoutBlockFlow>(GetLayoutObjectByElementId("test2"));
+  auto* src1 = To<LayoutBlockFlow>(GetLayoutObjectByElementId("src1"));
+  auto* src2 = To<LayoutBlockFlow>(GetLayoutObjectByElementId("src2"));
+
+  NGLayoutCacheStatus cache_status;
+  base::Optional<NGFragmentGeometry> fragment_geometry;
+
+  NGConstraintSpace space =
+      src1->GetCachedLayoutResult()->GetConstraintSpaceForCaching();
+  scoped_refptr<const NGLayoutResult> result = test1->CachedLayoutResult(
+      space, nullptr, &fragment_geometry, &cache_status);
+
+  // Case 1: We can't re-use this fragment as the sub-tree discards margins.
+  EXPECT_EQ(cache_status, NGLayoutCacheStatus::kNeedsLayout);
+  EXPECT_EQ(result.get(), nullptr);
+
+  fragment_geometry.reset();
+  space = src2->GetCachedLayoutResult()->GetConstraintSpaceForCaching();
+  result = test2->CachedLayoutResult(space, nullptr, &fragment_geometry,
+                                     &cache_status);
+
+  // Case 2: Also check a self-collapsing block with a block-end discard.
+  EXPECT_EQ(cache_status, NGLayoutCacheStatus::kNeedsLayout);
+  EXPECT_EQ(result.get(), nullptr);
+}
+
 }  // namespace
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_utils.cc b/third_party/blink/renderer/core/layout/ng/ng_layout_utils.cc
index 831afef..9df4faa0 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_utils.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_utils.cc
@@ -369,15 +369,20 @@
     const NGLayoutResult& cached_layout_result,
     const NGConstraintSpace& new_space,
     base::Optional<LayoutUnit>* bfc_block_offset,
-    LayoutUnit* block_offset_delta) {
+    LayoutUnit* block_offset_delta,
+    NGMarginStrut* end_margin_strut) {
   DCHECK_EQ(cached_layout_result.Status(), NGLayoutResult::kSuccess);
   DCHECK(cached_layout_result.HasValidConstraintSpaceForCaching());
   DCHECK(bfc_block_offset);
   DCHECK(block_offset_delta);
+  DCHECK(end_margin_strut);
 
   const NGConstraintSpace& old_space =
       cached_layout_result.GetConstraintSpaceForCaching();
 
+  bool is_margin_strut_equal =
+      old_space.MarginStrut() == new_space.MarginStrut();
+
   LayoutUnit old_clearance_offset = old_space.ClearanceOffset();
   LayoutUnit new_clearance_offset = new_space.ClearanceOffset();
 
@@ -386,6 +391,10 @@
   if (is_pushed_by_floats) {
     DCHECK(old_space.HasFloats());
 
+    // We don't attempt to reuse the cached result if our margins have changed.
+    if (!is_margin_strut_equal)
+      return false;
+
     // We don't attempt to reuse the cached result if the clearance offset
     // differs from the final BFC-block-offset.
     //
@@ -410,6 +419,16 @@
     }
   }
 
+  // We can't reuse the layout result if the subtree modified its incoming
+  // margin-strut, and the incoming margin-strut has changed. E.g.
+  // <div style="margin-top: 5px;"> <!-- changes to 15px -->
+  //   <div style="margin-top: 10px;"></div>
+  //   text
+  // </div>
+  if (cached_layout_result.SubtreeModifiedMarginStrut() &&
+      !is_margin_strut_equal)
+    return false;
+
   const auto& physical_fragment = cached_layout_result.PhysicalFragment();
 
   // Check we have a descendant that *may* be positioned above the block-start
@@ -449,6 +468,15 @@
     // "resolved" BFC block-offset on their layout result.
     *bfc_block_offset = new_space.ForcedBfcBlockOffset();
 
+    // If this sub-tree didn't append any margins to the incoming margin-strut,
+    // the new "start" margin-strut becomes the new "end" margin-strut (as we
+    // are self-collapsing).
+    if (!cached_layout_result.SubtreeModifiedMarginStrut()) {
+      *end_margin_strut = new_space.MarginStrut();
+    } else {
+      DCHECK(is_margin_strut_equal);
+    }
+
     return true;
   }
 
@@ -482,13 +510,30 @@
     return false;
 
   if (is_pushed_by_floats || ancestor_has_clearance_past_adjoining_floats) {
+    // If we've been pushed by floats, we assume the new clearance offset.
     DCHECK_EQ(**bfc_block_offset, old_clearance_offset);
     *block_offset_delta = new_clearance_offset - old_clearance_offset;
     *bfc_block_offset = new_clearance_offset;
-  } else {
+  } else if (is_margin_strut_equal) {
+    // If our incoming margin-strut is equal, we are just shifted by the BFC
+    // block-offset amount.
     *block_offset_delta =
         new_space.BfcOffset().block_offset - old_space.BfcOffset().block_offset;
     *bfc_block_offset = **bfc_block_offset + *block_offset_delta;
+  } else {
+    // If our incoming margin-strut isn't equal, we need to account for the
+    // difference in the incoming margin-struts.
+#if DCHECK_IS_ON()
+    DCHECK(!cached_layout_result.SubtreeModifiedMarginStrut());
+    LayoutUnit old_bfc_block_offset =
+        old_space.BfcOffset().block_offset + old_space.MarginStrut().Sum();
+    DCHECK_EQ(old_bfc_block_offset, **bfc_block_offset);
+#endif
+
+    LayoutUnit new_bfc_block_offset =
+        new_space.BfcOffset().block_offset + new_space.MarginStrut().Sum();
+    *block_offset_delta = new_bfc_block_offset - **bfc_block_offset;
+    *bfc_block_offset = **bfc_block_offset + *block_offset_delta;
   }
 
   // Check if the new position intersects with any floats.
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_utils.h b/third_party/blink/renderer/core/layout/ng/ng_layout_utils.h
index 0cc811c0..3989312d 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_utils.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_utils.h
@@ -48,16 +48,19 @@
 // affected by clearance, or floats, and therefore might be able to skip
 // layout.
 // Additionally (if this function returns true) it will calculate the new
-// |bfc_block_offset|, and |block_offset_delta| for the layout result.
+// |bfc_block_offset|, |block_offset_delta|, and |end_margin_strut| for the
+// layout result.
+//
 // |bfc_block_offset| may still be |base::nullopt| if not previously set.
 //
-// If this function returns false, both |bfc_block_offset|, and
-// |block_offset_delta| are in an undefined state and should not be used.
+// If this function returns false, |bfc_block_offset|, |block_offset_delta|,
+// and |end_margin_strut| are in an undefined state and should not be used.
 bool MaySkipLayoutWithinBlockFormattingContext(
     const NGLayoutResult& cached_layout_result,
     const NGConstraintSpace& new_space,
     base::Optional<LayoutUnit>* bfc_block_offset,
-    LayoutUnit* block_offset_delta);
+    LayoutUnit* block_offset_delta,
+    NGMarginStrut* end_margin_strut);
 
 // Return true if layout is considered complete. In some cases we require more
 // than one layout pass.
diff --git a/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc b/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc
index 2dcae1e..c2ad384 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc
@@ -1223,9 +1223,12 @@
                                    const NGBoxStrut& border_scrollbar_padding,
                                    LayoutUnit current_intrinsic_block_size) {
   // With contain: size, we ignore intrinsic sizing. If the block-size was
-  // specified as auto, its content-box size will become 0.
-  if (node.ShouldApplySizeContainment())
-    return border_scrollbar_padding.BlockSum();
+  // specified as auto, its content-box size will become 0, unless overridden by
+  // content-size.
+  if (node.ShouldApplySizeContainment()) {
+    return node.ContentBlockSizeForSizeContainment() +
+           border_scrollbar_padding.BlockSum();
+  }
 
   // If display locking induces size containment, then we replace its content
   // size with the locked content size.
@@ -1246,8 +1249,10 @@
     sizes += border_scrollbar_padding.InlineSum();
 
   // Size contained elements don't consider children for intrinsic sizing.
-  if (node.ShouldApplySizeContainment())
+  if (node.ShouldApplySizeContainment()) {
+    sizes += node.ContentInlineSizeForSizeContainment();
     return sizes;
+  }
 
   // Display locked elements override the content size, without considering
   // children. Note that contain: size (above) takes precedence over display
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 440b0ad..375fc73d7 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
@@ -48,6 +48,9 @@
   DCHECK_EQ(ConstraintSpace().BfcOffset(),
             previous_result_.GetConstraintSpaceForCaching().BfcOffset());
 
+  if (result.SubtreeModifiedMarginStrut())
+    container_builder_.SetSubtreeModifiedMarginStrut();
+
   container_builder_.SetBfcLineOffset(result.BfcLineOffset());
   if (result.BfcBlockOffset())
     container_builder_.SetBfcBlockOffset(*result.BfcBlockOffset());
diff --git a/third_party/blink/renderer/core/page/spatial_navigation_controller.cc b/third_party/blink/renderer/core/page/spatial_navigation_controller.cc
index fc5202cb..4315f0e 100644
--- a/third_party/blink/renderer/core/page/spatial_navigation_controller.cc
+++ b/third_party/blink/renderer/core/page/spatial_navigation_controller.cc
@@ -501,7 +501,7 @@
   // issues since the document/body will likely contain most of the other
   // content on the page.
   if (frame->IsMainFrame()) {
-    if (IsHTMLHtmlElement(element) || IsA<HTMLBodyElement>(element))
+    if (IsA<HTMLHtmlElement>(element) || IsA<HTMLBodyElement>(element))
       return false;
   }
 
diff --git a/third_party/blink/renderer/core/xml/parser/xml_document_parser.cc b/third_party/blink/renderer/core/xml/parser/xml_document_parser.cc
index f7aae421..d7daa5b1 100644
--- a/third_party/blink/renderer/core/xml/parser/xml_document_parser.cc
+++ b/third_party/blink/renderer/core/xml/parser/xml_document_parser.cc
@@ -1026,8 +1026,9 @@
 
   // Note: |insertedByParser| will perform dispatching if this is an
   // HTMLHtmlElement.
-  if (IsHTMLHtmlElement(*new_element) && is_first_element) {
-    ToHTMLHtmlElement(*new_element).InsertedByParser();
+  auto* html_html_element = DynamicTo<HTMLHtmlElement>(new_element);
+  if (html_html_element && is_first_element) {
+    html_html_element->InsertedByParser();
   } else if (!parsing_fragment_ && is_first_element &&
              GetDocument()->GetFrame()) {
     GetDocument()->GetFrame()->Loader().DispatchDocumentElementAvailable();
diff --git a/third_party/blink/renderer/devtools/front_end/Tests.js b/third_party/blink/renderer/devtools/front_end/Tests.js
index b7931ed..33dc3a0 100644
--- a/third_party/blink/renderer/devtools/front_end/Tests.js
+++ b/third_party/blink/renderer/devtools/front_end/Tests.js
@@ -1093,7 +1093,6 @@
 
         case 2:  // HSTS internal redirect
           test.assertTrue(networkRequest.url().startsWith('http://'));
-          test.assertEquals(undefined, networkRequest.requestHeadersText());
           test.assertEquals(307, networkRequest.statusCode);
           test.assertEquals('Internal Redirect', networkRequest.statusText);
           test.assertEquals('HSTS', networkRequest.responseHeaderValue('Non-Authoritative-Reason'));
diff --git a/third_party/blink/renderer/devtools/front_end/audits/AuditsStartView.js b/third_party/blink/renderer/devtools/front_end/audits/AuditsStartView.js
index 035fffca..736a8364 100644
--- a/third_party/blink/renderer/devtools/front_end/audits/AuditsStartView.js
+++ b/third_party/blink/renderer/devtools/front_end/audits/AuditsStartView.js
@@ -75,8 +75,8 @@
 
   _render() {
     this._startButton = UI.createTextButton(
-        ls`Run audits`, () => this._controller.dispatchEventToListeners(Audits.Events.RequestAuditStart),
-        'audits-start-button', true /* primary */);
+        ls`Run audits`, () => this._controller.dispatchEventToListeners(Audits.Events.RequestAuditStart), '',
+        true /* primary */);
     this.setDefaultFocusedElement(this._startButton);
 
     const deviceIcon = UI.Icon.create('largeicon-phone');
diff --git a/third_party/blink/renderer/devtools/front_end/audits/auditsStartView.css b/third_party/blink/renderer/devtools/front_end/audits/auditsStartView.css
index 55f30d7..e7ea4ab 100644
--- a/third_party/blink/renderer/devtools/front_end/audits/auditsStartView.css
+++ b/third_party/blink/renderer/devtools/front_end/audits/auditsStartView.css
@@ -99,10 +99,6 @@
   align-items: center;
 }
 
-.audits-start-button {
-  max-width: 100px;
-}
-
 .audits-start-view .toolbar-dropdown-arrow {
   display: none;
 }
diff --git a/third_party/blink/renderer/devtools/front_end/sdk/NetworkManager.js b/third_party/blink/renderer/devtools/front_end/sdk/NetworkManager.js
index 9fdad45..16f1d66 100644
--- a/third_party/blink/renderer/devtools/front_end/sdk/NetworkManager.js
+++ b/third_party/blink/renderer/devtools/front_end/sdk/NetworkManager.js
@@ -280,6 +280,8 @@
     this._inflightRequestsById = {};
     /** @type {!Object<string, !SDK.NetworkRequest>} */
     this._inflightRequestsByURL = {};
+    /** @type {!Map<string, !RedirectExtraInfoBuilder>} */
+    this._requestIdToRedirectExtraInfoBuilder = new Map();
   }
 
   /**
@@ -319,12 +321,16 @@
     networkRequest.mimeType = response.mimeType;
     networkRequest.statusCode = response.status;
     networkRequest.statusText = response.statusText;
-    networkRequest.responseHeaders = this._headersMapToHeadersArray(response.headers);
+    if (!networkRequest.hasExtraResponseInfo())
+      networkRequest.responseHeaders = this._headersMapToHeadersArray(response.headers);
+
     if (response.encodedDataLength >= 0)
       networkRequest.setTransferSize(response.encodedDataLength);
-    if (response.headersText)
-      networkRequest.responseHeadersText = response.headersText;
-    if (response.requestHeaders) {
+
+    if (response.requestHeaders && !networkRequest.hasExtraRequestInfo()) {
+      // TODO(http://crbug.com/991471): Stop using response.requestHeaders and
+      //   response.requestHeadersText once service workers and shared workers
+      //   emit Network.*ExtraInfo events for their network requests.
       networkRequest.setRequestHeaders(this._headersMapToHeadersArray(response.requestHeaders));
       networkRequest.setRequestHeadersText(response.requestHeadersText || '');
     }
@@ -477,6 +483,8 @@
     networkRequest.setResourceType(
         resourceType ? Common.resourceTypes[resourceType] : Protocol.Network.ResourceType.Other);
 
+    this._getExtraInfoBuilder(requestId).addRequest(networkRequest);
+
     this._startNetworkRequest(networkRequest);
   }
 
@@ -576,6 +584,7 @@
       networkRequest = this._maybeAdoptMainResourceRequest(requestId);
     if (!networkRequest)
       return;
+    this._getExtraInfoBuilder(requestId).finished();
     this._finishNetworkRequest(networkRequest, finishTime, encodedDataLength, shouldReportCorbBlocking);
   }
 
@@ -605,6 +614,7 @@
       }
     }
     networkRequest.localizedFailDescription = localizedDescription;
+    this._getExtraInfoBuilder(requestId).finished();
     this._finishNetworkRequest(networkRequest, time, -1);
   }
 
@@ -773,8 +783,12 @@
    * @param {!Protocol.Network.Headers} headers
    */
   requestWillBeSentExtraInfo(requestId, blockedCookies, headers) {
-    // TODO(http://crbug.com/868407): Populate request info with these new raw headers
-    // TODO(http://crbug.com/856777): Populate request info with blocked cookies
+    /** @type {!SDK.NetworkRequest.ExtraRequestInfo} */
+    const extraRequestInfo = {
+      blockedRequestCookies: blockedCookies,
+      requestHeaders: this._headersMapToHeadersArray(headers)
+    };
+    this._getExtraInfoBuilder(requestId).addRequestExtraInfo(extraRequestInfo);
   }
 
   /**
@@ -785,8 +799,27 @@
    * @param {string=} headersText
    */
   responseReceivedExtraInfo(requestId, blockedCookies, headers, headersText) {
-    // TODO(http://crbug.com/868407): Populate request info with these new raw headers
-    // TODO(http://crbug.com/856777): Populate request info with blocked cookies
+    /** @type {!SDK.NetworkRequest.ExtraResponseInfo} */
+    const extraResponseInfo = {
+      blockedResponseCookies: blockedCookies,
+      responseHeaders: this._headersMapToHeadersArray(headers),
+      responseHeadersText: headersText
+    };
+    this._getExtraInfoBuilder(requestId).addResponseExtraInfo(extraResponseInfo);
+  }
+
+  /**
+   * @param {string} requestId
+   * @return {!RedirectExtraInfoBuilder}
+   */
+  _getExtraInfoBuilder(requestId) {
+    if (!this._requestIdToRedirectExtraInfoBuilder.get(requestId)) {
+      const deleteCallback = () => {
+        this._requestIdToRedirectExtraInfoBuilder.delete(requestId);
+      };
+      this._requestIdToRedirectExtraInfoBuilder.set(requestId, new RedirectExtraInfoBuilder(deleteCallback));
+    }
+    return this._requestIdToRedirectExtraInfoBuilder.get(requestId);
   }
 
   /**
@@ -1358,6 +1391,97 @@
   }
 };
 
+/**
+ * Helper class to match requests created from requestWillBeSent with
+ * requestWillBeSentExtraInfo and responseReceivedExtraInfo when they have the
+ * same requestId due to redirects.
+ */
+class RedirectExtraInfoBuilder {
+  /**
+   * @param {function()} deleteCallback
+   */
+  constructor(deleteCallback) {
+    /** @type {!Array<!SDK.NetworkRequest>} */
+    this._requests = [];
+    /** @type {!Array<?SDK.NetworkRequest.ExtraRequestInfo>} */
+    this._requestExtraInfos = [];
+    /** @type {!Array<?SDK.NetworkRequest.ExtraResponseInfo>} */
+    this._responseExtraInfos = [];
+    /** @type {boolean} */
+    this._finished = false;
+    /** @type {boolean} */
+    this._hasExtraInfo = false;
+    /** @type {function()} */
+    this._deleteCallback = deleteCallback;
+  }
+
+  /**
+   * @param {!SDK.NetworkRequest} req
+   */
+  addRequest(req) {
+    this._requests.push(req);
+    this._sync(this._requests.length - 1);
+  }
+
+  /**
+   * @param {!SDK.NetworkRequest.ExtraRequestInfo} info
+   */
+  addRequestExtraInfo(info) {
+    this._hasExtraInfo = true;
+    this._requestExtraInfos.push(info);
+    this._sync(this._requestExtraInfos.length - 1);
+  }
+
+  /**
+   * @param {!SDK.NetworkRequest.ExtraResponseInfo} info
+   */
+  addResponseExtraInfo(info) {
+    this._responseExtraInfos.push(info);
+    this._sync(this._responseExtraInfos.length - 1);
+  }
+
+  finished() {
+    this._finished = true;
+    this._deleteIfComplete();
+  }
+
+  /**
+   * @param {number} index
+   */
+  _sync(index) {
+    const req = this._requests[index];
+    if (!req)
+      return;
+
+    const requestExtraInfo = this._requestExtraInfos[index];
+    if (requestExtraInfo) {
+      req.addExtraRequestInfo(requestExtraInfo);
+      this._requestExtraInfos[index] = null;
+    }
+
+    const responseExtraInfo = this._responseExtraInfos[index];
+    if (responseExtraInfo) {
+      req.addExtraResponseInfo(responseExtraInfo);
+      this._responseExtraInfos[index] = null;
+    }
+
+    this._deleteIfComplete();
+  }
+
+  _deleteIfComplete() {
+    if (!this._finished)
+      return;
+
+    if (this._hasExtraInfo) {
+      // if we haven't gotten the last responseExtraInfo event, we have to wait for it.
+      if (!this._requests.peekLast().hasExtraResponseInfo())
+        return;
+    }
+
+    this._deleteCallback();
+  }
+}
+
 /** @typedef {!{urlPattern: string, interceptionStage: !Protocol.Network.InterceptionStage}} */
 SDK.MultitargetNetworkManager.InterceptionPattern;
 
diff --git a/third_party/blink/renderer/devtools/front_end/sdk/NetworkRequest.js b/third_party/blink/renderer/devtools/front_end/sdk/NetworkRequest.js
index bea48362..8ec9250 100644
--- a/third_party/blink/renderer/devtools/front_end/sdk/NetworkRequest.js
+++ b/third_party/blink/renderer/devtools/front_end/sdk/NetworkRequest.js
@@ -112,6 +112,11 @@
     // Assume no body initially
     /** @type {?Promise<?string>} */
     this._requestFormDataPromise = /** @type {?Promise<?string>} */ (Promise.resolve(null));
+
+    /** @type {boolean} */
+    this._hasExtraRequestInfo = false;
+    /** @type {boolean} */
+    this._hasExtraResponseInfo = false;
   }
 
   /**
@@ -1290,6 +1295,57 @@
 
     return null;
   }
+
+  /**
+   * @param {!SDK.NetworkRequest.ExtraRequestInfo} extraRequestInfo
+   */
+  addExtraRequestInfo(extraRequestInfo) {
+    this._blockedRequestCookies = extraRequestInfo.blockedRequestCookies;
+    this.setRequestHeaders(extraRequestInfo.requestHeaders);
+    this._hasExtraRequestInfo = true;
+    this.setRequestHeadersText('');  // Mark request headers as non-provisional
+  }
+
+  /**
+   * @return {boolean}
+   */
+  hasExtraRequestInfo() {
+    return this._hasExtraRequestInfo;
+  }
+
+  /**
+   * @param {!SDK.NetworkRequest.ExtraResponseInfo} extraResponseInfo
+   */
+  addExtraResponseInfo(extraResponseInfo) {
+    this._blockedResponseCookies = extraResponseInfo.blockedResponseCookies;
+    this.responseHeaders = extraResponseInfo.responseHeaders;
+
+    if (extraResponseInfo.responseHeadersText) {
+      this.responseHeadersText = extraResponseInfo.responseHeadersText;
+
+      if (!this.requestHeadersText()) {
+        // Generate request headers text from raw headers in extra request info because
+        // Network.requestWillBeSentExtraInfo doesn't include headers text.
+        let requestHeadersText = `${this.requestMethod} ${this.parsedURL.path}`;
+        if (this.parsedURL.queryParams)
+          requestHeadersText += `?${this.parsedURL.queryParams}`;
+        requestHeadersText += ` HTTP/1.1\r\n`;
+
+        for (const {name, value} of this.requestHeaders())
+          requestHeadersText += `${name}: ${value}\r\n`;
+        this.setRequestHeadersText(requestHeadersText);
+      }
+    }
+
+    this._hasExtraResponseInfo = true;
+  }
+
+  /**
+   * @return {boolean}
+   */
+  hasExtraResponseInfo() {
+    return this._hasExtraResponseInfo;
+  }
 };
 
 /** @enum {symbol} */
@@ -1331,3 +1387,20 @@
 
 /** @typedef {!{error: ?string, content: ?string, encoded: boolean}} */
 SDK.NetworkRequest.ContentData;
+
+/**
+ * @typedef {!{
+ *   blockedRequestCookies: !Array<!Protocol.Network.BlockedCookieWithReason>,
+ *   requestHeaders: !Array<!SDK.NetworkRequest.NameValue>
+ * }}
+ */
+SDK.NetworkRequest.ExtraRequestInfo;
+
+/**
+ * @typedef {!{
+ *   blockedResponseCookies: !Array<!Protocol.Network.BlockedSetCookieWithReason>,
+ *   responseHeaders: !Array<!SDK.NetworkRequest.NameValue>,
+ *   responseHeadersText: (string|undefined)
+ * }}
+ */
+SDK.NetworkRequest.ExtraResponseInfo;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
index 5fa7d12..50b5318 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
@@ -674,7 +674,7 @@
 
   // The HTML element should not be exposed as an element. That's what the
   // LayoutView element does.
-  if (IsHTMLHtmlElement(*GetNode()))
+  if (IsA<HTMLHtmlElement>(GetNode()))
     return ax::mojom::Role::kIgnored;
 
   // Treat <iframe> and <frame> the same.
diff --git a/third_party/blink/renderer/modules/vr/vr_eye_parameters.cc b/third_party/blink/renderer/modules/vr/vr_eye_parameters.cc
index 9deae25..729055b 100644
--- a/third_party/blink/renderer/modules/vr/vr_eye_parameters.cc
+++ b/third_party/blink/renderer/modules/vr/vr_eye_parameters.cc
@@ -4,15 +4,20 @@
 
 #include "third_party/blink/renderer/modules/vr/vr_eye_parameters.h"
 
+#include "third_party/blink/renderer/platform/transforms/transformation_matrix.h"
+
 namespace blink {
 
 VREyeParameters::VREyeParameters(
     const device::mojom::blink::VREyeParametersPtr& eye_parameters,
     double render_scale) {
+  // This only works if the transform only has the translation component.
+  // However, WebVR never worked with angled screens anyways.
+  const TransformationMatrix matrix(eye_parameters->head_from_eye.matrix());
   offset_ = DOMFloat32Array::Create(3);
-  offset_->Data()[0] = eye_parameters->offset.x();
-  offset_->Data()[1] = eye_parameters->offset.y();
-  offset_->Data()[2] = eye_parameters->offset.z();
+  offset_->Data()[0] = matrix.M41();  // x translation
+  offset_->Data()[1] = matrix.M42();  // y translation
+  offset_->Data()[2] = matrix.M43();  // z translation
 
   field_of_view_ = MakeGarbageCollected<VRFieldOfView>();
   field_of_view_->SetUpDegrees(eye_parameters->field_of_view->up_degrees);
diff --git a/third_party/blink/renderer/modules/xr/xr_session.cc b/third_party/blink/renderer/modules/xr/xr_session.cc
index cae37c3..54c599d1 100644
--- a/third_party/blink/renderer/modules/xr/xr_session.cc
+++ b/third_party/blink/renderer/modules/xr/xr_session.cc
@@ -83,7 +83,8 @@
       fov->left_degrees * kDegToRad, fov->right_degrees * kDegToRad, depth_near,
       depth_far);
 
-  view.UpdateOffset(eye->offset.x(), eye->offset.y(), eye->offset.z());
+  const TransformationMatrix matrix(eye->head_from_eye.matrix());
+  view.SetHeadFromEyeTransform(matrix);
 }
 
 // Returns the session feature corresponding to the given reference space type.
@@ -980,7 +981,6 @@
     } else {
       if (views_.IsEmpty()) {
         views_.emplace_back(XRView::kEyeNone);
-        views_[kMonoOrStereoLeftView].UpdateOffset(0, 0, 0);
       }
 
       float aspect = 1.0f;
diff --git a/third_party/blink/renderer/modules/xr/xr_view.cc b/third_party/blink/renderer/modules/xr/xr_view.cc
index 02b5e8ee..35a1381ce 100644
--- a/third_party/blink/renderer/modules/xr/xr_view.cc
+++ b/third_party/blink/renderer/modules/xr/xr_view.cc
@@ -23,7 +23,8 @@
     default:
       eye_string_ = "none";
   }
-  transform_ = MakeGarbageCollected<XRRigidTransform>(view_data.Transform());
+  ref_space_from_eye_ =
+      MakeGarbageCollected<XRRigidTransform>(view_data.Transform());
   projection_matrix_ =
       transformationMatrixToDOMFloat32Array(view_data.ProjectionMatrix());
 }
@@ -80,10 +81,6 @@
   inv_projection_dirty_ = true;
 }
 
-void XRViewData::UpdateOffset(float x, float y, float z) {
-  offset_.Set(x, y, z);
-}
-
 TransformationMatrix XRViewData::UnprojectPointer(double x,
                                                   double y,
                                                   double canvas_width,
@@ -129,19 +126,26 @@
   return inv_pointer.Inverse();
 }
 
-void XRViewData::UpdatePoseMatrix(const TransformationMatrix& pose_matrix) {
-  transform_ = pose_matrix;
-  transform_.Translate3d(offset_.X(), offset_.Y(), offset_.Z());
+void XRViewData::SetHeadFromEyeTransform(
+    const TransformationMatrix& head_from_eye) {
+  head_from_eye_ = head_from_eye;
+}
+
+// ref_space_from_eye_ = ref_space_from_head * head_from_eye_
+void XRViewData::UpdatePoseMatrix(
+    const TransformationMatrix& ref_space_from_head) {
+  ref_space_from_eye_ = ref_space_from_head;
+  ref_space_from_eye_.Multiply(head_from_eye_);
 }
 
 XRRigidTransform* XRView::transform() const {
-  return transform_;
+  return ref_space_from_eye_;
 }
 
 void XRView::Trace(blink::Visitor* visitor) {
   visitor->Trace(session_);
   visitor->Trace(projection_matrix_);
-  visitor->Trace(transform_);
+  visitor->Trace(ref_space_from_eye_);
   ScriptWrappable::Trace(visitor);
 }
 
diff --git a/third_party/blink/renderer/modules/xr/xr_view.h b/third_party/blink/renderer/modules/xr/xr_view.h
index 596433b..b89cdd0 100644
--- a/third_party/blink/renderer/modules/xr/xr_view.h
+++ b/third_party/blink/renderer/modules/xr/xr_view.h
@@ -41,7 +41,7 @@
   XREye eye_;
   String eye_string_;
   Member<XRSession> session_;
-  Member<XRRigidTransform> transform_;
+  Member<XRRigidTransform> ref_space_from_eye_;
   Member<DOMFloat32Array> projection_matrix_;
 };
 
@@ -49,7 +49,7 @@
  public:
   XRViewData(XRView::XREye eye) : eye_(eye) {}
 
-  void UpdatePoseMatrix(const TransformationMatrix& pose_matrix);
+  void UpdatePoseMatrix(const TransformationMatrix& ref_space_from_head);
   void UpdateProjectionMatrixFromFoV(float up_rad,
                                      float down_rad,
                                      float left_rad,
@@ -61,9 +61,7 @@
                                         float near_depth,
                                         float far_depth);
 
-  // TODO(bajones): Should eventually represent this as a full transform.
-  const FloatPoint3D& offset() const { return offset_; }
-  void UpdateOffset(float x, float y, float z);
+  void SetHeadFromEyeTransform(const TransformationMatrix& head_from_eye);
 
   TransformationMatrix UnprojectPointer(double x,
                                         double y,
@@ -71,17 +69,17 @@
                                         double canvas_height);
 
   XRView::XREye Eye() const { return eye_; }
-  const TransformationMatrix& Transform() const { return transform_; }
+  const TransformationMatrix& Transform() const { return ref_space_from_eye_; }
   const TransformationMatrix& ProjectionMatrix() const {
     return projection_matrix_;
   }
 
  private:
   const XRView::XREye eye_;
-  TransformationMatrix transform_;
-  FloatPoint3D offset_;
+  TransformationMatrix ref_space_from_eye_;
   TransformationMatrix projection_matrix_;
   TransformationMatrix inv_projection_;
+  TransformationMatrix head_from_eye_;
   bool inv_projection_dirty_ = true;
 };
 
diff --git a/third_party/blink/renderer/modules/xr/xr_view_test.cc b/third_party/blink/renderer/modules/xr/xr_view_test.cc
index b34233f..ce75856 100644
--- a/third_party/blink/renderer/modules/xr/xr_view_test.cc
+++ b/third_party/blink/renderer/modules/xr/xr_view_test.cc
@@ -18,7 +18,10 @@
 
 TEST(XRViewTest, UpdatePoseMatrix) {
   XRViewData view(XRView::kEyeLeft);
-  view.UpdateOffset(-1.0, 2.0, 3.0);
+
+  TransformationMatrix head_from_eye;
+  head_from_eye.Translate3d(-1.0, 2.0, 3.0);
+  view.SetHeadFromEyeTransform(head_from_eye);
 
   DOMPointInit* position = MakePointForTest(1.0, -1.0, 4.0, 1.0);
   DOMPointInit* orientation =
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
index be563f2..553bcfa0 100644
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -829,7 +829,7 @@
       // Modifies LayoutShiftTracker to use O(n log n) sweep line algorithm for
       // computing the area of the layout shift region.
       name: "JankTrackingSweepLine",
-      status: "experimental",
+      status: "stable",
     },
     {
       name: "JSONModules",
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index c61897e..ea2cbc0 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -3253,7 +3253,6 @@
 # ====== New tests from wpt-importer added here ======
 crbug.com/626703 [ Mac10.10 ] virtual/omt-worker-fetch/external/wpt/resource-timing/resource_timing_buffer_full_eventually.html [ Timeout ]
 crbug.com/626703 [ Retina ] virtual/omt-worker-fetch/external/wpt/resource-timing/resource_timing_buffer_full_eventually.html [ Timeout ]
-crbug.com/626703 [ Linux ] virtual/omt-service-worker-startup/external/wpt/service-workers/service-worker/interfaces-sw.https.html [ Failure Crash ]
 crbug.com/626703 [ Linux ] external/wpt/css/mediaqueries/aspect-ratio-006.html [ Failure ]
 crbug.com/626703 [ Mac ] external/wpt/css/mediaqueries/aspect-ratio-006.html [ Failure ]
 crbug.com/626703 [ Win ] external/wpt/css/mediaqueries/aspect-ratio-006.html [ Failure ]
@@ -6514,8 +6513,6 @@
 crbug.com/999473 external/wpt/streams/writable-streams/properties.any.worker.html [ Pass Failure ]
 
 crbug.com/1000051 [ Mac ] virtual/audio-service/media/controls/volume-slider.html [ Failure Timeout Pass ]
-crbug.com/1000124 [ Mac ] compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers.html [ Crash ]
-crbug.com/1000124 [ Mac ] virtual/prefer_compositing_to_lcd_text/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers.html [ Crash ]
 
 # Sheriff 2019-09-03
 crbug.com/999799 [ Mac Linux ] external/wpt/html/rendering/dimension-attributes.html [ Pass Timeout ]
@@ -6531,6 +6528,11 @@
 crbug.com/1000336 [ Linux ] http/tests/devtools/a11y-axe-core/sources/source-navigator-network-a11y-test.js [ Pass Failure ]
 crbug.com/1000336 [ Linux ] http/tests/devtools/a11y-axe-core/sources/sources-editor-pane-a11y-test.js [ Pass Failure ]
 crbug.com/1000396 [ Win ] virtual/audio-service/media/video-remove-insert-repaints.html [ Pass Failure ]
+crbug.com/1000396 [ Win ] media/video-remove-insert-repaints.html [ Pass Failure ]
+crbug.com/1000768 [ Linux ] external/wpt/web-locks/idlharness.tentative.https.any.html [ Pass Failure ]
+crbug.com/1000768 [ Linux ] external/wpt/geolocation-API/idlharness.window.html [ Pass Failure ]
+crbug.com/1000768 [ Linux ] external/wpt/web-share/idlharness.https.window.html [ Pass Failure ]
+crbug.com/1000768 [ Linux ] external/wpt/storage/idlharness.https.any.html [ Pass Failure ]
 
 # Partial fix to avoid a regression on eval(string) with Trusted Types enabled in Chrome 77.
 crbug.com/992424 external/wpt/trusted-types/block-eval.tentative.html [ Failure ]
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json
index 5ff1e83..2ba6ee87 100644
--- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json
+++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json
@@ -6463,12 +6463,6 @@
      {}
     ]
    ],
-   "pointerevents/extension/pointerevent_coalesced_events_attributes-manual.html": [
-    [
-     "pointerevents/extension/pointerevent_coalesced_events_attributes-manual.html",
-     {}
-    ]
-   ],
    "pointerevents/extension/pointerevent_getPredictedEvents_when_pointerlocked-manual.html": [
     [
      "pointerevents/extension/pointerevent_getPredictedEvents_when_pointerlocked-manual.html",
@@ -48863,6 +48857,18 @@
      {}
     ]
    ],
+   "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-008.html": [
+    [
+     "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-008.html",
+     [
+      [
+       "/css/css-grid/reference/grid-block-axis-alignment-auto-margins-008-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-grid/alignment/grid-content-distribution-001.html": [
     [
      "css/css-grid/alignment/grid-content-distribution-001.html",
@@ -49607,6 +49613,18 @@
      {}
     ]
    ],
+   "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-008.html": [
+    [
+     "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-008.html",
+     [
+      [
+       "/css/css-grid/reference/grid-inline-axis-alignment-auto-margins-008-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-grid/alignment/grid-self-alignment-stretch-input-range.html": [
     [
      "css/css-grid/alignment/grid-self-alignment-stretch-input-range.html",
@@ -58403,6 +58421,18 @@
      {}
     ]
    ],
+   "css/css-multicol/with-custom-layout-on-same-element.https.html": [
+    [
+     "css/css-multicol/with-custom-layout-on-same-element.https.html",
+     [
+      [
+       "/css/reference/ref-filled-green-100px-square.xht",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-multicol/zero-column-width-layout.html": [
     [
      "css/css-multicol/zero-column-width-layout.html",
@@ -118717,6 +118747,18 @@
      {}
     ]
    ],
+   "mathml/relations/html5-tree/css-inline-style-dynamic.tentative.html": [
+    [
+     "mathml/relations/html5-tree/css-inline-style-dynamic.tentative.html",
+     [
+      [
+       "/mathml/relations/html5-tree/css-inline-style-dynamic.tentative-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "mathml/relations/html5-tree/dynamic-1.html": [
     [
      "mathml/relations/html5-tree/dynamic-1.html",
@@ -125554,12 +125596,6 @@
    "BackgroundSync/META.yml": [
     []
    ],
-   "BackgroundSync/idlharness.https.any-expected.txt": [
-    []
-   ],
-   "BackgroundSync/idlharness.https.any.worker-expected.txt": [
-    []
-   ],
    "BackgroundSync/service_workers/sw.js": [
     []
    ],
@@ -125590,12 +125626,6 @@
    "FileAPI/historical.https-expected.txt": [
     []
    ],
-   "FileAPI/idlharness-expected.txt": [
-    []
-   ],
-   "FileAPI/idlharness.worker-expected.txt": [
-    []
-   ],
    "FileAPI/reading-data-section/filereader_events.any-expected.txt": [
     []
    ],
@@ -125662,24 +125692,12 @@
    "IndexedDB/README.md": [
     []
    ],
-   "IndexedDB/idbobjectstore_createIndex15-autoincrement-expected.txt": [
-    []
-   ],
    "IndexedDB/idbworker.js": [
     []
    ],
-   "IndexedDB/idlharness.any-expected.txt": [
-    []
-   ],
    "IndexedDB/idlharness.any.serviceworker-expected.txt": [
     []
    ],
-   "IndexedDB/idlharness.any.sharedworker-expected.txt": [
-    []
-   ],
-   "IndexedDB/idlharness.any.worker-expected.txt": [
-    []
-   ],
    "IndexedDB/interleaved-cursors-common.js": [
     []
    ],
@@ -125899,9 +125917,6 @@
    "WebCryptoAPI/generateKey/successes_AES-KW.https.worker-expected.txt": [
     []
    ],
-   "WebCryptoAPI/idlharness.https.any-expected.txt": [
-    []
-   ],
    "WebCryptoAPI/idlharness.https.any.worker-expected.txt": [
     []
    ],
@@ -126202,18 +126217,12 @@
    "appmanifest/META.yml": [
     []
    ],
-   "appmanifest/idlharness.window-expected.txt": [
-    []
-   ],
    "audio-output/META.yml": [
     []
    ],
    "audio-output/OWNERS": [
     []
    ],
-   "audio-output/idlharness.https.window-expected.txt": [
-    []
-   ],
    "audio-output/setSinkId.https-expected.txt": [
     []
    ],
@@ -126226,15 +126235,9 @@
    "background-fetch/fetch.https.window-expected.txt": [
     []
    ],
-   "background-fetch/idlharness.https.any-expected.txt": [
-    []
-   ],
    "background-fetch/idlharness.https.any.serviceworker-expected.txt": [
     []
    ],
-   "background-fetch/idlharness.https.any.sharedworker-expected.txt": [
-    []
-   ],
    "background-fetch/idlharness.https.any.worker-expected.txt": [
     []
    ],
@@ -126274,9 +126277,6 @@
    "battery-status/battery-insecure-context-expected.txt": [
     []
    ],
-   "battery-status/battery-interface-idlharness.https.window-expected.txt": [
-    []
-   ],
    "battery-status/support-iframe.html": [
     []
    ],
@@ -126316,12 +126316,6 @@
    "beacon/headers/header-referrer.js": [
     []
    ],
-   "beacon/idlharness.any-expected.txt": [
-    []
-   ],
-   "beacon/idlharness.any.worker-expected.txt": [
-    []
-   ],
    "beacon/resources/beacon.py": [
     []
    ],
@@ -126907,9 +126901,6 @@
    "content-security-policy/connect-src/support/worker-make-xhr.sub.js": [
     []
    ],
-   "content-security-policy/embedded-enforcement/idlharness.window-expected.txt": [
-    []
-   ],
    "content-security-policy/embedded-enforcement/support/echo-allow-csp-from.py": [
     []
    ],
@@ -127645,9 +127636,6 @@
    "cookie-store/README.md": [
     []
    ],
-   "cookie-store/idlharness.tentative.https-expected.txt": [
-    []
-   ],
    "cookie-store/idlharness_serviceworker.js": [
     []
    ],
@@ -129214,9 +129202,6 @@
    "credential-management/federatedcredential-framed-get.sub.https-expected.txt": [
     []
    ],
-   "credential-management/idlharness.https.window-expected.txt": [
-    []
-   ],
    "credential-management/passwordcredential-framed-get.sub.https-expected.txt": [
     []
    ],
@@ -133456,6 +133441,12 @@
    "css/css-contain/reference/ref-if-there-is-no-red.xht": [
     []
    ],
+   "css/css-contain/support/60x60-green.png": [
+    []
+   ],
+   "css/css-contain/support/60x60-red.png": [
+    []
+   ],
    "css/css-contain/support/blue-100x100.png": [
     []
    ],
@@ -140053,6 +140044,9 @@
    "css/css-grid/reference/grid-auto-repeat-multiple-values-001-ref.html": [
     []
    ],
+   "css/css-grid/reference/grid-block-axis-alignment-auto-margins-008-ref.html": [
+    []
+   ],
    "css/css-grid/reference/grid-different-gutters-ref.html": [
     []
    ],
@@ -140065,6 +140059,9 @@
    "css/css-grid/reference/grid-first-letter-green-margin-no-collapse-ref.html": [
     []
    ],
+   "css/css-grid/reference/grid-inline-axis-alignment-auto-margins-008-ref.html": [
+    []
+   ],
    "css/css-grid/reference/grid-layout-auto-tracks-ref.html": [
     []
    ],
@@ -142321,36 +142318,12 @@
    "css/css-shapes/shape-outside/values/shape-margin-002-expected.txt": [
     []
    ],
-   "css/css-shapes/shape-outside/values/shape-margin-003-expected.txt": [
-    []
-   ],
    "css/css-shapes/shape-outside/values/shape-margin-005-expected.txt": [
     []
    ],
-   "css/css-shapes/shape-outside/values/shape-outside-circle-010-expected.txt": [
-    []
-   ],
-   "css/css-shapes/shape-outside/values/shape-outside-circle-011-expected.txt": [
-    []
-   ],
-   "css/css-shapes/shape-outside/values/shape-outside-ellipse-010-expected.txt": [
-    []
-   ],
-   "css/css-shapes/shape-outside/values/shape-outside-ellipse-011-expected.txt": [
-    []
-   ],
    "css/css-shapes/shape-outside/values/shape-outside-inset-001-expected.txt": [
     []
    ],
-   "css/css-shapes/shape-outside/values/shape-outside-inset-008-expected.txt": [
-    []
-   ],
-   "css/css-shapes/shape-outside/values/shape-outside-inset-009-expected.txt": [
-    []
-   ],
-   "css/css-shapes/shape-outside/values/shape-outside-polygon-006-expected.txt": [
-    []
-   ],
    "css/css-shapes/shape-outside/values/support/parsing-utils.js": [
     []
    ],
@@ -145912,9 +145885,6 @@
    "css/css-transforms/transform3d-translatez-ref.html": [
     []
    ],
-   "css/css-transforms/transforms-support-calc-expected.txt": [
-    []
-   ],
    "css/css-transforms/translate-ref.html": [
     []
    ],
@@ -147286,9 +147256,6 @@
    "css/css-values/OWNERS": [
     []
    ],
-   "css/css-values/calc-background-position-002-expected.txt": [
-    []
-   ],
    "css/css-values/calc-background-position-003-expected.txt": [
     []
    ],
@@ -149953,9 +149920,6 @@
    "css/filter-effects/idlharness.any-expected.txt": [
     []
    ],
-   "css/filter-effects/idlharness.any.worker-expected.txt": [
-    []
-   ],
    "css/filter-effects/interfaces.any-expected.txt": [
     []
    ],
@@ -150193,9 +150157,6 @@
    "css/motion/offset-rotate-ref.html": [
     []
    ],
-   "css/motion/offset-supports-calc-expected.txt": [
-    []
-   ],
    "css/motion/parsing/offset-path-parsing-valid-expected.txt": [
     []
    ],
@@ -152185,15 +152146,6 @@
    "dom/historical-expected.txt": [
     []
    ],
-   "dom/idlharness.any.serviceworker-expected.txt": [
-    []
-   ],
-   "dom/idlharness.any.sharedworker-expected.txt": [
-    []
-   ],
-   "dom/idlharness.any.worker-expected.txt": [
-    []
-   ],
    "dom/idlharness.window_exclude=Node-expected.txt": [
     []
    ],
@@ -152560,6 +152512,9 @@
    "domxpath/OWNERS": [
     []
    ],
+   "domxpath/README.md": [
+    []
+   ],
    "domxpath/xml_xpath_tests.xml": [
     []
    ],
@@ -154843,18 +154798,6 @@
    "fetch/corb/resources/subframe-that-posts-html-containing-blob-url-to-parent.html": [
     []
    ],
-   "fetch/cors-rfc1918/idlharness.tentative.any-expected.txt": [
-    []
-   ],
-   "fetch/cors-rfc1918/idlharness.tentative.any.serviceworker-expected.txt": [
-    []
-   ],
-   "fetch/cors-rfc1918/idlharness.tentative.any.sharedworker-expected.txt": [
-    []
-   ],
-   "fetch/cors-rfc1918/idlharness.tentative.any.worker-expected.txt": [
-    []
-   ],
    "fetch/cross-origin-resource-policy/OWNERS": [
     []
    ],
@@ -155590,9 +155533,6 @@
    "fullscreen/api/resources/report-fullscreen-enabled.html": [
     []
    ],
-   "fullscreen/idlharness.window-expected.txt": [
-    []
-   ],
    "fullscreen/rendering/fullscreen-pseudo-class-manual-expected.txt": [
     []
    ],
@@ -155629,9 +155569,6 @@
    "generic-sensor/generic-sensor-tests.js": [
     []
    ],
-   "generic-sensor/idlharness.https.window-expected.txt": [
-    []
-   ],
    "generic-sensor/resources/iframe_sensor_handler.html": [
     []
    ],
@@ -155734,18 +155671,6 @@
    "hr-time/OWNERS": [
     []
    ],
-   "hr-time/idlharness.any-expected.txt": [
-    []
-   ],
-   "hr-time/idlharness.any.serviceworker-expected.txt": [
-    []
-   ],
-   "hr-time/idlharness.any.sharedworker-expected.txt": [
-    []
-   ],
-   "hr-time/idlharness.any.worker-expected.txt": [
-    []
-   ],
    "hr-time/resources/now_frame.html": [
     []
    ],
@@ -156907,6 +156832,9 @@
    "html/cross-origin-opener-policy/coep.https.html.headers": [
     []
    ],
+   "html/cross-origin-opener-policy/coop-navigated-popup.https-expected.txt": [
+    []
+   ],
    "html/cross-origin-opener-policy/coop-navigated-popup.https.html.headers": [
     []
    ],
@@ -161302,9 +161230,6 @@
    "html/semantics/embedded-content/the-img-element/intrinsicsize/intrinsicsize-without-unsized-media.tentative.https.sub.html.headers": [
     []
    ],
-   "html/semantics/embedded-content/the-img-element/invalid-src-expected.txt": [
-    []
-   ],
    "html/semantics/embedded-content/the-img-element/ismap/img-ismap-coordinates-iframe-after.html": [
     []
    ],
@@ -161392,12 +161317,42 @@
    "html/semantics/forms/attributes-common-to-form-controls/dirname-ltr-iframe.html": [
     []
    ],
+   "html/semantics/forms/autofocus/first-reconnected-expected.txt": [
+    []
+   ],
    "html/semantics/forms/autofocus/first-when-later-but-before-expected.txt": [
     []
    ],
+   "html/semantics/forms/autofocus/focusable-area-in-top-document-expected.txt": [
+    []
+   ],
    "html/semantics/forms/autofocus/resources/child-autofocus.html": [
     []
    ],
+   "html/semantics/forms/autofocus/resources/erase-first.css": [
+    []
+   ],
+   "html/semantics/forms/autofocus/resources/frame-with-autofocus-element.html": [
+    []
+   ],
+   "html/semantics/forms/autofocus/resources/moving-autofocus-to-parent.html": [
+    []
+   ],
+   "html/semantics/forms/autofocus/resources/utils.js": [
+    []
+   ],
+   "html/semantics/forms/autofocus/skip-document-with-fragment-expected.txt": [
+    []
+   ],
+   "html/semantics/forms/autofocus/skip-non-focusable-expected.txt": [
+    []
+   ],
+   "html/semantics/forms/autofocus/supported-elements-expected.txt": [
+    []
+   ],
+   "html/semantics/forms/autofocus/update-the-rendering-expected.txt": [
+    []
+   ],
    "html/semantics/forms/constraints/form-validation-validity-valueMissing-expected.txt": [
     []
    ],
@@ -162136,12 +162091,6 @@
    "html/semantics/scripting-1/the-script-element/module/nested-missing-export.js": [
     []
    ],
-   "html/semantics/scripting-1/the-script-element/module/referrer-origin-when-cross-origin.sub-expected.txt": [
-    []
-   ],
-   "html/semantics/scripting-1/the-script-element/module/referrer-same-origin.sub-expected.txt": [
-    []
-   ],
    "html/semantics/scripting-1/the-script-element/module/resources/404-but-js.asis": [
     []
    ],
@@ -163012,9 +162961,6 @@
    "idle-detection/idlharness.https.any-expected.txt": [
     []
    ],
-   "idle-detection/idlharness.https.any.worker-expected.txt": [
-    []
-   ],
    "idle-detection/mock.js": [
     []
    ],
@@ -163072,9 +163018,6 @@
    "images/broken.png": [
     []
    ],
-   "images/canvas-line.png": [
-    []
-   ],
    "images/clear-100x50.png": [
     []
    ],
@@ -163351,9 +163294,15 @@
    "infrastructure/expected-fail/failing-test-expected.txt": [
     []
    ],
+   "infrastructure/expected-fail/uncaught-exception-expected.txt": [
+    []
+   ],
    "infrastructure/metadata/infrastructure/assumptions/allowed-to-play.html.ini": [
     []
    ],
+   "infrastructure/metadata/infrastructure/assumptions/document-fonts-ready.html.ini": [
+    []
+   ],
    "infrastructure/metadata/infrastructure/assumptions/html-elements.html.ini": [
     []
    ],
@@ -163363,6 +163312,9 @@
    "infrastructure/metadata/infrastructure/expected-fail/timeout.html.ini": [
     []
    ],
+   "infrastructure/metadata/infrastructure/expected-fail/uncaught-exception.html.ini": [
+    []
+   ],
    "infrastructure/metadata/infrastructure/reftest/reftest_and_fail.html.ini": [
     []
    ],
@@ -163411,6 +163363,12 @@
    "infrastructure/metadata/infrastructure/server/title.any.js.ini": [
     []
    ],
+   "infrastructure/metadata/infrastructure/server/wpt-server-http.sub.html.ini": [
+    []
+   ],
+   "infrastructure/metadata/infrastructure/server/wpt-server-websocket.sub.html.ini": [
+    []
+   ],
    "infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini": [
     []
    ],
@@ -163984,9 +163942,6 @@
    "keyboard-lock/OWNERS": [
     []
    ],
-   "keyboard-lock/idlharness.https.window-expected.txt": [
-    []
-   ],
    "keyboard-lock/resources/iframe-lock-helper.html": [
     []
    ],
@@ -163996,9 +163951,6 @@
    "keyboard-map/OWNERS": [
     []
    ],
-   "keyboard-map/idlharness.https.window-expected.txt": [
-    []
-   ],
    "keyboard-map/resources/iframe-keyboard-map-helper.html": [
     []
    ],
@@ -164413,6 +164365,9 @@
    "mathml/relations/html5-tree/color-attributes-1-ref.html": [
     []
    ],
+   "mathml/relations/html5-tree/css-inline-style-dynamic.tentative-ref.html": [
+    []
+   ],
    "mathml/relations/html5-tree/dynamic-1-ref.html": [
     []
    ],
@@ -164533,9 +164488,6 @@
    "media-playback-quality/META.yml": [
     []
    ],
-   "media-playback-quality/idlharness.window-expected.txt": [
-    []
-   ],
    "media-source/META.yml": [
     []
    ],
@@ -164872,9 +164824,6 @@
    "mediacapture-image/getPhotoSettings-expected.txt": [
     []
    ],
-   "mediacapture-image/idlharness.window-expected.txt": [
-    []
-   ],
    "mediacapture-image/resources/imagecapture-helpers.js": [
     []
    ],
@@ -164917,9 +164866,6 @@
    "mediacapture-streams/historical.https-expected.txt": [
     []
    ],
-   "mediacapture-streams/idlharness.https.window-expected.txt": [
-    []
-   ],
    "mediacapture-streams/idlharness.window-expected.txt": [
     []
    ],
@@ -165073,6 +165019,9 @@
    "mixed-content/generic/sanity-checker.js": [
     []
    ],
+   "mixed-content/generic/test-case.sub.js": [
+    []
+   ],
    "mixed-content/generic/tools/__init__.py": [
     []
    ],
@@ -165628,12 +165577,6 @@
    "netinfo/OWNERS": [
     []
    ],
-   "netinfo/idlharness.any-expected.txt": [
-    []
-   ],
-   "netinfo/idlharness.any.worker-expected.txt": [
-    []
-   ],
    "network-error-logging/META.yml": [
     []
    ],
@@ -165703,18 +165646,9 @@
    "notifications/event-onshow-expected.txt": [
     []
    ],
-   "notifications/idlharness.https.any-expected.txt": [
-    []
-   ],
    "notifications/idlharness.https.any.serviceworker-expected.txt": [
     []
    ],
-   "notifications/idlharness.https.any.sharedworker-expected.txt": [
-    []
-   ],
-   "notifications/idlharness.https.any.worker-expected.txt": [
-    []
-   ],
    "notifications/instance-expected.txt": [
     []
    ],
@@ -165844,9 +165778,6 @@
    "orientation-event/horizontal-surface-manual.https-expected.txt": [
     []
    ],
-   "orientation-event/idlharness.https.window-expected.txt": [
-    []
-   ],
    "orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https.html.headers": [
     []
    ],
@@ -165898,9 +165829,6 @@
    "page-visibility/OWNERS": [
     []
    ],
-   "page-visibility/idlharness.window-expected.txt": [
-    []
-   ],
    "page-visibility/prerender_call-expected.txt": [
     []
    ],
@@ -165967,9 +165895,6 @@
    "payment-handler/can-make-payment-event.https-expected.txt": [
     []
    ],
-   "payment-handler/idlharness.https.any-expected.txt": [
-    []
-   ],
    "payment-handler/idlharness.https.any.serviceworker-expected.txt": [
     []
    ],
@@ -166105,18 +166030,9 @@
    "permissions/META.yml": [
     []
    ],
-   "permissions/idlharness.any-expected.txt": [
-    []
-   ],
-   "permissions/idlharness.any.worker-expected.txt": [
-    []
-   ],
    "picture-in-picture/META.yml": [
     []
    ],
-   "picture-in-picture/idlharness.window-expected.txt": [
-    []
-   ],
    "picture-in-picture/resources/picture-in-picture-helpers.js": [
     []
    ],
@@ -166129,7 +166045,7 @@
    "pointerevents/README.md": [
     []
    ],
-   "pointerevents/extension/pointerevent_coalesced_events_attributes-manual-expected.txt": [
+   "pointerevents/extension/pointerevent_coalesced_events_attributes-expected.txt": [
     []
    ],
    "pointerevents/idlharness.window-expected.txt": [
@@ -166171,9 +166087,6 @@
    "pointerlock/OWNERS": [
     []
    ],
-   "pointerlock/idlharness.window-expected.txt": [
-    []
-   ],
    "portals/META.yml": [
     []
    ],
@@ -166396,9 +166309,6 @@
    "presentation-api/controlling-ua/common.js": [
     []
    ],
-   "presentation-api/controlling-ua/idlharness.https-expected.txt": [
-    []
-   ],
    "presentation-api/controlling-ua/support/iframe.html": [
     []
    ],
@@ -166471,15 +166381,6 @@
    "push-api/META.yml": [
     []
    ],
-   "push-api/idlharness.https.any-expected.txt": [
-    []
-   ],
-   "push-api/idlharness.https.any.serviceworker-expected.txt": [
-    []
-   ],
-   "push-api/idlharness.https.any.sharedworker-expected.txt": [
-    []
-   ],
    "push-api/idlharness.https.any.worker-expected.txt": [
     []
    ],
@@ -166567,6 +166468,9 @@
    "referrer-policy/generic/sanity-checker.js": [
     []
    ],
+   "referrer-policy/generic/test-case.sub.js": [
+    []
+   ],
    "referrer-policy/generic/tools/__init__.py": [
     []
    ],
@@ -168241,9 +168145,6 @@
    "remote-playback/README.md": [
     []
    ],
-   "remote-playback/idlharness.window-expected.txt": [
-    []
-   ],
    "reporting/META.yml": [
     []
    ],
@@ -168256,9 +168157,6 @@
    "requestidlecallback/OWNERS": [
     []
    ],
-   "requestidlecallback/idlharness.window-expected.txt": [
-    []
-   ],
    "requestidlecallback/resources/post_name_on_load.html": [
     []
    ],
@@ -168292,12 +168190,6 @@
    "resource-timing/SyntheticResponse.py": [
     []
    ],
-   "resource-timing/idlharness.any-expected.txt": [
-    []
-   ],
-   "resource-timing/idlharness.any.worker-expected.txt": [
-    []
-   ],
    "resource-timing/no-entries-for-cross-origin-css-fetched.sub-expected.txt": [
     []
    ],
@@ -168691,9 +168583,6 @@
    "screen-capture/getdisplaymedia.https-expected.txt": [
     []
    ],
-   "screen-capture/idlharness.https.window-expected.txt": [
-    []
-   ],
    "screen-orientation/META.yml": [
     []
    ],
@@ -168703,9 +168592,6 @@
    "screen-orientation/event-before-promise-expected.txt": [
     []
    ],
-   "screen-orientation/idlharness.window-expected.txt": [
-    []
-   ],
    "screen-orientation/lock-basic-expected.txt": [
     []
    ],
@@ -168760,18 +168646,6 @@
    "secure-contexts/basic-shared-worker.https-expected.txt": [
     []
    ],
-   "secure-contexts/idlharness.any-expected.txt": [
-    []
-   ],
-   "secure-contexts/idlharness.any.serviceworker-expected.txt": [
-    []
-   ],
-   "secure-contexts/idlharness.any.sharedworker-expected.txt": [
-    []
-   ],
-   "secure-contexts/idlharness.any.worker-expected.txt": [
-    []
-   ],
    "secure-contexts/postMessage-helper.html": [
     []
    ],
@@ -168829,9 +168703,6 @@
    "selection/extend.js": [
     []
    ],
-   "selection/idlharness.window-expected.txt": [
-    []
-   ],
    "selection/removeRange-expected.txt": [
     []
    ],
@@ -169633,9 +169504,6 @@
    "service-workers/service-worker/interfaces-sw.https-expected.txt": [
     []
    ],
-   "service-workers/service-worker/interfaces-window.https-expected.txt": [
-    []
-   ],
    "service-workers/service-worker/local-url-inherit-controller.https-expected.txt": [
     []
    ],
@@ -170983,12 +170851,6 @@
    "sms/README.md": [
     []
    ],
-   "sms/idlharness.https.any-expected.txt": [
-    []
-   ],
-   "sms/idlharness.https.any.worker-expected.txt": [
-    []
-   ],
    "sms/resources/iframe.html": [
     []
    ],
@@ -171043,12 +170905,6 @@
    "storage/helpers.js": [
     []
    ],
-   "storage/idlharness.https.any-expected.txt": [
-    []
-   ],
-   "storage/idlharness.https.any.worker-expected.txt": [
-    []
-   ],
    "storage/persist-permission-manual.https-expected.txt": [
     []
    ],
@@ -171412,9 +171268,6 @@
    "subresource-integrity/ed25519-style.css.headers": [
     []
    ],
-   "subresource-integrity/idlharness.window-expected.txt": [
-    []
-   ],
    "subresource-integrity/image.png": [
     []
    ],
@@ -171775,6 +171628,12 @@
    "svg/struct/reftests/reference/green-100x100.svg": [
     []
    ],
+   "svg/struct/scripted/autofocus-attribute-expected.txt": [
+    []
+   ],
+   "svg/struct/scripted/blank.svg": [
+    []
+   ],
    "svg/styling/render/transform-box-ref.svg": [
     []
    ],
@@ -175714,9 +175573,6 @@
    "trusted-types/block-string-assignment-to-HTMLElement-generic.tentative-expected.txt": [
     []
    ],
-   "trusted-types/idlharness.window-expected.txt": [
-    []
-   ],
    "trusted-types/support/WorkerGlobalScope-importScripts.https.js": [
     []
    ],
@@ -175729,6 +175585,15 @@
    "trusted-types/support/worker.js": [
     []
    ],
+   "trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html.headers": [
+    []
+   ],
+   "trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html.headers": [
+    []
+   ],
+   "trusted-types/trusted-types-eval-reporting.tentative.https.html.headers": [
+    []
+   ],
    "trusted-types/trusted-types-report-only.tentative.https.html.headers": [
     []
    ],
@@ -176119,9 +175984,6 @@
    "vibration/OWNERS": [
     []
    ],
-   "vibration/idlharness.window-expected.txt": [
-    []
-   ],
    "vibration/silent-ignore-expected.txt": [
     []
    ],
@@ -176143,12 +176005,6 @@
    "wake-lock/OWNERS": [
     []
    ],
-   "wake-lock/idlharness.https.any-expected.txt": [
-    []
-   ],
-   "wake-lock/idlharness.https.any.worker-expected.txt": [
-    []
-   ],
    "wake-lock/resources/page1.html": [
     []
    ],
@@ -176428,6 +176284,18 @@
    "web-animations/timing-model/animations/canceling-an-animation-expected.txt": [
     []
    ],
+   "web-animations/timing-model/animations/pausing-an-animation-expected.txt": [
+    []
+   ],
+   "web-animations/timing-model/animations/reversing-an-animation-expected.txt": [
+    []
+   ],
+   "web-animations/timing-model/animations/setting-the-start-time-of-an-animation-expected.txt": [
+    []
+   ],
+   "web-animations/timing-model/animations/setting-the-target-effect-of-an-animation-expected.txt": [
+    []
+   ],
    "web-animations/timing-model/animations/setting-the-timeline-of-an-animation-expected.txt": [
     []
    ],
@@ -176443,18 +176311,6 @@
    "web-locks/clientids.tentative.https-expected.txt": [
     []
    ],
-   "web-locks/idlharness.tentative.https.any-expected.txt": [
-    []
-   ],
-   "web-locks/idlharness.tentative.https.any.serviceworker-expected.txt": [
-    []
-   ],
-   "web-locks/idlharness.tentative.https.any.sharedworker-expected.txt": [
-    []
-   ],
-   "web-locks/idlharness.tentative.https.any.worker-expected.txt": [
-    []
-   ],
    "web-locks/resources/helpers.js": [
     []
    ],
@@ -176494,9 +176350,6 @@
    "web-share/OWNERS": [
     []
    ],
-   "web-share/idlharness.https.window-expected.txt": [
-    []
-   ],
    "web-share/resources/manual-helper.js": [
     []
    ],
@@ -177601,9 +177454,6 @@
    "webstorage/event_setattribute.js": [
     []
    ],
-   "webstorage/idlharness.window-expected.txt": [
-    []
-   ],
    "webstorage/resources/event_body_handler.html": [
     []
    ],
@@ -179092,9 +178942,6 @@
    "webxr/OWNERS": [
     []
    ],
-   "webxr/idlharness.https.window-expected.txt": [
-    []
-   ],
    "webxr/resources/webxr_check.html": [
     []
    ],
@@ -179869,27 +179716,15 @@
    "worklets/animation-worklet-credentials.https-expected.txt": [
     []
    ],
-   "worklets/animation-worklet-referrer.https-expected.txt": [
-    []
-   ],
    "worklets/audio-worklet-credentials.https-expected.txt": [
     []
    ],
-   "worklets/audio-worklet-referrer.https-expected.txt": [
-    []
-   ],
    "worklets/layout-worklet-credentials.https-expected.txt": [
     []
    ],
-   "worklets/layout-worklet-referrer.https-expected.txt": [
-    []
-   ],
    "worklets/paint-worklet-credentials.https-expected.txt": [
     []
    ],
-   "worklets/paint-worklet-referrer.https-expected.txt": [
-    []
-   ],
    "worklets/resources/addmodule-window.html": [
     []
    ],
@@ -180031,9 +179866,6 @@
    "xhr/folder.txt": [
     []
    ],
-   "xhr/idlharness.any-expected.txt": [
-    []
-   ],
    "xhr/idlharness.any.sharedworker-expected.txt": [
     []
    ],
@@ -180427,9 +180259,6 @@
    "xslt/externalScript.js": [
     []
    ],
-   "xslt/idlharness.tentative.window-expected.txt": [
-    []
-   ],
    "xslt/transformToFragment.tentative.window-expected.txt": [
     []
    ]
@@ -187462,7 +187291,9 @@
    "IndexedDB/idbobjectstore_createIndex15-autoincrement.htm": [
     [
      "IndexedDB/idbobjectstore_createIndex15-autoincrement.htm",
-     {}
+     {
+      "timeout": "long"
+     }
     ]
    ],
    "IndexedDB/idbobjectstore_createIndex2.htm": [
@@ -196010,14 +195841,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196039,14 +195862,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196068,14 +195883,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196097,14 +195904,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196126,14 +195925,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196155,14 +195946,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196184,14 +195967,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196213,14 +195988,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196242,14 +196009,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196271,14 +196030,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196300,14 +196051,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196329,14 +196072,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196358,14 +196093,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196387,14 +196114,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196416,14 +196135,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196445,14 +196156,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196474,14 +196177,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196503,14 +196198,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196532,14 +196219,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196561,14 +196240,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196590,14 +196261,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196619,14 +196282,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196648,14 +196303,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196677,14 +196324,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196706,14 +196345,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196735,14 +196366,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196764,14 +196387,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196793,14 +196408,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196822,14 +196429,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196851,14 +196450,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196880,14 +196471,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196909,14 +196492,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196938,14 +196513,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196967,14 +196534,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -196996,14 +196555,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -197025,14 +196576,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -197054,14 +196597,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -197083,14 +196618,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -197112,14 +196639,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -197141,14 +196660,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -197170,14 +196681,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -197608,14 +197111,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -197637,14 +197132,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -197666,14 +197153,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -197695,14 +197174,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -197724,14 +197195,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -197753,14 +197216,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -197782,14 +197237,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -197811,14 +197258,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -197840,14 +197279,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -197869,14 +197300,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -197898,14 +197321,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -197927,14 +197342,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -197956,14 +197363,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -197985,14 +197384,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198014,14 +197405,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198043,14 +197426,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198112,14 +197487,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198141,14 +197508,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198170,14 +197529,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198199,14 +197550,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198228,14 +197571,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198257,14 +197592,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198286,14 +197613,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198315,14 +197634,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198344,14 +197655,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198373,14 +197676,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198402,14 +197697,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198431,14 +197718,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198460,14 +197739,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198489,14 +197760,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198518,14 +197781,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198547,14 +197802,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198576,14 +197823,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198605,14 +197844,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198634,14 +197865,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198663,14 +197886,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198692,14 +197907,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198721,14 +197928,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198750,14 +197949,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198779,14 +197970,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198808,14 +197991,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198837,14 +198012,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198914,14 +198081,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198943,14 +198102,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -198972,14 +198123,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -199001,14 +198144,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -199030,14 +198165,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -199059,14 +198186,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -199088,14 +198207,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -199149,14 +198260,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -199178,14 +198281,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -199207,14 +198302,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -199236,14 +198323,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -199265,14 +198344,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -199294,14 +198365,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -199323,14 +198386,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -199352,14 +198407,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -199381,14 +198428,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -199410,14 +198449,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -199439,14 +198470,6 @@
       "script_metadata": [
        [
         "script",
-        "/resources/testharness.js"
-       ],
-       [
-        "script",
-        "/resources/testharnessreport.js"
-       ],
-       [
-        "script",
         "/resources/testdriver.js"
        ],
        [
@@ -203446,6 +202469,12 @@
      {}
     ]
    ],
+   "css/CSS2/linebox/video-needs-layout-crash.html": [
+    [
+     "css/CSS2/linebox/video-needs-layout-crash.html",
+     {}
+    ]
+   ],
    "css/CSS2/normal-flow/auto-margins-root-element.html": [
     [
      "css/CSS2/normal-flow/auto-margins-root-element.html",
@@ -204346,6 +203375,12 @@
      {}
     ]
    ],
+   "css/css-animations/keyframes-remove-documentElement-crash.html": [
+    [
+     "css/css-animations/keyframes-remove-documentElement-crash.html",
+     {}
+    ]
+   ],
    "css/css-animations/parsing/animation-delay-computed.html": [
     [
      "css/css-animations/parsing/animation-delay-computed.html",
@@ -207634,6 +206669,48 @@
      {}
     ]
    ],
+   "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-001.html": [
+    [
+     "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-001.html",
+     {}
+    ]
+   ],
+   "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-002.html": [
+    [
+     "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-002.html",
+     {}
+    ]
+   ],
+   "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-003.html": [
+    [
+     "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-003.html",
+     {}
+    ]
+   ],
+   "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-004.html": [
+    [
+     "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-004.html",
+     {}
+    ]
+   ],
+   "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-005.html": [
+    [
+     "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-005.html",
+     {}
+    ]
+   ],
+   "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-006.html": [
+    [
+     "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-006.html",
+     {}
+    ]
+   ],
+   "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-007.html": [
+    [
+     "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-007.html",
+     {}
+    ]
+   ],
    "css/css-grid/alignment/grid-column-axis-alignment-positioned-items-001.html": [
     [
      "css/css-grid/alignment/grid-column-axis-alignment-positioned-items-001.html",
@@ -207796,6 +206873,48 @@
      {}
     ]
    ],
+   "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-001.html": [
+    [
+     "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-001.html",
+     {}
+    ]
+   ],
+   "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-002.html": [
+    [
+     "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-002.html",
+     {}
+    ]
+   ],
+   "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-003.html": [
+    [
+     "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-003.html",
+     {}
+    ]
+   ],
+   "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-004.html": [
+    [
+     "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-004.html",
+     {}
+    ]
+   ],
+   "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-005.html": [
+    [
+     "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-005.html",
+     {}
+    ]
+   ],
+   "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-006.html": [
+    [
+     "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-006.html",
+     {}
+    ]
+   ],
+   "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-007.html": [
+    [
+     "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-007.html",
+     {}
+    ]
+   ],
    "css/css-grid/alignment/grid-row-axis-alignment-positioned-items-001.html": [
     [
      "css/css-grid/alignment/grid-row-axis-alignment-positioned-items-001.html",
@@ -210202,6 +209321,12 @@
      {}
     ]
    ],
+   "css/css-multicol/with-custom-layout-on-same-element-crash.https.html": [
+    [
+     "css/css-multicol/with-custom-layout-on-same-element-crash.https.html",
+     {}
+    ]
+   ],
    "css/css-multicol/zero-column-width-computed-style.html": [
     [
      "css/css-multicol/zero-column-width-computed-style.html",
@@ -214810,6 +213935,12 @@
      {}
     ]
    ],
+   "css/css-text/overflow-wrap/overflow-wrap-break-word-white-space-crash.html": [
+    [
+     "css/css-text/overflow-wrap/overflow-wrap-break-word-white-space-crash.html",
+     {}
+    ]
+   ],
    "css/css-text/overflow-wrap/word-wrap-alias.html": [
     [
      "css/css-text/overflow-wrap/word-wrap-alias.html",
@@ -224478,12 +223609,6 @@
      {}
     ]
    ],
-   "domxpath/interfaces.tentative.html": [
-    [
-     "domxpath/interfaces.tentative.html",
-     {}
-    ]
-   ],
    "domxpath/xml_xpath_runner.html": [
     [
      "domxpath/xml_xpath_runner.html",
@@ -247126,6 +246251,18 @@
      {}
     ]
    ],
+   "html/semantics/forms/autofocus/autofocus-on-stable-document.html": [
+    [
+     "html/semantics/forms/autofocus/autofocus-on-stable-document.html",
+     {}
+    ]
+   ],
+   "html/semantics/forms/autofocus/first-reconnected.html": [
+    [
+     "html/semantics/forms/autofocus/first-reconnected.html",
+     {}
+    ]
+   ],
    "html/semantics/forms/autofocus/first-when-later-but-before.html": [
     [
      "html/semantics/forms/autofocus/first-when-later-but-before.html",
@@ -247144,6 +246281,12 @@
      {}
     ]
    ],
+   "html/semantics/forms/autofocus/focusable-area-in-top-document.html": [
+    [
+     "html/semantics/forms/autofocus/focusable-area-in-top-document.html",
+     {}
+    ]
+   ],
    "html/semantics/forms/autofocus/no-cross-origin-autofocus.html": [
     [
      "html/semantics/forms/autofocus/no-cross-origin-autofocus.html",
@@ -247152,12 +246295,66 @@
      }
     ]
    ],
+   "html/semantics/forms/autofocus/no-sandboxed-automatic-features.html": [
+    [
+     "html/semantics/forms/autofocus/no-sandboxed-automatic-features.html",
+     {}
+    ]
+   ],
    "html/semantics/forms/autofocus/not-on-first-task.html": [
     [
      "html/semantics/forms/autofocus/not-on-first-task.html",
      {}
     ]
    ],
+   "html/semantics/forms/autofocus/queue-non-focusable.html": [
+    [
+     "html/semantics/forms/autofocus/queue-non-focusable.html",
+     {}
+    ]
+   ],
+   "html/semantics/forms/autofocus/skip-another-top-level-browsing-context.html": [
+    [
+     "html/semantics/forms/autofocus/skip-another-top-level-browsing-context.html",
+     {}
+    ]
+   ],
+   "html/semantics/forms/autofocus/skip-document-with-fragment.html": [
+    [
+     "html/semantics/forms/autofocus/skip-document-with-fragment.html",
+     {}
+    ]
+   ],
+   "html/semantics/forms/autofocus/skip-non-focusable.html": [
+    [
+     "html/semantics/forms/autofocus/skip-non-focusable.html",
+     {}
+    ]
+   ],
+   "html/semantics/forms/autofocus/skip-not-fully-active.html": [
+    [
+     "html/semantics/forms/autofocus/skip-not-fully-active.html",
+     {}
+    ]
+   ],
+   "html/semantics/forms/autofocus/spin-by-blocking-style-sheet.html": [
+    [
+     "html/semantics/forms/autofocus/spin-by-blocking-style-sheet.html",
+     {}
+    ]
+   ],
+   "html/semantics/forms/autofocus/supported-elements.html": [
+    [
+     "html/semantics/forms/autofocus/supported-elements.html",
+     {}
+    ]
+   ],
+   "html/semantics/forms/autofocus/update-the-rendering.html": [
+    [
+     "html/semantics/forms/autofocus/update-the-rendering.html",
+     {}
+    ]
+   ],
    "html/semantics/forms/constraints/form-validation-checkValidity.html": [
     [
      "html/semantics/forms/constraints/form-validation-checkValidity.html",
@@ -254132,7 +253329,9 @@
    "import-maps/bare.sub.tentative.html": [
     [
      "import-maps/bare.sub.tentative.html",
-     {}
+     {
+      "timeout": "long"
+     }
     ]
    ],
    "import-maps/builtin-empty.tentative.html": [
@@ -254387,6 +253586,12 @@
      {}
     ]
    ],
+   "infrastructure/expected-fail/uncaught-exception.html": [
+    [
+     "infrastructure/expected-fail/uncaught-exception.html",
+     {}
+    ]
+   ],
    "infrastructure/server/context.any.js": [
     [
      "infrastructure/server/context.any.html",
@@ -271362,6 +270567,14 @@
      }
     ]
    ],
+   "pointerevents/extension/pointerevent_coalesced_events_attributes.html": [
+    [
+     "pointerevents/extension/pointerevent_coalesced_events_attributes.html",
+     {
+      "testdriver": true
+     }
+    ]
+   ],
    "pointerevents/extension/pointerevent_constructor.html": [
     [
      "pointerevents/extension/pointerevent_constructor.html",
@@ -283280,6 +282493,52 @@
      }
     ]
    ],
+   "screen_enumeration/requestDisplays.tentative.https.any.js": [
+    [
+     "screen_enumeration/requestDisplays.tentative.https.any.html",
+     {
+      "script_metadata": [
+       [
+        "global",
+        "window,dedicatedworker,sharedworker,serviceworker"
+       ]
+      ]
+     }
+    ],
+    [
+     "screen_enumeration/requestDisplays.tentative.https.any.serviceworker.html",
+     {
+      "script_metadata": [
+       [
+        "global",
+        "window,dedicatedworker,sharedworker,serviceworker"
+       ]
+      ]
+     }
+    ],
+    [
+     "screen_enumeration/requestDisplays.tentative.https.any.sharedworker.html",
+     {
+      "script_metadata": [
+       [
+        "global",
+        "window,dedicatedworker,sharedworker,serviceworker"
+       ]
+      ]
+     }
+    ],
+    [
+     "screen_enumeration/requestDisplays.tentative.https.any.worker.html",
+     {
+      "script_metadata": [
+       [
+        "global",
+        "window,dedicatedworker,sharedworker,serviceworker"
+       ]
+      ]
+     }
+    ]
+   ],
    "scroll-animations/constructor-no-document.html": [
     [
      "scroll-animations/constructor-no-document.html",
@@ -293967,6 +293226,12 @@
      {}
     ]
    ],
+   "svg/struct/scripted/autofocus-attribute.svg": [
+    [
+     "svg/struct/scripted/autofocus-attribute.svg",
+     {}
+    ]
+   ],
    "svg/styling/required-properties.svg": [
     [
      "svg/styling/required-properties.svg",
@@ -294700,6 +293965,24 @@
      }
     ]
    ],
+   "trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html": [
+    [
+     "trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html",
+     {}
+    ]
+   ],
+   "trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html": [
+    [
+     "trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html",
+     {}
+    ]
+   ],
+   "trusted-types/trusted-types-eval-reporting.tentative.https.html": [
+    [
+     "trusted-types/trusted-types-eval-reporting.tentative.https.html",
+     {}
+    ]
+   ],
    "trusted-types/trusted-types-report-only.tentative.https.html": [
     [
      "trusted-types/trusted-types-report-only.tentative.https.html",
@@ -320072,7 +319355,7 @@
    "support"
   ],
   "2dcontext/building-paths/canvas_complexshapes_arcto_001-ref.htm": [
-   "6fc212ea482063bfeb88cff14d9829fdd2684669",
+   "31ddfcafd9d1e4ba0c29b4297d7f2050f5cc8435",
    "support"
   ],
   "2dcontext/building-paths/canvas_complexshapes_arcto_001.htm": [
@@ -320080,7 +319363,7 @@
    "reftest"
   ],
   "2dcontext/building-paths/canvas_complexshapes_beziercurveto_001-ref.htm": [
-   "935e84c5c85229fe95582575124feb8b87a20664",
+   "6be08c0b3c8378cf73e2d115f44b5a46529ddb27",
    "support"
   ],
   "2dcontext/building-paths/canvas_complexshapes_beziercurveto_001.htm": [
@@ -324471,18 +323754,10 @@
    "e5e6a2361f0d0716a27e5e7c5bf63a5527ea5ca8",
    "support"
   ],
-  "BackgroundSync/idlharness.https.any-expected.txt": [
-   "9882a5f89efa8844bdcf291e8aa503ef06c25917",
-   "support"
-  ],
   "BackgroundSync/idlharness.https.any.js": [
    "989139e99041d6ec8dd64181de7a994e4b88112c",
    "testharness"
   ],
-  "BackgroundSync/idlharness.https.any.worker-expected.txt": [
-   "9882a5f89efa8844bdcf291e8aa503ef06c25917",
-   "support"
-  ],
   "BackgroundSync/periodicsync.https.window.js": [
    "4c8d2eb5f4241e5ecdf6efd85a24056bf575d8b0",
    "testharness"
@@ -324623,18 +323898,10 @@
    "4f841f1763945946a4e2445a85a23b5d4326c386",
    "testharness"
   ],
-  "FileAPI/idlharness-expected.txt": [
-   "4684710997d0a5b991870028aceadb74238067d4",
-   "support"
-  ],
   "FileAPI/idlharness.html": [
    "db6592e6220d02b608f504f8f2a654779c8b0241",
    "testharness"
   ],
-  "FileAPI/idlharness.worker-expected.txt": [
-   "8349f0565b75eaf012de6280bae1173b276496bf",
-   "support"
-  ],
   "FileAPI/idlharness.worker.js": [
    "5bf82e0b890327d0f389b5cbe95b39eacadb42dd",
    "testharness"
@@ -325827,12 +325094,8 @@
    "a0ec288cb3808d7e32e3100bb9c537d30895bbd5",
    "testharness"
   ],
-  "IndexedDB/idbobjectstore_createIndex15-autoincrement-expected.txt": [
-   "0b3617772ed1c524ad180352ce41aa8ad6c5511e",
-   "support"
-  ],
   "IndexedDB/idbobjectstore_createIndex15-autoincrement.htm": [
-   "87ea39ce3d240c38359c17b324b11a08441368ee",
+   "c66b81548adb1ef287b2ba075e66d6dbb8e6360b",
    "testharness"
   ],
   "IndexedDB/idbobjectstore_createIndex2.htm": [
@@ -326075,10 +325338,6 @@
    "359f6fb69119b5c6605047f0e0c38ef6fe847009",
    "support"
   ],
-  "IndexedDB/idlharness.any-expected.txt": [
-   "c717e8bd63fd15f780df7cf75837f935420aa970",
-   "support"
-  ],
   "IndexedDB/idlharness.any.js": [
    "efb84661e8044d146ab0704f18a6a3805ff3c803",
    "testharness"
@@ -326087,14 +325346,6 @@
    "c717e8bd63fd15f780df7cf75837f935420aa970",
    "support"
   ],
-  "IndexedDB/idlharness.any.sharedworker-expected.txt": [
-   "c717e8bd63fd15f780df7cf75837f935420aa970",
-   "support"
-  ],
-  "IndexedDB/idlharness.any.worker-expected.txt": [
-   "c717e8bd63fd15f780df7cf75837f935420aa970",
-   "support"
-  ],
   "IndexedDB/index_sort_order.htm": [
    "6249c4204897ffd9f292908ca50dae6f8655c02e",
    "testharness"
@@ -326743,10 +325994,6 @@
    "dd970ebfa60cdc96c64da1c9d7f326bc1bcaad01",
    "testharness"
   ],
-  "WebCryptoAPI/idlharness.https.any-expected.txt": [
-   "7f6b75abaff55c7bbcebb5892874a83a74718dfa",
-   "support"
-  ],
   "WebCryptoAPI/idlharness.https.any.js": [
    "b0ccebd9f48999284ec36dbfb11a35314efa3135",
    "testharness"
@@ -327348,7 +326595,7 @@
    "testharness"
   ],
   "animation-worklet/idlharness.any-expected.txt": [
-   "d31746b20fe8c012b008f0500ddd9808015ca180",
+   "f21be8b3774defb29745b68ef3890856a0cf277e",
    "support"
   ],
   "animation-worklet/idlharness.any.js": [
@@ -327356,7 +326603,7 @@
    "testharness"
   ],
   "animation-worklet/idlharness.any.worker-expected.txt": [
-   "d31746b20fe8c012b008f0500ddd9808015ca180",
+   "910bda1d8173359a021ea0fbec68d59cb0324162",
    "support"
   ],
   "animation-worklet/inactive-timeline.https.html": [
@@ -327555,10 +326802,6 @@
    "0b9c714df2a45545212397d7e391655f3e1091cf",
    "support"
   ],
-  "appmanifest/idlharness.window-expected.txt": [
-   "d2186c025f7acad0057354533836f65d68e0171f",
-   "support"
-  ],
   "appmanifest/idlharness.window.js": [
    "55e8b9871e794c944f329e0e9df6ec140124c660",
    "testharness"
@@ -327571,10 +326814,6 @@
    "ebf84dd43fe17d345f7db7cd736470d403ff6c99",
    "support"
   ],
-  "audio-output/idlharness.https.window-expected.txt": [
-   "e4b69030cf37936290f54af068a7f90dcf16e8a3",
-   "support"
-  ],
   "audio-output/idlharness.https.window.js": [
    "c13b167296d8059b96bfa4704714051e341ee987",
    "testharness"
@@ -327627,10 +326866,6 @@
    "cb678e692d8db0c17ecfd795998babffeb2a2d87",
    "testharness"
   ],
-  "background-fetch/idlharness.https.any-expected.txt": [
-   "a2d9cba8d2926d2b344dc690f304e6ca5e6f7b72",
-   "support"
-  ],
   "background-fetch/idlharness.https.any.js": [
    "f9744c8f944fcefe5a6a21e9a7644cf88644c173",
    "testharness"
@@ -327639,10 +326874,6 @@
    "a2d9cba8d2926d2b344dc690f304e6ca5e6f7b72",
    "support"
   ],
-  "background-fetch/idlharness.https.any.sharedworker-expected.txt": [
-   "a2d9cba8d2926d2b344dc690f304e6ca5e6f7b72",
-   "support"
-  ],
   "background-fetch/idlharness.https.any.worker-expected.txt": [
    "a2d9cba8d2926d2b344dc690f304e6ca5e6f7b72",
    "support"
@@ -327731,10 +326962,6 @@
    "9d2c9fd1d41dc299a59c4e374c954302db1ac502",
    "testharness"
   ],
-  "battery-status/battery-interface-idlharness.https.window-expected.txt": [
-   "103a302c10a41119d7449b8387486adbcd68a212",
-   "support"
-  ],
   "battery-status/battery-interface-idlharness.https.window.js": [
    "b33c82e426c7fe35c6c54a649d12685d3419d9e7",
    "testharness"
@@ -327895,18 +327122,10 @@
    "ebd67df1d767636a5044cec105ee5d3b1a3e606a",
    "support"
   ],
-  "beacon/idlharness.any-expected.txt": [
-   "23bf13b5c3cac13adc17d66eeadb98b35218132d",
-   "support"
-  ],
   "beacon/idlharness.any.js": [
    "bf267ab8bdce52ce32df4ea3a53b30b6d35c8000",
    "testharness"
   ],
-  "beacon/idlharness.any.worker-expected.txt": [
-   "23bf13b5c3cac13adc17d66eeadb98b35218132d",
-   "support"
-  ],
   "beacon/resources/beacon.py": [
    "5f2553d3c4d506f7e292cfb73d81930a83a12d76",
    "support"
@@ -327932,167 +327151,167 @@
    "support"
   ],
   "bluetooth/adapter/adapter-absent-getAvailability.https.window.js": [
-   "cec09c38b138653297ee1df6ab0811a0575978bc",
+   "a9f540ecd34331271e27b99f74e155f40b41f6ec",
    "testharness"
   ],
   "bluetooth/adapter/adapter-added-getAvailability.https.window.js": [
-   "d5e9d1f2b6ffbb009b03d0cde8155144aeee630b",
+   "30c47201f072206e548cc5ea3417c91383fffcc7",
    "testharness"
   ],
   "bluetooth/adapter/adapter-powered-off-getAvailability.https.window.js": [
-   "8fe9265a46ed22a9bb0e0480f045135b323565f0",
+   "b760d4bc2728212a025b7d8fd1a34c002e62840b",
    "testharness"
   ],
   "bluetooth/adapter/adapter-powered-on-getAvailability.https.window.js": [
-   "8b9256a4c35680722ad2ee00784de6649b703611",
+   "f98a88eea9e1d2e0adb21d616802931af09c2481",
    "testharness"
   ],
   "bluetooth/adapter/adapter-powered-on-off-on-getAvailability.https.window.js": [
-   "b8b49121fc0170eb9dc95614b5c3b19ef16bd02b",
+   "ac664a8981267007ada522bfd610209995dbfe16",
    "testharness"
   ],
   "bluetooth/adapter/adapter-removed-getAvailability.https.window.js": [
-   "cc2c33d1d4c2bf2cdad0cd0874a739b462ff90ec",
+   "00425aa56f25fb208503c46cb12a2f422ee141f5",
    "testharness"
   ],
   "bluetooth/adapter/cross-origin-iframe-getAvailability.sub.https.window.js": [
-   "bf5e4226e08d44e521b533f020c0deaa95851983",
+   "ce633c63f981921cbb9ea2ab5f2f71a839cb8acb",
    "testharness"
   ],
   "bluetooth/characteristic/characteristicProperties.https.window.js": [
-   "abe9f79ce26ed7cc9f5c17cfd2f0e1e70d1d3657",
+   "5239accab97942ea1ff8e1cccd3bc383977e915d",
    "testharness"
   ],
   "bluetooth/characteristic/getDescriptor/gen-characteristic-is-removed.https.window.js": [
-   "97256a4533007d9c52ec395ba5a811c212aaf48c",
+   "eb91e972c4e537f6eea30c844358ef4a30d911eb",
    "testharness"
   ],
   "bluetooth/characteristic/getDescriptor/gen-descriptor-get-same-object.https.window.js": [
-   "8847efab3c1565150110155f3fcbf11c54003846",
+   "4cff64bbdad180314b76784ea4f0720ba6df83fd",
    "testharness"
   ],
   "bluetooth/characteristic/getDescriptor/gen-service-is-removed.https.window.js": [
-   "b9dc92482ab6f4f564c322c2fa9b19198e576e33",
+   "f5d1761994abc3800dbc6e62ee4357fbceeb26f5",
    "testharness"
   ],
   "bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed-with-uuid.https.window.js": [
-   "25bde7cecc5fbfa7d83bf5fd5c29f551598a2d43",
+   "7405a8ee6e3a5fc4a78061b30f98608b2946f545",
    "testharness"
   ],
   "bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed.https.window.js": [
-   "c3ff9f6a05c625da3ffc4ab5bdab3a6bab82f524",
+   "470f7043be314bf6e7c0678806c948cb0591e2ed",
    "testharness"
   ],
   "bluetooth/characteristic/getDescriptors/gen-descriptor-get-same-object.https.window.js": [
-   "c997d7afda2c1faef8fe2e33ac430286334edd4d",
+   "1dc58aea155206df60f567bbba3560887d6f24a0",
    "testharness"
   ],
   "bluetooth/characteristic/getDescriptors/gen-service-is-removed-with-uuid.https.window.js": [
-   "03bb51239dccd4ca479f8159052086c2c0c1c285",
+   "5ee7e0d24943bc939ee2a2b9bbf7940d212d1218",
    "testharness"
   ],
   "bluetooth/characteristic/getDescriptors/gen-service-is-removed.https.window.js": [
-   "762f9cc99554aa206f7cf4c767c2db5dbdb0634c",
+   "24a2087e938fed32a63c9b0fed8ca20b437be6b4",
    "testharness"
   ],
   "bluetooth/characteristic/notifications/characteristic-is-removed.https.window.js": [
-   "6b5d3e22a121e64c75e217e73631c7cd6ad86865",
+   "2ab165d9044520d62f4d4fb334b4f148c865ecab",
    "testharness"
   ],
   "bluetooth/characteristic/notifications/service-is-removed.https.window.js": [
-   "29bc671c5d4c9e27e4fc59b4dee520a494770cd8",
+   "d2456934d83dc75720dff84429932a157094cf56",
    "testharness"
   ],
   "bluetooth/characteristic/readValue/add-multiple-event-listeners.https.window.js": [
-   "7e6e4159bb11234b01162b3daf080143c0055252",
+   "13709ea941ed5ca54f6b2e38d4017afa3c9995c2",
    "testharness"
   ],
   "bluetooth/characteristic/readValue/characteristic-is-removed.https.window.js": [
-   "07678e6e037b211ee9560a6c1af02465e7cc4e11",
+   "269f2cb4a1f010a972a156090763ebb152fcb5c2",
    "testharness"
   ],
   "bluetooth/characteristic/readValue/event-is-fired.https.window.js": [
-   "eee34d0612d3611121d219c0b4098937df507ece",
+   "03b8f2b4cee8ec0c77630d15dbb7df711921f6c4",
    "testharness"
   ],
   "bluetooth/characteristic/readValue/gen-characteristic-is-removed.https.window.js": [
-   "a2de3c39e20626b617926618da10acfb5f81a83d",
+   "26efe8b306b4a99e7ac4a34f153c1b909f029cf7",
    "testharness"
   ],
   "bluetooth/characteristic/readValue/read-succeeds.https.window.js": [
-   "aeece7d11f480e5cf7122ef97bc9eb098a7da883",
+   "82be128f31242ccc55a761c09a992a1132064faa",
    "testharness"
   ],
   "bluetooth/characteristic/readValue/read-updates-value.https.window.js": [
-   "45da8af25020374c8b876984017fbefc95f4b8f1",
+   "34da455ddff4a91ee16f969b096f7821fb2d00bc",
    "testharness"
   ],
   "bluetooth/characteristic/readValue/service-is-removed.https.window.js": [
-   "07e9701d3c321dfdf166195ec4eab6c2f354f216",
+   "20dd4ba1c05e5850f16234d693c32dab0350bd4e",
    "testharness"
   ],
   "bluetooth/characteristic/service-same-from-2-characteristics.https.window.js": [
-   "e3bc5d0e103d66368db4b294e3e09d8a9018b792",
+   "b34b3b9216abec77727dcda84a83e07f3eedb210",
    "testharness"
   ],
   "bluetooth/characteristic/service-same-object.https.window.js": [
-   "6b1f543ae5e9944d4792a01209417016f4566a2e",
+   "b58902ae51957b91ee63eb4f53acd1c0e353f7ef",
    "testharness"
   ],
   "bluetooth/characteristic/startNotifications/gen-characteristic-is-removed.https.window.js": [
-   "76b2d42a481f1f73ba869e2350627c080531bf7e",
+   "af27f933d8f10207caf1574befa6d9f64767fc45",
    "testharness"
   ],
   "bluetooth/characteristic/writeValue/buffer-is-detached.https.window.js": [
-   "35347e3bcf8fdc3c895e6daea5d9b7247cbcfcac",
+   "cefbb6ee8c349d80d0dd8bc20fe370a771d02916",
    "testharness"
   ],
   "bluetooth/characteristic/writeValue/characteristic-is-removed.https.window.js": [
-   "33a963bed0950485a06685df8a601025bd4c419c",
+   "c0f5a3e6509c91efb5dae8cb9a3b07875ab6051b",
    "testharness"
   ],
   "bluetooth/characteristic/writeValue/gen-characteristic-is-removed.https.window.js": [
-   "00c50894e5bb1e444ecc02c441d6bd6343ccdd58",
+   "d5ac10fc611443cdde02761448e6f479390bf790",
    "testharness"
   ],
   "bluetooth/characteristic/writeValue/service-is-removed.https.window.js": [
-   "a9f812c137f236ac088fbf42886c44e92eabafc4",
+   "e7a2837c389a1076b548dc5256fe78eaa1059162",
    "testharness"
   ],
   "bluetooth/characteristic/writeValue/write-succeeds.https.window.js": [
-   "1472c619a2dbdf5c8536e240ff024349a6e938ea",
+   "cdda9cec345b81297966b74ab2152f02010ec6b7",
    "testharness"
   ],
   "bluetooth/descriptor/readValue/gen-service-is-removed.https.window.js": [
-   "3b6c78a97c586fd02da2ccd53c81291b79512f8c",
+   "aa95687094b50340503d8cc5bcdeaec7e5bf3bdf",
    "testharness"
   ],
   "bluetooth/descriptor/readValue/read-succeeds.https.window.js": [
-   "5f3c5f8f084c11639ea86f7332d03f56e7c72b4e",
+   "fc1facaf58e37550c4fb9a4d5b66f2180072cbe8",
    "testharness"
   ],
   "bluetooth/descriptor/writeValue/buffer-is-detached.https.window.js": [
-   "23ea2329a64f4da8a4cc5cd4a9de7ed0a7b6047e",
+   "2ff277ec9496e73961c9f8efa903f465d2fa776b",
    "testharness"
   ],
   "bluetooth/descriptor/writeValue/gen-service-is-removed.https.window.js": [
-   "ca75ebaba8867c0ede9ed743537ace2b702f095d",
+   "a486819b55a114e9e4bbde31b709cf00c7aae1c5",
    "testharness"
   ],
   "bluetooth/device/gattserverdisconnected-event/disconnected.https.window.js": [
-   "245e43d31504a555af42971b87978a4f48c949a2",
+   "dab54d5da2961eae72d6bd05eb15023dd8a2a46a",
    "testharness"
   ],
   "bluetooth/device/gattserverdisconnected-event/disconnected_gc.https.window.js": [
-   "69e30443ee6f505fbd2a4623457251ac564bcb4b",
+   "a15cc943f4e1180ea092e24db9112658b40c5b99",
    "testharness"
   ],
   "bluetooth/device/gattserverdisconnected-event/one-event-per-disconnection.https.window.js": [
-   "317eddee9ba86d6b1357ce6a845b2b99c78d15da",
+   "f5e45f99755dbd05f24cbca9584d67e5e6654c32",
    "testharness"
   ],
   "bluetooth/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.window.js": [
-   "93a46eeb934f0ebef9ff378ed7f9e59379d9d094",
+   "8f264c7b02524a84ac67e6fbe343045ae8eb07a6",
    "testharness"
   ],
   "bluetooth/generate.py": [
@@ -328124,7 +327343,7 @@
    "testharness"
   ],
   "bluetooth/idl/idlharness.tentative.https.window-expected.txt": [
-   "23bf13b5c3cac13adc17d66eeadb98b35218132d",
+   "f1827c946b4909af8e25a3b90f2b6fcb8b21874f",
    "support"
   ],
   "bluetooth/idl/idlharness.tentative.https.window.js": [
@@ -328292,7 +327511,7 @@
    "support"
   ],
   "bluetooth/script-tests/base_test_js.template": [
-   "56971d2c6c98faaf479f3a89fb0757e85bf9b42c",
+   "c0fa4aed552db72575b8344c7e495680eac84916",
    "support"
   ],
   "bluetooth/script-tests/characteristic/characteristic-is-removed.js": [
@@ -328436,67 +327655,67 @@
    "testharness"
   ],
   "bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.window.js": [
-   "2d94b41e0207689824be914a21ef7fab4f866d10",
+   "1eb62d3a3118e9c63decb6d82aeb0aa906e396f3",
    "testharness"
   ],
   "bluetooth/server/getPrimaryService/gen-disconnect-called-during-error.https.window.js": [
-   "0d6e8a7a179070c7d4a023ad550d8b25f3a3bcdf",
+   "c7c80244193016db84dbbf8e9f3441e2a4937b96",
    "testharness"
   ],
   "bluetooth/server/getPrimaryService/gen-disconnect-called-during-success.https.window.js": [
-   "18af59d7f803a5a7adbcf1658a4449302b5d8291",
+   "5655d8ee41cd1765f105772f42dcacfcf0a27e6f",
    "testharness"
   ],
   "bluetooth/server/getPrimaryService/gen-disconnect-invalidates-objects.https.window.js": [
-   "5cfe893f5d81ca2a6c07ec02e4c29ab96b594175",
+   "c95f8b921a74eeedf06f8c987bd233ca97c060fb",
    "testharness"
   ],
   "bluetooth/server/getPrimaryService/gen-disconnected-device.https.window.js": [
-   "622f2cf3212cf66f11545e157e0fa389c7f5f3d8",
+   "e610b715b3aae554bec472cc5fcc74d3fc4fb7ad",
    "testharness"
   ],
   "bluetooth/server/getPrimaryService/gen-discovery-complete-no-permission-absent-service.https.window.js": [
-   "5afb0262658249caee332d8988f62a5da8829865",
+   "ee3cf97f4db9f68cffac91c55bf282ab54b8906b",
    "testharness"
   ],
   "bluetooth/server/getPrimaryService/gen-discovery-complete-service-not-found.https.window.js": [
-   "86fa5e9b011b8c4c08ffad135a5e893c138c4e4b",
+   "5bf720cd48eb0eeec5f89488384f078ce37c9cd6",
    "testharness"
   ],
   "bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-error.https.window.js": [
-   "2c35c1b7556297c4d595f451662ed6df7d09df77",
+   "4c3111720c2c69d8e5e867bf4a3288ea1aba8115",
    "testharness"
   ],
   "bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-success.https.window.js": [
-   "cca8c2c5d2f2bf0c5f758b4299d54ca2a1f76e4d",
+   "fe7d749063d8d75da9c389fffbe9dc68af9a30a2",
    "testharness"
   ],
   "bluetooth/server/getPrimaryService/gen-get-different-service-after-reconnection.https.window.js": [
-   "a0f073d8a314ea9574a9187a6b97c39fd7c1fdad",
+   "301658c73bb8e4db78433c4072b83aa5f99d629a",
    "testharness"
   ],
   "bluetooth/server/getPrimaryService/gen-get-same-object.https.window.js": [
-   "3deb387406e4fd197890422d77c1b0e288b9ad3a",
+   "c46a1a52c031373b16718d3687a013109f45da62",
    "testharness"
   ],
   "bluetooth/server/getPrimaryService/gen-invalid-service-name.https.window.js": [
-   "d59e202d71cc3d4b8876ebbdef188170fdaa339f",
+   "704ab8bb2dac944d1a3e2a33b57c225edc994225",
    "testharness"
   ],
   "bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.window.js": [
-   "89ca46884478194b5e0b447bbe51810ea8217cd7",
+   "8daab29eaf94bbae9e28a921a5a650f858ccdd7a",
    "testharness"
   ],
   "bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.window.js": [
-   "fec0055dcdb7ab1c11b44388d2ea4b2972e19910",
+   "d55dee753cf8b000089f1d8a5a21f383587427cd",
    "testharness"
   ],
   "bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.window.js": [
-   "a0161a0446b37b00ba351eaff67ba5f6c4a53cda",
+   "d357a214dfd68723571c014d29f8f2e65773a245",
    "testharness"
   ],
   "bluetooth/server/getPrimaryService/gen-service-not-found.https.window.js": [
-   "60fb4f2c529443eb06e28118cf506d5fff12bfd8",
+   "32350e779dce890573bcf519ac74023818296f3e",
    "testharness"
   ],
   "bluetooth/server/getPrimaryService/service-found.https.html": [
@@ -328520,107 +327739,107 @@
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.window.js": [
-   "86a346d14839efc6a5baa913c430328517780d67",
+   "ad446499cbabf6efa98a8d4fb65aeebc1dc22da5",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.window.js": [
-   "97e9f77d12e668021ca6303eb669666ec16b787d",
+   "485dbb30421e31108e256cd2f7a57ad2a27bfab5",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error-with-uuid.https.window.js": [
-   "37394075d80cf113bec492d02c48e7e2ba394651",
+   "230325a8c76169a545010fb784999599e77463ad",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error.https.window.js": [
-   "9c7aac67a4a3e1fba531a817973daf211e5e9fab",
+   "dce13c5d0065b26c082d042cb92c0cc2ac01f63e",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success-with-uuid.https.window.js": [
-   "bffcea4e9fb3b1e6367bbc353f36dd4ccd7d3855",
+   "8e2e32ba4fddc843378c901e0ce933c54105a539",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success.https.window.js": [
-   "162a61f3eb5f15a1b152eb8d6d4d3b0463beea3c",
+   "78dcffdcbb1861df8cfd7dc6108b40bbb9f57d1e",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.window.js": [
-   "05dce42424d02d7dd6a47d867189be3fdd827ea3",
+   "d9f61674671bf0c31776af26c6c477578e6760b6",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.window.js": [
-   "e17162a71987c291060199dd156e64033d6829b7",
+   "b1c9688cc14e68069eac95e8a9b1cc272cf1f527",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.window.js": [
-   "3bfa60d8ccb3e6e5403b06d0d1d1fa82a52fc284",
+   "8d64dafb760e2d04d4d9dd3c2f9db7e167ffe718",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-disconnected-device.https.window.js": [
-   "7072b3efb1f7aeeb8d07eb2c5ff01f045859dad4",
+   "9c411120a0446017e85ce151b96f31bdabb9b8f9",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-discovery-complete-no-permission-absent-service-with-uuid.https.window.js": [
-   "589ebe386444f2f50820034a737c8a30cdbe5060",
+   "130657d228f4c7cada6d27a2ad8ff7fee403d9e0",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-discovery-complete-service-not-found-with-uuid.https.window.js": [
-   "15b8b978040129b6bc416d838b317ca97fc1219b",
+   "3817a1a5a38723ce08e1650155c5fcd81ff54bdb",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error-with-uuid.https.window.js": [
-   "17495d24ebadcd9752b06201a7035f45cfcb3635",
+   "c986835ce31dcf5049e54bf553c3b12dac7151d5",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error.https.window.js": [
-   "741cd2171f894c99bdfa9fa506a62e1bd2488218",
+   "bd438db09e350a0d7ee330a6c3eaa54f1fea02ba",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success-with-uuid.https.window.js": [
-   "1ee4f21ccba63ef5806840934248c7a6d6def35f",
+   "3b441cedeff36c6b854bc4ea4e7952eac6284d1a",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success.https.window.js": [
-   "285b774c4e70557f8f14b05c4d9de2b8276a945f",
+   "1b3302a1ba6ffe049e44228280c652bf74310a50",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection-with-uuid.https.window.js": [
-   "eb20e6f4b2f8fc2193b2f566eb8b7952747c495c",
+   "378ade0c90b5d7c49c31bb58efaa835b4c502d95",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection.https.window.js": [
-   "14fc656c70dd4352aa4d2ab53e98015dd2704978",
+   "bdef5aa2f20ae4971784a566135ecc6b71fc03ca",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-get-same-object-with-uuid.https.window.js": [
-   "f3fc4906b44eec68feebcd289320a54fba682246",
+   "aca34e58ff06dd92d15b0bb1d09f81aa8c77402c",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-get-same-object.https.window.js": [
-   "c7c488a18b9413e488680b431361981beacb5c1a",
+   "0ea805e339d4dff1dea445e99cc8d661a7f8404a",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.window.js": [
-   "025f1ccdf7c832343d6631e7a85452f7390c5c16",
+   "eeb6dd4dcf867345ff4cfad28b19a9ffa3fb509b",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.window.js": [
-   "6f1bb251723a6fda193fe3f0428d730da416506c",
+   "c755dd7129df5ac3825e07d7c7b3d11e2a227f12",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.window.js": [
-   "4bbddeae56ef7fa18656133191abc0e6b2bce1ca",
+   "03b7f2329c8d90fb326bf851c5275f42d2dc2007",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.window.js": [
-   "40b8b576ff4fc57b53a544a5c863985630bbe5ea",
+   "e50c6d56128489fdde8475979ff8868f41d365a1",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.window.js": [
-   "6f737ecf889d9f96c0e28851c2eb9f5782522fd9",
+   "c703d0a936394d951a84d03ace7bc0b4d80abc7c",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/gen-service-not-found-with-uuid.https.window.js": [
-   "33946d281bd8219f4dd07a7a2166f626187c10cf",
+   "9dc1877f9f2753862d106c4dad9830fddd6898f4",
    "testharness"
   ],
   "bluetooth/server/getPrimaryServices/services-found-with-uuid.https.html": [
@@ -328648,31 +327867,31 @@
    "testharness"
   ],
   "bluetooth/service/getCharacteristic/gen-blocklisted-characteristic.https.window.js": [
-   "04176f1ecdadcdfa6214468973d9d52c2f074c90",
+   "72b9bac63a437b7367f10e772f4f598d491b2823",
    "testharness"
   ],
   "bluetooth/service/getCharacteristic/gen-characteristic-not-found.https.window.js": [
-   "cfec509c49205dd407cfe5b114800d1c65f87c8a",
+   "a8b2ef892c768476675c79f70fb3d546d019c4b1",
    "testharness"
   ],
   "bluetooth/service/getCharacteristic/gen-garbage-collection-ran-during-error.https.window.js": [
-   "9543a5e56337ad970a2ab29ef7d2cd2b3ad5c584",
+   "7457161faa09235acfdc609df7e8e4d39fa4ebf7",
    "testharness"
   ],
   "bluetooth/service/getCharacteristic/gen-get-same-object.https.window.js": [
-   "73691befa52f79c6739f2e1763569afce4a61c46",
+   "54ab061deb9eb522dbed1f3d95d1ad485a26ea04",
    "testharness"
   ],
   "bluetooth/service/getCharacteristic/gen-invalid-characteristic-name.https.window.js": [
-   "d21dcf561224906c05e7dacd323f81bab7e408d1",
+   "8f44ecb08be4ff6ec2cc563b32038622dfc8f26d",
    "testharness"
   ],
   "bluetooth/service/getCharacteristic/gen-reconnect-during.https.window.js": [
-   "6f86214246457a68fe383ff2aa148f533f547a72",
+   "da5462a8bfa53a7a124a87c46fe9d30c7aedb83b",
    "testharness"
   ],
   "bluetooth/service/getCharacteristic/gen-service-is-removed.https.window.js": [
-   "b6d6a9df96e73b53008c2655bf524c0d1fe2f687",
+   "0fe5b01146ebbc57172435dfe49e887ac6ad2d1b",
    "testharness"
   ],
   "bluetooth/service/getCharacteristics/blocklisted-characteristics.https.html": [
@@ -328692,47 +327911,47 @@
    "testharness"
   ],
   "bluetooth/service/getCharacteristics/gen-blocklisted-characteristic-with-uuid.https.window.js": [
-   "3afd294d5b12755b4401287d2ff818e4c50f7f38",
+   "cd8a6fa380aade14eb256fb8440d15b6e7352ca2",
    "testharness"
   ],
   "bluetooth/service/getCharacteristics/gen-characteristic-not-found-with-uuid.https.window.js": [
-   "549f6b2671940e0a132fa3b2123ae24be9a912c7",
+   "fff2bd038a82698748acadaa3e85047bd77c79f1",
    "testharness"
   ],
   "bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error-with-uuid.https.window.js": [
-   "643e2f839efabbc2e907e20b062903e13dc2be92",
+   "925786c74deab9ad66080391652b60eba00598ee",
    "testharness"
   ],
   "bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error.https.window.js": [
-   "b7db67f613f65f43dcb078740302d2fed08c4ded",
+   "d0ecff89f706b1bb4251232a369ea45b70e2e517",
    "testharness"
   ],
   "bluetooth/service/getCharacteristics/gen-get-same-object-with-uuid.https.window.js": [
-   "15b552af4913a45235ac196111692764f07691ef",
+   "fb3346dc4e4c1ca8cb601c41e8f120ccfdb149c3",
    "testharness"
   ],
   "bluetooth/service/getCharacteristics/gen-get-same-object.https.window.js": [
-   "df30d514f39adaa3e6d42747cf7c13a247011992",
+   "576e0831501faa8b838081a96ef437abda2ed668",
    "testharness"
   ],
   "bluetooth/service/getCharacteristics/gen-invalid-characteristic-name.https.window.js": [
-   "f980ac03d5f4e5c2c9e1036eda709245c2836d27",
+   "5b2bd39d3e052cb689bc2f668e87515563d4fa33",
    "testharness"
   ],
   "bluetooth/service/getCharacteristics/gen-reconnect-during-with-uuid.https.window.js": [
-   "eb4233764aaadc4389ebe9518b1eb89c882ce68c",
+   "95f22b11fcf8a5237c7bf0c2b3c40a3d2932b5be",
    "testharness"
   ],
   "bluetooth/service/getCharacteristics/gen-reconnect-during.https.window.js": [
-   "a6d38805973a7638c36dfd09af6d566280576b44",
+   "184632f1d0581e76aed99bcb9a645c837b88af1f",
    "testharness"
   ],
   "bluetooth/service/getCharacteristics/gen-service-is-removed-with-uuid.https.window.js": [
-   "527eb76527696505dde06078b11985499cb74ed1",
+   "6ff7b4f3631e669cf192e3864fe5bbef1d27f23c",
    "testharness"
   ],
   "bluetooth/service/getCharacteristics/gen-service-is-removed.https.window.js": [
-   "466503241ed098f063b59b6317e112434ac04c47",
+   "b4492885b83016d719161f705a33f7ada8a6d9c2",
    "testharness"
   ],
   "clear-site-data/META.yml": [
@@ -329160,7 +328379,7 @@
    "support"
   ],
   "common/security-features/README.md": [
-   "a2ae9aa8e16bcd30328a37721d7ec7adf5ebbfbf",
+   "deac1ccd8953beccee632625690275d2fa180b8c",
    "support"
   ],
   "common/security-features/resources/common.js": [
@@ -329284,11 +328503,11 @@
    "support"
   ],
   "common/security-features/tools/generate.py": [
-   "0b18a391a62279680e2cbb6905d41084a622f236",
+   "0cf7fab42ec199b5f93926a5133ff149bff93c8c",
    "support"
   ],
   "common/security-features/tools/spec_validator.py": [
-   "2c9664788699676a27e2715344ba581f35c89ad7",
+   "fff4c5dd6f688a733c1a48c5fe818f7f2979c8dd",
    "support"
   ],
   "common/security-features/tools/template/disclaimer.template": [
@@ -329308,7 +328527,7 @@
    "support"
   ],
   "common/security-features/tools/util.py": [
-   "fc8d3b30ef71ca3b63c325837cf58f768f5805f4",
+   "57e95fea0784d94452b7bb437c5ddebedd95c721",
    "support"
   ],
   "common/sleep.py": [
@@ -329380,7 +328599,7 @@
    "testharness"
   ],
   "compat/idlharness.window-expected.txt": [
-   "b6f88da48844ced12ba0b17f6c34888440385cd1",
+   "6deefcc139986cd0068208e6baa4f1accc6ac70f",
    "support"
   ],
   "compat/idlharness.window.js": [
@@ -329743,10 +328962,6 @@
    "a806caf456ff894ec14000ab7e0ae9c2a15e3382",
    "testharness"
   ],
-  "content-security-policy/embedded-enforcement/idlharness.window-expected.txt": [
-   "0f2f0eb348fab2e702d67e0681da33516b489e14",
-   "support"
-  ],
   "content-security-policy/embedded-enforcement/idlharness.window.js": [
    "2845f82c955139e5a5640195af49ece555fe3faa",
    "testharness"
@@ -331856,7 +331071,7 @@
    "testharness"
   ],
   "content-security-policy/style-src/inline-style-allowed-while-cloning-objects.sub.html": [
-   "7c95f47aff880d5818331b5020dacf39a5fc6839",
+   "d222743049e3777cbece37b6bbc3b717b6eca262",
    "testharness"
   ],
   "content-security-policy/style-src/inline-style-allowed.sub.html": [
@@ -332539,10 +331754,6 @@
    "8a10e358ef6de72d5476ae8dc8a571482881d7ef",
    "testharness"
   ],
-  "cookie-store/idlharness.tentative.https-expected.txt": [
-   "7cc5f60008e217ef8099507bdf5de53b042618d4",
-   "support"
-  ],
   "cookie-store/idlharness.tentative.https.html": [
    "fafe79ad57028a4e6505b8d6e6801a6525a2adf7",
    "testharness"
@@ -334971,10 +334182,6 @@
    "08688ab440bbfdf76896da5353bdddb3e9876c34",
    "testharness"
   ],
-  "credential-management/idlharness.https.window-expected.txt": [
-   "bd900e726903a9d18a14f76c87bc48998e2918b4",
-   "support"
-  ],
   "credential-management/idlharness.https.window.js": [
    "789643e2369fca0baed12579bc0cfb23f943f61e",
    "testharness"
@@ -339235,6 +338442,10 @@
    "21451a04fa5e9618276e0e518e82bbb7bb64b21d",
    "reftest"
   ],
+  "css/CSS2/linebox/video-needs-layout-crash.html": [
+   "b8c52edf8272abc6f7c30372b1d37e9545d08c74",
+   "testharness"
+  ],
   "css/CSS2/normal-flow/auto-margins-root-element.html": [
    "8d9aaf443a498ee450e5b4c649e11069952902f6",
    "testharness"
@@ -350372,7 +349583,7 @@
    "testharness"
   ],
   "css/css-animations/idlharness-expected.txt": [
-   "86842f61ee20476e7115010114d7c4a5e1f6f3d2",
+   "58a11c556127b891a9ea47fd57de0d151280bb7b",
    "support"
   ],
   "css/css-animations/idlharness.html": [
@@ -350383,6 +349594,10 @@
    "6e7697b9d81db6888077318389e1d70964241b3c",
    "testharness"
   ],
+  "css/css-animations/keyframes-remove-documentElement-crash.html": [
+   "aba7f9c6edd71d4a2b9446fb6de890866c41da64",
+   "testharness"
+  ],
   "css/css-animations/parsing/animation-delay-computed.html": [
    "832466ac0642616c28bdb4aebad8833e6a4c92d0",
    "testharness"
@@ -354324,7 +353539,7 @@
    "testharness"
   ],
   "css/css-box/parsing/margin-computed.html": [
-   "f22f6cdc0f503488418b7741f12ec5554f213477",
+   "6c3b321c720ddf44ad30b43429e20fbad24943be",
    "testharness"
   ],
   "css/css-box/parsing/margin-invalid.html": [
@@ -356340,27 +355555,27 @@
    "reftest"
   ],
   "css/css-contain/contain-size-replaced-004-ref.html": [
-   "eba5e8cb9a81b14895af3e6a9b5b2f425e23d74a",
+   "56ca5d2e50e73e38f57c4b4332c8bf02225502d2",
    "support"
   ],
   "css/css-contain/contain-size-replaced-004.html": [
-   "511edadc4f8f1130802b2c179448bad6e7552593",
+   "9f84481504660e4129f10532c761b04fc2030f3f",
    "reftest"
   ],
   "css/css-contain/contain-size-replaced-005-ref.html": [
-   "a5328c79ac60e24fc05f8c8027247ad9fb8d619c",
+   "178e137cb72a1dec8724265e23ccf8b1820e7628",
    "support"
   ],
   "css/css-contain/contain-size-replaced-005.html": [
-   "e889dcc903cc47f4fc59cd65ab313912b8d6e72c",
+   "754f3608e3a8bf17cbfa12cd7418e12f79f12fa0",
    "reftest"
   ],
   "css/css-contain/contain-size-replaced-006-ref.html": [
-   "2f638d7fe428efe8f326a1ba34337853243d6937",
+   "d6753c0694b1ae145f50c39cee1ec64abdf2ea5e",
    "support"
   ],
   "css/css-contain/contain-size-replaced-006.html": [
-   "dccb799ea87433e0442539e11c3a5934e4b59e2e",
+   "f716ce42a89202a9a4209fed18de407d8ed15ce7",
    "reftest"
   ],
   "css/css-contain/contain-size-scrollbars-001.html": [
@@ -356739,6 +355954,14 @@
    "a5b4e9f47a8e60ad0bede1ac81e02b3542c80f3b",
    "support"
   ],
+  "css/css-contain/support/60x60-green.png": [
+   "b3c8cf3eb4c89bd8f2d1ffde051856f375e3a3de",
+   "support"
+  ],
+  "css/css-contain/support/60x60-red.png": [
+   "823f125b8e4a60f780f00443c9c9a10b9fa1f447",
+   "support"
+  ],
   "css/css-contain/support/blue-100x100.png": [
    "3b72d5ce53c07b68fe508bb57aa61a933dbda768",
    "support"
@@ -361108,7 +360331,7 @@
    "testharness"
   ],
   "css/css-font-loading/idlharness.https-expected.txt": [
-   "adb6cc436c169f4b230d0ba23c9a9541d585ecf0",
+   "04294ca6d96a415b81c91be5aec1480ac76db4f8",
    "support"
   ],
   "css/css-font-loading/idlharness.https.html": [
@@ -369867,6 +369090,38 @@
    "c7e65dcc2fb56db1acf0290d326a4db072594a4d",
    "testharness"
   ],
+  "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-001.html": [
+   "a1cc22a41d3f89045eae41e80adb39387464be66",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-002.html": [
+   "052836c9e9f8069012dbc1e8f0b75c5e4dbd3563",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-003.html": [
+   "6ff7e3d423e6dfcc708083598753fc99ac8b6b8a",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-004.html": [
+   "6d80fac7bdb2c265c9a643720b1df5dee3691e8c",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-005.html": [
+   "f1fd9e22a00f4d6a9595d9d655a01e02be2b9349",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-006.html": [
+   "0ceaf7c62e6ca539840836f95d0d6f9f92e1911d",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-007.html": [
+   "d9b5632f12a49c378f0b0c00d0df2c77fca57edc",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-block-axis-alignment-auto-margins-008.html": [
+   "e757728f7a14bd1dae4952bf000ee8f8449bab74",
+   "reftest"
+  ],
   "css/css-grid/alignment/grid-column-axis-alignment-positioned-items-001.html": [
    "7268b612545e4cbd513ce453489112aaf35b65fc",
    "testharness"
@@ -370223,6 +369478,38 @@
    "e72814725d2cb90fba6f3bd4d1e8370f37382fbb",
    "reftest"
   ],
+  "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-001.html": [
+   "d1fb13aa491739a8ccf391d8c065c2c117a48ac9",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-002.html": [
+   "f17afa71e3ee859dc5fb33ac6886d9db6e4d1203",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-003.html": [
+   "6500a2961f35d3b31062ba86ea3a395c97e24c7c",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-004.html": [
+   "af9c27e95a19f71f1410106da8ab60581f426b44",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-005.html": [
+   "fdd58c72faa9f101f5e90d78c3d21b252bf6ac1d",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-006.html": [
+   "ea4748f0ed1d742d171bab350f3e96cd659daccb",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-007.html": [
+   "7954e88f987f1ab5bcc4acd45b67ac04b811d558",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-008.html": [
+   "e71e30687ef133d7b9fb661814949f395f80a988",
+   "reftest"
+  ],
   "css/css-grid/alignment/grid-row-axis-alignment-positioned-items-001.html": [
    "967b0e4be967e9b3619e24cdf372aefcfd6b4f24",
    "testharness"
@@ -370720,7 +370007,7 @@
    "reftest"
   ],
   "css/css-grid/animation/grid-template-columns-interpolation-expected.txt": [
-   "dad4474d40e35885731e96b2b0dad4d9c60a4844",
+   "15f1181cd76f1e35a4d5c47c2d36405c1b1a7b03",
    "support"
   ],
   "css/css-grid/animation/grid-template-columns-interpolation.html": [
@@ -370736,7 +370023,7 @@
    "reftest"
   ],
   "css/css-grid/animation/grid-template-rows-interpolation-expected.txt": [
-   "2a2a6d8389188041751a5108b76a300dd66fee8c",
+   "497a536c806dfe9857df48299460175d0fb43cfa",
    "support"
   ],
   "css/css-grid/animation/grid-template-rows-interpolation.html": [
@@ -371891,6 +371178,10 @@
    "0b8ef6d39bf6f01d994f6025f34c0136cc2908cf",
    "support"
   ],
+  "css/css-grid/reference/grid-block-axis-alignment-auto-margins-008-ref.html": [
+   "720bf55f2a2d2cb74511da6865739b9ec091d020",
+   "support"
+  ],
   "css/css-grid/reference/grid-different-gutters-ref.html": [
    "57d27ff3aaea88eaeeed6f34f8ac49623b409fd2",
    "support"
@@ -371907,6 +371198,10 @@
    "cf3c6f28b7c93981a4c5ad35147b85cba129d953",
    "support"
   ],
+  "css/css-grid/reference/grid-inline-axis-alignment-auto-margins-008-ref.html": [
+   "78d199004fb8a78c530d96cb2a138b3aafa205ca",
+   "support"
+  ],
   "css/css-grid/reference/grid-layout-auto-tracks-ref.html": [
    "9f2f91cf7fa0fd3da5b24fe2f72cfdfc8929f4a1",
    "support"
@@ -372180,7 +371475,7 @@
    "testharness"
   ],
   "css/css-images/parsing/object-position-computed.html": [
-   "37b198c52e9a289c5f4ad41a709142cebca81fd7",
+   "97489149e922e3cb0bc5cec88af61afe74fd8f59",
    "testharness"
   ],
   "css/css-images/parsing/object-position-invalid.html": [
@@ -372396,11 +371691,11 @@
    "support"
   ],
   "css/css-inline/inheritance-expected.txt": [
-   "86e56d979fe0b5966cc654ca163697705bae97d0",
+   "04a22e0fee19d37384921ec696fe9e6148e04bdc",
    "support"
   ],
   "css/css-inline/inheritance.html": [
-   "7728f67e159eabbcb9dcc87d1a1db1d14b370cb3",
+   "6723c2a6e2ff38cb0af2ab13baf5ef9a9af0f18a",
    "testharness"
   ],
   "css/css-inline/inline-crash-chrome-001.html": [
@@ -376815,6 +376110,14 @@
    "59843ae54b64f6ce4f7e616d4be491c911ea84cf",
    "support"
   ],
+  "css/css-multicol/with-custom-layout-on-same-element-crash.https.html": [
+   "7e1c804258ab54290047a4b712f0bff613acd168",
+   "testharness"
+  ],
+  "css/css-multicol/with-custom-layout-on-same-element.https.html": [
+   "5388b08cde3936088978f09ccb0fd438347421e1",
+   "reftest"
+  ],
   "css/css-multicol/zero-column-width-computed-style.html": [
    "46d876f1a150c257be9c37d25a4a4c34d2f1d73d",
    "testharness"
@@ -377572,7 +376875,7 @@
    "reftest"
   ],
   "css/css-paint-api/idlharness-expected.txt": [
-   "227ab1bb63dff94780e20ff94d32a0ee0055d673",
+   "e71217c3cbc8ed2feef0a75ab6f069ba5ee2c0ad",
    "support"
   ],
   "css/css-paint-api/idlharness.html": [
@@ -379064,7 +378367,7 @@
    "reftest"
   ],
   "css/css-pseudo/idlharness-expected.txt": [
-   "fa8495c3714a21562298ecc685840d2e04fa3b2a",
+   "977415282ae39a096e46008e91d55452f5244b02",
    "support"
   ],
   "css/css-pseudo/idlharness.html": [
@@ -381067,10 +380370,6 @@
    "4cb0c69ba78c410712da74b7b809416dc37c3540",
    "testharness"
   ],
-  "css/css-shapes/shape-outside/values/shape-margin-003-expected.txt": [
-   "104e0bb978653db65bf16fbc5ce0552dfce44f6c",
-   "support"
-  ],
   "css/css-shapes/shape-outside/values/shape-margin-003.html": [
    "7a6998447b3889f42e5e3796ef7c430d7deaa479",
    "testharness"
@@ -381131,18 +380430,10 @@
    "ff5dc83d353dcd5f44850c860de1df27dc825778",
    "testharness"
   ],
-  "css/css-shapes/shape-outside/values/shape-outside-circle-010-expected.txt": [
-   "f6d4093fb00555dffe00a4fa6601887fa0b6fbf1",
-   "support"
-  ],
   "css/css-shapes/shape-outside/values/shape-outside-circle-010.html": [
    "b255825bea632dbd62029bf941b70723c66a285e",
    "testharness"
   ],
-  "css/css-shapes/shape-outside/values/shape-outside-circle-011-expected.txt": [
-   "823faea146d58624135b8be1d3e8b40392964e68",
-   "support"
-  ],
   "css/css-shapes/shape-outside/values/shape-outside-circle-011.html": [
    "7f0571cdd6f3ad67391435f294ede7efaae7f47e",
    "testharness"
@@ -381195,18 +380486,10 @@
    "af3a46a0004a8054ce0df7bc0aa6e02427fc9e6f",
    "testharness"
   ],
-  "css/css-shapes/shape-outside/values/shape-outside-ellipse-010-expected.txt": [
-   "b7f5a6c7be2e69c534a7c29347d142527510ad2d",
-   "support"
-  ],
   "css/css-shapes/shape-outside/values/shape-outside-ellipse-010.html": [
    "e5673b07cc4ac8e367e327b1f1187d04f61393e4",
    "testharness"
   ],
-  "css/css-shapes/shape-outside/values/shape-outside-ellipse-011-expected.txt": [
-   "9bb0068dc08e35d94a98fbeccda87d7119f64c33",
-   "support"
-  ],
   "css/css-shapes/shape-outside/values/shape-outside-ellipse-011.html": [
    "ad01bb60ea43a06b8513e1bd9ea1abcd595c4453",
    "testharness"
@@ -381251,18 +380534,10 @@
    "8c4a76451380814203990398489798de070da5ff",
    "testharness"
   ],
-  "css/css-shapes/shape-outside/values/shape-outside-inset-008-expected.txt": [
-   "b969e062ea7e2350987cb41b776cfb60010610e8",
-   "support"
-  ],
   "css/css-shapes/shape-outside/values/shape-outside-inset-008.html": [
    "158898d7785ab3d765d8e4128e44d31fd2251d71",
    "testharness"
   ],
-  "css/css-shapes/shape-outside/values/shape-outside-inset-009-expected.txt": [
-   "4a387910582b289d12e908f71614c77c223a171a",
-   "support"
-  ],
   "css/css-shapes/shape-outside/values/shape-outside-inset-009.html": [
    "c131783d1ea3eb2992c30e54ca0d9b2c2943e188",
    "testharness"
@@ -381291,10 +380566,6 @@
    "de861bdcb736a6d0f207fc76265cc96faf453c5d",
    "testharness"
   ],
-  "css/css-shapes/shape-outside/values/shape-outside-polygon-006-expected.txt": [
-   "f6747faa635680d2f1aaf812f0eb0f972d221057",
-   "support"
-  ],
   "css/css-shapes/shape-outside/values/shape-outside-polygon-006.html": [
    "a5f18d9bec3a7e1377cfdaa4e3548a8329cb619e",
    "testharness"
@@ -387291,6 +386562,10 @@
    "39426d0420287a730dcac47696bd69520e8a6b72",
    "testharness"
   ],
+  "css/css-text/overflow-wrap/overflow-wrap-break-word-white-space-crash.html": [
+   "2bea6aed780679f9eb0de3130e3acf4ffa2b9e98",
+   "testharness"
+  ],
   "css/css-text/overflow-wrap/overflow-wrap-cluster-001.html": [
    "7911a1b214c04490e16418e71ff733f8f228b45c",
    "reftest"
@@ -390548,7 +389823,7 @@
    "reftest"
   ],
   "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-004.html": [
-   "becd4638eb068b26c00851390e393026796d7675",
+   "aa048b512e940511030631f2c379aaa995e6b868",
    "reftest"
   ],
   "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html": [
@@ -395719,10 +394994,6 @@
    "aea375796316b34b73584d00fa6980947f6d986f",
    "reftest"
   ],
-  "css/css-transforms/transforms-support-calc-expected.txt": [
-   "3e16e0ca86bde1b0371515ac76f51630fb8249bc",
-   "support"
-  ],
   "css/css-transforms/transforms-support-calc.html": [
    "1ad1bcc4b68c5419e2fa0651dad1a3386223e36b",
    "testharness"
@@ -396728,7 +395999,7 @@
    "testharness"
   ],
   "css/css-transitions/event-dispatch.tentative-expected.txt": [
-   "c8c022abaea6d065ffb0495605c9f5eebe93c335",
+   "3216888a9ef85e95c6ad59c8ca1454dfa3668f33",
    "support"
   ],
   "css/css-transitions/event-dispatch.tentative.html": [
@@ -396768,7 +396039,7 @@
    "testharness"
   ],
   "css/css-transitions/idlharness-expected.txt": [
-   "68b9245da1487a1e4e7e71ef69e3c36a88831ec1",
+   "24f1f45e2da22cb3cc49dded606136a2161c27f3",
    "support"
   ],
   "css/css-transitions/idlharness.html": [
@@ -397460,7 +396731,7 @@
    "testharness"
   ],
   "css/css-typed-om/idlharness-expected.txt": [
-   "7d2cc38aa1ac60517b80bb07122f56413dc4c102",
+   "24e1caa9834da817fab540fa7bd2dbc93b7554e8",
    "support"
   ],
   "css/css-typed-om/idlharness.html": [
@@ -401967,10 +401238,6 @@
    "e41beaff211b87dd74dd6fee6f05d894ba03988d",
    "testharness"
   ],
-  "css/css-values/calc-background-position-002-expected.txt": [
-   "d2d0ec0cb5d8785efc4624f7c326e04ee317decb",
-   "support"
-  ],
   "css/css-values/calc-background-position-002.html": [
    "c1dad2eb03b45ead60e7a8f57ba29fc226e63d4d",
    "testharness"
@@ -402960,7 +402227,7 @@
    "testharness"
   ],
   "css/css-variables/vars-font-shorthand-001.html": [
-   "3c280547fb353a959bc6df95ad690445835ded98",
+   "e10aa87c4947c6d99ae7d331c7e42aa23e496d31",
    "reftest"
   ],
   "css/css-variables/wide-keyword-fallback-ref.html": [
@@ -404156,7 +403423,7 @@
    "reftest"
   ],
   "css/css-writing-modes/available-size-003.html": [
-   "c938c905ae0aa7462a593308d9652a910069bf50",
+   "70a61a9e34441b4a017241b364a6b1793ff2026b",
    "reftest"
   ],
   "css/css-writing-modes/available-size-004.html": [
@@ -404164,7 +403431,7 @@
    "reftest"
   ],
   "css/css-writing-modes/available-size-005.html": [
-   "ee324898ffea542da389b8d3a7e86dbffc8a6a0a",
+   "5eb832ff36e4bf8c48f6c220d80cdd236137ba45",
    "reftest"
   ],
   "css/css-writing-modes/available-size-006.html": [
@@ -404180,7 +403447,7 @@
    "reftest"
   ],
   "css/css-writing-modes/available-size-009.html": [
-   "5e26975999ea1c07716d6c989ea695c6fbd9c579",
+   "94f083af58497d37ce65648a15c53526da6352bf",
    "reftest"
   ],
   "css/css-writing-modes/available-size-010.html": [
@@ -404196,11 +403463,11 @@
    "reftest"
   ],
   "css/css-writing-modes/available-size-013.html": [
-   "1ffd6564ad0d81c1c4f1107616905145056bc68e",
+   "4cb6b237285a9da5060a5c28a02807675d3a6eeb",
    "reftest"
   ],
   "css/css-writing-modes/available-size-014.html": [
-   "e0e41fb6b1a8c38bd17bf90386cd90a17822a091",
+   "8e955cf59029050c62060b2597f3a3e3b94bec88",
    "reftest"
   ],
   "css/css-writing-modes/available-size-015.html": [
@@ -404208,7 +403475,7 @@
    "reftest"
   ],
   "css/css-writing-modes/available-size-016.html": [
-   "15038868b80534a55bfc77f7e3fc74a7552cc0cf",
+   "ba398032ba7554fcbf6a2037aafe4ad0820283da",
    "reftest"
   ],
   "css/css-writing-modes/available-size-017.html": [
@@ -410588,7 +409855,7 @@
    "testharness"
   ],
   "css/cssom/idlharness-expected.txt": [
-   "49014ccbcaac4703b76d0ce84c447120772747bd",
+   "c364cca8132816f617bfd155208ace3450f02d68",
    "support"
   ],
   "css/cssom/idlharness.html": [
@@ -411656,17 +410923,13 @@
    "reftest"
   ],
   "css/filter-effects/idlharness.any-expected.txt": [
-   "adb6cc436c169f4b230d0ba23c9a9541d585ecf0",
+   "4fc02f16719d0733e4cba87d8d229fe6ed15e6aa",
    "support"
   ],
   "css/filter-effects/idlharness.any.js": [
    "e7de16e8d62904986610a484b046a4caf0f161e3",
    "testharness"
   ],
-  "css/filter-effects/idlharness.any.worker-expected.txt": [
-   "adb6cc436c169f4b230d0ba23c9a9541d585ecf0",
-   "support"
-  ],
   "css/filter-effects/inheritance.html": [
    "acb811bfad154e5a0b18eaddb799fc5dc679b114",
    "testharness"
@@ -412599,10 +411862,6 @@
    "ec22768e96a1cd1efab206781b985cec8f006686",
    "support"
   ],
-  "css/motion/offset-supports-calc-expected.txt": [
-   "c7772419a5144fddb7316cd9413e20d352352324",
-   "support"
-  ],
   "css/motion/offset-supports-calc.html": [
    "907694f7fc32ebb1c44787fcfbf5980627d2919e",
    "testharness"
@@ -420591,24 +419850,12 @@
    "5119f9f975414e4ef930026da6b83bbb1394017b",
    "testharness"
   ],
-  "dom/idlharness.any.serviceworker-expected.txt": [
-   "4df2fa23798bf3e3004468e4602653d454824453",
-   "support"
-  ],
-  "dom/idlharness.any.sharedworker-expected.txt": [
-   "4df2fa23798bf3e3004468e4602653d454824453",
-   "support"
-  ],
-  "dom/idlharness.any.worker-expected.txt": [
-   "4df2fa23798bf3e3004468e4602653d454824453",
-   "support"
-  ],
   "dom/idlharness.window.js": [
-   "7d87aeaa337ed7709875428641f78107395d9317",
+   "24b56cf05ada3722c30a7a1427d1cbb324ec366a",
    "testharness"
   ],
   "dom/idlharness.window_exclude=Node-expected.txt": [
-   "f9945d209ed8029baca93eadc716d00c331671fc",
+   "42cd0e0da09ef90ea71e2901ee238f18aca9e6d3",
    "support"
   ],
   "dom/idlharness.window_include=Node-expected.txt": [
@@ -422175,6 +421422,10 @@
    "5c2ac186c8c9d2c6befccda3e0f1f901e9df885b",
    "support"
   ],
+  "domxpath/README.md": [
+   "918997b1646d73d71a79c302953ab9f0f8ed69cc",
+   "support"
+  ],
   "domxpath/document.tentative.html": [
    "b75c0f0d66dacb47a825ae2aa00bb63a19616433",
    "testharness"
@@ -422187,10 +421438,6 @@
    "c7c102945d070a4ea65cae0e30ea6ec64bb82c95",
    "testharness"
   ],
-  "domxpath/interfaces.tentative.html": [
-   "9036ad834a764798d2871a71a8b5734051949d8d",
-   "testharness"
-  ],
   "domxpath/xml_xpath_runner.html": [
    "42404562a3c95b3004c7b0b7402ea366faeb4d83",
    "testharness"
@@ -426192,7 +425439,7 @@
    "support"
   ],
   "feature-policy/idlharness.window-expected.txt": [
-   "534dc5c05463483acf09e9ed4c4b5beb17290b90",
+   "c9b2434301e97955c54c5d972386d58d4ca76739",
    "support"
   ],
   "feature-policy/idlharness.window.js": [
@@ -427036,7 +426283,7 @@
    "support"
   ],
   "fetch/api/idlharness.any-expected.txt": [
-   "39dc3f9292801783f7ea4aeeddd170770eec4ea0",
+   "8bf325d7fd92e68889470ac6d61d474f49ac56d1",
    "support"
   ],
   "fetch/api/idlharness.any.js": [
@@ -427044,15 +426291,15 @@
    "testharness"
   ],
   "fetch/api/idlharness.any.serviceworker-expected.txt": [
-   "39dc3f9292801783f7ea4aeeddd170770eec4ea0",
+   "7f9da6eeccc591484330b525f8195e03f78057a0",
    "support"
   ],
   "fetch/api/idlharness.any.sharedworker-expected.txt": [
-   "39dc3f9292801783f7ea4aeeddd170770eec4ea0",
+   "7f9da6eeccc591484330b525f8195e03f78057a0",
    "support"
   ],
   "fetch/api/idlharness.any.worker-expected.txt": [
-   "39dc3f9292801783f7ea4aeeddd170770eec4ea0",
+   "7f9da6eeccc591484330b525f8195e03f78057a0",
    "support"
   ],
   "fetch/api/policies/csp-blocked-worker-expected.txt": [
@@ -427556,7 +426803,7 @@
    "support"
   ],
   "fetch/api/resources/preflight.py": [
-   "1843c74c88e200986af1ac0ecf5921456020ffe0",
+   "d2249606db624892dab96fc9484a9e274947b859",
    "support"
   ],
   "fetch/api/resources/redirect-empty-location.py": [
@@ -427943,26 +427190,10 @@
    "c99eb053d61862260891ebdf04338a841f49d2cf",
    "testharness"
   ],
-  "fetch/cors-rfc1918/idlharness.tentative.any-expected.txt": [
-   "4340903609a9f07187961b0b6d1223ebbcfb3590",
-   "support"
-  ],
   "fetch/cors-rfc1918/idlharness.tentative.any.js": [
    "88468dc19a38a64e6ebdb19b4e92ddf23a3247fc",
    "testharness"
   ],
-  "fetch/cors-rfc1918/idlharness.tentative.any.serviceworker-expected.txt": [
-   "4340903609a9f07187961b0b6d1223ebbcfb3590",
-   "support"
-  ],
-  "fetch/cors-rfc1918/idlharness.tentative.any.sharedworker-expected.txt": [
-   "4340903609a9f07187961b0b6d1223ebbcfb3590",
-   "support"
-  ],
-  "fetch/cors-rfc1918/idlharness.tentative.any.worker-expected.txt": [
-   "4340903609a9f07187961b0b6d1223ebbcfb3590",
-   "support"
-  ],
   "fetch/cross-origin-resource-policy/OWNERS": [
    "42d5155b66317b0067f81189e31a9168d13ca2f0",
    "support"
@@ -429439,10 +428670,6 @@
    "ee8d4cfab70246d75066a224c1045d1b4f5dae6f",
    "support"
   ],
-  "fullscreen/idlharness.window-expected.txt": [
-   "34b5bd96bce341a0d4932fdc78c1b0e12631cf59",
-   "support"
-  ],
   "fullscreen/idlharness.window.js": [
    "a60b7fe838eba4c7ba4fc7970940debbf37b702f",
    "testharness"
@@ -429520,7 +428747,7 @@
    "support"
   ],
   "gamepad/idlharness.window-expected.txt": [
-   "0d821873b497385adb3794ecd85c02799b546591",
+   "915af06444db6fc8d6b7b3254057b2eacea971b8",
    "support"
   ],
   "gamepad/idlharness.window.js": [
@@ -429555,10 +428782,6 @@
    "a48b4c59aa89d0f1a0c7855f93bd80ce0f33fbf0",
    "support"
   ],
-  "generic-sensor/idlharness.https.window-expected.txt": [
-   "c78b7069f5e04ce7fb11eb6e5e7cb0f72020e1f8",
-   "support"
-  ],
   "generic-sensor/idlharness.https.window.js": [
    "f591d755209e386f34610a429e5bdcd85e9c0ac0",
    "testharness"
@@ -429871,26 +429094,10 @@
    "364dd81a3448188bd76f6ff410807bfcca93177d",
    "testharness"
   ],
-  "hr-time/idlharness.any-expected.txt": [
-   "c717e8bd63fd15f780df7cf75837f935420aa970",
-   "support"
-  ],
   "hr-time/idlharness.any.js": [
    "4e266c09e3358034e6fac6fb282bbeb138e4278a",
    "testharness"
   ],
-  "hr-time/idlharness.any.serviceworker-expected.txt": [
-   "c717e8bd63fd15f780df7cf75837f935420aa970",
-   "support"
-  ],
-  "hr-time/idlharness.any.sharedworker-expected.txt": [
-   "c717e8bd63fd15f780df7cf75837f935420aa970",
-   "support"
-  ],
-  "hr-time/idlharness.any.worker-expected.txt": [
-   "c717e8bd63fd15f780df7cf75837f935420aa970",
-   "support"
-  ],
   "hr-time/monotonic-clock.any.js": [
    "c53b04d844e4f587891595c09c56e336f3893f9b",
    "testharness"
@@ -430008,7 +429215,7 @@
    "manual"
   ],
   "html-media-capture/idlharness.window-expected.txt": [
-   "0d977e0fc11b500184ecab4a452761cd413e2390",
+   "c8248ba917fd886a519cc6cf2bfa29912dfc1675",
    "support"
   ],
   "html-media-capture/idlharness.window.js": [
@@ -432959,8 +432166,12 @@
    "63b60e490f47f4db77d33d7a4ca2f5b9a4181de8",
    "support"
   ],
+  "html/cross-origin-opener-policy/coop-navigated-popup.https-expected.txt": [
+   "66b2fb564b7063988271105b3d50aa73b8e5e0ff",
+   "support"
+  ],
   "html/cross-origin-opener-policy/coop-navigated-popup.https.html": [
-   "0b51512c221d9035bac5a99b83b661af2fc65d5a",
+   "9a92dd9bde885e9e3ee19c6e4ef93a0e7b82e418",
    "testharness"
   ],
   "html/cross-origin-opener-policy/coop-navigated-popup.https.html.headers": [
@@ -434172,11 +433383,11 @@
    "testharness"
   ],
   "html/dom/idlharness.https_exclude=(Document_Window_HTML._)-expected.txt": [
-   "adb6cc436c169f4b230d0ba23c9a9541d585ecf0",
+   "234075d837628a57d387b1c9527d6f1851c8561f",
    "support"
   ],
   "html/dom/idlharness.https_include=(Document_Window)-expected.txt": [
-   "adb6cc436c169f4b230d0ba23c9a9541d585ecf0",
+   "8213dc41405702cd91b1654923ed051ca539d772",
    "support"
   ],
   "html/dom/idlharness.https_include=HTML._-expected.txt": [
@@ -434184,7 +433395,7 @@
    "support"
   ],
   "html/dom/idlharness.worker-expected.txt": [
-   "adb6cc436c169f4b230d0ba23c9a9541d585ecf0",
+   "7354ff66a2a7b2a348999a8117445dc5f6c013cb",
    "support"
   ],
   "html/dom/idlharness.worker.js": [
@@ -443279,12 +442490,8 @@
    "4fbf3f5adddbcb8ec95fc0e2192f4da841e93b8c",
    "support"
   ],
-  "html/semantics/embedded-content/the-img-element/invalid-src-expected.txt": [
-   "4b8f9770143f1120cc6b2842593d6b59e151589d",
-   "support"
-  ],
   "html/semantics/embedded-content/the-img-element/invalid-src.html": [
-   "c3c57ee3c0a05019be4db6650eeefdd53648401e",
+   "37ea8ce754a3feaa3e305f10899632d231c92363",
    "testharness"
   ],
   "html/semantics/embedded-content/the-img-element/ismap/img-ismap-coordinates-iframe-after.html": [
@@ -443583,34 +442790,122 @@
    "82798eaa84f533cdc675c653ef22fcb12b52137e",
    "testharness"
   ],
+  "html/semantics/forms/autofocus/autofocus-on-stable-document.html": [
+   "47e3e3fd0abdc93e8447c099314935f8cdc31c42",
+   "testharness"
+  ],
+  "html/semantics/forms/autofocus/first-reconnected-expected.txt": [
+   "b056ed018821f61c2360ca260264f0fb08eef458",
+   "support"
+  ],
+  "html/semantics/forms/autofocus/first-reconnected.html": [
+   "99ee9198d1b0a39605ee7115ba71b1178e815943",
+   "testharness"
+  ],
   "html/semantics/forms/autofocus/first-when-later-but-before-expected.txt": [
-   "587c981b35acc108db0268d3c41a67e98d0c10dc",
+   "535ad230cc676aef3b046fee9c022610b657a6cb",
    "support"
   ],
   "html/semantics/forms/autofocus/first-when-later-but-before.html": [
-   "0267f46627f6db579ee639355d6e265e52bc305f",
+   "f361463401b555f4c90cc25f195dd8b6c7e03b0b",
    "testharness"
   ],
   "html/semantics/forms/autofocus/first-when-later.html": [
-   "9ced437f4a9456ff9076feb3965172ddb9d4a694",
+   "1d64b863a16e8a0745c4f207d5a92e80175ee34f",
    "testharness"
   ],
   "html/semantics/forms/autofocus/first.html": [
-   "de56cf74eda506c55460cc6da85923b5b7001381",
+   "02ebb79a3e9dff0f1b0211eb187b7a91f7de8c17",
+   "testharness"
+  ],
+  "html/semantics/forms/autofocus/focusable-area-in-top-document-expected.txt": [
+   "f8760c98f9030e0670d9b790f5a9d4e4b4781f32",
+   "support"
+  ],
+  "html/semantics/forms/autofocus/focusable-area-in-top-document.html": [
+   "327040eeeeb7da9bf134cb7120b60c7d1e76d5c7",
    "testharness"
   ],
   "html/semantics/forms/autofocus/no-cross-origin-autofocus.html": [
    "c3974bd02a3655cef5513258e81f65e2f86e07d3",
    "testharness"
   ],
+  "html/semantics/forms/autofocus/no-sandboxed-automatic-features.html": [
+   "991373d3363a195bde7c7e4e9ad255026e173e47",
+   "testharness"
+  ],
   "html/semantics/forms/autofocus/not-on-first-task.html": [
    "50efc176935c710f43a42c31ecc0b7676e96b833",
    "testharness"
   ],
+  "html/semantics/forms/autofocus/queue-non-focusable.html": [
+   "e3b556035d35f6ea18d51cd3772651a22940d161",
+   "testharness"
+  ],
   "html/semantics/forms/autofocus/resources/child-autofocus.html": [
    "afd5601a523ff0a1d60d37b171b2098a38600ace",
    "support"
   ],
+  "html/semantics/forms/autofocus/resources/erase-first.css": [
+   "bbbcf799393fc047dae6d47836c3696868df8fb7",
+   "support"
+  ],
+  "html/semantics/forms/autofocus/resources/frame-with-autofocus-element.html": [
+   "985cba41494919525031081d236e4409aace453c",
+   "support"
+  ],
+  "html/semantics/forms/autofocus/resources/moving-autofocus-to-parent.html": [
+   "fc6c298a46e376cf45089f168cf841cab59ffd5c",
+   "support"
+  ],
+  "html/semantics/forms/autofocus/resources/utils.js": [
+   "0eeb5a9f0adf1d09959227241cd71fe32ebb485c",
+   "support"
+  ],
+  "html/semantics/forms/autofocus/skip-another-top-level-browsing-context.html": [
+   "d392b903f075276a03189207e57d789608523de1",
+   "testharness"
+  ],
+  "html/semantics/forms/autofocus/skip-document-with-fragment-expected.txt": [
+   "699bc679602616f62cd4ca43d65c93855fee2034",
+   "support"
+  ],
+  "html/semantics/forms/autofocus/skip-document-with-fragment.html": [
+   "a4301e13516634e9fc09d1b8084091a2697b1f24",
+   "testharness"
+  ],
+  "html/semantics/forms/autofocus/skip-non-focusable-expected.txt": [
+   "eaeff36ab1187f7997cb01fd5f8fbb60c6d215a8",
+   "support"
+  ],
+  "html/semantics/forms/autofocus/skip-non-focusable.html": [
+   "008371d8e163fbdec937e29435fe61dffd520cde",
+   "testharness"
+  ],
+  "html/semantics/forms/autofocus/skip-not-fully-active.html": [
+   "32008b3019e905488c35ea432de396a2641cb61a",
+   "testharness"
+  ],
+  "html/semantics/forms/autofocus/spin-by-blocking-style-sheet.html": [
+   "22a4c3573cccf909d3a5675db2aab97a4f366bc0",
+   "testharness"
+  ],
+  "html/semantics/forms/autofocus/supported-elements-expected.txt": [
+   "ad7ebdf4030bb18050572fe331813b401393d905",
+   "support"
+  ],
+  "html/semantics/forms/autofocus/supported-elements.html": [
+   "398577e7d51edf10ea2571ec4e220394208f6931",
+   "testharness"
+  ],
+  "html/semantics/forms/autofocus/update-the-rendering-expected.txt": [
+   "5f907cc883352c0fe1b48523da2c440f2c31a22f",
+   "support"
+  ],
+  "html/semantics/forms/autofocus/update-the-rendering.html": [
+   "afaf0926f5b55e4f1925010c7262ed26a616d3be",
+   "testharness"
+  ],
   "html/semantics/forms/constraints/form-validation-checkValidity.html": [
    "2e790c75d82dec2f60f64199ea4e1cba1164bc63",
    "testharness"
@@ -443636,15 +442931,15 @@
    "testharness"
   ],
   "html/semantics/forms/constraints/form-validation-validity-rangeOverflow.html": [
-   "ca423ef9ed737f9f630db489ec2003393ec24b18",
+   "fedf2ea4e4f0aa5018db5bb24ec3bf0e15333992",
    "testharness"
   ],
   "html/semantics/forms/constraints/form-validation-validity-rangeUnderflow.html": [
-   "d6bf86060b1ae641f5c49c9cd381d2d68f683a35",
+   "8ac3aae1279c0f6df2203251aae26854ba551b57",
    "testharness"
   ],
   "html/semantics/forms/constraints/form-validation-validity-stepMismatch.html": [
-   "174ecaf33a21e972c1464579a0fc444c9556b112",
+   "6d8192bfbfeb6f0b1c472fe55eee58af6b4b9e1c",
    "testharness"
   ],
   "html/semantics/forms/constraints/form-validation-validity-tooLong.html": [
@@ -446859,10 +446154,6 @@
    "e50c7b525b495dd8cb1ce3540396a14aecec86af",
    "testharness"
   ],
-  "html/semantics/scripting-1/the-script-element/module/referrer-origin-when-cross-origin.sub-expected.txt": [
-   "cd990f903e1f91b67aff18d537ca62d3ab58ab9a",
-   "support"
-  ],
   "html/semantics/scripting-1/the-script-element/module/referrer-origin-when-cross-origin.sub.html": [
    "3623ac2ccb2c5daa2a9f1294c1279083ddaa8ad5",
    "testharness"
@@ -446871,10 +446162,6 @@
    "f512982a451b1d24d47965437162213dff919ec5",
    "testharness"
   ],
-  "html/semantics/scripting-1/the-script-element/module/referrer-same-origin.sub-expected.txt": [
-   "6720439ba95b710d893477cdf946710ab7a38abb",
-   "support"
-  ],
   "html/semantics/scripting-1/the-script-element/module/referrer-same-origin.sub.html": [
    "67b055c217dd384fa66e27111254109957683960",
    "testharness"
@@ -449576,7 +448863,7 @@
    "manual"
   ],
   "html/webappapis/scripting/events/event-handler-all-global-events-expected.txt": [
-   "3ef65dcebf31486feddbbec7b023d8496351fc48",
+   "d36897687510194fefa9bf509bdb18a9582ff3a3",
    "support"
   ],
   "html/webappapis/scripting/events/event-handler-all-global-events.html": [
@@ -449584,7 +448871,7 @@
    "testharness"
   ],
   "html/webappapis/scripting/events/event-handler-attributes-body-window-expected.txt": [
-   "2f8c2372baa28c9356fbbbc7c3d55fba0cccff58",
+   "e317caa2eed655788bc1829e5d9fe136a1a958cb",
    "support"
   ],
   "html/webappapis/scripting/events/event-handler-attributes-body-window.html": [
@@ -449592,7 +448879,7 @@
    "testharness"
   ],
   "html/webappapis/scripting/events/event-handler-attributes-frameset-window-expected.txt": [
-   "873ce5bc0827753cd401e023357814a54e1a04d5",
+   "c4e1cb872f0b7645b46d61ffc9d1011a7d235e00",
    "support"
   ],
   "html/webappapis/scripting/events/event-handler-attributes-frameset-window.html": [
@@ -450147,10 +449434,6 @@
    "e6aa2f91bfee747649aeb63ca845a2eef8fec55b",
    "testharness"
   ],
-  "idle-detection/idlharness.https.any.worker-expected.txt": [
-   "7834d00a4f8813881e0fb8241c25f5440d380615",
-   "support"
-  ],
   "idle-detection/interceptor.https.html": [
    "f47a9e7f8cad9c6faac8bfaf0c20c83e3d4cf111",
    "testharness"
@@ -450279,10 +449562,6 @@
    "f2581017b43d44664e7137a78c0803554b50f3b1",
    "support"
   ],
-  "images/canvas-line.png": [
-   "30f8f4540560939e1295cccb0c665b9ced908ad4",
-   "support"
-  ],
   "images/clear-100x50.png": [
    "eeedd0ff05889ffd4468bf19a2e8e9e0a094201c",
    "support"
@@ -450480,7 +449759,7 @@
    "testharness"
   ],
   "import-maps/bare.sub.tentative.html": [
-   "5bfb6b52072338568397a8dfac3a98a90c70b34b",
+   "cf99589f9bd56730423880d6fd4f93df293e6ddf",
    "testharness"
   ],
   "import-maps/bare/__dir__.headers": [
@@ -450588,7 +449867,7 @@
    "testharness"
   ],
   "import-maps/imported/parsing-schema.tentative-expected.txt": [
-   "61cafd0186ee6a68877a8e84425b1aad9adb2caf",
+   "afb5a364707553f4249cc11466a95284b3ba7b76",
    "support"
   ],
   "import-maps/imported/parsing-schema.tentative.html": [
@@ -450684,7 +449963,7 @@
    "support"
   ],
   "import-maps/resources/jest-test-helper.js": [
-   "86556ed3dd9585c95d258cbfabc8bb81ed5bc90d",
+   "8d9236a84d81f838a50acefffca105b44eb5025f",
    "support"
   ],
   "import-maps/resources/log.js": [
@@ -450851,12 +450130,24 @@
    "29ff348a9af645ff59d860e91af9534e64a606c5",
    "testharness"
   ],
+  "infrastructure/expected-fail/uncaught-exception-expected.txt": [
+   "1765dd9a78463a3870edf2bf464943e9b5c788f0",
+   "support"
+  ],
+  "infrastructure/expected-fail/uncaught-exception.html": [
+   "4442d513753112fac2e35855268d0b246f01fa09",
+   "testharness"
+  ],
   "infrastructure/metadata/infrastructure/assumptions/allowed-to-play.html.ini": [
    "f9be6a64bdfd7ca033fda2a9cd1bdb105836df20",
    "support"
   ],
+  "infrastructure/metadata/infrastructure/assumptions/document-fonts-ready.html.ini": [
+   "d074292053b6d580efda36155c1d82af699494bc",
+   "support"
+  ],
   "infrastructure/metadata/infrastructure/assumptions/html-elements.html.ini": [
-   "5bb1bf554ccbc73a605f4364c59b91aa59a7ee87",
+   "4be883a5cf7ab6869e2e9235acca37549a9045b8",
    "support"
   ],
   "infrastructure/metadata/infrastructure/expected-fail/failing-test.html.ini": [
@@ -450867,6 +450158,10 @@
    "53b281f8358c4f90aab96c731076439ccb5567b4",
    "support"
   ],
+  "infrastructure/metadata/infrastructure/expected-fail/uncaught-exception.html.ini": [
+   "0bcdd374f2521b6534208ab750a1c0d36e7dd7ca",
+   "support"
+  ],
   "infrastructure/metadata/infrastructure/reftest/reftest_and_fail.html.ini": [
    "81aef049cd122f7332c66f5a087947e512a59d0e",
    "support"
@@ -450912,11 +450207,11 @@
    "support"
   ],
   "infrastructure/metadata/infrastructure/server/context.any.js.ini": [
-   "ff57a138029ca49e7e63d9dd27e25288709c61f3",
+   "9667d4d251e8b1915ae2c979766343babd3a0235",
    "support"
   ],
   "infrastructure/metadata/infrastructure/server/order-of-metas.any.js.ini": [
-   "e4a96de0e8f60fbbd48676deb59bd8ba85f99133",
+   "a62ae82b9bec778832cea5e3a95ea069b11b49fc",
    "support"
   ],
   "infrastructure/metadata/infrastructure/server/order-of-metas.window.js.ini": [
@@ -450924,15 +450219,23 @@
    "support"
   ],
   "infrastructure/metadata/infrastructure/server/secure-context.https.any.js.ini": [
-   "f483bca13f6b372774e1494c75455cd075ba0313",
+   "0a602b9ae264d92c75a06e79085c20faf4a65e5d",
    "support"
   ],
   "infrastructure/metadata/infrastructure/server/title.any.js.ini": [
-   "cbae6b15410e13433c4a9fadd8c2a8cc5fbc4fdc",
+   "6f7fed9dc062dbde3d73ea233f18f0f56d8e056c",
+   "support"
+  ],
+  "infrastructure/metadata/infrastructure/server/wpt-server-http.sub.html.ini": [
+   "e2f26c7e4b697c77c5ee195cad763279bd1ecde0",
+   "support"
+  ],
+  "infrastructure/metadata/infrastructure/server/wpt-server-websocket.sub.html.ini": [
+   "2cc364b610987ad5938c822287eb76079c2af2a3",
    "support"
   ],
   "infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini": [
-   "ee1217860b88bab3aa41966f4034c99c124cdb46",
+   "c34584ceec64be446532118dd12853106880c76f",
    "support"
   ],
   "infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini": [
@@ -450940,23 +450243,23 @@
    "support"
   ],
   "infrastructure/metadata/infrastructure/testdriver/actions/eventOrder.html.ini": [
-   "bcd78da24446a9802755a13525be90e3fa0f43fc",
+   "894f4a11df81be8e164898ab2091e1cc64175290",
    "support"
   ],
   "infrastructure/metadata/infrastructure/testdriver/actions/multiDevice.html.ini": [
-   "04b97a7198c75ba941d315716483aad216e1a283",
+   "baf2116bad6b5cd258e07d29e2115c6aab11e099",
    "support"
   ],
   "infrastructure/metadata/infrastructure/testdriver/actions/pause.html.ini": [
-   "da47a2a0b6f7b7b019c3ae20e349f37c00b8e0bc",
+   "657d2a2492605557dcc62f02dca36364cf3007fd",
    "support"
   ],
   "infrastructure/metadata/infrastructure/testdriver/file_upload.sub.html.ini": [
-   "42c98117c58bbe7b9201d1883e0c1649898b5570",
+   "a39640b714b838a391f227ac58278ba991fbce66",
    "support"
   ],
   "infrastructure/metadata/infrastructure/testdriver/generate_test_report.html.ini": [
-   "0b01c8369a56495d0dbf07540efb9d7a8d979790",
+   "3e43b63af9545f2828efd2f7ce510bbc9a87bbfc",
    "support"
   ],
   "infrastructure/reftest-wait-ref.html": [
@@ -451292,7 +450595,7 @@
    "support"
   ],
   "interfaces/InputDeviceCapabilities.idl": [
-   "17f74b6855d4dfcf365e95bb01a537754669780b",
+   "cb5d2827e40554fdc43890bf52915c6a0efffbe3",
    "support"
   ],
   "interfaces/META.yml": [
@@ -451308,7 +450611,7 @@
    "support"
   ],
   "interfaces/SVG.idl": [
-   "8894f7b33363509d015a0d04e71f623805a19082",
+   "97871c2f023039788d7379bd1968f75dc3d3bee9",
    "support"
   ],
   "interfaces/WebCryptoAPI.idl": [
@@ -451332,7 +450635,7 @@
    "support"
   ],
   "interfaces/appmanifest.idl": [
-   "ddfe82dc34d31868ea044befa667a8c9987e5678",
+   "4a6425829f23da3cd1f78f74ff52a18635f7af7c",
    "support"
   ],
   "interfaces/audio-output.idl": [
@@ -451448,7 +450751,7 @@
    "support"
   ],
   "interfaces/dom.idl": [
-   "91157033c82335d4eb835907680210bb2141fdb4",
+   "03a0201b16fed569429c6cfc709063ed31681422",
    "support"
   ],
   "interfaces/element-timing.idl": [
@@ -451524,7 +450827,7 @@
    "support"
   ],
   "interfaces/html.idl": [
-   "98c633af212238cb3507dba7f7a53fee6299aab0",
+   "d856cd578aa0a0d15f09d0c95bebf48b0f95c0d6",
    "support"
   ],
   "interfaces/image-capture.idl": [
@@ -451788,7 +451091,7 @@
    "support"
   ],
   "interfaces/web-nfc.idl": [
-   "76ed6f0d959e1bfcc31325ce8aff657b06fa9de7",
+   "8c77339ae865fbe2a67dd6c1247c797a5bab058d",
    "support"
   ],
   "interfaces/web-share.idl": [
@@ -452115,10 +451418,6 @@
    "af150a3341e92bab51a8510d8ff83cf04f36e3d4",
    "support"
   ],
-  "keyboard-lock/idlharness.https.window-expected.txt": [
-   "4be7529d0fda1f769b6af63ec9592ac03ed75d20",
-   "support"
-  ],
   "keyboard-lock/idlharness.https.window.js": [
    "7a20d8b544dfdbf55f556410b28698a86f14061e",
    "testharness"
@@ -452159,10 +451458,6 @@
    "25f44dc0c06932dd392c81b750d943cd8722a2d4",
    "support"
   ],
-  "keyboard-map/idlharness.https.window-expected.txt": [
-   "f3cf5bd12b0806d118813d8fd0bc09dcf8f4d1b9",
-   "support"
-  ],
   "keyboard-map/idlharness.https.window.js": [
    "18421368f347cba955a46994e05fd3d49f0daa13",
    "testharness"
@@ -453603,6 +452898,14 @@
    "585aebaf393d85187b644a97f6e7f28535fa9095",
    "reftest"
   ],
+  "mathml/relations/html5-tree/css-inline-style-dynamic.tentative-ref.html": [
+   "13f0139273690992825daa68fcc0666679590490",
+   "support"
+  ],
+  "mathml/relations/html5-tree/css-inline-style-dynamic.tentative.html": [
+   "ca3e679491951d9a573a0f754491cf549a565953",
+   "reftest"
+  ],
   "mathml/relations/html5-tree/css-inline-style-interface.tentative.html": [
    "b82f98e28b70cbfbadf7f585c9a2c8a2612ba05f",
    "testharness"
@@ -453836,7 +453139,7 @@
    "testharness"
   ],
   "media-capabilities/idlharness.any-expected.txt": [
-   "687751cd4239c3406f3223861c167f63a8a54a8b",
+   "55528510878a994cb7e6a2dc7c70a629797e2f1c",
    "support"
   ],
   "media-capabilities/idlharness.any.js": [
@@ -453844,17 +453147,13 @@
    "testharness"
   ],
   "media-capabilities/idlharness.any.worker-expected.txt": [
-   "e9ec6a38c7531a5816e39a274379967a9a31c923",
+   "405b3bafbc0b7969ae696c5c245951a03e309819",
    "support"
   ],
   "media-playback-quality/META.yml": [
    "51b1b4e07ed2654d67d6e42083ed936e9d78848e",
    "support"
   ],
-  "media-playback-quality/idlharness.window-expected.txt": [
-   "c770047ee8097b4e6d324bd7b7a9ccb539c01286",
-   "support"
-  ],
   "media-playback-quality/idlharness.window.js": [
    "2444e30c704457353145c252dcd7adf3432d35f0",
    "testharness"
@@ -453928,7 +453227,7 @@
    "support"
   ],
   "media-source/idlharness.window-expected.txt": [
-   "ad9883c3e14fcac10f0f4ee964efaabdf547e2d0",
+   "21a2eec7cff59b5ef3acf27c6feb4b7956e063f9",
    "support"
   ],
   "media-source/idlharness.window.js": [
@@ -454584,7 +453883,7 @@
    "testharness"
   ],
   "mediacapture-fromelement/idlharness.window-expected.txt": [
-   "ef7061c2d7a52c26121f06984d0ce770fe82aaa5",
+   "e2149ce949cb54bf34daf519d0ece6f17d8d2565",
    "support"
   ],
   "mediacapture-fromelement/idlharness.window.js": [
@@ -454667,10 +453966,6 @@
    "2344bca9f337ad839356b92b22a5866991e0c561",
    "testharness"
   ],
-  "mediacapture-image/idlharness.window-expected.txt": [
-   "73dc3c527ca445ee70b882efb3ddae82bebbbbf2",
-   "support"
-  ],
   "mediacapture-image/idlharness.window.js": [
    "9d8f7eefb84dcc16534f1311c3b3c3d68e84572d",
    "testharness"
@@ -454740,7 +454035,7 @@
    "support"
   ],
   "mediacapture-record/idlharness.window-expected.txt": [
-   "adb6cc436c169f4b230d0ba23c9a9541d585ecf0",
+   "743e4725f34b4b2945b20d468da3f8569fb116b4",
    "support"
   ],
   "mediacapture-record/idlharness.window.js": [
@@ -454860,11 +454155,11 @@
    "testharness"
   ],
   "mediacapture-streams/MediaStream-removetrack.https-expected.txt": [
-   "09d4d669e9d914eac68d59681c299d189c5c6033",
+   "59a51268f3a3ede5d0d8c903f20e0bb7b5a83a68",
    "support"
   ],
   "mediacapture-streams/MediaStream-removetrack.https.html": [
-   "b934397914f39cee6bb9a52915959233c0ca84ca",
+   "1e9ebbcefa800d3a2662ea90f2f040a7d0554285",
    "testharness"
   ],
   "mediacapture-streams/MediaStream-supported-by-feature-policy.html": [
@@ -454931,10 +454226,6 @@
    "9437c51552abf1d3e72e9697c4d30ec47e508e29",
    "testharness"
   ],
-  "mediacapture-streams/idlharness.https.window-expected.txt": [
-   "506bdb634fcfc37db606ed75961ae1a5f7a2044d",
-   "support"
-  ],
   "mediacapture-streams/idlharness.https.window.js": [
    "594e1121b005ea3cd7ef1f30aa15fbed07dff1a4",
    "testharness"
@@ -454956,7 +454247,7 @@
    "support"
   ],
   "mediasession/idlharness.window-expected.txt": [
-   "45298ab216229186c2c2f331f4a703af278b23b9",
+   "96abe20c3383370374570be8156a3b6ef7eaa391",
    "support"
   ],
   "mediasession/idlharness.window.js": [
@@ -455475,6 +454766,10 @@
    "55a103adf0f29c615d40bc47943be1aec25c8f1e",
    "support"
   ],
+  "mixed-content/generic/test-case.sub.js": [
+   "d25986e5c26745976e13d2d683c3bece3ac2ccc0",
+   "support"
+  ],
   "mixed-content/generic/tools/__init__.py": [
    "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
    "support"
@@ -455484,7 +454779,7 @@
    "support"
   ],
   "mixed-content/generic/tools/generate.py": [
-   "9c911aa6c4102a411c1b134e33afeab69f600647",
+   "b80bc8df6bbebe969b88fd48d52abc7819ac9a3c",
    "support"
   ],
   "mixed-content/generic/tools/regenerate": [
@@ -456360,11 +455655,11 @@
    "testharness"
   ],
   "mixed-content/spec.src.json": [
-   "95dc2d318f54fcff89d5ad4fbd15656f32608288",
+   "e4844a8016b6f3242a1b8dc1110461cd39ff1e33",
    "support"
   ],
   "mixed-content/spec_json.js": [
-   "0868df220fb9fbe3eb5700f662c2321d708ea9ca",
+   "009a853077b5c37c6eeae9f87f0be75109c584fd",
    "support"
   ],
   "mixed-content/video-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [
@@ -457947,18 +457242,10 @@
    "6e5cf50f0b91407a34fb199a055ed8cc2a62e0d3",
    "support"
   ],
-  "netinfo/idlharness.any-expected.txt": [
-   "adb6cc436c169f4b230d0ba23c9a9541d585ecf0",
-   "support"
-  ],
   "netinfo/idlharness.any.js": [
    "96b114fdb56d38935c085b8fd5f4f4689dad9858",
    "testharness"
   ],
-  "netinfo/idlharness.any.worker-expected.txt": [
-   "adb6cc436c169f4b230d0ba23c9a9541d585ecf0",
-   "support"
-  ],
   "netinfo/netinfo-basics.html": [
    "7d08e12280a881508c862ebaaeaa40a099cf8e35",
    "testharness"
@@ -458143,10 +457430,6 @@
    "a4b288fa5976d035f40a673c7c7da465454ecfe6",
    "manual"
   ],
-  "notifications/idlharness.https.any-expected.txt": [
-   "9882a5f89efa8844bdcf291e8aa503ef06c25917",
-   "support"
-  ],
   "notifications/idlharness.https.any.js": [
    "0b9a71ba85ad09d6ab2068c70ff61c337eb0b1a0",
    "testharness"
@@ -458155,14 +457438,6 @@
    "9882a5f89efa8844bdcf291e8aa503ef06c25917",
    "support"
   ],
-  "notifications/idlharness.https.any.sharedworker-expected.txt": [
-   "9882a5f89efa8844bdcf291e8aa503ef06c25917",
-   "support"
-  ],
-  "notifications/idlharness.https.any.worker-expected.txt": [
-   "9882a5f89efa8844bdcf291e8aa503ef06c25917",
-   "support"
-  ],
   "notifications/instance-expected.txt": [
    "a464abfcf651c9296a251d854dcd8cbb562a8a94",
    "support"
@@ -464687,10 +463962,6 @@
    "0b7302e704018f2b412c0565b7f134bb08c0b9df",
    "manual"
   ],
-  "orientation-event/idlharness.https.window-expected.txt": [
-   "b177b51b54ec8f4372f8c94db70c75ade25a1c6a",
-   "support"
-  ],
   "orientation-event/idlharness.https.window.js": [
    "55cfed9276b480d7f70c616fa8d815f6ec925d66",
    "testharness"
@@ -464907,10 +464178,6 @@
    "7124712de3869cb417579d73d8751445b4704722",
    "support"
   ],
-  "page-visibility/idlharness.window-expected.txt": [
-   "2e3579516daad5814621550f8e064542ebb3d60c",
-   "support"
-  ],
   "page-visibility/idlharness.window.js": [
    "8cc2f83095c1ce7ad04a06406a0d79b876aee32b",
    "testharness"
@@ -465127,24 +464394,20 @@
    "56690d2b26ed671f773a16853463126e57735f77",
    "manual"
   ],
-  "payment-handler/idlharness.https.any-expected.txt": [
-   "c3a62e81e9ecfe253793b922b7a7a794c2040a67",
-   "support"
-  ],
   "payment-handler/idlharness.https.any.js": [
    "878114ec7ed878d3e754341cbffa138092fee129",
    "testharness"
   ],
   "payment-handler/idlharness.https.any.serviceworker-expected.txt": [
-   "c3a62e81e9ecfe253793b922b7a7a794c2040a67",
+   "d568ca4cfe48142036b7e347b2f840180af1a11f",
    "support"
   ],
   "payment-handler/idlharness.https.any.sharedworker-expected.txt": [
-   "c3a62e81e9ecfe253793b922b7a7a794c2040a67",
+   "9f716c5e598f7c177728f85dc5036c86e8750d4a",
    "support"
   ],
   "payment-handler/idlharness.https.any.worker-expected.txt": [
-   "c3a62e81e9ecfe253793b922b7a7a794c2040a67",
+   "9f716c5e598f7c177728f85dc5036c86e8750d4a",
    "support"
   ],
   "payment-handler/manifest.json": [
@@ -465416,7 +464679,7 @@
    "testharness"
   ],
   "payment-request/idlharness.https.window-expected.txt": [
-   "b8f707a9edd31abadadf8709425bd999266d93bf",
+   "62e7edfb041df6a6cd15e356cf642cd51bd7f8e2",
    "support"
   ],
   "payment-request/idlharness.https.window.js": [
@@ -465779,18 +465042,10 @@
    "b055f50f636848ceb7b1750484cc12328a121398",
    "support"
   ],
-  "permissions/idlharness.any-expected.txt": [
-   "11d4d700290e41f80997f8fc56722e8f8b987a42",
-   "support"
-  ],
   "permissions/idlharness.any.js": [
    "ff0a969badace39c3c4466c4528e30c21355e132",
    "testharness"
   ],
-  "permissions/idlharness.any.worker-expected.txt": [
-   "11d4d700290e41f80997f8fc56722e8f8b987a42",
-   "support"
-  ],
   "permissions/test-background-fetch-permission.html": [
    "c824ecf1d2b47630f8ebcef3ed42c8c908c8e9eb",
    "testharness"
@@ -465815,10 +465070,6 @@
    "c8d76f5244a41754e4a8a5b0c9fd01d056caee96",
    "testharness"
   ],
-  "picture-in-picture/idlharness.window-expected.txt": [
-   "fc66edd656f2770844bee4a44ed9ee4345d2f675",
-   "support"
-  ],
   "picture-in-picture/idlharness.window.js": [
    "31cd4a14177bccd277023a98ea5956e5f018e2e1",
    "testharness"
@@ -465875,13 +465126,13 @@
    "895a89109c6d75d287b8508f0d1a10fa3189a671",
    "testharness"
   ],
-  "pointerevents/extension/pointerevent_coalesced_events_attributes-manual-expected.txt": [
-   "e84ebdb4f0f0bf13d750e29669974d68c8317e8d",
+  "pointerevents/extension/pointerevent_coalesced_events_attributes-expected.txt": [
+   "e9ecdaa4bfe35a4e711c10c960d3d7124c389537",
    "support"
   ],
-  "pointerevents/extension/pointerevent_coalesced_events_attributes-manual.html": [
-   "89149468a5d23d494f6b09d4142b43c8d1d2289c",
-   "manual"
+  "pointerevents/extension/pointerevent_coalesced_events_attributes.html": [
+   "fa68124c829f46d24c4a2cda789890d27f11fe73",
+   "testharness"
   ],
   "pointerevents/extension/pointerevent_constructor.html": [
    "6971dcecfdebf3a113ef4ef9c9e8bd7bdf88ea02",
@@ -465896,7 +465147,7 @@
    "manual"
   ],
   "pointerevents/extension/pointerevent_pointerrawupdate.html": [
-   "0d317010621d005b32631ad26a4f3b3ca08b181a",
+   "0f46583c9b5d83517a3028bfa735072ec306cccd",
    "testharness"
   ],
   "pointerevents/extension/pointerevent_pointerrawupdate_in_pointerlock-manual.html": [
@@ -465932,7 +465183,7 @@
    "manual"
   ],
   "pointerevents/idlharness.window-expected.txt": [
-   "fbd91e365b8b8761637a7425200a69121a44e935",
+   "e0ed9cea2b41d3770ace3e16d0c64b05f03aae82",
    "support"
   ],
   "pointerevents/idlharness.window.js": [
@@ -465968,7 +465219,7 @@
    "testharness"
   ],
   "pointerevents/pointerevent_boundary_events_in_capturing.html": [
-   "1ed26eb6dcfcd728440a0eae5ddede45fe9a8dcf",
+   "3d2ff7079b82decb8779ed6c5040180de19c963f",
    "testharness"
   ],
   "pointerevents/pointerevent_capture_mouse.html": [
@@ -465984,7 +465235,7 @@
    "testharness"
   ],
   "pointerevents/pointerevent_click_during_capture.html": [
-   "7f63283b61a4bedac614914b3fda14364abd14ad",
+   "2acd5dc1287bb6b47a37b9fb23821fa1ebbbd517",
    "testharness"
   ],
   "pointerevents/pointerevent_constructor.html": [
@@ -465992,11 +465243,11 @@
    "testharness"
   ],
   "pointerevents/pointerevent_disabled_form_control.html": [
-   "cf44677c759e6e2d3278ddefdc8deac7e11ff69b",
+   "13f6e31cb41c5fe6cdb8eee6928174debe06a5ed",
    "testharness"
   ],
   "pointerevents/pointerevent_element_haspointercapture.html": [
-   "c9690a688c5cbf5c5333d63c1aae2f856aaa1af0",
+   "3db6acf8e57b0524c4b55f58faa1761927f41499",
    "testharness"
   ],
   "pointerevents/pointerevent_fractional_coordinates-manual.html": [
@@ -466020,7 +465271,7 @@
    "testharness"
   ],
   "pointerevents/pointerevent_pointercancel_touch.html": [
-   "a645033a247437604d6b1c4614079c9193c28e9d",
+   "b09ddd740a6d6775806731c8e069a4674e3b12e3",
    "testharness"
   ],
   "pointerevents/pointerevent_pointercapture_in_frame-expected.txt": [
@@ -466032,11 +465283,11 @@
    "testharness"
   ],
   "pointerevents/pointerevent_pointerenter_does_not_bubble.html": [
-   "7d38de7446938de3715b19f4585d747a18912d77",
+   "a8153c256fcb2f88c946b0b68123ff01799a3516",
    "testharness"
   ],
   "pointerevents/pointerevent_pointerleave_after_pointercancel_touch.html": [
-   "555e5feb010aa3277c454e8396d2b976f552dbb8",
+   "8425667a104a3c783285a868196cbb2b255b6f20",
    "testharness"
   ],
   "pointerevents/pointerevent_pointerleave_descendant_over.html": [
@@ -466044,7 +465295,7 @@
    "testharness"
   ],
   "pointerevents/pointerevent_pointerleave_descendants.html": [
-   "fe121a8409d802f26e97bd6c5f788397d7267aa2",
+   "6133b05c649fcc6ebbe6388b30777e2e27eb3e64",
    "testharness"
   ],
   "pointerevents/pointerevent_pointerleave_does_not_bubble.html": [
@@ -466056,23 +465307,23 @@
    "manual"
   ],
   "pointerevents/pointerevent_pointermove.html": [
-   "4b168439a4ee1455e5a5960b48a0c3192e767edf",
+   "c7e798b087eaf41874e526740cd880b746f6c499",
    "testharness"
   ],
   "pointerevents/pointerevent_pointermove_isprimary_same_as_pointerdown.html": [
-   "46bfe40b69e0d3726ef522870e0b1172fa6d50eb",
+   "3073076a49fde1d926548a2d076176b50fc8ecc6",
    "testharness"
   ],
   "pointerevents/pointerevent_pointermove_on_chorded_mouse_button.html": [
-   "f65512832c8fa78a461562a41755e617159dc521",
+   "06bb5f0e8951886d66d947053e4f54086973861c",
    "testharness"
   ],
   "pointerevents/pointerevent_pointerout_after_pointercancel_touch.html": [
-   "13e7ffaebc1a80ba7bef12d32088aca1c250cde2",
+   "782289384ab3cdb6257c142eb9ff9da674d0d8bf",
    "testharness"
   ],
   "pointerevents/pointerevent_pointerout_pen.html": [
-   "a718468c49a965eefee134cc6e6ec4051042cb49",
+   "210055e6539a369461aa30e609489310891570fd",
    "testharness"
   ],
   "pointerevents/pointerevent_pointerout_received_once.html": [
@@ -466080,7 +465331,7 @@
    "testharness"
   ],
   "pointerevents/pointerevent_releasepointercapture_events_to_original_target.html": [
-   "12e31cdb234d1bbb5cc43b436415e44b12daaef2",
+   "6f6d30e16e1c5376a1a5b57c0c65bc683e075334",
    "testharness"
   ],
   "pointerevents/pointerevent_releasepointercapture_invalid_pointerid.html": [
@@ -466088,7 +465339,7 @@
    "testharness"
   ],
   "pointerevents/pointerevent_releasepointercapture_onpointercancel_touch.html": [
-   "493236150dd32d0c6713b5b2dff123d1eefd5f7b",
+   "c54ee2a9d4ebb242b33f89c2b436753dfff6dbbc",
    "testharness"
   ],
   "pointerevents/pointerevent_releasepointercapture_onpointerup_mouse.html": [
@@ -466104,7 +465355,7 @@
    "testharness"
   ],
   "pointerevents/pointerevent_sequence_at_implicit_release_on_click.html": [
-   "0c6e2c532f9cc5ae410f6bd399340c55e937859d",
+   "4b424f27643a95f4170da5d7fb794ca3dbef1ce4",
    "testharness"
   ],
   "pointerevents/pointerevent_sequence_at_implicit_release_on_drag.html": [
@@ -466116,7 +465367,7 @@
    "testharness"
   ],
   "pointerevents/pointerevent_setpointercapture_inactive_button_mouse.html": [
-   "7d0b00d47bc276dbba5ae3076bfbed0a912ea327",
+   "fa9a5fb3c5b8ae7df867159aab8fc3ad7a6c77e2",
    "testharness"
   ],
   "pointerevents/pointerevent_setpointercapture_invalid_pointerid.html": [
@@ -466136,11 +465387,11 @@
    "support"
   ],
   "pointerevents/pointerevent_suppress_compat_events_on_click.html": [
-   "341a82d97a8e0ff4ffbe2d87b817fce807dd39b6",
+   "2f99e7a976ac8006cff25b9cde1ee1e29b6a14d1",
    "testharness"
   ],
   "pointerevents/pointerevent_suppress_compat_events_on_drag_mouse.html": [
-   "6ed75ab4cbcda3c673b3328a826019bdade4db5d",
+   "6ed19c24678aa03c82633af7aa146fba80232c0b",
    "testharness"
   ],
   "pointerevents/pointerevent_touch-action-auto-css_touch.html": [
@@ -466168,7 +465419,7 @@
    "testharness"
   ],
   "pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch.html": [
-   "704b4188979f8d39e6812b5b4a0e8900d62d7e6f",
+   "99677313de57238767c32302a6d81d708a459e0e",
    "testharness"
   ],
   "pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch.html": [
@@ -466295,10 +465546,6 @@
    "8c43cf6dafcf9ac9e9a9203e266472f7eecd47e5",
    "testharness"
   ],
-  "pointerlock/idlharness.window-expected.txt": [
-   "a00760684d52c0e091c9ba64fba5d519199477ed",
-   "support"
-  ],
   "pointerlock/idlharness.window.js": [
    "f176343a487de4d71bda196657c7958ac62f1553",
    "testharness"
@@ -466903,10 +466150,6 @@
    "daa0a0ff14dac884abef2a91c4fada1f262d6385",
    "testharness"
   ],
-  "presentation-api/controlling-ua/idlharness.https-expected.txt": [
-   "ab746150dc58c8680373909b2df321cf052f6133",
-   "support"
-  ],
   "presentation-api/controlling-ua/idlharness.https.html": [
    "52aa8c55328c7b9226581779793955b62b4d5126",
    "testharness"
@@ -467095,22 +466338,10 @@
    "2f5a866d940363a9e514590d496e2fec4f3a3440",
    "support"
   ],
-  "push-api/idlharness.https.any-expected.txt": [
-   "a4772fd012417cdc02e5ef58e693b45818920a28",
-   "support"
-  ],
   "push-api/idlharness.https.any.js": [
    "16c0826a7592a4636caa70c53ec7a6bfb0f7b1c3",
    "testharness"
   ],
-  "push-api/idlharness.https.any.serviceworker-expected.txt": [
-   "a4772fd012417cdc02e5ef58e693b45818920a28",
-   "support"
-  ],
-  "push-api/idlharness.https.any.sharedworker-expected.txt": [
-   "a4772fd012417cdc02e5ef58e693b45818920a28",
-   "support"
-  ],
   "push-api/idlharness.https.any.worker-expected.txt": [
    "a4772fd012417cdc02e5ef58e693b45818920a28",
    "support"
@@ -467456,7 +466687,7 @@
    "support"
   ],
   "referrer-policy/generic/referrer-policy-test-case.sub.js": [
-   "d10a03212bd23dd31e568685c68c73067047a3cb",
+   "4722b0b1b8b373d4bc9ae4c7c41912e693dd9d1b",
    "support"
   ],
   "referrer-policy/generic/sandboxed-iframe-with-opaque-origin.html": [
@@ -467503,6 +466734,10 @@
    "8afbf1db237130d6c8258b755ceac5258f6500fa",
    "testharness"
   ],
+  "referrer-policy/generic/test-case.sub.js": [
+   "356f8054f6eca86f7e6f651ab1040ad0c39994a9",
+   "support"
+  ],
   "referrer-policy/generic/tools/__init__.py": [
    "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
    "support"
@@ -467512,7 +466747,7 @@
    "support"
   ],
   "referrer-policy/generic/tools/generate.py": [
-   "ba1e963787bef98bdd0a3eb2016296995f631f97",
+   "480603b9bd870d3e1abd577de31f3f6192caa2e8",
    "support"
   ],
   "referrer-policy/generic/tools/regenerate": [
@@ -472364,11 +471599,11 @@
    "testharness"
   ],
   "referrer-policy/spec.src.json": [
-   "f69c289526ab79acdebc872725c00a847685591a",
+   "ab02dcc1b16e0621ef241b375654a3cd41345e31",
    "support"
   ],
   "referrer-policy/spec_json.js": [
-   "346a6218f9e278c550d8829e9089a7da4d8be247",
+   "1b507dbcf14ed32abdf0953f0e0abdaecd73efe9",
    "support"
   ],
   "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/a-tag/no-redirect/cross-insecure.http.html": [
@@ -476119,10 +475354,6 @@
    "3c21f017b48293f778eca1061a7215187fda9eac",
    "testharness"
   ],
-  "remote-playback/idlharness.window-expected.txt": [
-   "e4b69030cf37936290f54af068a7f90dcf16e8a3",
-   "support"
-  ],
   "remote-playback/idlharness.window.js": [
    "73bc998f7433be4ea77fc18a62c7445d9688d907",
    "testharness"
@@ -476219,10 +475450,6 @@
    "9fb77d65dc5163988c922583db9d717312cef53d",
    "testharness"
   ],
-  "requestidlecallback/idlharness.window-expected.txt": [
-   "f53fe3261c7d78c641d9c285f00dc86ae859722d",
-   "support"
-  ],
   "requestidlecallback/idlharness.window.js": [
    "69cd5a49b0432a65db9da267248a6f97d93cd0b9",
    "testharness"
@@ -476371,18 +475598,10 @@
    "8a1c433a5c3a7b79d92b797ee1057c624d4a9866",
    "testharness"
   ],
-  "resource-timing/idlharness.any-expected.txt": [
-   "eda8abd670b17928ef4be29284f16ca438173801",
-   "support"
-  ],
   "resource-timing/idlharness.any.js": [
    "a7542f191c10ea7b42110b5fc80e7abf43174bb5",
    "testharness"
   ],
-  "resource-timing/idlharness.any.worker-expected.txt": [
-   "eda8abd670b17928ef4be29284f16ca438173801",
-   "support"
-  ],
   "resource-timing/nested-context-navigations-embed.html": [
    "bbba46c50edf21f50b49099c779dd5a8792faa0f",
    "testharness"
@@ -477064,7 +476283,7 @@
    "support"
   ],
   "resources/webidl2/lib/webidl2.js": [
-   "98216ab750dea05d0282287b597b2c2c96719223",
+   "c60a456c3241655d05a7e40f82b19d8735d017d4",
    "support"
   ],
   "resources/webidl2/lib/webidl2.js.headers": [
@@ -477099,10 +476318,6 @@
    "d510bc42089b8b386b9469c3ce99ba810ae37b63",
    "testharness"
   ],
-  "screen-capture/idlharness.https.window-expected.txt": [
-   "e75bd5fe82361a46a8010f4cb46315cc623f54c4",
-   "support"
-  ],
   "screen-capture/idlharness.https.window.js": [
    "527565ea9632e69a6de62efd2be3729c974b93e4",
    "testharness"
@@ -477127,10 +476342,6 @@
    "51b41e19357141d5bf9699d41f8968378dcc8956",
    "testharness"
   ],
-  "screen-orientation/idlharness.window-expected.txt": [
-   "5d4d3494ef645e6e3db14b98c89d5ed7436d1007",
-   "support"
-  ],
   "screen-orientation/idlharness.window.js": [
    "115f6ccb1e393586f4076884c01443d4944bb413",
    "testharness"
@@ -477195,6 +476406,10 @@
    "e1b50f670105f3a05dacd3518d62770685121c67",
    "support"
   ],
+  "screen_enumeration/requestDisplays.tentative.https.any.js": [
+   "e2a5bc427deb96275a1441141d53e2ffc7f8cd99",
+   "testharness"
+  ],
   "scroll-animations/META.yml": [
    "c53f1f432fe1ec2887e30af396a1f1574b76b95d",
    "support"
@@ -477299,26 +476514,10 @@
    "e7c78383a8266bd160dcfc9747b69ebe56530295",
    "testharness"
   ],
-  "secure-contexts/idlharness.any-expected.txt": [
-   "c717e8bd63fd15f780df7cf75837f935420aa970",
-   "support"
-  ],
   "secure-contexts/idlharness.any.js": [
    "5bd1d44d6f7d9c299ff41c241802652924ce77b2",
    "testharness"
   ],
-  "secure-contexts/idlharness.any.serviceworker-expected.txt": [
-   "c717e8bd63fd15f780df7cf75837f935420aa970",
-   "support"
-  ],
-  "secure-contexts/idlharness.any.sharedworker-expected.txt": [
-   "c717e8bd63fd15f780df7cf75837f935420aa970",
-   "support"
-  ],
-  "secure-contexts/idlharness.any.worker-expected.txt": [
-   "c717e8bd63fd15f780df7cf75837f935420aa970",
-   "support"
-  ],
   "secure-contexts/postMessage-helper.html": [
    "8971c86b279b3134ee56f74c5414cc3a207e3d41",
    "support"
@@ -477527,10 +476726,6 @@
    "ea119f2fc40c11884f7602a685c1094282884214",
    "testharness"
   ],
-  "selection/idlharness.window-expected.txt": [
-   "7a270e037f7cab1963ced799f38f9ba714754b18",
-   "support"
-  ],
   "selection/idlharness.window.js": [
    "543fcb3eff5bb4fd0c51c7e4cc1e5338a0b74cbc",
    "testharness"
@@ -478812,7 +478007,7 @@
    "testharness"
   ],
   "service-workers/service-worker/activation.https.html": [
-   "5755758e5716dbc608e7e773bf9b83ab3f2f7e91",
+   "007ecaad76c95935dd57470c660575305dc6bae1",
    "testharness"
   ],
   "service-workers/service-worker/active.https.html": [
@@ -478952,7 +478147,7 @@
    "support"
   ],
   "service-workers/service-worker/detached-context.https.html": [
-   "5ae4de8cc81e0c3650eaaf6b5656193d4a2cf8b0",
+   "f96370d201000d20a950166dccf2caf72bd473c1",
    "testharness"
   ],
   "service-workers/service-worker/embed-and-object-are-not-intercepted.https.html": [
@@ -479260,17 +478455,13 @@
    "testharness"
   ],
   "service-workers/service-worker/interfaces-sw.https-expected.txt": [
-   "401cb4a88b25ded633f719f8aa431fa6f34e51f3",
+   "ea3fd1a0adbd367cde459749a2c364a403571345",
    "support"
   ],
   "service-workers/service-worker/interfaces-sw.https.html": [
    "7bff6ac107e3de0ae1207f477b9f940ad404cd21",
    "testharness"
   ],
-  "service-workers/service-worker/interfaces-window.https-expected.txt": [
-   "9d94267331002c05ba5e732a584e129098263c97",
-   "support"
-  ],
   "service-workers/service-worker/interfaces-window.https.html": [
    "cc3bdaf11fc7bc174eef555a60263e192efdc539",
    "testharness"
@@ -482227,20 +481418,12 @@
    "7cd98964c24979d427b51c095e178b0622efa971",
    "support"
   ],
-  "sms/idlharness.https.any-expected.txt": [
-   "df3b8715570ccee790d32b2d90d631ee6b39d2d5",
-   "support"
-  ],
   "sms/idlharness.https.any.js": [
    "0c31744937c6dbc9b292586ab8ce5f10b268f3ed",
    "testharness"
   ],
-  "sms/idlharness.https.any.worker-expected.txt": [
-   "df3b8715570ccee790d32b2d90d631ee6b39d2d5",
-   "support"
-  ],
   "sms/interceptor.https.html": [
-   "86b21922284f946a16bcd295a87851bee7569f9a",
+   "39b749b6d32c32a3254043067deb4dc695a0ad4d",
    "testharness"
   ],
   "sms/resources/iframe.html": [
@@ -482252,11 +481435,11 @@
    "testharness"
   ],
   "sms/sms_provider.js": [
-   "4506135551c771d056dc202f06a4c00a7c31089f",
+   "11fd8466e986bd9e723791ea6d06f507a17e1247",
    "support"
   ],
   "sms/sms_receiver.idl": [
-   "b71b6a3e0db2b74b127e4332cd83f218bb39d6aa",
+   "64048523f901f8509e85e4dc1ddc1f7c59ab3489",
    "support"
   ],
   "speech-api/META.yml": [
@@ -482455,18 +481638,10 @@
    "fbc746a30b6dfa6d00fc2db747c78ec09a7beefc",
    "support"
   ],
-  "storage/idlharness.https.any-expected.txt": [
-   "adb6cc436c169f4b230d0ba23c9a9541d585ecf0",
-   "support"
-  ],
   "storage/idlharness.https.any.js": [
    "0ce4d5a0c8fccf07f6908a7a9ac9ac5ab5df6624",
    "testharness"
   ],
-  "storage/idlharness.https.any.worker-expected.txt": [
-   "adb6cc436c169f4b230d0ba23c9a9541d585ecf0",
-   "support"
-  ],
   "storage/opaque-origin.https.window.js": [
    "3e101dde6759b2b8c379d6adc95190742328630f",
    "testharness"
@@ -483227,10 +482402,6 @@
    "de1416372cd4431147ad40206c54e5ecf5273aec",
    "support"
   ],
-  "subresource-integrity/idlharness.window-expected.txt": [
-   "66572cedf0b6c893d8e478943efdbb5132d1445b",
-   "support"
-  ],
   "subresource-integrity/idlharness.window.js": [
    "d2997e562fadfd208d202ce3d60d11cd937ea779",
    "testharness"
@@ -484192,7 +483363,7 @@
    "testharness"
   ],
   "svg/idlharness.window-expected.txt": [
-   "5b85a02603d0bc4ca1b7caa03eb2b471ff71d5c8",
+   "85b399ff6c594f38f4fdc4b71220fce907f4fb5e",
    "support"
   ],
   "svg/idlharness.window.js": [
@@ -485291,6 +484462,18 @@
    "9c1fd49083ae55b5a6743c9da4b4ecab46683b2c",
    "reftest"
   ],
+  "svg/struct/scripted/autofocus-attribute-expected.txt": [
+   "653e39d7191c8b377d156bd403be4a873a5f0cac",
+   "support"
+  ],
+  "svg/struct/scripted/autofocus-attribute.svg": [
+   "d8f25741ee40cc488d504065548342c095cbc4c3",
+   "testharness"
+  ],
+  "svg/struct/scripted/blank.svg": [
+   "9e560bdc5feddc1ae76e3950e89efc1c31dc9269",
+   "support"
+  ],
   "svg/styling/render/transform-box-ref.svg": [
    "b41f8bb2a7baac19d907c378a0e269b9a8e914fb",
    "support"
@@ -490900,7 +490083,7 @@
    "testharness"
   ],
   "touch-events/idlharness.window-expected.txt": [
-   "c498dc5719712365708121e57e0706789d9a792e",
+   "10ad2905fd59718ccc4b2d2ab618bab978894250",
    "support"
   ],
   "touch-events/idlharness.window.js": [
@@ -491072,7 +490255,7 @@
    "testharness"
   ],
   "trusted-types/block-eval.tentative.html": [
-   "e1a6a69accd1fa8ddaddd1c49970755a275bd8eb",
+   "cd4f5827c5331318a86dc71a42bc9eb037eb5b95",
    "testharness"
   ],
   "trusted-types/block-string-assignment-to-DOMParser-parseFromString.tentative.html": [
@@ -491140,13 +490323,9 @@
    "testharness"
   ],
   "trusted-types/eval-with-permissive-csp.tentative.html": [
-   "68d119a520121f2c5a3f88028abcf657799b9123",
+   "25b4948c039c68c425e22f5e30ae4338327b6ce2",
    "testharness"
   ],
-  "trusted-types/idlharness.window-expected.txt": [
-   "f306478a3e85797257d5554617277022f9435877",
-   "support"
-  ],
   "trusted-types/idlharness.window.js": [
    "de13697764ed487060de3dd425cd39cba73ff13b",
    "testharness"
@@ -491167,6 +490346,30 @@
    "4079f7e9c7933cf9ee195fe0e7a54e0f56f184ab",
    "support"
   ],
+  "trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html": [
+   "f60bb9fe5140297b324e7e618c6c0230890feb30",
+   "testharness"
+  ],
+  "trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html.headers": [
+   "4bc0bd3c1ab29d551a5e9988bde5a9dc8f6fa1a7",
+   "support"
+  ],
+  "trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html": [
+   "1fb65459468d96f86e4a467aa8da2f3be489ae31",
+   "testharness"
+  ],
+  "trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html.headers": [
+   "ba26c77fbf498385424205b8bff0c404f0f5357b",
+   "support"
+  ],
+  "trusted-types/trusted-types-eval-reporting.tentative.https.html": [
+   "309873cb1f8028ecb071ec5db3dfda62337e6b43",
+   "testharness"
+  ],
+  "trusted-types/trusted-types-eval-reporting.tentative.https.html.headers": [
+   "2e935f73a48c42346b6352fa6cd16d12294eebd8",
+   "support"
+  ],
   "trusted-types/trusted-types-report-only.tentative.https.html": [
    "f33183b4906975f03ebb3f3a21adb63839c89adb",
    "testharness"
@@ -492187,10 +491390,6 @@
    "64e6e9b548233809b217c03e2709f7fbf12fdce9",
    "manual"
   ],
-  "vibration/idlharness.window-expected.txt": [
-   "23bf13b5c3cac13adc17d66eeadb98b35218132d",
-   "support"
-  ],
   "vibration/idlharness.window.js": [
    "fbe14daa6119a8213ca58e2233345af015353a1b",
    "testharness"
@@ -492339,18 +491538,10 @@
    "776c59be658f749fcdd0a8ea6a92ac82c88d344e",
    "support"
   ],
-  "wake-lock/idlharness.https.any-expected.txt": [
-   "adb6cc436c169f4b230d0ba23c9a9541d585ecf0",
-   "support"
-  ],
   "wake-lock/idlharness.https.any.js": [
    "2ad9980dae53727ea328e942dead029a936875cc",
    "testharness"
   ],
-  "wake-lock/idlharness.https.any.worker-expected.txt": [
-   "adb6cc436c169f4b230d0ba23c9a9541d585ecf0",
-   "support"
-  ],
   "wake-lock/resources/page1.html": [
    "7fc080d380c4bd46dfb011910e570ee412561b92",
    "support"
@@ -492872,7 +492063,7 @@
    "testharness"
   ],
   "web-animations/animation-model/animation-types/addition-per-property-expected.txt": [
-   "260c457085f23f4a14491349dbddb58d8878a8b3",
+   "bc5e8c857560e9a7aa498c48c66b5e8e49a86dfc",
    "support"
   ],
   "web-animations/animation-model/animation-types/addition-per-property.html": [
@@ -492884,7 +492075,7 @@
    "testharness"
   ],
   "web-animations/animation-model/animation-types/interpolation-per-property-expected.txt": [
-   "c611fb484228cdc280bc1e24e5b47aa2b81b54c2",
+   "c62109d89a32329e396b34c89a7b2dc6f532f86a",
    "support"
   ],
   "web-animations/animation-model/animation-types/interpolation-per-property.html": [
@@ -493008,7 +492199,7 @@
    "testharness"
   ],
   "web-animations/interfaces/Animation/finished-expected.txt": [
-   "9f0b8e60003c33ba7fe9b376ce4beb83de25aa19",
+   "32a633f961b42cf942501d2ee95dc1b564b2c4d7",
    "support"
   ],
   "web-animations/interfaces/Animation/finished.html": [
@@ -493020,7 +492211,7 @@
    "testharness"
   ],
   "web-animations/interfaces/Animation/idlharness.window-expected.txt": [
-   "91e59deaa04e60929e15e3b4802f191b9582e9d8",
+   "75523c9b443df97e04b0b5359747a982d0773617",
    "support"
   ],
   "web-animations/interfaces/Animation/idlharness.window.js": [
@@ -493128,7 +492319,7 @@
    "testharness"
   ],
   "web-animations/interfaces/KeyframeEffect/idlharness.window-expected.txt": [
-   "66fc2d274b8b41653373219436e2ba982ae1f565",
+   "8c8f9cb96b8da5a3518e8f0305125c327f6fe392",
    "support"
   ],
   "web-animations/interfaces/KeyframeEffect/idlharness.window.js": [
@@ -493239,6 +492430,10 @@
    "779bee184b8dbde227db6ae72dc7ff83a79c4176",
    "testharness"
   ],
+  "web-animations/timing-model/animations/pausing-an-animation-expected.txt": [
+   "7872703ef81da2e10b78ca1295553693a7d3e111",
+   "support"
+  ],
   "web-animations/timing-model/animations/pausing-an-animation.html": [
    "bcec609d14206567ee25855f6dd7e684c69485ba",
    "testharness"
@@ -493251,6 +492446,10 @@
    "1477261e6bc6227598b4e80475a66aa95fe5d15c",
    "testharness"
   ],
+  "web-animations/timing-model/animations/reversing-an-animation-expected.txt": [
+   "227a28acd3e8b45d7a5b3856a62705988c059912",
+   "support"
+  ],
   "web-animations/timing-model/animations/reversing-an-animation.html": [
    "75fd9876c0495a8bd0096d2f976a920d3d7e5a05",
    "testharness"
@@ -493267,10 +492466,18 @@
    "9d07d53df46164d53b1a3c8f4a10787608c5f014",
    "testharness"
   ],
+  "web-animations/timing-model/animations/setting-the-start-time-of-an-animation-expected.txt": [
+   "5677028f1a13bc273443b1d8f1c989cf7f2ded47",
+   "support"
+  ],
   "web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html": [
    "a1727994bdb9b8da10bfdd36baa3d8e0ccc4ef1d",
    "testharness"
   ],
+  "web-animations/timing-model/animations/setting-the-target-effect-of-an-animation-expected.txt": [
+   "5f0650b0b820adec0439a5b9429974dd15a74dd4",
+   "support"
+  ],
   "web-animations/timing-model/animations/setting-the-target-effect-of-an-animation.html": [
    "60ea1850fc5c15ea91c075d8929d8a3dce2b4f89",
    "testharness"
@@ -493343,26 +492550,10 @@
    "7fc4c7354054c08a70e6b1ad050958c0303af5fa",
    "testharness"
   ],
-  "web-locks/idlharness.tentative.https.any-expected.txt": [
-   "3bb4ac9019df3d7c6a4a90d0be71fb27aefe6873",
-   "support"
-  ],
   "web-locks/idlharness.tentative.https.any.js": [
    "168f57328b839ed7f9dbf17e98bbbd5deedc146a",
    "testharness"
   ],
-  "web-locks/idlharness.tentative.https.any.serviceworker-expected.txt": [
-   "3bb4ac9019df3d7c6a4a90d0be71fb27aefe6873",
-   "support"
-  ],
-  "web-locks/idlharness.tentative.https.any.sharedworker-expected.txt": [
-   "3bb4ac9019df3d7c6a4a90d0be71fb27aefe6873",
-   "support"
-  ],
-  "web-locks/idlharness.tentative.https.any.worker-expected.txt": [
-   "3bb4ac9019df3d7c6a4a90d0be71fb27aefe6873",
-   "support"
-  ],
   "web-locks/ifAvailable.tentative.https.any.js": [
    "cfd1004000acd561ccac59599f3a5ee482cf551e",
    "testharness"
@@ -493488,7 +492679,7 @@
    "support"
   ],
   "web-nfc/idlharness.https.window-expected.txt": [
-   "adb6cc436c169f4b230d0ba23c9a9541d585ecf0",
+   "4abf6fc50bdb4d54cf177138645773909320f0a8",
    "support"
   ],
   "web-nfc/idlharness.https.window.js": [
@@ -493523,10 +492714,6 @@
    "bb263e542559d8676c2dd94b7521ecf345dc712e",
    "testharness"
   ],
-  "web-share/idlharness.https.window-expected.txt": [
-   "23bf13b5c3cac13adc17d66eeadb98b35218132d",
-   "support"
-  ],
   "web-share/idlharness.https.window.js": [
    "1520387caf133dc43c5f036bbf24a99ef73a7f3c",
    "testharness"
@@ -493636,7 +492823,7 @@
    "testharness"
   ],
   "webaudio/idlharness.https.window-expected.txt": [
-   "adb6cc436c169f4b230d0ba23c9a9541d585ecf0",
+   "29a7407d0cea2b8823bd4b0dc7251190a2c1432f",
    "support"
   ],
   "webaudio/idlharness.https.window.js": [
@@ -494344,7 +493531,7 @@
    "testharness"
   ],
   "webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html": [
-   "935ceeb715edd2ffdeb7979d6824736fa82b6d2f",
+   "97684b2131277f61095c414230f76f06db85d06e",
    "testharness"
   ],
   "webaudio/the-audio-api/the-convolvernode-interface/realtime-conv.html": [
@@ -496316,7 +495503,7 @@
    "support"
   ],
   "webmidi/idlharness.https.window-expected.txt": [
-   "23bf13b5c3cac13adc17d66eeadb98b35218132d",
+   "5cc4ad6b48f1b3969b29d101ff52f7543ceb8e7e",
    "support"
   ],
   "webmidi/idlharness.https.window.js": [
@@ -496652,7 +495839,7 @@
    "testharness"
   ],
   "webrtc/RTCPeerConnection-iceConnectionState.https.html": [
-   "c0ce25eb76bfe3464863ec42b31842cfbb88b8de",
+   "8e853e4acbc1eee978ce6b482f514b2ac39a1994",
    "testharness"
   ],
   "webrtc/RTCPeerConnection-iceGatheringState-expected.txt": [
@@ -497032,7 +496219,7 @@
    "testharness"
   ],
   "webrtc/idlharness.https.window-expected.txt": [
-   "ff203f90942491b4108a14180737aa59a55c4e12",
+   "e6a1d72ea93e391dc0fbb9955bc2fa46425e588a",
    "support"
   ],
   "webrtc/idlharness.https.window.js": [
@@ -498363,10 +497550,6 @@
    "8070938baf26dbd0bfdc46ef60082cfbb30f5a8e",
    "support"
   ],
-  "webstorage/idlharness.window-expected.txt": [
-   "adb6cc436c169f4b230d0ba23c9a9541d585ecf0",
-   "support"
-  ],
   "webstorage/idlharness.window.js": [
    "177eb607f7b7774a20e0cde57032720b8efde520",
    "testharness"
@@ -498552,7 +497735,7 @@
    "support"
   ],
   "webusb/idlharness.https.any-expected.txt": [
-   "11d4d700290e41f80997f8fc56722e8f8b987a42",
+   "506f932711233d182a849c6b98d3441611e8ac0d",
    "support"
   ],
   "webusb/idlharness.https.any.js": [
@@ -498560,7 +497743,7 @@
    "testharness"
   ],
   "webusb/idlharness.https.any.worker-expected.txt": [
-   "11d4d700290e41f80997f8fc56722e8f8b987a42",
+   "d097c0df8df5b4c542ad31c964c0c42018c1ac2a",
    "support"
   ],
   "webusb/insecure-context.any.js": [
@@ -498892,7 +498075,7 @@
    "testharness"
   ],
   "webvtt/api/idlharness.window-expected.txt": [
-   "adb6cc436c169f4b230d0ba23c9a9541d585ecf0",
+   "194df34ff569a2d0c967d677a43cf84d234f7d3d",
    "support"
   ],
   "webvtt/api/idlharness.window.js": [
@@ -501851,10 +501034,6 @@
    "c8545999080892701858b425d8141ae0d3b3c469",
    "testharness"
   ],
-  "webxr/idlharness.https.window-expected.txt": [
-   "6def90d49d69815b18972681042946ebdbee9a21",
-   "support"
-  ],
   "webxr/idlharness.https.window.js": [
    "3e54e367787cb95dada398790fe23b10174df29f",
    "testharness"
@@ -504119,10 +503298,6 @@
    "98b56d36250f2f02a38e6fb066b9abbe7b0cf902",
    "testharness"
   ],
-  "worklets/animation-worklet-referrer.https-expected.txt": [
-   "d605c7563fa39501b27a0d574fc611c9a2084356",
-   "support"
-  ],
   "worklets/animation-worklet-referrer.https.html": [
    "494e06a8472795016e2ee346397d7c227477809c",
    "testharness"
@@ -504147,10 +503322,6 @@
    "cff063a4361bd0244ee7a7a352be849f1b7118a6",
    "testharness"
   ],
-  "worklets/audio-worklet-referrer.https-expected.txt": [
-   "d605c7563fa39501b27a0d574fc611c9a2084356",
-   "support"
-  ],
   "worklets/audio-worklet-referrer.https.html": [
    "f258cd5a452d57002d041211cb44ee6f27f0b3aa",
    "testharness"
@@ -504179,10 +503350,6 @@
    "a2f57c221b7f6f020dda72bb9b2395cfd05d5c03",
    "testharness"
   ],
-  "worklets/layout-worklet-referrer.https-expected.txt": [
-   "d605c7563fa39501b27a0d574fc611c9a2084356",
-   "support"
-  ],
   "worklets/layout-worklet-referrer.https.html": [
    "cb383a935a2a6d154d804595e78275e289076a4c",
    "testharness"
@@ -504207,10 +503374,6 @@
    "68e926c8c18868b84069bf18eb0bae6a37a77ce4",
    "testharness"
   ],
-  "worklets/paint-worklet-referrer.https-expected.txt": [
-   "d605c7563fa39501b27a0d574fc611c9a2084356",
-   "support"
-  ],
   "worklets/paint-worklet-referrer.https.html": [
    "a4b5a6f498c2755d498fd22afc1ab7398fab56ec",
    "testharness"
@@ -504859,20 +504022,16 @@
    "4af3da9f54ce50752568bb0fb340961b771ce1f8",
    "testharness"
   ],
-  "xhr/idlharness.any-expected.txt": [
-   "b137646fe7af0e97d8ca506bee0d41bdea0995d9",
-   "support"
-  ],
   "xhr/idlharness.any.js": [
    "f36f0ce02967ec873bc8231669da22177fa39f75",
    "testharness"
   ],
   "xhr/idlharness.any.sharedworker-expected.txt": [
-   "382e3cdac5f996b2ea788005d69d666fa9335827",
+   "3405f42e3c73f48bbe52619a962cbd57bf56fa03",
    "support"
   ],
   "xhr/idlharness.any.worker-expected.txt": [
-   "382e3cdac5f996b2ea788005d69d666fa9335827",
+   "3405f42e3c73f48bbe52619a962cbd57bf56fa03",
    "support"
   ],
   "xhr/loadstart-and-state.html": [
@@ -506127,10 +505286,6 @@
    "7a2bf3622554937bf483a3b3afa9f16187fdabf6",
    "support"
   ],
-  "xslt/idlharness.tentative.window-expected.txt": [
-   "47fa44f511b9bd72b138d2c4e80fba009d06bdf1",
-   "support"
-  ],
   "xslt/idlharness.tentative.window.js": [
    "1da8db8cb208aa278527bbe9192944b68e19340b",
    "testharness"
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/building-paths/canvas_complexshapes_arcto_001-ref.htm b/third_party/blink/web_tests/external/wpt/2dcontext/building-paths/canvas_complexshapes_arcto_001-ref.htm
index 6fc212ea..31ddfca 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/building-paths/canvas_complexshapes_arcto_001-ref.htm
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/building-paths/canvas_complexshapes_arcto_001-ref.htm
@@ -3,9 +3,20 @@
     <head>
         <title>HTML5 Canvas Test:  arcTo() adds to subpath if same point</title>
         <link rel="author" title="Microsoft" href="http://www.microsoft.com" />
+        <script type="text/javascript">
+            function runTest()
+            {
+                var canvas = document.getElementById("canvas1");
+                var ctx = canvas.getContext("2d");
+                ctx.moveTo(0, 50);
+
+                ctx.lineTo(100, 50);
+                ctx.stroke();
+            }
+        </script>
     </head>
-    <body>
+    <body onload="runTest()">
         <p>Description: If x1,y1 and x2,y2 are the same point, then arcTo must add x1,y1 to the subpath, and connect that point to x0,y0 with a straight line.</p>
-        <div><img src="/images/canvas-line.png" alt="line" /></div>
+        <canvas id="canvas1" width="300" height="150">Browser does not support HTML5 Canvas (test ref).</canvas>
     </body>
 </html>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/building-paths/canvas_complexshapes_beziercurveto_001-ref.htm b/third_party/blink/web_tests/external/wpt/2dcontext/building-paths/canvas_complexshapes_beziercurveto_001-ref.htm
index 935e84c..6be08c0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/building-paths/canvas_complexshapes_beziercurveto_001-ref.htm
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/building-paths/canvas_complexshapes_beziercurveto_001-ref.htm
@@ -3,9 +3,30 @@
     <head>
         <title>HTML5 Canvas Test:  bezierCurveTo() must ensure subpaths</title>
         <link rel="author" title="Microsoft" href="http://www.microsoft.com" />
+        <script type="text/javascript">
+            function runTest()
+            {
+                var canvas = document.getElementById("canvas1");
+                var ctx = canvas.getContext("2d");
+
+                ctx.moveTo(65,25)
+                ctx.bezierCurveTo(65, 25, 65, 25, 65, 65);
+                ctx.stroke();
+                ctx.beginPath();
+
+                ctx.moveTo(35,25)
+                ctx.bezierCurveTo(35, 25, 35, 25, 35, 65);
+                ctx.stroke();
+                ctx.beginPath();
+
+                ctx.moveTo(0,75)
+                ctx.bezierCurveTo(0, 75, 50, 150, 100, 75);
+                ctx.stroke();
+            }
+        </script>
     </head>
-    <body>
+    <body onload="runTest()">
         <p>Description: bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) must ensure there is a subpath for the point (cp1x,cp1y) if the context has no subpaths, then it must connect the last point in the subpath to the point (x,y).</p>
-        <div><img src='/images/smiley.png' alt='smiley' /></div>
+        <canvas id="canvas1" width="300" height="150">Browser does not support HTML5 Canvas (ref test).</canvas>
     </body>
 </html>
diff --git a/third_party/blink/web_tests/external/wpt/BackgroundSync/idlharness.https.any-expected.txt b/third_party/blink/web_tests/external/wpt/BackgroundSync/idlharness.https.any-expected.txt
deleted file mode 100644
index 9882a5f8..0000000
--- a/third_party/blink/web_tests/external/wpt/BackgroundSync/idlharness.https.any-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS Partial interface ServiceWorkerRegistration: original interface defined
-PASS Partial interface ServiceWorkerGlobalScope: original interface defined
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/BackgroundSync/idlharness.https.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/BackgroundSync/idlharness.https.any.worker-expected.txt
deleted file mode 100644
index 9882a5f8..0000000
--- a/third_party/blink/web_tests/external/wpt/BackgroundSync/idlharness.https.any.worker-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS Partial interface ServiceWorkerRegistration: original interface defined
-PASS Partial interface ServiceWorkerGlobalScope: original interface defined
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/FileAPI/idlharness-expected.txt b/third_party/blink/web_tests/external/wpt/FileAPI/idlharness-expected.txt
deleted file mode 100644
index 4684710..0000000
--- a/third_party/blink/web_tests/external/wpt/FileAPI/idlharness-expected.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-This is a testharness.js-based test.
-Found 57 tests; 55 PASS, 2 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface URL: original interface defined assert_true: Original interface should be defined expected true got false
-PASS Blob interface: existence and properties of interface object
-PASS Blob interface object length
-PASS Blob interface object name
-PASS Blob interface: existence and properties of interface prototype object
-PASS Blob interface: existence and properties of interface prototype object's "constructor" property
-PASS Blob interface: existence and properties of interface prototype object's @@unscopables property
-PASS Blob interface: attribute size
-PASS Blob interface: attribute type
-PASS Blob interface: operation slice(long long, long long, DOMString)
-PASS Blob interface: operation stream()
-PASS Blob interface: operation text()
-PASS Blob interface: operation arrayBuffer()
-PASS File interface: existence and properties of interface object
-PASS File interface object length
-PASS File interface object name
-PASS File interface: existence and properties of interface prototype object
-PASS File interface: existence and properties of interface prototype object's "constructor" property
-PASS File interface: existence and properties of interface prototype object's @@unscopables property
-PASS File interface: attribute name
-PASS File interface: attribute lastModified
-PASS FileList interface: existence and properties of interface object
-PASS FileList interface object length
-PASS FileList interface object name
-PASS FileList interface: existence and properties of interface prototype object
-PASS FileList interface: existence and properties of interface prototype object's "constructor" property
-PASS FileList interface: existence and properties of interface prototype object's @@unscopables property
-PASS FileList interface: operation item(unsigned long)
-PASS FileList interface: attribute length
-PASS FileReader interface: existence and properties of interface object
-PASS FileReader interface object length
-PASS FileReader interface object name
-PASS FileReader interface: existence and properties of interface prototype object
-PASS FileReader interface: existence and properties of interface prototype object's "constructor" property
-PASS FileReader interface: existence and properties of interface prototype object's @@unscopables property
-PASS FileReader interface: operation readAsArrayBuffer(Blob)
-PASS FileReader interface: operation readAsBinaryString(Blob)
-PASS FileReader interface: operation readAsText(Blob, DOMString)
-PASS FileReader interface: operation readAsDataURL(Blob)
-PASS FileReader interface: operation abort()
-PASS FileReader interface: constant EMPTY on interface object
-PASS FileReader interface: constant EMPTY on interface prototype object
-PASS FileReader interface: constant LOADING on interface object
-PASS FileReader interface: constant LOADING on interface prototype object
-PASS FileReader interface: constant DONE on interface object
-PASS FileReader interface: constant DONE on interface prototype object
-PASS FileReader interface: attribute readyState
-PASS FileReader interface: attribute result
-PASS FileReader interface: attribute error
-PASS FileReader interface: attribute onloadstart
-PASS FileReader interface: attribute onprogress
-PASS FileReader interface: attribute onload
-PASS FileReader interface: attribute onabort
-PASS FileReader interface: attribute onerror
-PASS FileReader interface: attribute onloadend
-PASS FileReaderSync interface: existence and properties of interface object
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/FileAPI/idlharness.worker-expected.txt b/third_party/blink/web_tests/external/wpt/FileAPI/idlharness.worker-expected.txt
deleted file mode 100644
index 8349f056..0000000
--- a/third_party/blink/web_tests/external/wpt/FileAPI/idlharness.worker-expected.txt
+++ /dev/null
@@ -1,72 +0,0 @@
-This is a testharness.js-based test.
-Found 66 tests; 64 PASS, 2 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface URL: original interface defined assert_true: Original interface should be defined expected true got false
-PASS Blob interface: existence and properties of interface object
-PASS Blob interface object length
-PASS Blob interface object name
-PASS Blob interface: existence and properties of interface prototype object
-PASS Blob interface: existence and properties of interface prototype object's "constructor" property
-PASS Blob interface: existence and properties of interface prototype object's @@unscopables property
-PASS Blob interface: attribute size
-PASS Blob interface: attribute type
-PASS Blob interface: operation slice(long long, long long, DOMString)
-PASS Blob interface: operation stream()
-PASS Blob interface: operation text()
-PASS Blob interface: operation arrayBuffer()
-PASS File interface: existence and properties of interface object
-PASS File interface object length
-PASS File interface object name
-PASS File interface: existence and properties of interface prototype object
-PASS File interface: existence and properties of interface prototype object's "constructor" property
-PASS File interface: existence and properties of interface prototype object's @@unscopables property
-PASS File interface: attribute name
-PASS File interface: attribute lastModified
-PASS FileList interface: existence and properties of interface object
-PASS FileList interface object length
-PASS FileList interface object name
-PASS FileList interface: existence and properties of interface prototype object
-PASS FileList interface: existence and properties of interface prototype object's "constructor" property
-PASS FileList interface: existence and properties of interface prototype object's @@unscopables property
-PASS FileList interface: operation item(unsigned long)
-PASS FileList interface: attribute length
-PASS FileReader interface: existence and properties of interface object
-PASS FileReader interface object length
-PASS FileReader interface object name
-PASS FileReader interface: existence and properties of interface prototype object
-PASS FileReader interface: existence and properties of interface prototype object's "constructor" property
-PASS FileReader interface: existence and properties of interface prototype object's @@unscopables property
-PASS FileReader interface: operation readAsArrayBuffer(Blob)
-PASS FileReader interface: operation readAsBinaryString(Blob)
-PASS FileReader interface: operation readAsText(Blob, DOMString)
-PASS FileReader interface: operation readAsDataURL(Blob)
-PASS FileReader interface: operation abort()
-PASS FileReader interface: constant EMPTY on interface object
-PASS FileReader interface: constant EMPTY on interface prototype object
-PASS FileReader interface: constant LOADING on interface object
-PASS FileReader interface: constant LOADING on interface prototype object
-PASS FileReader interface: constant DONE on interface object
-PASS FileReader interface: constant DONE on interface prototype object
-PASS FileReader interface: attribute readyState
-PASS FileReader interface: attribute result
-PASS FileReader interface: attribute error
-PASS FileReader interface: attribute onloadstart
-PASS FileReader interface: attribute onprogress
-PASS FileReader interface: attribute onload
-PASS FileReader interface: attribute onabort
-PASS FileReader interface: attribute onerror
-PASS FileReader interface: attribute onloadend
-PASS FileReaderSync interface: existence and properties of interface object
-PASS FileReaderSync interface object length
-PASS FileReaderSync interface object name
-PASS FileReaderSync interface: existence and properties of interface prototype object
-PASS FileReaderSync interface: existence and properties of interface prototype object's "constructor" property
-PASS FileReaderSync interface: existence and properties of interface prototype object's @@unscopables property
-PASS FileReaderSync interface: operation readAsArrayBuffer(Blob)
-PASS FileReaderSync interface: operation readAsBinaryString(Blob)
-PASS FileReaderSync interface: operation readAsText(Blob, DOMString)
-PASS FileReaderSync interface: operation readAsDataURL(Blob)
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/IndexedDB/idbobjectstore_createIndex15-autoincrement.htm b/third_party/blink/web_tests/external/wpt/IndexedDB/idbobjectstore_createIndex15-autoincrement.htm
index 98fb99db..c66b815 100644
--- a/third_party/blink/web_tests/external/wpt/IndexedDB/idbobjectstore_createIndex15-autoincrement.htm
+++ b/third_party/blink/web_tests/external/wpt/IndexedDB/idbobjectstore_createIndex15-autoincrement.htm
@@ -1,6 +1,7 @@
 <!DOCTYPE html>
 <meta charset=utf-8>
 <title>IDBObjectStore.createIndex() - AutoIncrement in Compound Index</title>
+<meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <script src="support.js"></script>
diff --git a/third_party/blink/web_tests/external/wpt/IndexedDB/idlharness.any-expected.txt b/third_party/blink/web_tests/external/wpt/IndexedDB/idlharness.any-expected.txt
deleted file mode 100644
index c717e8b..0000000
--- a/third_party/blink/web_tests/external/wpt/IndexedDB/idlharness.any-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/IndexedDB/idlharness.any.sharedworker-expected.txt b/third_party/blink/web_tests/external/wpt/IndexedDB/idlharness.any.sharedworker-expected.txt
deleted file mode 100644
index c717e8b..0000000
--- a/third_party/blink/web_tests/external/wpt/IndexedDB/idlharness.any.sharedworker-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/IndexedDB/idlharness.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/IndexedDB/idlharness.any.worker-expected.txt
deleted file mode 100644
index c717e8b..0000000
--- a/third_party/blink/web_tests/external/wpt/IndexedDB/idlharness.any.worker-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/WebCryptoAPI/idlharness.https.any-expected.txt b/third_party/blink/web_tests/external/wpt/WebCryptoAPI/idlharness.https.any-expected.txt
deleted file mode 100644
index 7f6b75ab..0000000
--- a/third_party/blink/web_tests/external/wpt/WebCryptoAPI/idlharness.https.any-expected.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
-PASS Crypto interface: existence and properties of interface object
-PASS Crypto interface object length
-PASS Crypto interface object name
-PASS Crypto interface: existence and properties of interface prototype object
-PASS Crypto interface: existence and properties of interface prototype object's "constructor" property
-PASS Crypto interface: existence and properties of interface prototype object's @@unscopables property
-PASS Crypto interface: attribute subtle
-PASS Crypto interface: operation getRandomValues(ArrayBufferView)
-PASS CryptoKey interface: existence and properties of interface object
-PASS CryptoKey interface object length
-PASS CryptoKey interface object name
-PASS CryptoKey interface: existence and properties of interface prototype object
-PASS CryptoKey interface: existence and properties of interface prototype object's "constructor" property
-PASS CryptoKey interface: existence and properties of interface prototype object's @@unscopables property
-PASS CryptoKey interface: attribute type
-PASS CryptoKey interface: attribute extractable
-PASS CryptoKey interface: attribute algorithm
-PASS CryptoKey interface: attribute usages
-PASS SubtleCrypto interface: existence and properties of interface object
-PASS SubtleCrypto interface object length
-PASS SubtleCrypto interface object name
-PASS SubtleCrypto interface: existence and properties of interface prototype object
-PASS SubtleCrypto interface: existence and properties of interface prototype object's "constructor" property
-PASS SubtleCrypto interface: existence and properties of interface prototype object's @@unscopables property
-PASS SubtleCrypto interface: operation encrypt(AlgorithmIdentifier, CryptoKey, BufferSource)
-PASS SubtleCrypto interface: operation decrypt(AlgorithmIdentifier, CryptoKey, BufferSource)
-PASS SubtleCrypto interface: operation sign(AlgorithmIdentifier, CryptoKey, BufferSource)
-PASS SubtleCrypto interface: operation verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource)
-PASS SubtleCrypto interface: operation digest(AlgorithmIdentifier, BufferSource)
-PASS SubtleCrypto interface: operation generateKey(AlgorithmIdentifier, boolean, [object Object])
-PASS SubtleCrypto interface: operation deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, [object Object])
-PASS SubtleCrypto interface: operation deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long)
-PASS SubtleCrypto interface: operation importKey(KeyFormat, [object Object],[object Object], AlgorithmIdentifier, boolean, [object Object])
-PASS SubtleCrypto interface: operation exportKey(KeyFormat, CryptoKey)
-PASS SubtleCrypto interface: operation wrapKey(KeyFormat, CryptoKey, CryptoKey, AlgorithmIdentifier)
-PASS SubtleCrypto interface: operation unwrapKey(KeyFormat, BufferSource, CryptoKey, AlgorithmIdentifier, AlgorithmIdentifier, boolean, [object Object])
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/animation-worklet/idlharness.any-expected.txt b/third_party/blink/web_tests/external/wpt/animation-worklet/idlharness.any-expected.txt
index d31746b2..f21be8b 100644
--- a/third_party/blink/web_tests/external/wpt/animation-worklet/idlharness.any-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/animation-worklet/idlharness.any-expected.txt
@@ -1,7 +1,22 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial namespace CSS: original namespace defined assert_true: Original namespace should be defined expected true got false
+PASS idl_test setup
+PASS Partial namespace CSS: original namespace defined
+PASS Partial namespace CSS: valid exposure set
+PASS AnimationWorkletGlobalScope interface: existence and properties of interface object
+PASS WorkletAnimationEffect interface: existence and properties of interface object
+FAIL WorkletAnimation interface: existence and properties of interface object assert_equals: prototype of WorkletAnimation is not Animation expected function "function Animation() { [native code] }" but got function "function () { [native code] }"
+FAIL WorkletAnimation interface object length assert_equals: wrong value for WorkletAnimation.length expected 1 but got 2
+PASS WorkletAnimation interface object name
+FAIL WorkletAnimation interface: existence and properties of interface prototype object assert_equals: prototype of WorkletAnimation.prototype is not Animation.prototype expected object "[object Animation]" but got object "[object Object]"
+PASS WorkletAnimation interface: existence and properties of interface prototype object's "constructor" property
+PASS WorkletAnimation interface: existence and properties of interface prototype object's @@unscopables property
+PASS WorkletAnimation interface: attribute animatorName
+FAIL WorkletAnimation must be primary interface of new WorkletAnimation("name") assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'WorkletAnimation': 2 arguments required, but only 1 present."
+FAIL Stringification of new WorkletAnimation("name") assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'WorkletAnimation': 2 arguments required, but only 1 present."
+FAIL WorkletAnimation interface: new WorkletAnimation("name") must inherit property "animatorName" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'WorkletAnimation': 2 arguments required, but only 1 present."
+PASS WorkletGroupEffect interface: existence and properties of interface object
+PASS WorkletGlobalScope interface: existence and properties of interface object
+PASS CSS namespace: operation escape(CSSOMString)
+FAIL CSS namespace: attribute animationWorklet assert_own_property: CSS does not have property "animationWorklet" expected property "animationWorklet" missing
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/animation-worklet/idlharness.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/animation-worklet/idlharness.any.worker-expected.txt
index d31746b2..910bda1 100644
--- a/third_party/blink/web_tests/external/wpt/animation-worklet/idlharness.any.worker-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/animation-worklet/idlharness.any.worker-expected.txt
@@ -1,7 +1,18 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial namespace CSS: original namespace defined assert_true: Original namespace should be defined expected true got false
+PASS idl_test setup
+PASS Partial namespace CSS: original namespace defined
+PASS Partial namespace CSS: valid exposure set
+PASS AnimationWorkletGlobalScope interface: existence and properties of interface object
+PASS WorkletAnimationEffect interface: existence and properties of interface object
+PASS WorkletAnimation interface: existence and properties of interface object
+FAIL WorkletAnimation must be primary interface of new WorkletAnimation("name") assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: WorkletAnimation is not defined"
+FAIL Stringification of new WorkletAnimation("name") assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: WorkletAnimation is not defined"
+FAIL WorkletAnimation interface: new WorkletAnimation("name") must not have property "animatorName" assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: WorkletAnimation is not defined"
+PASS WorkletGroupEffect interface: existence and properties of interface object
+PASS WorkletGlobalScope interface: existence and properties of interface object
+PASS Worklet interface: existence and properties of interface object
+PASS Animation interface: existence and properties of interface object
+FAIL CSS namespace: operation escape(CSSOMString) Cannot read property 'hasOwnProperty' of undefined
+FAIL CSS namespace: attribute animationWorklet Cannot read property 'hasOwnProperty' of undefined
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/appmanifest/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/appmanifest/idlharness.window-expected.txt
deleted file mode 100644
index d2186c0..0000000
--- a/third_party/blink/web_tests/external/wpt/appmanifest/idlharness.window-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Window: original interface defined assert_true: Original interface should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/audio-output/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/audio-output/idlharness.https.window-expected.txt
deleted file mode 100644
index e4b69030..0000000
--- a/third_party/blink/web_tests/external/wpt/audio-output/idlharness.https.window-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface HTMLMediaElement: original interface defined assert_true: Original interface should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/background-fetch/idlharness.https.any-expected.txt b/third_party/blink/web_tests/external/wpt/background-fetch/idlharness.https.any-expected.txt
deleted file mode 100644
index a2d9cba..0000000
--- a/third_party/blink/web_tests/external/wpt/background-fetch/idlharness.https.any-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS Partial interface ServiceWorkerGlobalScope: original interface defined
-PASS Partial interface ServiceWorkerRegistration: original interface defined
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/background-fetch/idlharness.https.any.sharedworker-expected.txt b/third_party/blink/web_tests/external/wpt/background-fetch/idlharness.https.any.sharedworker-expected.txt
deleted file mode 100644
index a2d9cba..0000000
--- a/third_party/blink/web_tests/external/wpt/background-fetch/idlharness.https.any.sharedworker-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS Partial interface ServiceWorkerGlobalScope: original interface defined
-PASS Partial interface ServiceWorkerRegistration: original interface defined
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/battery-status/battery-interface-idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/battery-status/battery-interface-idlharness.https.window-expected.txt
deleted file mode 100644
index 103a302c..0000000
--- a/third_party/blink/web_tests/external/wpt/battery-status/battery-interface-idlharness.https.window-expected.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
-PASS BatteryManager interface: existence and properties of interface object
-PASS BatteryManager interface object length
-PASS BatteryManager interface object name
-PASS BatteryManager interface: existence and properties of interface prototype object
-PASS BatteryManager interface: existence and properties of interface prototype object's "constructor" property
-PASS BatteryManager interface: existence and properties of interface prototype object's @@unscopables property
-PASS BatteryManager interface: attribute charging
-PASS BatteryManager interface: attribute chargingTime
-PASS BatteryManager interface: attribute dischargingTime
-PASS BatteryManager interface: attribute level
-PASS BatteryManager interface: attribute onchargingchange
-PASS BatteryManager interface: attribute onchargingtimechange
-PASS BatteryManager interface: attribute ondischargingtimechange
-PASS BatteryManager interface: attribute onlevelchange
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/beacon/idlharness.any-expected.txt b/third_party/blink/web_tests/external/wpt/beacon/idlharness.any-expected.txt
deleted file mode 100644
index 23bf13b5..0000000
--- a/third_party/blink/web_tests/external/wpt/beacon/idlharness.any-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/beacon/idlharness.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/beacon/idlharness.any.worker-expected.txt
deleted file mode 100644
index 23bf13b5..0000000
--- a/third_party/blink/web_tests/external/wpt/beacon/idlharness.any.worker-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-absent-getAvailability.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-absent-getAvailability.https.window.js
index cec09c3..a9f540e 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-absent-getAvailability.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-absent-getAvailability.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-added-getAvailability.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-added-getAvailability.https.window.js
index d5e9d1f..30c4720 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-added-getAvailability.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-added-getAvailability.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-powered-off-getAvailability.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-powered-off-getAvailability.https.window.js
index 8fe9265..b760d4b 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-powered-off-getAvailability.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-powered-off-getAvailability.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-powered-on-getAvailability.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-powered-on-getAvailability.https.window.js
index 8b9256a4..f98a88e 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-powered-on-getAvailability.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-powered-on-getAvailability.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-powered-on-off-on-getAvailability.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-powered-on-off-on-getAvailability.https.window.js
index b8b4912..ac664a89 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-powered-on-off-on-getAvailability.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-powered-on-off-on-getAvailability.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-removed-getAvailability.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-removed-getAvailability.https.window.js
index cc2c33d..00425aa 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-removed-getAvailability.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/adapter/adapter-removed-getAvailability.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/adapter/cross-origin-iframe-getAvailability.sub.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/adapter/cross-origin-iframe-getAvailability.sub.https.window.js
index bf5e422..ce633c6 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/adapter/cross-origin-iframe-getAvailability.sub.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/adapter/cross-origin-iframe-getAvailability.sub.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/characteristicProperties.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/characteristicProperties.https.window.js
index abe9f79..5239acc 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/characteristicProperties.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/characteristicProperties.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptor/gen-characteristic-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptor/gen-characteristic-is-removed.https.window.js
index 97256a4..eb91e97 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptor/gen-characteristic-is-removed.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptor/gen-characteristic-is-removed.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptor/gen-descriptor-get-same-object.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptor/gen-descriptor-get-same-object.https.window.js
index 8847efa..4cff64b 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptor/gen-descriptor-get-same-object.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptor/gen-descriptor-get-same-object.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptor/gen-service-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptor/gen-service-is-removed.https.window.js
index b9dc9248..f5d17619 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptor/gen-service-is-removed.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptor/gen-service-is-removed.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed-with-uuid.https.window.js
index 25bde7c..7405a8e 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed.https.window.js
index c3ff9f6a..470f704 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptors/gen-descriptor-get-same-object.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptors/gen-descriptor-get-same-object.https.window.js
index c997d7af..1dc58ae 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptors/gen-descriptor-get-same-object.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptors/gen-descriptor-get-same-object.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptors/gen-service-is-removed-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptors/gen-service-is-removed-with-uuid.https.window.js
index 03bb5123..5ee7e0d 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptors/gen-service-is-removed-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptors/gen-service-is-removed-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptors/gen-service-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptors/gen-service-is-removed.https.window.js
index 762f9cc9..24a2087 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptors/gen-service-is-removed.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/getDescriptors/gen-service-is-removed.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/notifications/characteristic-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/notifications/characteristic-is-removed.https.window.js
index 6b5d3e22..2ab165d9 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/notifications/characteristic-is-removed.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/notifications/characteristic-is-removed.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/notifications/service-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/notifications/service-is-removed.https.window.js
index 29bc671..d2456934 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/notifications/service-is-removed.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/notifications/service-is-removed.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/add-multiple-event-listeners.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/add-multiple-event-listeners.https.window.js
index 7e6e4159b..13709ea9 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/add-multiple-event-listeners.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/add-multiple-event-listeners.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/characteristic-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/characteristic-is-removed.https.window.js
index 07678e6..269f2cb 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/characteristic-is-removed.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/characteristic-is-removed.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/event-is-fired.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/event-is-fired.https.window.js
index eee34d0..03b8f2b 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/event-is-fired.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/event-is-fired.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/gen-characteristic-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/gen-characteristic-is-removed.https.window.js
index a2de3c3..26efe8b 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/gen-characteristic-is-removed.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/gen-characteristic-is-removed.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/read-succeeds.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/read-succeeds.https.window.js
index aeece7d..82be128f3 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/read-succeeds.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/read-succeeds.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/read-updates-value.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/read-updates-value.https.window.js
index 45da8af..34da455d 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/read-updates-value.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/read-updates-value.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/service-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/service-is-removed.https.window.js
index 07e9701d..20dd4ba 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/service-is-removed.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/service-is-removed.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/service-same-from-2-characteristics.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/service-same-from-2-characteristics.https.window.js
index e3bc5d0..b34b3b9 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/service-same-from-2-characteristics.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/service-same-from-2-characteristics.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/service-same-object.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/service-same-object.https.window.js
index 6b1f543..b58902a 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/service-same-object.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/service-same-object.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/startNotifications/gen-characteristic-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/startNotifications/gen-characteristic-is-removed.https.window.js
index 76b2d42a..af27f93 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/startNotifications/gen-characteristic-is-removed.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/startNotifications/gen-characteristic-is-removed.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/buffer-is-detached.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/buffer-is-detached.https.window.js
index 35347e3..cefbb6ee 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/buffer-is-detached.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/buffer-is-detached.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/characteristic-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/characteristic-is-removed.https.window.js
index 33a963b..c0f5a3e 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/characteristic-is-removed.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/characteristic-is-removed.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/gen-characteristic-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/gen-characteristic-is-removed.https.window.js
index 00c50894..d5ac10fc 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/gen-characteristic-is-removed.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/gen-characteristic-is-removed.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/service-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/service-is-removed.https.window.js
index a9f812c1..e7a2837c 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/service-is-removed.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/service-is-removed.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/write-succeeds.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/write-succeeds.https.window.js
index 1472c61..cdda9ce 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/write-succeeds.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/write-succeeds.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/descriptor/readValue/gen-service-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/descriptor/readValue/gen-service-is-removed.https.window.js
index 3b6c78a..aa95687 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/descriptor/readValue/gen-service-is-removed.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/descriptor/readValue/gen-service-is-removed.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/descriptor/readValue/read-succeeds.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/descriptor/readValue/read-succeeds.https.window.js
index 5f3c5f8..fc1faca 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/descriptor/readValue/read-succeeds.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/descriptor/readValue/read-succeeds.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/descriptor/writeValue/buffer-is-detached.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/descriptor/writeValue/buffer-is-detached.https.window.js
index 23ea2329..2ff277e 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/descriptor/writeValue/buffer-is-detached.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/descriptor/writeValue/buffer-is-detached.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/descriptor/writeValue/gen-service-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/descriptor/writeValue/gen-service-is-removed.https.window.js
index ca75eba..a486819 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/descriptor/writeValue/gen-service-is-removed.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/descriptor/writeValue/gen-service-is-removed.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected.https.window.js
index 245e43d..dab54d5 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected_gc.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected_gc.https.window.js
index 69e3044..a15cc943 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected_gc.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected_gc.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/device/gattserverdisconnected-event/one-event-per-disconnection.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/device/gattserverdisconnected-event/one-event-per-disconnection.https.window.js
index 317edde..f5e45f9 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/device/gattserverdisconnected-event/one-event-per-disconnection.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/device/gattserverdisconnected-event/one-event-per-disconnection.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.window.js
index 93a46eeb..8f264c7 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/idl/idlharness.tentative.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/bluetooth/idl/idlharness.tentative.https.window-expected.txt
index 23bf13b5..f1827c9 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/idl/idlharness.tentative.https.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/idl/idlharness.tentative.https.window-expected.txt
@@ -1,7 +1,189 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
+Found 185 tests; 128 PASS, 57 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface Navigator: original interface defined
+PASS Bluetooth interface: existence and properties of interface object
+PASS Bluetooth interface object length
+PASS Bluetooth interface object name
+PASS Bluetooth interface: existence and properties of interface prototype object
+PASS Bluetooth interface: existence and properties of interface prototype object's "constructor" property
+PASS Bluetooth interface: existence and properties of interface prototype object's @@unscopables property
+PASS Bluetooth interface: operation getAvailability()
+FAIL Bluetooth interface: attribute onavailabilitychanged assert_true: The prototype object must have a property "onavailabilitychanged" expected true got false
+FAIL Bluetooth interface: attribute referringDevice assert_true: The prototype object must have a property "referringDevice" expected true got false
+PASS Bluetooth interface: operation requestDevice(RequestDeviceOptions)
+PASS Bluetooth interface: attribute onadvertisementreceived
+FAIL Bluetooth interface: attribute ongattserverdisconnected assert_true: The prototype object must have a property "ongattserverdisconnected" expected true got false
+FAIL Bluetooth interface: attribute oncharacteristicvaluechanged assert_true: The prototype object must have a property "oncharacteristicvaluechanged" expected true got false
+FAIL Bluetooth interface: attribute onserviceadded assert_true: The prototype object must have a property "onserviceadded" expected true got false
+FAIL Bluetooth interface: attribute onservicechanged assert_true: The prototype object must have a property "onservicechanged" expected true got false
+FAIL Bluetooth interface: attribute onserviceremoved assert_true: The prototype object must have a property "onserviceremoved" expected true got false
+PASS Bluetooth must be primary interface of navigator.bluetooth
+PASS Stringification of navigator.bluetooth
+PASS Bluetooth interface: navigator.bluetooth must inherit property "getAvailability()" with the proper type
+FAIL Bluetooth interface: navigator.bluetooth must inherit property "onavailabilitychanged" with the proper type assert_inherits: property "onavailabilitychanged" not found in prototype chain
+FAIL Bluetooth interface: navigator.bluetooth must inherit property "referringDevice" with the proper type assert_inherits: property "referringDevice" not found in prototype chain
+PASS Bluetooth interface: navigator.bluetooth must inherit property "requestDevice(RequestDeviceOptions)" with the proper type
+PASS Bluetooth interface: calling requestDevice(RequestDeviceOptions) on navigator.bluetooth with too few arguments must throw TypeError
+PASS Bluetooth interface: navigator.bluetooth must inherit property "onadvertisementreceived" with the proper type
+FAIL Bluetooth interface: navigator.bluetooth must inherit property "ongattserverdisconnected" with the proper type assert_inherits: property "ongattserverdisconnected" not found in prototype chain
+FAIL Bluetooth interface: navigator.bluetooth must inherit property "oncharacteristicvaluechanged" with the proper type assert_inherits: property "oncharacteristicvaluechanged" not found in prototype chain
+FAIL Bluetooth interface: navigator.bluetooth must inherit property "onserviceadded" with the proper type assert_inherits: property "onserviceadded" not found in prototype chain
+FAIL Bluetooth interface: navigator.bluetooth must inherit property "onservicechanged" with the proper type assert_inherits: property "onservicechanged" not found in prototype chain
+FAIL Bluetooth interface: navigator.bluetooth must inherit property "onserviceremoved" with the proper type assert_inherits: property "onserviceremoved" not found in prototype chain
+FAIL BluetoothPermissionResult interface: existence and properties of interface object assert_own_property: self does not have own property "BluetoothPermissionResult" expected property "BluetoothPermissionResult" missing
+FAIL BluetoothPermissionResult interface object length assert_own_property: self does not have own property "BluetoothPermissionResult" expected property "BluetoothPermissionResult" missing
+FAIL BluetoothPermissionResult interface object name assert_own_property: self does not have own property "BluetoothPermissionResult" expected property "BluetoothPermissionResult" missing
+FAIL BluetoothPermissionResult interface: existence and properties of interface prototype object assert_own_property: self does not have own property "BluetoothPermissionResult" expected property "BluetoothPermissionResult" missing
+FAIL BluetoothPermissionResult interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "BluetoothPermissionResult" expected property "BluetoothPermissionResult" missing
+FAIL BluetoothPermissionResult interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "BluetoothPermissionResult" expected property "BluetoothPermissionResult" missing
+FAIL BluetoothPermissionResult interface: attribute devices assert_own_property: self does not have own property "BluetoothPermissionResult" expected property "BluetoothPermissionResult" missing
+FAIL ValueEvent interface: existence and properties of interface object assert_own_property: self does not have own property "ValueEvent" expected property "ValueEvent" missing
+FAIL ValueEvent interface object length assert_own_property: self does not have own property "ValueEvent" expected property "ValueEvent" missing
+FAIL ValueEvent interface object name assert_own_property: self does not have own property "ValueEvent" expected property "ValueEvent" missing
+FAIL ValueEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "ValueEvent" expected property "ValueEvent" missing
+FAIL ValueEvent interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "ValueEvent" expected property "ValueEvent" missing
+FAIL ValueEvent interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "ValueEvent" expected property "ValueEvent" missing
+FAIL ValueEvent interface: attribute value assert_own_property: self does not have own property "ValueEvent" expected property "ValueEvent" missing
+PASS BluetoothDevice interface: existence and properties of interface object
+PASS BluetoothDevice interface object length
+PASS BluetoothDevice interface object name
+PASS BluetoothDevice interface: existence and properties of interface prototype object
+PASS BluetoothDevice interface: existence and properties of interface prototype object's "constructor" property
+PASS BluetoothDevice interface: existence and properties of interface prototype object's @@unscopables property
+PASS BluetoothDevice interface: attribute id
+PASS BluetoothDevice interface: attribute name
+PASS BluetoothDevice interface: attribute gatt
+FAIL BluetoothDevice interface: operation watchAdvertisements() assert_own_property: interface prototype object missing non-static operation expected property "watchAdvertisements" missing
+FAIL BluetoothDevice interface: operation unwatchAdvertisements() assert_own_property: interface prototype object missing non-static operation expected property "unwatchAdvertisements" missing
+FAIL BluetoothDevice interface: attribute watchingAdvertisements assert_true: The prototype object must have a property "watchingAdvertisements" expected true got false
+FAIL BluetoothDevice interface: attribute onadvertisementreceived assert_true: The prototype object must have a property "onadvertisementreceived" expected true got false
+PASS BluetoothDevice interface: attribute ongattserverdisconnected
+FAIL BluetoothDevice interface: attribute oncharacteristicvaluechanged assert_true: The prototype object must have a property "oncharacteristicvaluechanged" expected true got false
+FAIL BluetoothDevice interface: attribute onserviceadded assert_true: The prototype object must have a property "onserviceadded" expected true got false
+FAIL BluetoothDevice interface: attribute onservicechanged assert_true: The prototype object must have a property "onservicechanged" expected true got false
+FAIL BluetoothDevice interface: attribute onserviceremoved assert_true: The prototype object must have a property "onserviceremoved" expected true got false
+PASS BluetoothManufacturerDataMap interface: existence and properties of interface object
+PASS BluetoothManufacturerDataMap interface object length
+PASS BluetoothManufacturerDataMap interface object name
+PASS BluetoothManufacturerDataMap interface: existence and properties of interface prototype object
+PASS BluetoothManufacturerDataMap interface: existence and properties of interface prototype object's "constructor" property
+PASS BluetoothManufacturerDataMap interface: existence and properties of interface prototype object's @@unscopables property
+PASS BluetoothServiceDataMap interface: existence and properties of interface object
+PASS BluetoothServiceDataMap interface object length
+PASS BluetoothServiceDataMap interface object name
+PASS BluetoothServiceDataMap interface: existence and properties of interface prototype object
+PASS BluetoothServiceDataMap interface: existence and properties of interface prototype object's "constructor" property
+PASS BluetoothServiceDataMap interface: existence and properties of interface prototype object's @@unscopables property
+PASS BluetoothAdvertisingEvent interface: existence and properties of interface object
+FAIL BluetoothAdvertisingEvent interface object length assert_equals: wrong value for BluetoothAdvertisingEvent.length expected 2 but got 0
+PASS BluetoothAdvertisingEvent interface object name
+PASS BluetoothAdvertisingEvent interface: existence and properties of interface prototype object
+PASS BluetoothAdvertisingEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS BluetoothAdvertisingEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS BluetoothAdvertisingEvent interface: attribute device
+PASS BluetoothAdvertisingEvent interface: attribute uuids
+PASS BluetoothAdvertisingEvent interface: attribute name
+PASS BluetoothAdvertisingEvent interface: attribute appearance
+PASS BluetoothAdvertisingEvent interface: attribute txPower
+PASS BluetoothAdvertisingEvent interface: attribute rssi
+PASS BluetoothAdvertisingEvent interface: attribute manufacturerData
+PASS BluetoothAdvertisingEvent interface: attribute serviceData
+FAIL BluetoothAdvertisingEvent must be primary interface of event assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL Stringification of event assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL BluetoothAdvertisingEvent interface: event must inherit property "device" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL BluetoothAdvertisingEvent interface: event must inherit property "uuids" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL BluetoothAdvertisingEvent interface: event must inherit property "name" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL BluetoothAdvertisingEvent interface: event must inherit property "appearance" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL BluetoothAdvertisingEvent interface: event must inherit property "txPower" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL BluetoothAdvertisingEvent interface: event must inherit property "rssi" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL BluetoothAdvertisingEvent interface: event must inherit property "manufacturerData" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL BluetoothAdvertisingEvent interface: event must inherit property "serviceData" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+PASS BluetoothRemoteGATTServer interface: existence and properties of interface object
+PASS BluetoothRemoteGATTServer interface object length
+PASS BluetoothRemoteGATTServer interface object name
+PASS BluetoothRemoteGATTServer interface: existence and properties of interface prototype object
+PASS BluetoothRemoteGATTServer interface: existence and properties of interface prototype object's "constructor" property
+PASS BluetoothRemoteGATTServer interface: existence and properties of interface prototype object's @@unscopables property
+PASS BluetoothRemoteGATTServer interface: attribute device
+PASS BluetoothRemoteGATTServer interface: attribute connected
+PASS BluetoothRemoteGATTServer interface: operation connect()
+PASS BluetoothRemoteGATTServer interface: operation disconnect()
+PASS BluetoothRemoteGATTServer interface: operation getPrimaryService(BluetoothServiceUUID)
+PASS BluetoothRemoteGATTServer interface: operation getPrimaryServices(BluetoothServiceUUID)
+FAIL BluetoothRemoteGATTService interface: existence and properties of interface object assert_equals: prototype of BluetoothRemoteGATTService is not EventTarget expected function "function EventTarget() { [native code] }" but got function "function () { [native code] }"
+PASS BluetoothRemoteGATTService interface object length
+PASS BluetoothRemoteGATTService interface object name
+FAIL BluetoothRemoteGATTService interface: existence and properties of interface prototype object assert_equals: prototype of BluetoothRemoteGATTService.prototype is not EventTarget.prototype expected object "[object EventTarget]" but got object "[object Object]"
+PASS BluetoothRemoteGATTService interface: existence and properties of interface prototype object's "constructor" property
+PASS BluetoothRemoteGATTService interface: existence and properties of interface prototype object's @@unscopables property
+PASS BluetoothRemoteGATTService interface: attribute device
+PASS BluetoothRemoteGATTService interface: attribute uuid
+PASS BluetoothRemoteGATTService interface: attribute isPrimary
+PASS BluetoothRemoteGATTService interface: operation getCharacteristic(BluetoothCharacteristicUUID)
+PASS BluetoothRemoteGATTService interface: operation getCharacteristics(BluetoothCharacteristicUUID)
+FAIL BluetoothRemoteGATTService interface: operation getIncludedService(BluetoothServiceUUID) assert_own_property: interface prototype object missing non-static operation expected property "getIncludedService" missing
+FAIL BluetoothRemoteGATTService interface: operation getIncludedServices(BluetoothServiceUUID) assert_own_property: interface prototype object missing non-static operation expected property "getIncludedServices" missing
+FAIL BluetoothRemoteGATTService interface: attribute oncharacteristicvaluechanged assert_true: The prototype object must have a property "oncharacteristicvaluechanged" expected true got false
+FAIL BluetoothRemoteGATTService interface: attribute onserviceadded assert_true: The prototype object must have a property "onserviceadded" expected true got false
+FAIL BluetoothRemoteGATTService interface: attribute onservicechanged assert_true: The prototype object must have a property "onservicechanged" expected true got false
+FAIL BluetoothRemoteGATTService interface: attribute onserviceremoved assert_true: The prototype object must have a property "onserviceremoved" expected true got false
+PASS BluetoothRemoteGATTCharacteristic interface: existence and properties of interface object
+PASS BluetoothRemoteGATTCharacteristic interface object length
+PASS BluetoothRemoteGATTCharacteristic interface object name
+PASS BluetoothRemoteGATTCharacteristic interface: existence and properties of interface prototype object
+PASS BluetoothRemoteGATTCharacteristic interface: existence and properties of interface prototype object's "constructor" property
+PASS BluetoothRemoteGATTCharacteristic interface: existence and properties of interface prototype object's @@unscopables property
+PASS BluetoothRemoteGATTCharacteristic interface: attribute service
+PASS BluetoothRemoteGATTCharacteristic interface: attribute uuid
+PASS BluetoothRemoteGATTCharacteristic interface: attribute properties
+PASS BluetoothRemoteGATTCharacteristic interface: attribute value
+PASS BluetoothRemoteGATTCharacteristic interface: operation getDescriptor(BluetoothDescriptorUUID)
+PASS BluetoothRemoteGATTCharacteristic interface: operation getDescriptors(BluetoothDescriptorUUID)
+PASS BluetoothRemoteGATTCharacteristic interface: operation readValue()
+PASS BluetoothRemoteGATTCharacteristic interface: operation writeValue(BufferSource)
+FAIL BluetoothRemoteGATTCharacteristic interface: operation writeValueWithResponse(BufferSource) assert_own_property: interface prototype object missing non-static operation expected property "writeValueWithResponse" missing
+FAIL BluetoothRemoteGATTCharacteristic interface: operation writeValueWithoutResponse(BufferSource) assert_own_property: interface prototype object missing non-static operation expected property "writeValueWithoutResponse" missing
+PASS BluetoothRemoteGATTCharacteristic interface: operation startNotifications()
+PASS BluetoothRemoteGATTCharacteristic interface: operation stopNotifications()
+PASS BluetoothRemoteGATTCharacteristic interface: attribute oncharacteristicvaluechanged
+PASS BluetoothCharacteristicProperties interface: existence and properties of interface object
+PASS BluetoothCharacteristicProperties interface object length
+PASS BluetoothCharacteristicProperties interface object name
+PASS BluetoothCharacteristicProperties interface: existence and properties of interface prototype object
+PASS BluetoothCharacteristicProperties interface: existence and properties of interface prototype object's "constructor" property
+PASS BluetoothCharacteristicProperties interface: existence and properties of interface prototype object's @@unscopables property
+PASS BluetoothCharacteristicProperties interface: attribute broadcast
+PASS BluetoothCharacteristicProperties interface: attribute read
+PASS BluetoothCharacteristicProperties interface: attribute writeWithoutResponse
+PASS BluetoothCharacteristicProperties interface: attribute write
+PASS BluetoothCharacteristicProperties interface: attribute notify
+PASS BluetoothCharacteristicProperties interface: attribute indicate
+PASS BluetoothCharacteristicProperties interface: attribute authenticatedSignedWrites
+PASS BluetoothCharacteristicProperties interface: attribute reliableWrite
+PASS BluetoothCharacteristicProperties interface: attribute writableAuxiliaries
+PASS BluetoothRemoteGATTDescriptor interface: existence and properties of interface object
+PASS BluetoothRemoteGATTDescriptor interface object length
+PASS BluetoothRemoteGATTDescriptor interface object name
+PASS BluetoothRemoteGATTDescriptor interface: existence and properties of interface prototype object
+PASS BluetoothRemoteGATTDescriptor interface: existence and properties of interface prototype object's "constructor" property
+PASS BluetoothRemoteGATTDescriptor interface: existence and properties of interface prototype object's @@unscopables property
+PASS BluetoothRemoteGATTDescriptor interface: attribute characteristic
+PASS BluetoothRemoteGATTDescriptor interface: attribute uuid
+PASS BluetoothRemoteGATTDescriptor interface: attribute value
+PASS BluetoothRemoteGATTDescriptor interface: operation readValue()
+PASS BluetoothRemoteGATTDescriptor interface: operation writeValue(BufferSource)
+PASS BluetoothUUID interface: existence and properties of interface object
+PASS BluetoothUUID interface object length
+PASS BluetoothUUID interface object name
+PASS BluetoothUUID interface: existence and properties of interface prototype object
+PASS BluetoothUUID interface: existence and properties of interface prototype object's "constructor" property
+PASS BluetoothUUID interface: existence and properties of interface prototype object's @@unscopables property
+PASS BluetoothUUID interface: operation getService([object Object],[object Object])
+PASS BluetoothUUID interface: operation getCharacteristic([object Object],[object Object])
+PASS BluetoothUUID interface: operation getDescriptor([object Object],[object Object])
+PASS BluetoothUUID interface: operation canonicalUUID(unsigned long)
+PASS Navigator interface: attribute bluetooth
+PASS Navigator interface: navigator must inherit property "bluetooth" with the proper type
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/script-tests/base_test_js.template b/third_party/blink/web_tests/external/wpt/bluetooth/script-tests/base_test_js.template
index 56971d2..c0fa4ae 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/script-tests/base_test_js.template
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/script-tests/base_test_js.template
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.window.js
index 2d94b41e..1eb62d3 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-during-error.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-during-error.https.window.js
index 0d6e8a7a..c7c8024 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-during-error.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-during-error.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-during-success.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-during-success.https.window.js
index 18af59d..5655d8e 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-during-success.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-during-success.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-invalidates-objects.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-invalidates-objects.https.window.js
index 5cfe893..c95f8b9 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-invalidates-objects.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-invalidates-objects.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnected-device.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnected-device.https.window.js
index 622f2cf..e610b715 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnected-device.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnected-device.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-discovery-complete-no-permission-absent-service.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-discovery-complete-no-permission-absent-service.https.window.js
index 5afb0262..ee3cf97 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-discovery-complete-no-permission-absent-service.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-discovery-complete-no-permission-absent-service.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-discovery-complete-service-not-found.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-discovery-complete-service-not-found.https.window.js
index 86fa5e9..5bf720c 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-discovery-complete-service-not-found.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-discovery-complete-service-not-found.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-error.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-error.https.window.js
index 2c35c1b..4c31117 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-error.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-error.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-success.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-success.https.window.js
index cca8c2c..fe7d7490 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-success.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-success.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-get-different-service-after-reconnection.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-get-different-service-after-reconnection.https.window.js
index a0f073d..301658c 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-get-different-service-after-reconnection.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-get-different-service-after-reconnection.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-get-same-object.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-get-same-object.https.window.js
index 3deb387..c46a1a5 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-get-same-object.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-get-same-object.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-invalid-service-name.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-invalid-service-name.https.window.js
index d59e202..704ab8b 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-invalid-service-name.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-invalid-service-name.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.window.js
index 89ca4688..8daab29 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.window.js
index fec0055..d55dee7 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.window.js
index a0161a0..d357a21 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-service-not-found.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-service-not-found.https.window.js
index 60fb4f2..32350e77 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-service-not-found.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryService/gen-service-not-found.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.window.js
index 86a346d1..ad44649 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.window.js
index 97e9f77d..485dbb30 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error-with-uuid.https.window.js
index 3739407..230325a 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error.https.window.js
index 9c7aac6..dce13c5 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success-with-uuid.https.window.js
index bffcea4e..8e2e32b 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success.https.window.js
index 162a61f..78dcffdc 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.window.js
index 05dce42..d9f61674 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.window.js
index e17162a..b1c9688 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.window.js
index 3bfa60d..8d64daf 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnected-device.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnected-device.https.window.js
index 7072b3ef..9c41112 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnected-device.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnected-device.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-discovery-complete-no-permission-absent-service-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-discovery-complete-no-permission-absent-service-with-uuid.https.window.js
index 589ebe3..130657d 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-discovery-complete-no-permission-absent-service-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-discovery-complete-no-permission-absent-service-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-discovery-complete-service-not-found-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-discovery-complete-service-not-found-with-uuid.https.window.js
index 15b8b97..3817a1a5a 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-discovery-complete-service-not-found-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-discovery-complete-service-not-found-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error-with-uuid.https.window.js
index 17495d2..c986835 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error.https.window.js
index 741cd21..bd438db 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success-with-uuid.https.window.js
index 1ee4f21..3b441ce 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success.https.window.js
index 285b774c..1b3302a 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection-with-uuid.https.window.js
index eb20e6f4..378ade0 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection.https.window.js
index 14fc656..bdef5aa 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-get-same-object-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-get-same-object-with-uuid.https.window.js
index f3fc490..aca34e58 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-get-same-object-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-get-same-object-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-get-same-object.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-get-same-object.https.window.js
index c7c488a..0ea805e3 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-get-same-object.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-get-same-object.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.window.js
index 025f1ccdf..eeb6dd4 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.window.js
index 6f1bb251..c755dd7 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.window.js
index 4bbddeae..03b7f23 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.window.js
index 40b8b57..e50c6d5 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.window.js
index 6f737ec..c703d0a9 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-service-not-found-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-service-not-found-with-uuid.https.window.js
index 33946d2..9dc1877 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-service-not-found-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/server/getPrimaryServices/gen-service-not-found-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-blocklisted-characteristic.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-blocklisted-characteristic.https.window.js
index 04176f1e..72b9bac 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-blocklisted-characteristic.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-blocklisted-characteristic.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-characteristic-not-found.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-characteristic-not-found.https.window.js
index cfec509..a8b2ef8 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-characteristic-not-found.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-characteristic-not-found.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-garbage-collection-ran-during-error.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-garbage-collection-ran-during-error.https.window.js
index 9543a5e5..7457161 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-garbage-collection-ran-during-error.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-garbage-collection-ran-during-error.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-get-same-object.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-get-same-object.https.window.js
index 73691be..54ab061 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-get-same-object.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-get-same-object.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-invalid-characteristic-name.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-invalid-characteristic-name.https.window.js
index d21dcf5..8f44ecb 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-invalid-characteristic-name.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-invalid-characteristic-name.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-reconnect-during.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-reconnect-during.https.window.js
index 6f86214..da5462a 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-reconnect-during.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-reconnect-during.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-service-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-service-is-removed.https.window.js
index b6d6a9df..0fe5b01 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-service-is-removed.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristic/gen-service-is-removed.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-blocklisted-characteristic-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-blocklisted-characteristic-with-uuid.https.window.js
index 3afd294d..cd8a6fa 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-blocklisted-characteristic-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-blocklisted-characteristic-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-characteristic-not-found-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-characteristic-not-found-with-uuid.https.window.js
index 549f6b26..fff2bd0 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-characteristic-not-found-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-characteristic-not-found-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error-with-uuid.https.window.js
index 643e2f8..925786c7 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error.https.window.js
index b7db67f..d0ecff8 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-get-same-object-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-get-same-object-with-uuid.https.window.js
index 15b552a..fb3346d 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-get-same-object-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-get-same-object-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-get-same-object.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-get-same-object.https.window.js
index df30d51..576e083 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-get-same-object.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-get-same-object.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-invalid-characteristic-name.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-invalid-characteristic-name.https.window.js
index f980ac03..5b2bd39 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-invalid-characteristic-name.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-invalid-characteristic-name.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-reconnect-during-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-reconnect-during-with-uuid.https.window.js
index eb42337..95f22b1 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-reconnect-during-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-reconnect-during-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-reconnect-during.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-reconnect-during.https.window.js
index a6d3880..184632f 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-reconnect-during.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-reconnect-during.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-service-is-removed-with-uuid.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-service-is-removed-with-uuid.https.window.js
index 527eb76..6ff7b4f 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-service-is-removed-with-uuid.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-service-is-removed-with-uuid.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-service-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-service-is-removed.https.window.js
index 46650324..b449288 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-service-is-removed.https.window.js
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/service/getCharacteristics/gen-service-is-removed.https.window.js
@@ -1,5 +1,3 @@
-// META: script=/resources/testharness.js
-// META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-helpers.js
diff --git a/third_party/blink/web_tests/external/wpt/compat/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/compat/idlharness.window-expected.txt
index b6f88da..6deefcc 100644
--- a/third_party/blink/web_tests/external/wpt/compat/idlharness.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/compat/idlharness.window-expected.txt
@@ -1,8 +1,12 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Window: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface HTMLBodyElement: original interface defined assert_true: Original interface should be defined expected true got false
+PASS idl_test setup
+PASS Partial interface Window: original interface defined
+PASS Partial interface HTMLBodyElement: original interface defined
+FAIL HTMLBodyElement interface: attribute onorientationchange assert_true: The prototype object must have a property "onorientationchange" expected true got false
+FAIL HTMLBodyElement interface: document.body must inherit property "onorientationchange" with the proper type assert_inherits: property "onorientationchange" not found in prototype chain
+FAIL Window interface: attribute orientation assert_own_property: The global object must have a property "orientation" expected property "orientation" missing
+FAIL Window interface: attribute onorientationchange assert_own_property: The global object must have a property "onorientationchange" expected property "onorientationchange" missing
+FAIL Window interface: window must inherit property "orientation" with the proper type assert_own_property: expected property "orientation" missing
+FAIL Window interface: window must inherit property "onorientationchange" with the proper type assert_own_property: expected property "onorientationchange" missing
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/content-security-policy/embedded-enforcement/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/content-security-policy/embedded-enforcement/idlharness.window-expected.txt
deleted file mode 100644
index 0f2f0eb..0000000
--- a/third_party/blink/web_tests/external/wpt/content-security-policy/embedded-enforcement/idlharness.window-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface HTMLIFrameElement: original interface defined assert_true: Original interface should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/content-security-policy/style-src/inline-style-allowed-while-cloning-objects.sub.html b/third_party/blink/web_tests/external/wpt/content-security-policy/style-src/inline-style-allowed-while-cloning-objects.sub.html
index 7c95f47..d2227430 100644
--- a/third_party/blink/web_tests/external/wpt/content-security-policy/style-src/inline-style-allowed-while-cloning-objects.sub.html
+++ b/third_party/blink/web_tests/external/wpt/content-security-policy/style-src/inline-style-allowed-while-cloning-objects.sub.html
@@ -111,6 +111,14 @@
             test(function() {
                 assert_equals(ops.id, clonedOps.id)
             });
+            test(function() {
+                let el = document.getElementById("svg");
+                assert_equals(el.getAttribute("style"), "");
+                el.style.background = violetOps.style.background;
+                assert_not_equals(el.style.background, "");
+                let clone = el.cloneNode(true);
+                assert_equals(el.style.background, clone.style.background)
+            }, "non-HTML namespace");
         }
 
     </script>
@@ -131,6 +139,7 @@
     <div id="violetOps">
         Yet another div.
     </div>
+    <svg id="svg" style="background: rgb(238, 130, 238)"></svg>
     <div id="log"></div>
 </body>
 
diff --git a/third_party/blink/web_tests/external/wpt/cookie-store/idlharness.tentative.https-expected.txt b/third_party/blink/web_tests/external/wpt/cookie-store/idlharness.tentative.https-expected.txt
deleted file mode 100644
index 7cc5f60..0000000
--- a/third_party/blink/web_tests/external/wpt/cookie-store/idlharness.tentative.https-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Window: original interface defined assert_true: Original interface should be defined expected true got false
-PASS Partial interface ServiceWorkerGlobalScope: original interface defined
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/credential-management/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/credential-management/idlharness.https.window-expected.txt
deleted file mode 100644
index bd900e7..0000000
--- a/third_party/blink/web_tests/external/wpt/credential-management/idlharness.https.window-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
-PASS Partial dictionary CredentialRequestOptions: original dictionary defined
-PASS Partial dictionary CredentialCreationOptions: original dictionary defined
-PASS Partial dictionary CredentialRequestOptions[2]: original dictionary defined
-PASS Partial dictionary CredentialCreationOptions[2]: original dictionary defined
-PASS Credential interface: existence and properties of interface object
-PASS Credential interface object length
-PASS Credential interface object name
-PASS Credential interface: existence and properties of interface prototype object
-PASS Credential interface: existence and properties of interface prototype object's "constructor" property
-PASS Credential interface: existence and properties of interface prototype object's @@unscopables property
-PASS Credential interface: attribute id
-PASS Credential interface: attribute type
-PASS CredentialsContainer interface: existence and properties of interface object
-PASS CredentialsContainer interface object length
-PASS CredentialsContainer interface object name
-PASS CredentialsContainer interface: existence and properties of interface prototype object
-PASS CredentialsContainer interface: existence and properties of interface prototype object's "constructor" property
-PASS CredentialsContainer interface: existence and properties of interface prototype object's @@unscopables property
-PASS CredentialsContainer interface: operation get(CredentialRequestOptions)
-PASS CredentialsContainer interface: operation store(Credential)
-PASS CredentialsContainer interface: operation create(CredentialCreationOptions)
-PASS CredentialsContainer interface: operation preventSilentAccess()
-PASS PasswordCredential interface: existence and properties of interface object
-PASS PasswordCredential interface object length
-PASS PasswordCredential interface object name
-PASS PasswordCredential interface: existence and properties of interface prototype object
-PASS PasswordCredential interface: existence and properties of interface prototype object's "constructor" property
-PASS PasswordCredential interface: existence and properties of interface prototype object's @@unscopables property
-PASS PasswordCredential interface: attribute password
-PASS PasswordCredential interface: attribute name
-PASS PasswordCredential interface: attribute iconURL
-PASS FederatedCredential interface: existence and properties of interface object
-PASS FederatedCredential interface object length
-PASS FederatedCredential interface object name
-PASS FederatedCredential interface: existence and properties of interface prototype object
-PASS FederatedCredential interface: existence and properties of interface prototype object's "constructor" property
-PASS FederatedCredential interface: existence and properties of interface prototype object's @@unscopables property
-PASS FederatedCredential interface: attribute provider
-PASS FederatedCredential interface: attribute protocol
-PASS FederatedCredential interface: attribute name
-PASS FederatedCredential interface: attribute iconURL
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/css/css-animations/idlharness-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-animations/idlharness-expected.txt
index 86842f61..58a11c55 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-animations/idlharness-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/css/css-animations/idlharness-expected.txt
@@ -1,8 +1,74 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface CSSRule: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface mixin GlobalEventHandlers: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
+Found 70 tests; 61 PASS, 9 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface CSSRule: original interface defined
+PASS Partial interface mixin GlobalEventHandlers: original interface mixin defined
+PASS AnimationEvent interface: existence and properties of interface object
+PASS AnimationEvent interface object length
+PASS AnimationEvent interface object name
+PASS AnimationEvent interface: existence and properties of interface prototype object
+PASS AnimationEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS AnimationEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS AnimationEvent interface: attribute animationName
+PASS AnimationEvent interface: attribute elapsedTime
+PASS AnimationEvent interface: attribute pseudoElement
+PASS AnimationEvent must be primary interface of new AnimationEvent("animationstart")
+PASS Stringification of new AnimationEvent("animationstart")
+PASS AnimationEvent interface: new AnimationEvent("animationstart") must inherit property "animationName" with the proper type
+PASS AnimationEvent interface: new AnimationEvent("animationstart") must inherit property "elapsedTime" with the proper type
+PASS AnimationEvent interface: new AnimationEvent("animationstart") must inherit property "pseudoElement" with the proper type
+PASS CSSKeyframeRule interface: existence and properties of interface object
+PASS CSSKeyframeRule interface object length
+PASS CSSKeyframeRule interface object name
+PASS CSSKeyframeRule interface: existence and properties of interface prototype object
+PASS CSSKeyframeRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSKeyframeRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSKeyframeRule interface: attribute keyText
+PASS CSSKeyframeRule interface: attribute style
+PASS CSSKeyframeRule must be primary interface of keyframes.cssRules[0]
+PASS Stringification of keyframes.cssRules[0]
+PASS CSSKeyframeRule interface: keyframes.cssRules[0] must inherit property "keyText" with the proper type
+PASS CSSKeyframeRule interface: keyframes.cssRules[0] must inherit property "style" with the proper type
+PASS CSSRule interface: keyframes.cssRules[0] must inherit property "KEYFRAMES_RULE" with the proper type
+PASS CSSRule interface: keyframes.cssRules[0] must inherit property "KEYFRAME_RULE" with the proper type
+PASS CSSKeyframesRule interface: existence and properties of interface object
+PASS CSSKeyframesRule interface object length
+PASS CSSKeyframesRule interface object name
+PASS CSSKeyframesRule interface: existence and properties of interface prototype object
+PASS CSSKeyframesRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSKeyframesRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSKeyframesRule interface: attribute name
+PASS CSSKeyframesRule interface: attribute cssRules
+PASS CSSKeyframesRule interface: operation appendRule(CSSOMString)
+PASS CSSKeyframesRule interface: operation deleteRule(CSSOMString)
+PASS CSSKeyframesRule interface: operation findRule(CSSOMString)
+PASS CSSKeyframesRule must be primary interface of keyframes
+PASS Stringification of keyframes
+PASS CSSKeyframesRule interface: keyframes must inherit property "name" with the proper type
+PASS CSSKeyframesRule interface: keyframes must inherit property "cssRules" with the proper type
+PASS CSSKeyframesRule interface: keyframes must inherit property "appendRule(CSSOMString)" with the proper type
+PASS CSSKeyframesRule interface: calling appendRule(CSSOMString) on keyframes with too few arguments must throw TypeError
+PASS CSSKeyframesRule interface: keyframes must inherit property "deleteRule(CSSOMString)" with the proper type
+PASS CSSKeyframesRule interface: calling deleteRule(CSSOMString) on keyframes with too few arguments must throw TypeError
+PASS CSSKeyframesRule interface: keyframes must inherit property "findRule(CSSOMString)" with the proper type
+PASS CSSKeyframesRule interface: calling findRule(CSSOMString) on keyframes with too few arguments must throw TypeError
+PASS CSSRule interface: keyframes must inherit property "KEYFRAMES_RULE" with the proper type
+PASS CSSRule interface: keyframes must inherit property "KEYFRAME_RULE" with the proper type
+FAIL HTMLElement interface: attribute onanimationstart assert_true: The prototype object must have a property "onanimationstart" expected true got false
+FAIL HTMLElement interface: attribute onanimationiteration assert_true: The prototype object must have a property "onanimationiteration" expected true got false
+FAIL HTMLElement interface: attribute onanimationend assert_true: The prototype object must have a property "onanimationend" expected true got false
+FAIL HTMLElement interface: attribute onanimationcancel assert_true: The prototype object must have a property "onanimationcancel" expected true got false
+PASS Window interface: attribute onanimationstart
+PASS Window interface: attribute onanimationiteration
+PASS Window interface: attribute onanimationend
+FAIL Window interface: attribute onanimationcancel assert_own_property: The global object must have a property "onanimationcancel" expected property "onanimationcancel" missing
+FAIL Document interface: attribute onanimationstart assert_true: The prototype object must have a property "onanimationstart" expected true got false
+FAIL Document interface: attribute onanimationiteration assert_true: The prototype object must have a property "onanimationiteration" expected true got false
+FAIL Document interface: attribute onanimationend assert_true: The prototype object must have a property "onanimationend" expected true got false
+FAIL Document interface: attribute onanimationcancel assert_true: The prototype object must have a property "onanimationcancel" expected true got false
+PASS CSSRule interface: constant KEYFRAMES_RULE on interface object
+PASS CSSRule interface: constant KEYFRAMES_RULE on interface prototype object
+PASS CSSRule interface: constant KEYFRAME_RULE on interface object
+PASS CSSRule interface: constant KEYFRAME_RULE on interface prototype object
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/css/css-box/parsing/margin-computed.html b/third_party/blink/web_tests/external/wpt/css/css-box/parsing/margin-computed.html
index f22f6cd..6c3b321 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-box/parsing/margin-computed.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-box/parsing/margin-computed.html
@@ -23,14 +23,23 @@
   <div id="target"></div>
 </div>
 <script>
+const target = document.getElementById("target");
+
 test_computed_value("margin", "10px");
 test_computed_value("margin", "10px 20px 30px 40px");
 test_computed_value("margin", "calc(0.5em + 10px)", "30px");
 test_computed_value("margin", "30%", "60px");
 
+// Since what should the margin be in presence of other margins is a bit
+// unclear (https://github.com/w3c/csswg-drafts/issues/2328), reset the margin
+// before testing.
+target.style.margin = "0";
 test_computed_value("margin-top", "10px");
+target.style.margin = "0";
 test_computed_value("margin-right", "20px");
+target.style.margin = "0";
 test_computed_value("margin-bottom", "30px");
+target.style.margin = "0";
 test_computed_value("margin-left", "40px");
 </script>
 </body>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-004-ref.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-004-ref.html
index eba5e8c..56ca5d2e 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-004-ref.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-004-ref.html
@@ -15,9 +15,9 @@
 <div>abc</div>
 <video></video><br>
 <video controls></video><br>
-<img src="../support/60x60-green.png"><br>
+<img src="support/60x60-green.png"><br>
 <picture>
-<source srcset="../support/60x60-green.png">
+<source srcset="support/60x60-green.png">
     <img>
 </picture><br>
 <canvas></canvas><br>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-004.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-004.html
index 511edadc..9f844815 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-004.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-004.html
@@ -18,9 +18,9 @@
 <div>abc</div>
 <video></video><br>
 <video controls></video><br>
-<img src="../support/60x60-green.png"><br>
+<img src="support/60x60-green.png"><br>
 <picture>
-<source srcset="../support/60x60-green.png">
+<source srcset="support/60x60-green.png">
     <img>
 </picture><br>
 <canvas></canvas><br>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-005-ref.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-005-ref.html
index a5328c7..178e137 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-005-ref.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-005-ref.html
@@ -16,9 +16,9 @@
 <div>abc</div>
 <video></video><br>
 <video controls></video><br>
-<img src="../support/60x60-green.png"><br>
+<img src="support/60x60-green.png"><br>
 <picture>
-<source srcset="../support/60x60-green.png">
+<source srcset="support/60x60-green.png">
     <img>
 </picture><br>
 <canvas></canvas><br>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-005.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-005.html
index e889dcc..754f360 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-005.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-005.html
@@ -19,9 +19,9 @@
 <div>abc</div>
 <video></video><br>
 <video controls></video><br>
-<img src="../support/60x60-green.png"><br>
+<img src="support/60x60-green.png"><br>
 <picture>
-<source srcset="../support/60x60-green.png">
+<source srcset="support/60x60-green.png">
     <img>
 </picture><br>
 <canvas></canvas><br>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-006-ref.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-006-ref.html
index 2f638d7..d6753c0 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-006-ref.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-006-ref.html
@@ -2,9 +2,8 @@
 <meta charset="utf-8">
 <title>CSS Containment Reference: Size containment replaced elements intrinsic size</title>
 <style>
-  body > div, video, audio, img, canvas, svg, iframe {
+  div, video, audio, img, canvas, svg, iframe {
     border: 3px solid orange;
-    contain: size;
     margin-bottom: 15px;
     width: 25px;
     height: 35px;
@@ -15,9 +14,9 @@
 <div>abc</div>
 <video></video><br>
 <video controls></video><br>
-<img src="../support/60x60-green.png"><br>
+<img src="support/60x60-green.png"><br>
 <picture>
-<source srcset="../support/60x60-green.png">
+<source srcset="support/60x60-green.png">
     <img>
 </picture><br>
 <canvas></canvas><br>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-006.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-006.html
index dccb799..f716ce4 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-006.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-replaced-006.html
@@ -20,9 +20,9 @@
 <div>abc</div>
 <video></video><br>
 <video controls></video><br>
-<img src="../support/60x60-green.png"><br>
+<img src="support/60x60-green.png"><br>
 <picture>
-<source srcset="../support/60x60-green.png">
+<source srcset="support/60x60-green.png">
     <img>
 </picture><br>
 <canvas></canvas><br>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/support/60x60-green.png b/third_party/blink/web_tests/external/wpt/css/css-contain/support/60x60-green.png
new file mode 100644
index 0000000..b3c8cf3eb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/support/60x60-green.png
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/support/60x60-red.png b/third_party/blink/web_tests/external/wpt/css/css-contain/support/60x60-red.png
new file mode 100644
index 0000000..823f125
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/support/60x60-red.png
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flex-wrap-006.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flex-wrap-006.html
new file mode 100644
index 0000000..e616412c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flex-wrap-006.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<title>CSS Flexbox Test: Tests correct block size with percentages and dynamic changes</title>
+<link rel="author" title="Google LLC" href="http://www.google.com">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=999253" />
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#cross-sizing" />
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+
+<!-- Each item should stretch to the size of the flex line. Because the first
+     item has no explicit height, the percentage should resolve to zero in
+     the line height calculation stage, so the second item should determine
+     the total height (500px at first, 100px after the change). When the first
+     item gets relaid out for stretching, the percentage can resolve.
+     The bug that motivated this testcase resolved the line height using
+     the previous post-stretching height of the first flex item (and
+     therefore resolves the percentage against 500px), which is incorrect.
+  -->
+<div id="flex" style="display: flex; flex-wrap: wrap;">
+  <div>
+    <div style="height: 100%; background: green; width: 100px;"></div>
+  </div>
+  <div style="height: 500px;" id="item"></div>
+</div>
+
+<script>
+var flex = document.getElementById("flex");
+flex.offsetHeight;
+var item2 = document.getElementById("item");
+item2.style.height = "100px";
+</script>
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-font-loading/idlharness.https-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-font-loading/idlharness.https-expected.txt
index adb6cc43..04294ca6 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-font-loading/idlharness.https-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/css/css-font-loading/idlharness.https-expected.txt
@@ -1,6 +1,82 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+Found 78 tests; 59 PASS, 19 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS FontFace interface: existence and properties of interface object
+PASS FontFace interface object length
+PASS FontFace interface object name
+PASS FontFace interface: existence and properties of interface prototype object
+PASS FontFace interface: existence and properties of interface prototype object's "constructor" property
+PASS FontFace interface: existence and properties of interface prototype object's @@unscopables property
+PASS FontFace interface: attribute family
+PASS FontFace interface: attribute style
+PASS FontFace interface: attribute weight
+PASS FontFace interface: attribute stretch
+PASS FontFace interface: attribute unicodeRange
+PASS FontFace interface: attribute variant
+PASS FontFace interface: attribute featureSettings
+FAIL FontFace interface: attribute variationSettings assert_true: The prototype object must have a property "variationSettings" expected true got false
+PASS FontFace interface: attribute display
+PASS FontFace interface: attribute status
+PASS FontFace interface: operation load()
+PASS FontFace interface: attribute loaded
+PASS FontFace must be primary interface of fontFace
+PASS Stringification of fontFace
+PASS FontFace interface: fontFace must inherit property "family" with the proper type
+PASS FontFace interface: fontFace must inherit property "style" with the proper type
+PASS FontFace interface: fontFace must inherit property "weight" with the proper type
+PASS FontFace interface: fontFace must inherit property "stretch" with the proper type
+PASS FontFace interface: fontFace must inherit property "unicodeRange" with the proper type
+PASS FontFace interface: fontFace must inherit property "variant" with the proper type
+PASS FontFace interface: fontFace must inherit property "featureSettings" with the proper type
+FAIL FontFace interface: fontFace must inherit property "variationSettings" with the proper type assert_inherits: property "variationSettings" not found in prototype chain
+PASS FontFace interface: fontFace must inherit property "display" with the proper type
+PASS FontFace interface: fontFace must inherit property "status" with the proper type
+PASS FontFace interface: fontFace must inherit property "load()" with the proper type
+PASS FontFace interface: fontFace must inherit property "loaded" with the proper type
+PASS FontFaceSetLoadEvent interface: existence and properties of interface object
+PASS FontFaceSetLoadEvent interface object length
+PASS FontFaceSetLoadEvent interface object name
+PASS FontFaceSetLoadEvent interface: existence and properties of interface prototype object
+PASS FontFaceSetLoadEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS FontFaceSetLoadEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS FontFaceSetLoadEvent interface: attribute fontfaces
+PASS FontFaceSetLoadEvent must be primary interface of fontFaceSetLoadEvent
+PASS Stringification of fontFaceSetLoadEvent
+PASS FontFaceSetLoadEvent interface: fontFaceSetLoadEvent must inherit property "fontfaces" with the proper type
+FAIL FontFaceSet interface: existence and properties of interface object assert_own_property: self does not have own property "FontFaceSet" expected property "FontFaceSet" missing
+FAIL FontFaceSet interface object length assert_own_property: self does not have own property "FontFaceSet" expected property "FontFaceSet" missing
+FAIL FontFaceSet interface object name assert_own_property: self does not have own property "FontFaceSet" expected property "FontFaceSet" missing
+FAIL FontFaceSet interface: existence and properties of interface prototype object assert_own_property: self does not have own property "FontFaceSet" expected property "FontFaceSet" missing
+FAIL FontFaceSet interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "FontFaceSet" expected property "FontFaceSet" missing
+FAIL FontFaceSet interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "FontFaceSet" expected property "FontFaceSet" missing
+FAIL FontFaceSet interface: operation add(FontFace) assert_own_property: self does not have own property "FontFaceSet" expected property "FontFaceSet" missing
+FAIL FontFaceSet interface: operation delete(FontFace) assert_own_property: self does not have own property "FontFaceSet" expected property "FontFaceSet" missing
+FAIL FontFaceSet interface: operation clear() assert_own_property: self does not have own property "FontFaceSet" expected property "FontFaceSet" missing
+FAIL FontFaceSet interface: attribute onloading assert_own_property: self does not have own property "FontFaceSet" expected property "FontFaceSet" missing
+FAIL FontFaceSet interface: attribute onloadingdone assert_own_property: self does not have own property "FontFaceSet" expected property "FontFaceSet" missing
+FAIL FontFaceSet interface: attribute onloadingerror assert_own_property: self does not have own property "FontFaceSet" expected property "FontFaceSet" missing
+FAIL FontFaceSet interface: operation load(CSSOMString, CSSOMString) assert_own_property: self does not have own property "FontFaceSet" expected property "FontFaceSet" missing
+FAIL FontFaceSet interface: operation check(CSSOMString, CSSOMString) assert_own_property: self does not have own property "FontFaceSet" expected property "FontFaceSet" missing
+FAIL FontFaceSet interface: attribute ready assert_own_property: self does not have own property "FontFaceSet" expected property "FontFaceSet" missing
+FAIL FontFaceSet interface: attribute status assert_own_property: self does not have own property "FontFaceSet" expected property "FontFaceSet" missing
+FAIL FontFaceSet must be primary interface of document.fonts assert_own_property: self does not have own property "FontFaceSet" expected property "FontFaceSet" missing
+PASS Stringification of document.fonts
+PASS FontFaceSet interface: document.fonts must inherit property "add(FontFace)" with the proper type
+PASS FontFaceSet interface: calling add(FontFace) on document.fonts with too few arguments must throw TypeError
+PASS FontFaceSet interface: document.fonts must inherit property "delete(FontFace)" with the proper type
+PASS FontFaceSet interface: calling delete(FontFace) on document.fonts with too few arguments must throw TypeError
+PASS FontFaceSet interface: document.fonts must inherit property "clear()" with the proper type
+PASS FontFaceSet interface: document.fonts must inherit property "onloading" with the proper type
+PASS FontFaceSet interface: document.fonts must inherit property "onloadingdone" with the proper type
+PASS FontFaceSet interface: document.fonts must inherit property "onloadingerror" with the proper type
+PASS FontFaceSet interface: document.fonts must inherit property "load(CSSOMString, CSSOMString)" with the proper type
+PASS FontFaceSet interface: calling load(CSSOMString, CSSOMString) on document.fonts with too few arguments must throw TypeError
+PASS FontFaceSet interface: document.fonts must inherit property "check(CSSOMString, CSSOMString)" with the proper type
+PASS FontFaceSet interface: calling check(CSSOMString, CSSOMString) on document.fonts with too few arguments must throw TypeError
+PASS FontFaceSet interface: document.fonts must inherit property "ready" with the proper type
+PASS FontFaceSet interface: document.fonts must inherit property "status" with the proper type
+PASS Document interface: attribute fonts
+PASS Document interface: document must inherit property "fonts" with the proper type
+PASS WorkerGlobalScope interface: existence and properties of interface object
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/css/css-inline/inheritance-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-inline/inheritance-expected.txt
index 86e56d97..04a22e0 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-inline/inheritance-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/css/css-inline/inheritance-expected.txt
@@ -13,6 +13,8 @@
 FAIL Property initial-letters-wrap inherits assert_true: initial-letters-wrap doesn't seem to be supported in the computed style expected true got false
 FAIL Property initial-sizing has initial value normal assert_true: initial-sizing doesn't seem to be supported in the computed style expected true got false
 FAIL Property initial-sizing does not inherit assert_true: expected true got false
+PASS Property line-height has initial value normal
+PASS Property line-height inherits
 PASS Property vertical-align has initial value baseline
 PASS Property vertical-align does not inherit
 Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-inline/inheritance.html b/third_party/blink/web_tests/external/wpt/css/css-inline/inheritance.html
index 7728f67..6723c2a 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-inline/inheritance.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-inline/inheritance.html
@@ -23,6 +23,8 @@
 assert_inherited('initial-letters-align', 'alphabetic', 'hanging');
 assert_inherited('initial-letters-wrap', 'none', 'grid');
 assert_not_inherited('initial-sizing', 'normal', 'stretch');
+// https://www.w3.org/TR/CSS2/visudet.html#propdef-line-height
+assert_inherited('line-height', 'normal', '20px');
 assert_not_inherited('vertical-align', 'baseline', '10px');
 </script>
 </body>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-paint-api/idlharness-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-paint-api/idlharness-expected.txt
index 227ab1b..e71217c3 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-paint-api/idlharness-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/css/css-paint-api/idlharness-expected.txt
@@ -1,7 +1,11 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+PASS idl_test setup
 PASS Partial namespace CSS: original namespace defined
+PASS PaintWorkletGlobalScope interface: existence and properties of interface object
+PASS PaintRenderingContext2D interface: existence and properties of interface object
+PASS PaintSize interface: existence and properties of interface object
+PASS CSS namespace: operation escape(CSSOMString)
+FAIL CSS namespace: attribute paintWorklet assert_own_property: CSS does not have property "paintWorklet" expected property "paintWorklet" missing
+PASS WorkletGlobalScope interface: existence and properties of interface object
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/css/css-pseudo/idlharness-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-pseudo/idlharness-expected.txt
index fa8495c..9774152 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-pseudo/idlharness-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/css/css-pseudo/idlharness-expected.txt
@@ -1,7 +1,18 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Element: original interface defined assert_true: Original interface should be defined expected true got false
+FAIL idl_test setup promise_test: Unhandled rejection with value: object "TypeError: window.getPseudoElements is not a function"
+PASS Partial interface Element: original interface defined
+FAIL CSSPseudoElement interface: existence and properties of interface object assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+FAIL CSSPseudoElement interface object length assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+FAIL CSSPseudoElement interface object name assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+FAIL CSSPseudoElement interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+FAIL CSSPseudoElement interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+FAIL CSSPseudoElement interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+FAIL CSSPseudoElement interface: attribute type assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+FAIL CSSPseudoElement interface: attribute element assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+FAIL CSSPseudoElement must be primary interface of beforeElements.item(0) assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: beforeElements is not defined"
+FAIL Stringification of beforeElements.item(0) assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: beforeElements is not defined"
+FAIL CSSPseudoElement interface: beforeElements.item(0) must inherit property "type" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: beforeElements is not defined"
+FAIL CSSPseudoElement interface: beforeElements.item(0) must inherit property "element" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: beforeElements is not defined"
+FAIL Element interface: operation pseudo(CSSOMString) assert_own_property: interface prototype object missing non-static operation expected property "pseudo" missing
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-004.html b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-004.html
index becd463..aa048b5 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-004.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-004.html
@@ -1,10 +1,11 @@
 <!doctype html>
 <meta charset=utf-8>
 <title>CSS Text test: hanging trailing spaces with white-space:pre-wrap</title>
-<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com" />
+<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com">
 <link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-phase-2">
 <link rel="match" href="reference/white-space-pre-wrap-trailing-spaces-004-ref.html">
 <meta name="assert" content="Preserved white space at the end of the line is hanged when white-space is pre-wrap.">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
 <style>
 div {
   font: 25px/1 Ahem;
diff --git a/third_party/blink/web_tests/external/wpt/css/css-transitions/idlharness-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-transitions/idlharness-expected.txt
index 68b9245d..24f1f45 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-transitions/idlharness-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/css/css-transitions/idlharness-expected.txt
@@ -1,7 +1,43 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface mixin GlobalEventHandlers: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
+PASS idl_test setup
+PASS Partial interface mixin GlobalEventHandlers: original interface mixin defined
+PASS TransitionEvent interface: existence and properties of interface object
+PASS TransitionEvent interface object length
+PASS TransitionEvent interface object name
+PASS TransitionEvent interface: existence and properties of interface prototype object
+PASS TransitionEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS TransitionEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS TransitionEvent interface: attribute propertyName
+PASS TransitionEvent interface: attribute elapsedTime
+PASS TransitionEvent interface: attribute pseudoElement
+PASS TransitionEvent must be primary interface of new TransitionEvent("transitionend")
+PASS Stringification of new TransitionEvent("transitionend")
+PASS TransitionEvent interface: new TransitionEvent("transitionend") must inherit property "propertyName" with the proper type
+PASS TransitionEvent interface: new TransitionEvent("transitionend") must inherit property "elapsedTime" with the proper type
+PASS TransitionEvent interface: new TransitionEvent("transitionend") must inherit property "pseudoElement" with the proper type
+FAIL HTMLElement interface: attribute ontransitionrun assert_true: The prototype object must have a property "ontransitionrun" expected true got false
+FAIL HTMLElement interface: attribute ontransitionstart assert_true: The prototype object must have a property "ontransitionstart" expected true got false
+FAIL HTMLElement interface: attribute ontransitionend assert_true: The prototype object must have a property "ontransitionend" expected true got false
+FAIL HTMLElement interface: attribute ontransitioncancel assert_true: The prototype object must have a property "ontransitioncancel" expected true got false
+FAIL HTMLElement interface: document must inherit property "ontransitionrun" with the proper type assert_inherits: property "ontransitionrun" not found in prototype chain
+FAIL HTMLElement interface: document must inherit property "ontransitionstart" with the proper type assert_inherits: property "ontransitionstart" not found in prototype chain
+FAIL HTMLElement interface: document must inherit property "ontransitionend" with the proper type assert_inherits: property "ontransitionend" not found in prototype chain
+FAIL HTMLElement interface: document must inherit property "ontransitioncancel" with the proper type assert_inherits: property "ontransitioncancel" not found in prototype chain
+FAIL Window interface: attribute ontransitionrun assert_own_property: The global object must have a property "ontransitionrun" expected property "ontransitionrun" missing
+FAIL Window interface: attribute ontransitionstart assert_own_property: The global object must have a property "ontransitionstart" expected property "ontransitionstart" missing
+PASS Window interface: attribute ontransitionend
+FAIL Window interface: attribute ontransitioncancel assert_own_property: The global object must have a property "ontransitioncancel" expected property "ontransitioncancel" missing
+FAIL Window interface: window must inherit property "ontransitionrun" with the proper type assert_own_property: expected property "ontransitionrun" missing
+FAIL Window interface: window must inherit property "ontransitionstart" with the proper type assert_own_property: expected property "ontransitionstart" missing
+PASS Window interface: window must inherit property "ontransitionend" with the proper type
+FAIL Window interface: window must inherit property "ontransitioncancel" with the proper type assert_own_property: expected property "ontransitioncancel" missing
+FAIL Document interface: attribute ontransitionrun assert_true: The prototype object must have a property "ontransitionrun" expected true got false
+FAIL Document interface: attribute ontransitionstart assert_true: The prototype object must have a property "ontransitionstart" expected true got false
+FAIL Document interface: attribute ontransitionend assert_true: The prototype object must have a property "ontransitionend" expected true got false
+FAIL Document interface: attribute ontransitioncancel assert_true: The prototype object must have a property "ontransitioncancel" expected true got false
+FAIL Document interface: document must inherit property "ontransitionrun" with the proper type assert_inherits: property "ontransitionrun" not found in prototype chain
+FAIL Document interface: document must inherit property "ontransitionstart" with the proper type assert_inherits: property "ontransitionstart" not found in prototype chain
+FAIL Document interface: document must inherit property "ontransitionend" with the proper type assert_inherits: property "ontransitionend" not found in prototype chain
+FAIL Document interface: document must inherit property "ontransitioncancel" with the proper type assert_inherits: property "ontransitioncancel" not found in prototype chain
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/idlharness-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/idlharness-expected.txt
index 7d2cc38..24e1caa9 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/idlharness-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/idlharness-expected.txt
@@ -1,10 +1,412 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Element: original interface defined assert_true: Original interface should be defined expected true got false
+Found 408 tests; 384 PASS, 24 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface Element: original interface defined
 PASS Partial interface CSSStyleRule: original interface defined
 PASS Partial interface mixin ElementCSSInlineStyle: original interface mixin defined
 PASS Partial namespace CSS: original namespace defined
+PASS CSSStyleValue interface: existence and properties of interface object
+PASS CSSStyleValue interface object length
+PASS CSSStyleValue interface object name
+PASS CSSStyleValue interface: existence and properties of interface prototype object
+PASS CSSStyleValue interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSStyleValue interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSStyleValue interface: stringifier
+PASS CSSStyleValue interface: operation parse(USVString, USVString)
+PASS CSSStyleValue interface: operation parseAll(USVString, USVString)
+PASS StylePropertyMapReadOnly interface: existence and properties of interface object
+PASS StylePropertyMapReadOnly interface object length
+PASS StylePropertyMapReadOnly interface object name
+PASS StylePropertyMapReadOnly interface: existence and properties of interface prototype object
+PASS StylePropertyMapReadOnly interface: existence and properties of interface prototype object's "constructor" property
+PASS StylePropertyMapReadOnly interface: existence and properties of interface prototype object's @@unscopables property
+PASS StylePropertyMapReadOnly interface: iterable<USVString, [object Object]>
+PASS StylePropertyMapReadOnly interface: operation get(USVString)
+PASS StylePropertyMapReadOnly interface: operation getAll(USVString)
+PASS StylePropertyMapReadOnly interface: operation has(USVString)
+PASS StylePropertyMapReadOnly interface: attribute size
+PASS StylePropertyMap interface: existence and properties of interface object
+PASS StylePropertyMap interface object length
+PASS StylePropertyMap interface object name
+PASS StylePropertyMap interface: existence and properties of interface prototype object
+PASS StylePropertyMap interface: existence and properties of interface prototype object's "constructor" property
+PASS StylePropertyMap interface: existence and properties of interface prototype object's @@unscopables property
+PASS StylePropertyMap interface: operation set(USVString, [object Object],[object Object])
+PASS StylePropertyMap interface: operation append(USVString, [object Object],[object Object])
+PASS StylePropertyMap interface: operation delete(USVString)
+PASS StylePropertyMap interface: operation clear()
+PASS StylePropertyMap must be primary interface of styleMap
+PASS Stringification of styleMap
+PASS StylePropertyMap interface: styleMap must inherit property "set(USVString, [object Object],[object Object])" with the proper type
+PASS StylePropertyMap interface: calling set(USVString, [object Object],[object Object]) on styleMap with too few arguments must throw TypeError
+PASS StylePropertyMap interface: styleMap must inherit property "append(USVString, [object Object],[object Object])" with the proper type
+PASS StylePropertyMap interface: calling append(USVString, [object Object],[object Object]) on styleMap with too few arguments must throw TypeError
+PASS StylePropertyMap interface: styleMap must inherit property "delete(USVString)" with the proper type
+PASS StylePropertyMap interface: calling delete(USVString) on styleMap with too few arguments must throw TypeError
+PASS StylePropertyMap interface: styleMap must inherit property "clear()" with the proper type
+PASS StylePropertyMapReadOnly interface: styleMap must inherit property "get(USVString)" with the proper type
+PASS StylePropertyMapReadOnly interface: calling get(USVString) on styleMap with too few arguments must throw TypeError
+PASS StylePropertyMapReadOnly interface: styleMap must inherit property "getAll(USVString)" with the proper type
+PASS StylePropertyMapReadOnly interface: calling getAll(USVString) on styleMap with too few arguments must throw TypeError
+PASS StylePropertyMapReadOnly interface: styleMap must inherit property "has(USVString)" with the proper type
+PASS StylePropertyMapReadOnly interface: calling has(USVString) on styleMap with too few arguments must throw TypeError
+PASS StylePropertyMapReadOnly interface: styleMap must inherit property "size" with the proper type
+PASS CSSUnparsedValue interface: existence and properties of interface object
+PASS CSSUnparsedValue interface object length
+PASS CSSUnparsedValue interface object name
+PASS CSSUnparsedValue interface: existence and properties of interface prototype object
+PASS CSSUnparsedValue interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSUnparsedValue interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSUnparsedValue interface: iterable<CSSUnparsedSegment>
+PASS CSSUnparsedValue interface: attribute length
+PASS CSSVariableReferenceValue interface: existence and properties of interface object
+PASS CSSVariableReferenceValue interface object length
+PASS CSSVariableReferenceValue interface object name
+PASS CSSVariableReferenceValue interface: existence and properties of interface prototype object
+PASS CSSVariableReferenceValue interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSVariableReferenceValue interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSVariableReferenceValue interface: attribute variable
+PASS CSSVariableReferenceValue interface: attribute fallback
+PASS CSSKeywordValue interface: existence and properties of interface object
+PASS CSSKeywordValue interface object length
+PASS CSSKeywordValue interface object name
+PASS CSSKeywordValue interface: existence and properties of interface prototype object
+PASS CSSKeywordValue interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSKeywordValue interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSKeywordValue interface: attribute value
+PASS CSSNumericValue interface: existence and properties of interface object
+PASS CSSNumericValue interface object length
+PASS CSSNumericValue interface object name
+PASS CSSNumericValue interface: existence and properties of interface prototype object
+PASS CSSNumericValue interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSNumericValue interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSNumericValue interface: operation add(CSSNumberish)
+PASS CSSNumericValue interface: operation sub(CSSNumberish)
+PASS CSSNumericValue interface: operation mul(CSSNumberish)
+PASS CSSNumericValue interface: operation div(CSSNumberish)
+PASS CSSNumericValue interface: operation min(CSSNumberish)
+PASS CSSNumericValue interface: operation max(CSSNumberish)
+PASS CSSNumericValue interface: operation equals(CSSNumberish)
+PASS CSSNumericValue interface: operation to(USVString)
+PASS CSSNumericValue interface: operation toSum(USVString)
+PASS CSSNumericValue interface: operation type()
+PASS CSSNumericValue interface: operation parse(USVString)
+PASS CSSUnitValue interface: existence and properties of interface object
+PASS CSSUnitValue interface object length
+PASS CSSUnitValue interface object name
+PASS CSSUnitValue interface: existence and properties of interface prototype object
+PASS CSSUnitValue interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSUnitValue interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSUnitValue interface: attribute value
+PASS CSSUnitValue interface: attribute unit
+PASS CSSUnitValue must be primary interface of unitValue
+PASS Stringification of unitValue
+PASS CSSUnitValue interface: unitValue must inherit property "value" with the proper type
+PASS CSSUnitValue interface: unitValue must inherit property "unit" with the proper type
+PASS CSSNumericValue interface: unitValue must inherit property "add(CSSNumberish)" with the proper type
+PASS CSSNumericValue interface: calling add(CSSNumberish) on unitValue with too few arguments must throw TypeError
+PASS CSSNumericValue interface: unitValue must inherit property "sub(CSSNumberish)" with the proper type
+PASS CSSNumericValue interface: calling sub(CSSNumberish) on unitValue with too few arguments must throw TypeError
+PASS CSSNumericValue interface: unitValue must inherit property "mul(CSSNumberish)" with the proper type
+PASS CSSNumericValue interface: calling mul(CSSNumberish) on unitValue with too few arguments must throw TypeError
+PASS CSSNumericValue interface: unitValue must inherit property "div(CSSNumberish)" with the proper type
+PASS CSSNumericValue interface: calling div(CSSNumberish) on unitValue with too few arguments must throw TypeError
+PASS CSSNumericValue interface: unitValue must inherit property "min(CSSNumberish)" with the proper type
+PASS CSSNumericValue interface: calling min(CSSNumberish) on unitValue with too few arguments must throw TypeError
+PASS CSSNumericValue interface: unitValue must inherit property "max(CSSNumberish)" with the proper type
+PASS CSSNumericValue interface: calling max(CSSNumberish) on unitValue with too few arguments must throw TypeError
+PASS CSSNumericValue interface: unitValue must inherit property "equals(CSSNumberish)" with the proper type
+PASS CSSNumericValue interface: calling equals(CSSNumberish) on unitValue with too few arguments must throw TypeError
+PASS CSSNumericValue interface: unitValue must inherit property "to(USVString)" with the proper type
+PASS CSSNumericValue interface: calling to(USVString) on unitValue with too few arguments must throw TypeError
+PASS CSSNumericValue interface: unitValue must inherit property "toSum(USVString)" with the proper type
+PASS CSSNumericValue interface: calling toSum(USVString) on unitValue with too few arguments must throw TypeError
+PASS CSSNumericValue interface: unitValue must inherit property "type()" with the proper type
+PASS CSSNumericValue interface: unitValue must inherit property "parse(USVString)" with the proper type
+FAIL CSSNumericValue interface: calling parse(USVString) on unitValue with too few arguments must throw TypeError assert_own_property: interface object must have static operation as own property expected property "parse" missing
+PASS CSSStyleValue interface: unitValue must inherit property "parse(USVString, USVString)" with the proper type
+FAIL CSSStyleValue interface: calling parse(USVString, USVString) on unitValue with too few arguments must throw TypeError assert_own_property: interface object must have static operation as own property expected property "parse" missing
+PASS CSSStyleValue interface: unitValue must inherit property "parseAll(USVString, USVString)" with the proper type
+FAIL CSSStyleValue interface: calling parseAll(USVString, USVString) on unitValue with too few arguments must throw TypeError assert_own_property: interface object must have static operation as own property expected property "parseAll" missing
+PASS CSSMathValue interface: existence and properties of interface object
+PASS CSSMathValue interface object length
+PASS CSSMathValue interface object name
+PASS CSSMathValue interface: existence and properties of interface prototype object
+PASS CSSMathValue interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSMathValue interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSMathValue interface: attribute operator
+PASS CSSMathSum interface: existence and properties of interface object
+PASS CSSMathSum interface object length
+PASS CSSMathSum interface object name
+PASS CSSMathSum interface: existence and properties of interface prototype object
+PASS CSSMathSum interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSMathSum interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSMathSum interface: attribute values
+PASS CSSMathSum must be primary interface of mathSum
+PASS Stringification of mathSum
+PASS CSSMathSum interface: mathSum must inherit property "values" with the proper type
+PASS CSSMathValue interface: mathSum must inherit property "operator" with the proper type
+PASS CSSNumericValue interface: mathSum must inherit property "add(CSSNumberish)" with the proper type
+PASS CSSNumericValue interface: calling add(CSSNumberish) on mathSum with too few arguments must throw TypeError
+PASS CSSNumericValue interface: mathSum must inherit property "sub(CSSNumberish)" with the proper type
+PASS CSSNumericValue interface: calling sub(CSSNumberish) on mathSum with too few arguments must throw TypeError
+PASS CSSNumericValue interface: mathSum must inherit property "mul(CSSNumberish)" with the proper type
+PASS CSSNumericValue interface: calling mul(CSSNumberish) on mathSum with too few arguments must throw TypeError
+PASS CSSNumericValue interface: mathSum must inherit property "div(CSSNumberish)" with the proper type
+PASS CSSNumericValue interface: calling div(CSSNumberish) on mathSum with too few arguments must throw TypeError
+PASS CSSNumericValue interface: mathSum must inherit property "min(CSSNumberish)" with the proper type
+PASS CSSNumericValue interface: calling min(CSSNumberish) on mathSum with too few arguments must throw TypeError
+PASS CSSNumericValue interface: mathSum must inherit property "max(CSSNumberish)" with the proper type
+PASS CSSNumericValue interface: calling max(CSSNumberish) on mathSum with too few arguments must throw TypeError
+PASS CSSNumericValue interface: mathSum must inherit property "equals(CSSNumberish)" with the proper type
+PASS CSSNumericValue interface: calling equals(CSSNumberish) on mathSum with too few arguments must throw TypeError
+PASS CSSNumericValue interface: mathSum must inherit property "to(USVString)" with the proper type
+PASS CSSNumericValue interface: calling to(USVString) on mathSum with too few arguments must throw TypeError
+PASS CSSNumericValue interface: mathSum must inherit property "toSum(USVString)" with the proper type
+PASS CSSNumericValue interface: calling toSum(USVString) on mathSum with too few arguments must throw TypeError
+PASS CSSNumericValue interface: mathSum must inherit property "type()" with the proper type
+PASS CSSNumericValue interface: mathSum must inherit property "parse(USVString)" with the proper type
+FAIL CSSNumericValue interface: calling parse(USVString) on mathSum with too few arguments must throw TypeError assert_own_property: interface object must have static operation as own property expected property "parse" missing
+PASS CSSStyleValue interface: mathSum must inherit property "parse(USVString, USVString)" with the proper type
+FAIL CSSStyleValue interface: calling parse(USVString, USVString) on mathSum with too few arguments must throw TypeError assert_own_property: interface object must have static operation as own property expected property "parse" missing
+PASS CSSStyleValue interface: mathSum must inherit property "parseAll(USVString, USVString)" with the proper type
+FAIL CSSStyleValue interface: calling parseAll(USVString, USVString) on mathSum with too few arguments must throw TypeError assert_own_property: interface object must have static operation as own property expected property "parseAll" missing
+PASS CSSMathProduct interface: existence and properties of interface object
+PASS CSSMathProduct interface object length
+PASS CSSMathProduct interface object name
+PASS CSSMathProduct interface: existence and properties of interface prototype object
+PASS CSSMathProduct interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSMathProduct interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSMathProduct interface: attribute values
+PASS CSSMathNegate interface: existence and properties of interface object
+PASS CSSMathNegate interface object length
+PASS CSSMathNegate interface object name
+PASS CSSMathNegate interface: existence and properties of interface prototype object
+PASS CSSMathNegate interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSMathNegate interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSMathNegate interface: attribute value
+PASS CSSMathInvert interface: existence and properties of interface object
+PASS CSSMathInvert interface object length
+PASS CSSMathInvert interface object name
+PASS CSSMathInvert interface: existence and properties of interface prototype object
+PASS CSSMathInvert interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSMathInvert interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSMathInvert interface: attribute value
+PASS CSSMathMin interface: existence and properties of interface object
+PASS CSSMathMin interface object length
+PASS CSSMathMin interface object name
+PASS CSSMathMin interface: existence and properties of interface prototype object
+PASS CSSMathMin interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSMathMin interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSMathMin interface: attribute values
+PASS CSSMathMax interface: existence and properties of interface object
+PASS CSSMathMax interface object length
+PASS CSSMathMax interface object name
+PASS CSSMathMax interface: existence and properties of interface prototype object
+PASS CSSMathMax interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSMathMax interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSMathMax interface: attribute values
+FAIL CSSMathClamp interface: existence and properties of interface object assert_own_property: self does not have own property "CSSMathClamp" expected property "CSSMathClamp" missing
+FAIL CSSMathClamp interface object length assert_own_property: self does not have own property "CSSMathClamp" expected property "CSSMathClamp" missing
+FAIL CSSMathClamp interface object name assert_own_property: self does not have own property "CSSMathClamp" expected property "CSSMathClamp" missing
+FAIL CSSMathClamp interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CSSMathClamp" expected property "CSSMathClamp" missing
+FAIL CSSMathClamp interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CSSMathClamp" expected property "CSSMathClamp" missing
+FAIL CSSMathClamp interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CSSMathClamp" expected property "CSSMathClamp" missing
+FAIL CSSMathClamp interface: attribute min assert_own_property: self does not have own property "CSSMathClamp" expected property "CSSMathClamp" missing
+FAIL CSSMathClamp interface: attribute val assert_own_property: self does not have own property "CSSMathClamp" expected property "CSSMathClamp" missing
+FAIL CSSMathClamp interface: attribute max assert_own_property: self does not have own property "CSSMathClamp" expected property "CSSMathClamp" missing
+PASS CSSNumericArray interface: existence and properties of interface object
+PASS CSSNumericArray interface object length
+PASS CSSNumericArray interface object name
+PASS CSSNumericArray interface: existence and properties of interface prototype object
+PASS CSSNumericArray interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSNumericArray interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSNumericArray interface: iterable<CSSNumericValue>
+PASS CSSNumericArray interface: attribute length
+PASS CSSTransformValue interface: existence and properties of interface object
+PASS CSSTransformValue interface object length
+PASS CSSTransformValue interface object name
+PASS CSSTransformValue interface: existence and properties of interface prototype object
+PASS CSSTransformValue interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSTransformValue interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSTransformValue interface: iterable<CSSTransformComponent>
+PASS CSSTransformValue interface: attribute length
+PASS CSSTransformValue interface: attribute is2D
+PASS CSSTransformValue interface: operation toMatrix()
+PASS CSSTransformValue must be primary interface of transformValue
+PASS Stringification of transformValue
+PASS CSSTransformValue interface: transformValue must inherit property "length" with the proper type
+PASS CSSTransformValue interface: transformValue must inherit property "is2D" with the proper type
+PASS CSSTransformValue interface: transformValue must inherit property "toMatrix()" with the proper type
+PASS CSSStyleValue interface: transformValue must inherit property "parse(USVString, USVString)" with the proper type
+FAIL CSSStyleValue interface: calling parse(USVString, USVString) on transformValue with too few arguments must throw TypeError assert_own_property: interface object must have static operation as own property expected property "parse" missing
+PASS CSSStyleValue interface: transformValue must inherit property "parseAll(USVString, USVString)" with the proper type
+FAIL CSSStyleValue interface: calling parseAll(USVString, USVString) on transformValue with too few arguments must throw TypeError assert_own_property: interface object must have static operation as own property expected property "parseAll" missing
+PASS CSSTransformComponent interface: existence and properties of interface object
+PASS CSSTransformComponent interface object length
+PASS CSSTransformComponent interface object name
+PASS CSSTransformComponent interface: existence and properties of interface prototype object
+PASS CSSTransformComponent interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSTransformComponent interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSTransformComponent interface: stringifier
+PASS CSSTransformComponent interface: attribute is2D
+PASS CSSTransformComponent interface: operation toMatrix()
+PASS CSSTranslate interface: existence and properties of interface object
+PASS CSSTranslate interface object length
+PASS CSSTranslate interface object name
+PASS CSSTranslate interface: existence and properties of interface prototype object
+PASS CSSTranslate interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSTranslate interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSTranslate interface: attribute x
+PASS CSSTranslate interface: attribute y
+PASS CSSTranslate interface: attribute z
+PASS CSSTranslate must be primary interface of transformValue[0]
+PASS Stringification of transformValue[0]
+PASS CSSTranslate interface: transformValue[0] must inherit property "x" with the proper type
+PASS CSSTranslate interface: transformValue[0] must inherit property "y" with the proper type
+PASS CSSTranslate interface: transformValue[0] must inherit property "z" with the proper type
+PASS CSSTransformComponent interface: transformValue[0] must inherit property "is2D" with the proper type
+PASS CSSTransformComponent interface: transformValue[0] must inherit property "toMatrix()" with the proper type
+PASS CSSRotate interface: existence and properties of interface object
+PASS CSSRotate interface object length
+PASS CSSRotate interface object name
+PASS CSSRotate interface: existence and properties of interface prototype object
+PASS CSSRotate interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSRotate interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSRotate interface: attribute x
+PASS CSSRotate interface: attribute y
+PASS CSSRotate interface: attribute z
+PASS CSSRotate interface: attribute angle
+PASS CSSRotate must be primary interface of rotate
+PASS Stringification of rotate
+PASS CSSRotate interface: rotate must inherit property "x" with the proper type
+PASS CSSRotate interface: rotate must inherit property "y" with the proper type
+PASS CSSRotate interface: rotate must inherit property "z" with the proper type
+PASS CSSRotate interface: rotate must inherit property "angle" with the proper type
+PASS CSSTransformComponent interface: rotate must inherit property "is2D" with the proper type
+PASS CSSTransformComponent interface: rotate must inherit property "toMatrix()" with the proper type
+PASS CSSScale interface: existence and properties of interface object
+PASS CSSScale interface object length
+PASS CSSScale interface object name
+PASS CSSScale interface: existence and properties of interface prototype object
+PASS CSSScale interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSScale interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSScale interface: attribute x
+PASS CSSScale interface: attribute y
+PASS CSSScale interface: attribute z
+PASS CSSScale must be primary interface of scale
+PASS Stringification of scale
+PASS CSSScale interface: scale must inherit property "x" with the proper type
+PASS CSSScale interface: scale must inherit property "y" with the proper type
+PASS CSSScale interface: scale must inherit property "z" with the proper type
+PASS CSSTransformComponent interface: scale must inherit property "is2D" with the proper type
+PASS CSSTransformComponent interface: scale must inherit property "toMatrix()" with the proper type
+PASS CSSSkew interface: existence and properties of interface object
+PASS CSSSkew interface object length
+PASS CSSSkew interface object name
+PASS CSSSkew interface: existence and properties of interface prototype object
+PASS CSSSkew interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSSkew interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSSkew interface: attribute ax
+PASS CSSSkew interface: attribute ay
+PASS CSSSkew must be primary interface of skew
+PASS Stringification of skew
+PASS CSSSkew interface: skew must inherit property "ax" with the proper type
+PASS CSSSkew interface: skew must inherit property "ay" with the proper type
+PASS CSSTransformComponent interface: skew must inherit property "is2D" with the proper type
+PASS CSSTransformComponent interface: skew must inherit property "toMatrix()" with the proper type
+PASS CSSSkewX interface: existence and properties of interface object
+PASS CSSSkewX interface object length
+PASS CSSSkewX interface object name
+PASS CSSSkewX interface: existence and properties of interface prototype object
+PASS CSSSkewX interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSSkewX interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSSkewX interface: attribute ax
+PASS CSSSkewX must be primary interface of skewX
+PASS Stringification of skewX
+PASS CSSSkewX interface: skewX must inherit property "ax" with the proper type
+PASS CSSTransformComponent interface: skewX must inherit property "is2D" with the proper type
+PASS CSSTransformComponent interface: skewX must inherit property "toMatrix()" with the proper type
+PASS CSSSkewY interface: existence and properties of interface object
+PASS CSSSkewY interface object length
+PASS CSSSkewY interface object name
+PASS CSSSkewY interface: existence and properties of interface prototype object
+PASS CSSSkewY interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSSkewY interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSSkewY interface: attribute ay
+PASS CSSSkewY must be primary interface of skewY
+PASS Stringification of skewY
+PASS CSSSkewY interface: skewY must inherit property "ay" with the proper type
+PASS CSSTransformComponent interface: skewY must inherit property "is2D" with the proper type
+PASS CSSTransformComponent interface: skewY must inherit property "toMatrix()" with the proper type
+PASS CSSPerspective interface: existence and properties of interface object
+PASS CSSPerspective interface object length
+PASS CSSPerspective interface object name
+PASS CSSPerspective interface: existence and properties of interface prototype object
+PASS CSSPerspective interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSPerspective interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSPerspective interface: attribute length
+PASS CSSPerspective must be primary interface of perspective
+PASS Stringification of perspective
+PASS CSSPerspective interface: perspective must inherit property "length" with the proper type
+PASS CSSTransformComponent interface: perspective must inherit property "is2D" with the proper type
+PASS CSSTransformComponent interface: perspective must inherit property "toMatrix()" with the proper type
+PASS CSSMatrixComponent interface: existence and properties of interface object
+PASS CSSMatrixComponent interface object length
+PASS CSSMatrixComponent interface object name
+PASS CSSMatrixComponent interface: existence and properties of interface prototype object
+PASS CSSMatrixComponent interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSMatrixComponent interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSMatrixComponent interface: attribute matrix
+PASS CSSMatrixComponent must be primary interface of matrix
+PASS Stringification of matrix
+PASS CSSMatrixComponent interface: matrix must inherit property "matrix" with the proper type
+PASS CSSTransformComponent interface: matrix must inherit property "is2D" with the proper type
+PASS CSSTransformComponent interface: matrix must inherit property "toMatrix()" with the proper type
+PASS CSSImageValue interface: existence and properties of interface object
+PASS CSSImageValue interface object length
+PASS CSSImageValue interface object name
+PASS CSSImageValue interface: existence and properties of interface prototype object
+PASS CSSImageValue interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSImageValue interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSStyleRule interface: attribute styleMap
+PASS CSS namespace: operation escape(CSSOMString)
+PASS CSS namespace: operation number(double)
+PASS CSS namespace: operation percent(double)
+PASS CSS namespace: operation em(double)
+PASS CSS namespace: operation ex(double)
+PASS CSS namespace: operation ch(double)
+FAIL CSS namespace: operation ic(double) assert_own_property: namespace object missing operation "ic" expected property "ic" missing
+PASS CSS namespace: operation rem(double)
+FAIL CSS namespace: operation lh(double) assert_own_property: namespace object missing operation "lh" expected property "lh" missing
+FAIL CSS namespace: operation rlh(double) assert_own_property: namespace object missing operation "rlh" expected property "rlh" missing
+PASS CSS namespace: operation vw(double)
+PASS CSS namespace: operation vh(double)
+FAIL CSS namespace: operation vi(double) assert_own_property: namespace object missing operation "vi" expected property "vi" missing
+FAIL CSS namespace: operation vb(double) assert_own_property: namespace object missing operation "vb" expected property "vb" missing
+PASS CSS namespace: operation vmin(double)
+PASS CSS namespace: operation vmax(double)
+PASS CSS namespace: operation cm(double)
+PASS CSS namespace: operation mm(double)
+PASS CSS namespace: operation Q(double)
+PASS CSS namespace: operation in(double)
+PASS CSS namespace: operation pt(double)
+PASS CSS namespace: operation pc(double)
+PASS CSS namespace: operation px(double)
+PASS CSS namespace: operation deg(double)
+PASS CSS namespace: operation grad(double)
+PASS CSS namespace: operation rad(double)
+PASS CSS namespace: operation turn(double)
+PASS CSS namespace: operation s(double)
+PASS CSS namespace: operation ms(double)
+PASS CSS namespace: operation Hz(double)
+PASS CSS namespace: operation kHz(double)
+PASS CSS namespace: operation dpi(double)
+PASS CSS namespace: operation dpcm(double)
+PASS CSS namespace: operation dppx(double)
+PASS CSS namespace: operation fr(double)
+FAIL SVGElement interface: attribute attributeStyleMap assert_own_property: expected property "attributeStyleMap" missing
+FAIL HTMLElement interface: attribute attributeStyleMap assert_own_property: expected property "attributeStyleMap" missing
+PASS Element interface: operation computedStyleMap()
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/css/css-variables/vars-font-shorthand-001.html b/third_party/blink/web_tests/external/wpt/css/css-variables/vars-font-shorthand-001.html
index 3c28054..e10aa87 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-variables/vars-font-shorthand-001.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-variables/vars-font-shorthand-001.html
@@ -4,6 +4,7 @@
 <link rel="help" href="https://www.w3.org/TR/css-variables-1/#variables-in-shorthands">
 <link rel="match" href="reference/vars-font-shorthand-001-ref.html">
 <meta name="flags" content="ahem">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
 <style>
 
 div {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-003.html b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-003.html
index c938c905..70a61a9 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-003.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-003.html
@@ -7,7 +7,7 @@
 <meta name="assert" content="When an orthogonal flow's parent doesn't have a definite block size and the nearest ancestor scroller does have a fixed height, use that, making sure you stick with the content height.">
 <meta name="flags" content="">
 <style>
-body > div {
+#scroller {
   font-family: monospace; /* to be able to reliably measure things in ch*/
   font-size: 20px;
   height: 8ch;
@@ -15,12 +15,11 @@
   overflow: hidden;
   color: transparent;
   position: relative; /* to act as a container of #red */
-  writing-mode: vertical-lr;
   padding: 1ch 0;
 }
 
-div > div { padding-bottom: 2ch; } /* so that the content height of the parent and of the fixed size scrolling ancestor are different */
-div > div > div { writing-mode: vertical-rl; }
+#parent { padding-bottom: 2ch; } /* so that the content height of the parent and of the fixed size scrolling ancestor are different */
+#ortho { writing-mode: vertical-rl; }
 
 span {
   background: green;
@@ -38,9 +37,11 @@
 
 <p>Test passes if there is a <strong>green rectangle</strong> below and <strong>no red</strong>.
 
-<div>
-  <aside id="red">0</aside>
-  <div><div>0 0 0 0 <span>0</span> 0 0 0</div></div> <!-- If this div take its height from
-  the height of its scrollable ancestor, it should wrap just right for the green 0 to
-  overlap with the red one. -->
+<div id=scroller>
+  <aside id=red>0</aside>
+  <div id=parent>
+    <div id=ortho>0 0 0 0 <span>0</span> 0 0 0</div>
+    <!-- If this div take its height from the height of its scrollable ancestor,
+         it should wrap just right for the green 0 to overlap with the red one. -->
+  </div>
 </div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-005.html b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-005.html
index ee32489..5eb832f 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-005.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-005.html
@@ -7,7 +7,7 @@
 <meta name="assert" content="When an orthogonal flow's parent doesn't have a definite block size and the nearest ancestor scroller does a have fixed height, use that whole height, even if some other content already consumes some of it.">
 <meta name="flags" content="">
 <style>
-body > div {
+#scroller {
   font-family: monospace; /* to be able to reliably measure things in ch*/
   font-size: 20px;
   height: 8ch;
@@ -17,8 +17,8 @@
   position: relative; /* to act as a container of #red */
 }
 
-div > div { padding-bottom: 2ch; } /* so that the content height of the parent and of the fixed size scrolling ancestor are different */
-div > div > div { writing-mode: vertical-rl; }
+#parent { padding-bottom: 2ch; } /* so that the content height of the parent and of the fixed size scrolling ancestor are different */
+#ortho { writing-mode: vertical-rl; }
 
 span {
   background: green;
@@ -41,9 +41,12 @@
 
 <p>Test passes if there is a <strong>green rectangle</strong> below and <strong>no red</strong>.
 
-<div>
+<div id=scroller>
   <aside id="red">0</aside>
-  <div><aside id="spacer"></aside><div>0 0 0 0 <span>0</span> 0 0 0</div></div>
+  <div id=parent>
+    <aside id=spacer></aside>
+    <div id=ortho>0 0 0 0 <span>0</span> 0 0 0</div>
+  </div>
   <!-- If the inner div take its height from the height of its scrollable
   ancestor, it should wrap just right for the green 0 to overlap with the red
   one. If instead it takes it size from the remaining height after having
diff --git a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-009.html b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-009.html
index 5e26975..94f083a 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-009.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-009.html
@@ -9,7 +9,7 @@
 <style>
 body { margin-top: 0; margin-bottom: 0; } /* Shouldn't matter, but in some browsers does. -007 tests this aspect specifically. */
 :root { overflow: hidden; }
-div {
+#ortho {
   writing-mode: vertical-rl;
   font-family: monospace;
   font-size: 20px;
@@ -17,7 +17,7 @@
 }
 .spacer { /* using 5 spacers of 20vh each instead of a single large one, so
              that the line would wrap between spacers if it ends up being
-             shorter thatn 100vh*/
+             shorter than 100vh*/
   display: inline-block;
   height: calc(20vh - 0.1px); /*Using this instead of 20vh, to account for accumulation of rounding errors, that might make 5*20vh taller than 100vh in some browsers*/
 }
@@ -38,18 +38,21 @@
   left: 0; top: 0;
 }
 
-section {
+#scroller {
   overflow: hidden;
-  writing-mode: vertical-rl;
+  writing-mode: vertical-lr;
   height: 120vh;
 }
-section > section {
+#parent {
   writing-mode: horizontal-tb;
+  width: 8em; /* avoid triggering intrinsic sizing bugs */
 }
 </style>
 
 <p>Test passes if there is a <strong>green rectangle</strong> below and <strong>no red</strong>.
 
-<section>
-<div><aside id="red">0</aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside> <span>0</span></div>
-</section>
+<div id=scroller>
+  <div id=parent>
+    <div id=ortho><aside id="red">0</aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside> <span>0</span></div>
+  </div>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-013.html b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-013.html
index 1ffd656..4cb6b23 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-013.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-013.html
@@ -7,7 +7,7 @@
 <meta name="assert" content="When an orthogonal flow's parent doesn't have a definite block size and the nearest ancestor scroller does have a fixed height, use that, increased by the min-height if it is set and is larger (same as -003, with min-height).">
 <meta name="flags" content="">
 <style>
-body > div {
+#scroller {
   font-family: monospace; /* to be able to reliably measure things in ch*/
   font-size: 20px;
   height: 4ch;
@@ -16,12 +16,11 @@
   overflow: hidden;
   color: transparent;
   position: relative; /* to act as a container of #red */
-  writing-mode: vertical-lr;
   padding: 1ch 0;
 }
 
-div > div { padding-bottom: 2ch; } /* so that the content height of the parent and of the fixed size scrolling ancestor are different */
-div > div > div { writing-mode: vertical-rl; }
+#parent { padding-bottom: 2ch; } /* so that the content height of the parent and of the fixed size scrolling ancestor are different */
+#ortho { writing-mode: vertical-rl; }
 
 span {
   background: green;
@@ -39,9 +38,11 @@
 
 <p>Test passes if there is a <strong>green rectangle</strong> below and <strong>no red</strong>.
 
-<div>
-  <aside id="red">0</aside>
-  <div><div>0 0 0 0 <span>0</span> 0 0 0</div></div> <!-- If this div take its height from
-  the height of its scrollable ancestor, it should wrap just right for the green 0 to
-  overlap with the red one. -->
+<div id=scroller>
+  <aside id=red>0</aside>
+  <div id=parent>
+    <div id=ortho>0 0 0 0 <span>0</span> 0 0 0</div>
+    <!-- If this div take its height from the height of its scrollable ancestor,
+         it should wrap just right for the green 0 to overlap with the red one. -->
+  </div>
 </div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-014.html b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-014.html
index e0e41fb6..8e955cf5 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-014.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-014.html
@@ -7,7 +7,7 @@
 <meta name="assert" content="When an orthogonal flow's parent doesn't have a definite block size and the nearest ancestor scroller does a have fixed height, use that whole height increased by min-height if that's larger, even if some other content already consumes some of it (same as -005, with min-height).">
 <meta name="flags" content="">
 <style>
-body > div {
+#scroller {
   font-family: monospace; /* to be able to reliably measure things in ch*/
   font-size: 20px;
   height: 4ch;
@@ -18,8 +18,8 @@
   position: relative; /* to act as a container of #red */
 }
 
-div > div { padding-bottom: 2ch; } /* so that the content height of the parent and of the fixed size scrolling ancestor are different */
-div > div > div { writing-mode: vertical-rl; }
+#parent { padding-bottom: 2ch; } /* so that the content height of the parent and of the fixed size scrolling ancestor are different */
+#ortho { writing-mode: vertical-rl; }
 
 span {
   background: green;
@@ -42,9 +42,12 @@
 
 <p>Test passes if there is a <strong>green rectangle</strong> below and <strong>no red</strong>.
 
-<div>
+<div id=scroller>
   <aside id="red">0</aside>
-  <div><aside id="spacer"></aside><div>0 0 0 0 <span>0</span> 0 0 0</div></div>
+  <div id=parent>
+    <aside id=spacer></aside>
+    <div id=ortho>0 0 0 0 <span>0</span> 0 0 0</div>
+  </div>
   <!-- If the inner div take its height from the height of its scrollable
   ancestor, it should wrap just right for the green 0 to overlap with the red
   one. If instead it takes it size from the remaining height after having
diff --git a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-016.html b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-016.html
index 15038868..ba39803 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-016.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/available-size-016.html
@@ -9,7 +9,7 @@
 <style>
 body { margin-top: 0; margin-bottom: 0; } /* Shouldn't matter, but in some browsers does. -007 tests this aspect specifically. */
 :root { overflow: hidden; }
-div {
+#ortho {
   writing-mode: vertical-rl;
   font-family: monospace;
   font-size: 20px;
@@ -38,19 +38,22 @@
   left: 0; top: 0;
 }
 
-section {
+#scroller {
   overflow: hidden;
-  writing-mode: vertical-rl;
+  writing-mode: vertical-lr;
   height: 40vh;
   min-height: 120vh;
 }
-section > section {
+#parent {
   writing-mode: horizontal-tb;
+  width: 8em; /* avoid triggering intrinsic sizing bugs */
 }
 </style>
 
 <p>Test passes if there is a <strong>green rectangle</strong> below and <strong>no red</strong>.
 
-<section>
-<div><aside id="red">0</aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside> <span>0</span></div>
-</section>
+<div id=scroller>
+  <div id=parent>
+    <div id=ortho><aside id="red">0</aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside><aside class="spacer"></aside> <span>0</span></div>
+  </div>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/cssom/idlharness-expected.txt b/third_party/blink/web_tests/external/wpt/css/cssom/idlharness-expected.txt
index 49014ccb..c364cca 100644
--- a/third_party/blink/web_tests/external/wpt/css/cssom/idlharness-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/css/cssom/idlharness-expected.txt
@@ -1,9 +1,395 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+Found 389 tests; 334 PASS, 55 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
 PASS Partial interface CSSStyleSheet: original interface defined
-FAIL Partial interface mixin DocumentOrShadowRoot: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
-FAIL Partial interface Window: original interface defined assert_true: Original interface should be defined expected true got false
+PASS Partial interface mixin DocumentOrShadowRoot: original interface mixin defined
+PASS Partial interface Window: original interface defined
+PASS MediaList interface: existence and properties of interface object
+PASS MediaList interface object length
+PASS MediaList interface object name
+PASS MediaList interface: existence and properties of interface prototype object
+PASS MediaList interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaList interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaList interface: attribute mediaText
+PASS MediaList interface: stringifier
+PASS MediaList interface: attribute length
+PASS MediaList interface: operation item(unsigned long)
+PASS MediaList interface: operation appendMedium(CSSOMString)
+PASS MediaList interface: operation deleteMedium(CSSOMString)
+PASS MediaList must be primary interface of sheet.media
+PASS Stringification of sheet.media
+PASS MediaList interface: sheet.media must inherit property "mediaText" with the proper type
+PASS MediaList interface: sheet.media must inherit property "length" with the proper type
+PASS MediaList interface: sheet.media must inherit property "item(unsigned long)" with the proper type
+PASS MediaList interface: calling item(unsigned long) on sheet.media with too few arguments must throw TypeError
+PASS MediaList interface: sheet.media must inherit property "appendMedium(CSSOMString)" with the proper type
+PASS MediaList interface: calling appendMedium(CSSOMString) on sheet.media with too few arguments must throw TypeError
+PASS MediaList interface: sheet.media must inherit property "deleteMedium(CSSOMString)" with the proper type
+PASS MediaList interface: calling deleteMedium(CSSOMString) on sheet.media with too few arguments must throw TypeError
+PASS StyleSheet interface: existence and properties of interface object
+PASS StyleSheet interface object length
+PASS StyleSheet interface object name
+PASS StyleSheet interface: existence and properties of interface prototype object
+PASS StyleSheet interface: existence and properties of interface prototype object's "constructor" property
+PASS StyleSheet interface: existence and properties of interface prototype object's @@unscopables property
+PASS StyleSheet interface: attribute type
+PASS StyleSheet interface: attribute href
+PASS StyleSheet interface: attribute ownerNode
+PASS StyleSheet interface: attribute parentStyleSheet
+PASS StyleSheet interface: attribute title
+PASS StyleSheet interface: attribute media
+PASS StyleSheet interface: attribute disabled
+FAIL CSSStyleSheet interface: existence and properties of interface object assert_throws: interface object didn't throw TypeError when called as a constructor function "function() {
+                new interface_object();
+            }" did not throw
+PASS CSSStyleSheet interface object length
+PASS CSSStyleSheet interface object name
+PASS CSSStyleSheet interface: existence and properties of interface prototype object
+PASS CSSStyleSheet interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSStyleSheet interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSStyleSheet interface: attribute ownerRule
+PASS CSSStyleSheet interface: attribute cssRules
+PASS CSSStyleSheet interface: operation insertRule(CSSOMString, unsigned long)
+PASS CSSStyleSheet interface: operation deleteRule(unsigned long)
+PASS CSSStyleSheet interface: attribute rules
+PASS CSSStyleSheet interface: operation addRule(DOMString, DOMString, unsigned long)
+PASS CSSStyleSheet interface: operation removeRule(unsigned long)
+PASS CSSStyleSheet must be primary interface of sheet
+PASS Stringification of sheet
+PASS CSSStyleSheet interface: sheet must inherit property "ownerRule" with the proper type
+PASS CSSStyleSheet interface: sheet must inherit property "cssRules" with the proper type
+PASS CSSStyleSheet interface: sheet must inherit property "insertRule(CSSOMString, unsigned long)" with the proper type
+PASS CSSStyleSheet interface: calling insertRule(CSSOMString, unsigned long) on sheet with too few arguments must throw TypeError
+PASS CSSStyleSheet interface: sheet must inherit property "deleteRule(unsigned long)" with the proper type
+PASS CSSStyleSheet interface: calling deleteRule(unsigned long) on sheet with too few arguments must throw TypeError
+PASS CSSStyleSheet interface: sheet must inherit property "rules" with the proper type
+PASS CSSStyleSheet interface: sheet must inherit property "addRule(DOMString, DOMString, unsigned long)" with the proper type
+PASS CSSStyleSheet interface: calling addRule(DOMString, DOMString, unsigned long) on sheet with too few arguments must throw TypeError
+PASS CSSStyleSheet interface: sheet must inherit property "removeRule(unsigned long)" with the proper type
+PASS CSSStyleSheet interface: calling removeRule(unsigned long) on sheet with too few arguments must throw TypeError
+PASS StyleSheet interface: sheet must inherit property "type" with the proper type
+PASS StyleSheet interface: sheet must inherit property "href" with the proper type
+PASS StyleSheet interface: sheet must inherit property "ownerNode" with the proper type
+PASS StyleSheet interface: sheet must inherit property "parentStyleSheet" with the proper type
+PASS StyleSheet interface: sheet must inherit property "title" with the proper type
+PASS StyleSheet interface: sheet must inherit property "media" with the proper type
+PASS StyleSheet interface: sheet must inherit property "disabled" with the proper type
+PASS StyleSheetList interface: existence and properties of interface object
+PASS StyleSheetList interface object length
+PASS StyleSheetList interface object name
+PASS StyleSheetList interface: existence and properties of interface prototype object
+PASS StyleSheetList interface: existence and properties of interface prototype object's "constructor" property
+PASS StyleSheetList interface: existence and properties of interface prototype object's @@unscopables property
+PASS StyleSheetList interface: operation item(unsigned long)
+PASS StyleSheetList interface: attribute length
+PASS StyleSheetList must be primary interface of document.styleSheets
+PASS Stringification of document.styleSheets
+PASS StyleSheetList interface: document.styleSheets must inherit property "item(unsigned long)" with the proper type
+PASS StyleSheetList interface: calling item(unsigned long) on document.styleSheets with too few arguments must throw TypeError
+PASS StyleSheetList interface: document.styleSheets must inherit property "length" with the proper type
+PASS CSSRuleList interface: existence and properties of interface object
+PASS CSSRuleList interface object length
+PASS CSSRuleList interface object name
+PASS CSSRuleList interface: existence and properties of interface prototype object
+PASS CSSRuleList interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSRuleList interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSRuleList interface: operation item(unsigned long)
+PASS CSSRuleList interface: attribute length
+PASS CSSRuleList must be primary interface of sheet.cssRules
+PASS Stringification of sheet.cssRules
+PASS CSSRuleList interface: sheet.cssRules must inherit property "item(unsigned long)" with the proper type
+PASS CSSRuleList interface: calling item(unsigned long) on sheet.cssRules with too few arguments must throw TypeError
+PASS CSSRuleList interface: sheet.cssRules must inherit property "length" with the proper type
+PASS CSSRule interface: existence and properties of interface object
+PASS CSSRule interface object length
+PASS CSSRule interface object name
+PASS CSSRule interface: existence and properties of interface prototype object
+PASS CSSRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSRule interface: attribute cssText
+PASS CSSRule interface: attribute parentRule
+PASS CSSRule interface: attribute parentStyleSheet
+PASS CSSRule interface: attribute type
+PASS CSSRule interface: constant STYLE_RULE on interface object
+PASS CSSRule interface: constant STYLE_RULE on interface prototype object
+PASS CSSRule interface: constant CHARSET_RULE on interface object
+PASS CSSRule interface: constant CHARSET_RULE on interface prototype object
+PASS CSSRule interface: constant IMPORT_RULE on interface object
+PASS CSSRule interface: constant IMPORT_RULE on interface prototype object
+PASS CSSRule interface: constant MEDIA_RULE on interface object
+PASS CSSRule interface: constant MEDIA_RULE on interface prototype object
+PASS CSSRule interface: constant FONT_FACE_RULE on interface object
+PASS CSSRule interface: constant FONT_FACE_RULE on interface prototype object
+PASS CSSRule interface: constant PAGE_RULE on interface object
+PASS CSSRule interface: constant PAGE_RULE on interface prototype object
+FAIL CSSRule interface: constant MARGIN_RULE on interface object assert_own_property: expected property "MARGIN_RULE" missing
+FAIL CSSRule interface: constant MARGIN_RULE on interface prototype object assert_own_property: expected property "MARGIN_RULE" missing
+PASS CSSRule interface: constant NAMESPACE_RULE on interface object
+PASS CSSRule interface: constant NAMESPACE_RULE on interface prototype object
+PASS CSSStyleRule interface: existence and properties of interface object
+PASS CSSStyleRule interface object length
+PASS CSSStyleRule interface object name
+PASS CSSStyleRule interface: existence and properties of interface prototype object
+PASS CSSStyleRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSStyleRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSStyleRule interface: attribute selectorText
+PASS CSSStyleRule interface: attribute style
+PASS CSSStyleRule must be primary interface of sheet.cssRules[4]
+PASS Stringification of sheet.cssRules[4]
+PASS CSSStyleRule interface: sheet.cssRules[4] must inherit property "selectorText" with the proper type
+PASS CSSStyleRule interface: sheet.cssRules[4] must inherit property "style" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "cssText" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "parentRule" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "parentStyleSheet" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "type" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "STYLE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "CHARSET_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "IMPORT_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "MEDIA_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "FONT_FACE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "PAGE_RULE" with the proper type
+FAIL CSSRule interface: sheet.cssRules[4] must inherit property "MARGIN_RULE" with the proper type assert_inherits: property "MARGIN_RULE" not found in prototype chain
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "NAMESPACE_RULE" with the proper type
+PASS CSSImportRule interface: existence and properties of interface object
+PASS CSSImportRule interface object length
+PASS CSSImportRule interface object name
+PASS CSSImportRule interface: existence and properties of interface prototype object
+PASS CSSImportRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSImportRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSImportRule interface: attribute href
+PASS CSSImportRule interface: attribute media
+PASS CSSImportRule interface: attribute styleSheet
+PASS CSSImportRule must be primary interface of sheet.cssRules[0]
+PASS Stringification of sheet.cssRules[0]
+PASS CSSImportRule interface: sheet.cssRules[0] must inherit property "href" with the proper type
+PASS CSSImportRule interface: sheet.cssRules[0] must inherit property "media" with the proper type
+PASS CSSImportRule interface: sheet.cssRules[0] must inherit property "styleSheet" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "cssText" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "parentRule" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "parentStyleSheet" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "type" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "STYLE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "CHARSET_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "IMPORT_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "MEDIA_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "FONT_FACE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "PAGE_RULE" with the proper type
+FAIL CSSRule interface: sheet.cssRules[0] must inherit property "MARGIN_RULE" with the proper type assert_inherits: property "MARGIN_RULE" not found in prototype chain
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "NAMESPACE_RULE" with the proper type
+PASS CSSGroupingRule interface: existence and properties of interface object
+PASS CSSGroupingRule interface object length
+PASS CSSGroupingRule interface object name
+PASS CSSGroupingRule interface: existence and properties of interface prototype object
+PASS CSSGroupingRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSGroupingRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSGroupingRule interface: attribute cssRules
+FAIL CSSGroupingRule interface: operation insertRule(CSSOMString, unsigned long) assert_equals: property has wrong .length expected 1 but got 2
+PASS CSSGroupingRule interface: operation deleteRule(unsigned long)
+FAIL CSSPageRule interface: existence and properties of interface object assert_equals: prototype of CSSPageRule is not CSSGroupingRule expected function "function CSSGroupingRule() { [native code] }" but got function "function CSSRule() { [native code] }"
+PASS CSSPageRule interface object length
+PASS CSSPageRule interface object name
+FAIL CSSPageRule interface: existence and properties of interface prototype object assert_equals: prototype of CSSPageRule.prototype is not CSSGroupingRule.prototype expected object "[object CSSGroupingRule]" but got object "[object CSSRule]"
+PASS CSSPageRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSPageRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSPageRule interface: attribute selectorText
+PASS CSSPageRule interface: attribute style
+PASS CSSPageRule must be primary interface of sheet.cssRules[2]
+PASS Stringification of sheet.cssRules[2]
+PASS CSSPageRule interface: sheet.cssRules[2] must inherit property "selectorText" with the proper type
+PASS CSSPageRule interface: sheet.cssRules[2] must inherit property "style" with the proper type
+FAIL CSSGroupingRule interface: sheet.cssRules[2] must inherit property "cssRules" with the proper type assert_inherits: property "cssRules" not found in prototype chain
+FAIL CSSGroupingRule interface: sheet.cssRules[2] must inherit property "insertRule(CSSOMString, unsigned long)" with the proper type assert_inherits: property "insertRule" not found in prototype chain
+FAIL CSSGroupingRule interface: calling insertRule(CSSOMString, unsigned long) on sheet.cssRules[2] with too few arguments must throw TypeError assert_inherits: property "insertRule" not found in prototype chain
+FAIL CSSGroupingRule interface: sheet.cssRules[2] must inherit property "deleteRule(unsigned long)" with the proper type assert_inherits: property "deleteRule" not found in prototype chain
+FAIL CSSGroupingRule interface: calling deleteRule(unsigned long) on sheet.cssRules[2] with too few arguments must throw TypeError assert_inherits: property "deleteRule" not found in prototype chain
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "cssText" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "parentRule" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "parentStyleSheet" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "type" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "STYLE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "CHARSET_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "IMPORT_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "MEDIA_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "FONT_FACE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "PAGE_RULE" with the proper type
+FAIL CSSRule interface: sheet.cssRules[2] must inherit property "MARGIN_RULE" with the proper type assert_inherits: property "MARGIN_RULE" not found in prototype chain
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "NAMESPACE_RULE" with the proper type
+FAIL CSSMarginRule interface: existence and properties of interface object assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface object length assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface object name assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface: attribute name assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface: attribute style assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule must be primary interface of sheet.cssRules[2].cssRules[0] assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL Stringification of sheet.cssRules[2].cssRules[0] assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSMarginRule interface: sheet.cssRules[2].cssRules[0] must inherit property "name" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSMarginRule interface: sheet.cssRules[2].cssRules[0] must inherit property "style" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "cssText" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "parentRule" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "parentStyleSheet" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "type" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "STYLE_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "CHARSET_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "IMPORT_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "MEDIA_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "FONT_FACE_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "PAGE_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "MARGIN_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "NAMESPACE_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+PASS CSSNamespaceRule interface: existence and properties of interface object
+PASS CSSNamespaceRule interface object length
+PASS CSSNamespaceRule interface object name
+PASS CSSNamespaceRule interface: existence and properties of interface prototype object
+PASS CSSNamespaceRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSNamespaceRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSNamespaceRule interface: attribute namespaceURI
+PASS CSSNamespaceRule interface: attribute prefix
+PASS CSSNamespaceRule must be primary interface of sheet.cssRules[1]
+PASS Stringification of sheet.cssRules[1]
+PASS CSSNamespaceRule interface: sheet.cssRules[1] must inherit property "namespaceURI" with the proper type
+PASS CSSNamespaceRule interface: sheet.cssRules[1] must inherit property "prefix" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "cssText" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "parentRule" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "parentStyleSheet" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "type" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "STYLE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "CHARSET_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "IMPORT_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "MEDIA_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "FONT_FACE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "PAGE_RULE" with the proper type
+FAIL CSSRule interface: sheet.cssRules[1] must inherit property "MARGIN_RULE" with the proper type assert_inherits: property "MARGIN_RULE" not found in prototype chain
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "NAMESPACE_RULE" with the proper type
+PASS CSSStyleDeclaration interface: existence and properties of interface object
+PASS CSSStyleDeclaration interface object length
+PASS CSSStyleDeclaration interface object name
+PASS CSSStyleDeclaration interface: existence and properties of interface prototype object
+PASS CSSStyleDeclaration interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSStyleDeclaration interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSStyleDeclaration interface: attribute cssText
+PASS CSSStyleDeclaration interface: attribute length
+PASS CSSStyleDeclaration interface: operation item(unsigned long)
+PASS CSSStyleDeclaration interface: operation getPropertyValue(CSSOMString)
+PASS CSSStyleDeclaration interface: operation getPropertyPriority(CSSOMString)
+PASS CSSStyleDeclaration interface: operation setProperty(CSSOMString, CSSOMString, CSSOMString)
+PASS CSSStyleDeclaration interface: operation removeProperty(CSSOMString)
+PASS CSSStyleDeclaration interface: attribute parentRule
+PASS CSSStyleDeclaration interface: attribute cssFloat
+PASS CSSStyleDeclaration must be primary interface of sheet.cssRules[4].style
+PASS Stringification of sheet.cssRules[4].style
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "cssText" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "length" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "item(unsigned long)" with the proper type
+PASS CSSStyleDeclaration interface: calling item(unsigned long) on sheet.cssRules[4].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "getPropertyValue(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on sheet.cssRules[4].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "getPropertyPriority(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on sheet.cssRules[4].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "setProperty(CSSOMString, CSSOMString, CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, CSSOMString) on sheet.cssRules[4].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "removeProperty(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on sheet.cssRules[4].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "parentRule" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "cssFloat" with the proper type
+PASS CSSStyleDeclaration must be primary interface of sheet.cssRules[2].style
+PASS Stringification of sheet.cssRules[2].style
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "cssText" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "length" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "item(unsigned long)" with the proper type
+PASS CSSStyleDeclaration interface: calling item(unsigned long) on sheet.cssRules[2].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "getPropertyValue(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on sheet.cssRules[2].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "getPropertyPriority(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on sheet.cssRules[2].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "setProperty(CSSOMString, CSSOMString, CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, CSSOMString) on sheet.cssRules[2].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "removeProperty(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on sheet.cssRules[2].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "parentRule" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "cssFloat" with the proper type
+FAIL CSSStyleDeclaration must be primary interface of sheet.cssRules[2].cssRules[0].style assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL Stringification of sheet.cssRules[2].cssRules[0].style assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "cssText" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "length" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "item(unsigned long)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: calling item(unsigned long) on sheet.cssRules[2].cssRules[0].style with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "getPropertyValue(CSSOMString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on sheet.cssRules[2].cssRules[0].style with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "getPropertyPriority(CSSOMString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on sheet.cssRules[2].cssRules[0].style with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "setProperty(CSSOMString, CSSOMString, CSSOMString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, CSSOMString) on sheet.cssRules[2].cssRules[0].style with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "removeProperty(CSSOMString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on sheet.cssRules[2].cssRules[0].style with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "parentRule" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "cssFloat" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+PASS CSSStyleDeclaration must be primary interface of style_element.style
+PASS Stringification of style_element.style
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "cssText" with the proper type
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "length" with the proper type
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "item(unsigned long)" with the proper type
+PASS CSSStyleDeclaration interface: calling item(unsigned long) on style_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "getPropertyValue(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on style_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "getPropertyPriority(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on style_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "setProperty(CSSOMString, CSSOMString, CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, CSSOMString) on style_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "removeProperty(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on style_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "parentRule" with the proper type
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "cssFloat" with the proper type
+PASS CSSStyleDeclaration must be primary interface of svg_element.style
+PASS Stringification of svg_element.style
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "cssText" with the proper type
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "length" with the proper type
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "item(unsigned long)" with the proper type
+PASS CSSStyleDeclaration interface: calling item(unsigned long) on svg_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "getPropertyValue(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on svg_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "getPropertyPriority(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on svg_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "setProperty(CSSOMString, CSSOMString, CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, CSSOMString) on svg_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "removeProperty(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on svg_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "parentRule" with the proper type
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "cssFloat" with the proper type
+PASS CSSStyleDeclaration must be primary interface of getComputedStyle(svg_element)
+PASS Stringification of getComputedStyle(svg_element)
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "cssText" with the proper type
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "length" with the proper type
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "item(unsigned long)" with the proper type
+PASS CSSStyleDeclaration interface: calling item(unsigned long) on getComputedStyle(svg_element) with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "getPropertyValue(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on getComputedStyle(svg_element) with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "getPropertyPriority(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on getComputedStyle(svg_element) with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "setProperty(CSSOMString, CSSOMString, CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, CSSOMString) on getComputedStyle(svg_element) with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "removeProperty(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on getComputedStyle(svg_element) with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "parentRule" with the proper type
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "cssFloat" with the proper type
+PASS CSS namespace: operation escape(CSSOMString)
+PASS SVGElement interface: attribute style
+PASS SVGElement interface: svg_element must inherit property "style" with the proper type
+PASS SVGStyleElement interface: attribute sheet
+PASS HTMLElement interface: attribute style
+PASS HTMLElement interface: style_element must inherit property "style" with the proper type
+PASS HTMLElement interface: document.createElement("unknownelement") must inherit property "style" with the proper type
+PASS HTMLLinkElement interface: attribute sheet
+PASS HTMLStyleElement interface: attribute sheet
+PASS Window interface: operation getComputedStyle(Element, CSSOMString)
+PASS Window interface: window must inherit property "getComputedStyle(Element, CSSOMString)" with the proper type
+PASS Window interface: calling getComputedStyle(Element, CSSOMString) on window with too few arguments must throw TypeError
+PASS Document interface: attribute styleSheets
+PASS Document interface: document must inherit property "styleSheets" with the proper type
+PASS Document interface: new Document() must inherit property "styleSheets" with the proper type
+PASS ShadowRoot interface: attribute styleSheets
+PASS ProcessingInstruction interface: attribute sheet
+PASS ProcessingInstruction interface: xmlss_pi must inherit property "sheet" with the proper type
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/css/filter-effects/idlharness.any-expected.txt b/third_party/blink/web_tests/external/wpt/css/filter-effects/idlharness.any-expected.txt
index adb6cc43..4fc02f1 100644
--- a/third_party/blink/web_tests/external/wpt/css/filter-effects/idlharness.any-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/css/filter-effects/idlharness.any-expected.txt
@@ -1,6 +1,462 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+Found 458 tests; 448 PASS, 10 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS SVGFilterElement interface: existence and properties of interface object
+PASS SVGFilterElement interface object length
+PASS SVGFilterElement interface object name
+PASS SVGFilterElement interface: existence and properties of interface prototype object
+PASS SVGFilterElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFilterElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFilterElement interface: attribute filterUnits
+PASS SVGFilterElement interface: attribute primitiveUnits
+PASS SVGFilterElement interface: attribute x
+PASS SVGFilterElement interface: attribute y
+PASS SVGFilterElement interface: attribute width
+PASS SVGFilterElement interface: attribute height
+PASS SVGFEBlendElement interface: existence and properties of interface object
+PASS SVGFEBlendElement interface object length
+PASS SVGFEBlendElement interface object name
+PASS SVGFEBlendElement interface: existence and properties of interface prototype object
+PASS SVGFEBlendElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFEBlendElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_UNKNOWN on interface object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_UNKNOWN on interface prototype object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_NORMAL on interface object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_NORMAL on interface prototype object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_MULTIPLY on interface object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_MULTIPLY on interface prototype object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_SCREEN on interface object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_SCREEN on interface prototype object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_DARKEN on interface object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_DARKEN on interface prototype object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_LIGHTEN on interface object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_LIGHTEN on interface prototype object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_OVERLAY on interface object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_OVERLAY on interface prototype object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_COLOR_DODGE on interface object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_COLOR_DODGE on interface prototype object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_COLOR_BURN on interface object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_COLOR_BURN on interface prototype object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_HARD_LIGHT on interface object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_HARD_LIGHT on interface prototype object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_SOFT_LIGHT on interface object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_SOFT_LIGHT on interface prototype object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_DIFFERENCE on interface object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_DIFFERENCE on interface prototype object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_EXCLUSION on interface object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_EXCLUSION on interface prototype object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_HUE on interface object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_HUE on interface prototype object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_SATURATION on interface object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_SATURATION on interface prototype object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_COLOR on interface object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_COLOR on interface prototype object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_LUMINOSITY on interface object
+PASS SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_LUMINOSITY on interface prototype object
+PASS SVGFEBlendElement interface: attribute in1
+PASS SVGFEBlendElement interface: attribute in2
+PASS SVGFEBlendElement interface: attribute mode
+PASS SVGFEBlendElement interface: attribute x
+PASS SVGFEBlendElement interface: attribute y
+PASS SVGFEBlendElement interface: attribute width
+PASS SVGFEBlendElement interface: attribute height
+PASS SVGFEBlendElement interface: attribute result
+PASS SVGFEColorMatrixElement interface: existence and properties of interface object
+PASS SVGFEColorMatrixElement interface object length
+PASS SVGFEColorMatrixElement interface object name
+PASS SVGFEColorMatrixElement interface: existence and properties of interface prototype object
+PASS SVGFEColorMatrixElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFEColorMatrixElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFEColorMatrixElement interface: constant SVG_FECOLORMATRIX_TYPE_UNKNOWN on interface object
+PASS SVGFEColorMatrixElement interface: constant SVG_FECOLORMATRIX_TYPE_UNKNOWN on interface prototype object
+PASS SVGFEColorMatrixElement interface: constant SVG_FECOLORMATRIX_TYPE_MATRIX on interface object
+PASS SVGFEColorMatrixElement interface: constant SVG_FECOLORMATRIX_TYPE_MATRIX on interface prototype object
+PASS SVGFEColorMatrixElement interface: constant SVG_FECOLORMATRIX_TYPE_SATURATE on interface object
+PASS SVGFEColorMatrixElement interface: constant SVG_FECOLORMATRIX_TYPE_SATURATE on interface prototype object
+PASS SVGFEColorMatrixElement interface: constant SVG_FECOLORMATRIX_TYPE_HUEROTATE on interface object
+PASS SVGFEColorMatrixElement interface: constant SVG_FECOLORMATRIX_TYPE_HUEROTATE on interface prototype object
+PASS SVGFEColorMatrixElement interface: constant SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA on interface object
+PASS SVGFEColorMatrixElement interface: constant SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA on interface prototype object
+PASS SVGFEColorMatrixElement interface: attribute in1
+PASS SVGFEColorMatrixElement interface: attribute type
+PASS SVGFEColorMatrixElement interface: attribute values
+PASS SVGFEColorMatrixElement interface: attribute x
+PASS SVGFEColorMatrixElement interface: attribute y
+PASS SVGFEColorMatrixElement interface: attribute width
+PASS SVGFEColorMatrixElement interface: attribute height
+PASS SVGFEColorMatrixElement interface: attribute result
+PASS SVGFEComponentTransferElement interface: existence and properties of interface object
+PASS SVGFEComponentTransferElement interface object length
+PASS SVGFEComponentTransferElement interface object name
+PASS SVGFEComponentTransferElement interface: existence and properties of interface prototype object
+PASS SVGFEComponentTransferElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFEComponentTransferElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFEComponentTransferElement interface: attribute in1
+PASS SVGFEComponentTransferElement interface: attribute x
+PASS SVGFEComponentTransferElement interface: attribute y
+PASS SVGFEComponentTransferElement interface: attribute width
+PASS SVGFEComponentTransferElement interface: attribute height
+PASS SVGFEComponentTransferElement interface: attribute result
+PASS SVGComponentTransferFunctionElement interface: existence and properties of interface object
+PASS SVGComponentTransferFunctionElement interface object length
+PASS SVGComponentTransferFunctionElement interface object name
+PASS SVGComponentTransferFunctionElement interface: existence and properties of interface prototype object
+PASS SVGComponentTransferFunctionElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGComponentTransferFunctionElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN on interface object
+PASS SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN on interface prototype object
+PASS SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY on interface object
+PASS SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY on interface prototype object
+PASS SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_TABLE on interface object
+PASS SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_TABLE on interface prototype object
+PASS SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE on interface object
+PASS SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE on interface prototype object
+PASS SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_LINEAR on interface object
+PASS SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_LINEAR on interface prototype object
+PASS SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_GAMMA on interface object
+PASS SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_GAMMA on interface prototype object
+PASS SVGComponentTransferFunctionElement interface: attribute type
+PASS SVGComponentTransferFunctionElement interface: attribute tableValues
+PASS SVGComponentTransferFunctionElement interface: attribute slope
+PASS SVGComponentTransferFunctionElement interface: attribute intercept
+PASS SVGComponentTransferFunctionElement interface: attribute amplitude
+PASS SVGComponentTransferFunctionElement interface: attribute exponent
+PASS SVGComponentTransferFunctionElement interface: attribute offset
+PASS SVGFEFuncRElement interface: existence and properties of interface object
+PASS SVGFEFuncRElement interface object length
+PASS SVGFEFuncRElement interface object name
+PASS SVGFEFuncRElement interface: existence and properties of interface prototype object
+PASS SVGFEFuncRElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFEFuncRElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFEFuncGElement interface: existence and properties of interface object
+PASS SVGFEFuncGElement interface object length
+PASS SVGFEFuncGElement interface object name
+PASS SVGFEFuncGElement interface: existence and properties of interface prototype object
+PASS SVGFEFuncGElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFEFuncGElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFEFuncBElement interface: existence and properties of interface object
+PASS SVGFEFuncBElement interface object length
+PASS SVGFEFuncBElement interface object name
+PASS SVGFEFuncBElement interface: existence and properties of interface prototype object
+PASS SVGFEFuncBElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFEFuncBElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFEFuncAElement interface: existence and properties of interface object
+PASS SVGFEFuncAElement interface object length
+PASS SVGFEFuncAElement interface object name
+PASS SVGFEFuncAElement interface: existence and properties of interface prototype object
+PASS SVGFEFuncAElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFEFuncAElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFECompositeElement interface: existence and properties of interface object
+PASS SVGFECompositeElement interface object length
+PASS SVGFECompositeElement interface object name
+PASS SVGFECompositeElement interface: existence and properties of interface prototype object
+PASS SVGFECompositeElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFECompositeElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_UNKNOWN on interface object
+PASS SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_UNKNOWN on interface prototype object
+PASS SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_OVER on interface object
+PASS SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_OVER on interface prototype object
+PASS SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_IN on interface object
+PASS SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_IN on interface prototype object
+PASS SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_OUT on interface object
+PASS SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_OUT on interface prototype object
+PASS SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_ATOP on interface object
+PASS SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_ATOP on interface prototype object
+PASS SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_XOR on interface object
+PASS SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_XOR on interface prototype object
+PASS SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_ARITHMETIC on interface object
+PASS SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_ARITHMETIC on interface prototype object
+PASS SVGFECompositeElement interface: attribute in1
+PASS SVGFECompositeElement interface: attribute in2
+PASS SVGFECompositeElement interface: attribute operator
+PASS SVGFECompositeElement interface: attribute k1
+PASS SVGFECompositeElement interface: attribute k2
+PASS SVGFECompositeElement interface: attribute k3
+PASS SVGFECompositeElement interface: attribute k4
+PASS SVGFECompositeElement interface: attribute x
+PASS SVGFECompositeElement interface: attribute y
+PASS SVGFECompositeElement interface: attribute width
+PASS SVGFECompositeElement interface: attribute height
+PASS SVGFECompositeElement interface: attribute result
+PASS SVGFEConvolveMatrixElement interface: existence and properties of interface object
+PASS SVGFEConvolveMatrixElement interface object length
+PASS SVGFEConvolveMatrixElement interface object name
+PASS SVGFEConvolveMatrixElement interface: existence and properties of interface prototype object
+PASS SVGFEConvolveMatrixElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFEConvolveMatrixElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFEConvolveMatrixElement interface: constant SVG_EDGEMODE_UNKNOWN on interface object
+PASS SVGFEConvolveMatrixElement interface: constant SVG_EDGEMODE_UNKNOWN on interface prototype object
+PASS SVGFEConvolveMatrixElement interface: constant SVG_EDGEMODE_DUPLICATE on interface object
+PASS SVGFEConvolveMatrixElement interface: constant SVG_EDGEMODE_DUPLICATE on interface prototype object
+PASS SVGFEConvolveMatrixElement interface: constant SVG_EDGEMODE_WRAP on interface object
+PASS SVGFEConvolveMatrixElement interface: constant SVG_EDGEMODE_WRAP on interface prototype object
+PASS SVGFEConvolveMatrixElement interface: constant SVG_EDGEMODE_NONE on interface object
+PASS SVGFEConvolveMatrixElement interface: constant SVG_EDGEMODE_NONE on interface prototype object
+PASS SVGFEConvolveMatrixElement interface: attribute in1
+PASS SVGFEConvolveMatrixElement interface: attribute orderX
+PASS SVGFEConvolveMatrixElement interface: attribute orderY
+PASS SVGFEConvolveMatrixElement interface: attribute kernelMatrix
+PASS SVGFEConvolveMatrixElement interface: attribute divisor
+PASS SVGFEConvolveMatrixElement interface: attribute bias
+PASS SVGFEConvolveMatrixElement interface: attribute targetX
+PASS SVGFEConvolveMatrixElement interface: attribute targetY
+PASS SVGFEConvolveMatrixElement interface: attribute edgeMode
+PASS SVGFEConvolveMatrixElement interface: attribute kernelUnitLengthX
+PASS SVGFEConvolveMatrixElement interface: attribute kernelUnitLengthY
+PASS SVGFEConvolveMatrixElement interface: attribute preserveAlpha
+PASS SVGFEConvolveMatrixElement interface: attribute x
+PASS SVGFEConvolveMatrixElement interface: attribute y
+PASS SVGFEConvolveMatrixElement interface: attribute width
+PASS SVGFEConvolveMatrixElement interface: attribute height
+PASS SVGFEConvolveMatrixElement interface: attribute result
+PASS SVGFEDiffuseLightingElement interface: existence and properties of interface object
+PASS SVGFEDiffuseLightingElement interface object length
+PASS SVGFEDiffuseLightingElement interface object name
+PASS SVGFEDiffuseLightingElement interface: existence and properties of interface prototype object
+PASS SVGFEDiffuseLightingElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFEDiffuseLightingElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFEDiffuseLightingElement interface: attribute in1
+PASS SVGFEDiffuseLightingElement interface: attribute surfaceScale
+PASS SVGFEDiffuseLightingElement interface: attribute diffuseConstant
+PASS SVGFEDiffuseLightingElement interface: attribute kernelUnitLengthX
+PASS SVGFEDiffuseLightingElement interface: attribute kernelUnitLengthY
+PASS SVGFEDiffuseLightingElement interface: attribute x
+PASS SVGFEDiffuseLightingElement interface: attribute y
+PASS SVGFEDiffuseLightingElement interface: attribute width
+PASS SVGFEDiffuseLightingElement interface: attribute height
+PASS SVGFEDiffuseLightingElement interface: attribute result
+PASS SVGFEDistantLightElement interface: existence and properties of interface object
+PASS SVGFEDistantLightElement interface object length
+PASS SVGFEDistantLightElement interface object name
+PASS SVGFEDistantLightElement interface: existence and properties of interface prototype object
+PASS SVGFEDistantLightElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFEDistantLightElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFEDistantLightElement interface: attribute azimuth
+PASS SVGFEDistantLightElement interface: attribute elevation
+PASS SVGFEPointLightElement interface: existence and properties of interface object
+PASS SVGFEPointLightElement interface object length
+PASS SVGFEPointLightElement interface object name
+PASS SVGFEPointLightElement interface: existence and properties of interface prototype object
+PASS SVGFEPointLightElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFEPointLightElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFEPointLightElement interface: attribute x
+PASS SVGFEPointLightElement interface: attribute y
+PASS SVGFEPointLightElement interface: attribute z
+PASS SVGFESpotLightElement interface: existence and properties of interface object
+PASS SVGFESpotLightElement interface object length
+PASS SVGFESpotLightElement interface object name
+PASS SVGFESpotLightElement interface: existence and properties of interface prototype object
+PASS SVGFESpotLightElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFESpotLightElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFESpotLightElement interface: attribute x
+PASS SVGFESpotLightElement interface: attribute y
+PASS SVGFESpotLightElement interface: attribute z
+PASS SVGFESpotLightElement interface: attribute pointsAtX
+PASS SVGFESpotLightElement interface: attribute pointsAtY
+PASS SVGFESpotLightElement interface: attribute pointsAtZ
+PASS SVGFESpotLightElement interface: attribute specularExponent
+PASS SVGFESpotLightElement interface: attribute limitingConeAngle
+PASS SVGFEDisplacementMapElement interface: existence and properties of interface object
+PASS SVGFEDisplacementMapElement interface object length
+PASS SVGFEDisplacementMapElement interface object name
+PASS SVGFEDisplacementMapElement interface: existence and properties of interface prototype object
+PASS SVGFEDisplacementMapElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFEDisplacementMapElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFEDisplacementMapElement interface: constant SVG_CHANNEL_UNKNOWN on interface object
+PASS SVGFEDisplacementMapElement interface: constant SVG_CHANNEL_UNKNOWN on interface prototype object
+PASS SVGFEDisplacementMapElement interface: constant SVG_CHANNEL_R on interface object
+PASS SVGFEDisplacementMapElement interface: constant SVG_CHANNEL_R on interface prototype object
+PASS SVGFEDisplacementMapElement interface: constant SVG_CHANNEL_G on interface object
+PASS SVGFEDisplacementMapElement interface: constant SVG_CHANNEL_G on interface prototype object
+PASS SVGFEDisplacementMapElement interface: constant SVG_CHANNEL_B on interface object
+PASS SVGFEDisplacementMapElement interface: constant SVG_CHANNEL_B on interface prototype object
+PASS SVGFEDisplacementMapElement interface: constant SVG_CHANNEL_A on interface object
+PASS SVGFEDisplacementMapElement interface: constant SVG_CHANNEL_A on interface prototype object
+PASS SVGFEDisplacementMapElement interface: attribute in1
+PASS SVGFEDisplacementMapElement interface: attribute in2
+PASS SVGFEDisplacementMapElement interface: attribute scale
+PASS SVGFEDisplacementMapElement interface: attribute xChannelSelector
+PASS SVGFEDisplacementMapElement interface: attribute yChannelSelector
+PASS SVGFEDisplacementMapElement interface: attribute x
+PASS SVGFEDisplacementMapElement interface: attribute y
+PASS SVGFEDisplacementMapElement interface: attribute width
+PASS SVGFEDisplacementMapElement interface: attribute height
+PASS SVGFEDisplacementMapElement interface: attribute result
+PASS SVGFEDropShadowElement interface: existence and properties of interface object
+PASS SVGFEDropShadowElement interface object length
+PASS SVGFEDropShadowElement interface object name
+PASS SVGFEDropShadowElement interface: existence and properties of interface prototype object
+PASS SVGFEDropShadowElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFEDropShadowElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFEDropShadowElement interface: attribute in1
+PASS SVGFEDropShadowElement interface: attribute dx
+PASS SVGFEDropShadowElement interface: attribute dy
+PASS SVGFEDropShadowElement interface: attribute stdDeviationX
+PASS SVGFEDropShadowElement interface: attribute stdDeviationY
+PASS SVGFEDropShadowElement interface: operation setStdDeviation(float, float)
+PASS SVGFEDropShadowElement interface: attribute x
+PASS SVGFEDropShadowElement interface: attribute y
+PASS SVGFEDropShadowElement interface: attribute width
+PASS SVGFEDropShadowElement interface: attribute height
+PASS SVGFEDropShadowElement interface: attribute result
+PASS SVGFEFloodElement interface: existence and properties of interface object
+PASS SVGFEFloodElement interface object length
+PASS SVGFEFloodElement interface object name
+PASS SVGFEFloodElement interface: existence and properties of interface prototype object
+PASS SVGFEFloodElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFEFloodElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFEFloodElement interface: attribute x
+PASS SVGFEFloodElement interface: attribute y
+PASS SVGFEFloodElement interface: attribute width
+PASS SVGFEFloodElement interface: attribute height
+PASS SVGFEFloodElement interface: attribute result
+PASS SVGFEGaussianBlurElement interface: existence and properties of interface object
+PASS SVGFEGaussianBlurElement interface object length
+PASS SVGFEGaussianBlurElement interface object name
+PASS SVGFEGaussianBlurElement interface: existence and properties of interface prototype object
+PASS SVGFEGaussianBlurElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFEGaussianBlurElement interface: existence and properties of interface prototype object's @@unscopables property
+FAIL SVGFEGaussianBlurElement interface: constant SVG_EDGEMODE_UNKNOWN on interface object assert_own_property: expected property "SVG_EDGEMODE_UNKNOWN" missing
+FAIL SVGFEGaussianBlurElement interface: constant SVG_EDGEMODE_UNKNOWN on interface prototype object assert_own_property: expected property "SVG_EDGEMODE_UNKNOWN" missing
+FAIL SVGFEGaussianBlurElement interface: constant SVG_EDGEMODE_DUPLICATE on interface object assert_own_property: expected property "SVG_EDGEMODE_DUPLICATE" missing
+FAIL SVGFEGaussianBlurElement interface: constant SVG_EDGEMODE_DUPLICATE on interface prototype object assert_own_property: expected property "SVG_EDGEMODE_DUPLICATE" missing
+FAIL SVGFEGaussianBlurElement interface: constant SVG_EDGEMODE_WRAP on interface object assert_own_property: expected property "SVG_EDGEMODE_WRAP" missing
+FAIL SVGFEGaussianBlurElement interface: constant SVG_EDGEMODE_WRAP on interface prototype object assert_own_property: expected property "SVG_EDGEMODE_WRAP" missing
+FAIL SVGFEGaussianBlurElement interface: constant SVG_EDGEMODE_NONE on interface object assert_own_property: expected property "SVG_EDGEMODE_NONE" missing
+FAIL SVGFEGaussianBlurElement interface: constant SVG_EDGEMODE_NONE on interface prototype object assert_own_property: expected property "SVG_EDGEMODE_NONE" missing
+PASS SVGFEGaussianBlurElement interface: attribute in1
+PASS SVGFEGaussianBlurElement interface: attribute stdDeviationX
+PASS SVGFEGaussianBlurElement interface: attribute stdDeviationY
+FAIL SVGFEGaussianBlurElement interface: attribute edgeMode assert_true: The prototype object must have a property "edgeMode" expected true got false
+PASS SVGFEGaussianBlurElement interface: operation setStdDeviation(float, float)
+PASS SVGFEGaussianBlurElement interface: attribute x
+PASS SVGFEGaussianBlurElement interface: attribute y
+PASS SVGFEGaussianBlurElement interface: attribute width
+PASS SVGFEGaussianBlurElement interface: attribute height
+PASS SVGFEGaussianBlurElement interface: attribute result
+PASS SVGFEImageElement interface: existence and properties of interface object
+PASS SVGFEImageElement interface object length
+PASS SVGFEImageElement interface object name
+PASS SVGFEImageElement interface: existence and properties of interface prototype object
+PASS SVGFEImageElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFEImageElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFEImageElement interface: attribute preserveAspectRatio
+FAIL SVGFEImageElement interface: attribute crossOrigin assert_true: The prototype object must have a property "crossOrigin" expected true got false
+PASS SVGFEImageElement interface: attribute x
+PASS SVGFEImageElement interface: attribute y
+PASS SVGFEImageElement interface: attribute width
+PASS SVGFEImageElement interface: attribute height
+PASS SVGFEImageElement interface: attribute result
+PASS SVGFEMergeElement interface: existence and properties of interface object
+PASS SVGFEMergeElement interface object length
+PASS SVGFEMergeElement interface object name
+PASS SVGFEMergeElement interface: existence and properties of interface prototype object
+PASS SVGFEMergeElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFEMergeElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFEMergeElement interface: attribute x
+PASS SVGFEMergeElement interface: attribute y
+PASS SVGFEMergeElement interface: attribute width
+PASS SVGFEMergeElement interface: attribute height
+PASS SVGFEMergeElement interface: attribute result
+PASS SVGFEMergeNodeElement interface: existence and properties of interface object
+PASS SVGFEMergeNodeElement interface object length
+PASS SVGFEMergeNodeElement interface object name
+PASS SVGFEMergeNodeElement interface: existence and properties of interface prototype object
+PASS SVGFEMergeNodeElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFEMergeNodeElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFEMergeNodeElement interface: attribute in1
+PASS SVGFEMorphologyElement interface: existence and properties of interface object
+PASS SVGFEMorphologyElement interface object length
+PASS SVGFEMorphologyElement interface object name
+PASS SVGFEMorphologyElement interface: existence and properties of interface prototype object
+PASS SVGFEMorphologyElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFEMorphologyElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFEMorphologyElement interface: constant SVG_MORPHOLOGY_OPERATOR_UNKNOWN on interface object
+PASS SVGFEMorphologyElement interface: constant SVG_MORPHOLOGY_OPERATOR_UNKNOWN on interface prototype object
+PASS SVGFEMorphologyElement interface: constant SVG_MORPHOLOGY_OPERATOR_ERODE on interface object
+PASS SVGFEMorphologyElement interface: constant SVG_MORPHOLOGY_OPERATOR_ERODE on interface prototype object
+PASS SVGFEMorphologyElement interface: constant SVG_MORPHOLOGY_OPERATOR_DILATE on interface object
+PASS SVGFEMorphologyElement interface: constant SVG_MORPHOLOGY_OPERATOR_DILATE on interface prototype object
+PASS SVGFEMorphologyElement interface: attribute in1
+PASS SVGFEMorphologyElement interface: attribute operator
+PASS SVGFEMorphologyElement interface: attribute radiusX
+PASS SVGFEMorphologyElement interface: attribute radiusY
+PASS SVGFEMorphologyElement interface: attribute x
+PASS SVGFEMorphologyElement interface: attribute y
+PASS SVGFEMorphologyElement interface: attribute width
+PASS SVGFEMorphologyElement interface: attribute height
+PASS SVGFEMorphologyElement interface: attribute result
+PASS SVGFEOffsetElement interface: existence and properties of interface object
+PASS SVGFEOffsetElement interface object length
+PASS SVGFEOffsetElement interface object name
+PASS SVGFEOffsetElement interface: existence and properties of interface prototype object
+PASS SVGFEOffsetElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFEOffsetElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFEOffsetElement interface: attribute in1
+PASS SVGFEOffsetElement interface: attribute dx
+PASS SVGFEOffsetElement interface: attribute dy
+PASS SVGFEOffsetElement interface: attribute x
+PASS SVGFEOffsetElement interface: attribute y
+PASS SVGFEOffsetElement interface: attribute width
+PASS SVGFEOffsetElement interface: attribute height
+PASS SVGFEOffsetElement interface: attribute result
+PASS SVGFESpecularLightingElement interface: existence and properties of interface object
+PASS SVGFESpecularLightingElement interface object length
+PASS SVGFESpecularLightingElement interface object name
+PASS SVGFESpecularLightingElement interface: existence and properties of interface prototype object
+PASS SVGFESpecularLightingElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFESpecularLightingElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFESpecularLightingElement interface: attribute in1
+PASS SVGFESpecularLightingElement interface: attribute surfaceScale
+PASS SVGFESpecularLightingElement interface: attribute specularConstant
+PASS SVGFESpecularLightingElement interface: attribute specularExponent
+PASS SVGFESpecularLightingElement interface: attribute kernelUnitLengthX
+PASS SVGFESpecularLightingElement interface: attribute kernelUnitLengthY
+PASS SVGFESpecularLightingElement interface: attribute x
+PASS SVGFESpecularLightingElement interface: attribute y
+PASS SVGFESpecularLightingElement interface: attribute width
+PASS SVGFESpecularLightingElement interface: attribute height
+PASS SVGFESpecularLightingElement interface: attribute result
+PASS SVGFETileElement interface: existence and properties of interface object
+PASS SVGFETileElement interface object length
+PASS SVGFETileElement interface object name
+PASS SVGFETileElement interface: existence and properties of interface prototype object
+PASS SVGFETileElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFETileElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFETileElement interface: attribute in1
+PASS SVGFETileElement interface: attribute x
+PASS SVGFETileElement interface: attribute y
+PASS SVGFETileElement interface: attribute width
+PASS SVGFETileElement interface: attribute height
+PASS SVGFETileElement interface: attribute result
+PASS SVGFETurbulenceElement interface: existence and properties of interface object
+PASS SVGFETurbulenceElement interface object length
+PASS SVGFETurbulenceElement interface object name
+PASS SVGFETurbulenceElement interface: existence and properties of interface prototype object
+PASS SVGFETurbulenceElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGFETurbulenceElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGFETurbulenceElement interface: constant SVG_TURBULENCE_TYPE_UNKNOWN on interface object
+PASS SVGFETurbulenceElement interface: constant SVG_TURBULENCE_TYPE_UNKNOWN on interface prototype object
+PASS SVGFETurbulenceElement interface: constant SVG_TURBULENCE_TYPE_FRACTALNOISE on interface object
+PASS SVGFETurbulenceElement interface: constant SVG_TURBULENCE_TYPE_FRACTALNOISE on interface prototype object
+PASS SVGFETurbulenceElement interface: constant SVG_TURBULENCE_TYPE_TURBULENCE on interface object
+PASS SVGFETurbulenceElement interface: constant SVG_TURBULENCE_TYPE_TURBULENCE on interface prototype object
+PASS SVGFETurbulenceElement interface: constant SVG_STITCHTYPE_UNKNOWN on interface object
+PASS SVGFETurbulenceElement interface: constant SVG_STITCHTYPE_UNKNOWN on interface prototype object
+PASS SVGFETurbulenceElement interface: constant SVG_STITCHTYPE_STITCH on interface object
+PASS SVGFETurbulenceElement interface: constant SVG_STITCHTYPE_STITCH on interface prototype object
+PASS SVGFETurbulenceElement interface: constant SVG_STITCHTYPE_NOSTITCH on interface object
+PASS SVGFETurbulenceElement interface: constant SVG_STITCHTYPE_NOSTITCH on interface prototype object
+PASS SVGFETurbulenceElement interface: attribute baseFrequencyX
+PASS SVGFETurbulenceElement interface: attribute baseFrequencyY
+PASS SVGFETurbulenceElement interface: attribute numOctaves
+PASS SVGFETurbulenceElement interface: attribute seed
+PASS SVGFETurbulenceElement interface: attribute stitchTiles
+PASS SVGFETurbulenceElement interface: attribute type
+PASS SVGFETurbulenceElement interface: attribute x
+PASS SVGFETurbulenceElement interface: attribute y
+PASS SVGFETurbulenceElement interface: attribute width
+PASS SVGFETurbulenceElement interface: attribute height
+PASS SVGFETurbulenceElement interface: attribute result
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/css/filter-effects/idlharness.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/css/filter-effects/idlharness.any.worker-expected.txt
deleted file mode 100644
index adb6cc43..0000000
--- a/third_party/blink/web_tests/external/wpt/css/filter-effects/idlharness.any.worker-expected.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/dom/idlharness.any.serviceworker-expected.txt b/third_party/blink/web_tests/external/wpt/dom/idlharness.any.serviceworker-expected.txt
deleted file mode 100644
index 4df2fa2..0000000
--- a/third_party/blink/web_tests/external/wpt/dom/idlharness.any.serviceworker-expected.txt
+++ /dev/null
@@ -1,99 +0,0 @@
-This is a testharness.js-based test.
-Found 93 tests; 91 PASS, 2 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Window: original interface defined assert_true: Original interface should be defined expected true got false
-PASS Event interface: existence and properties of interface object
-PASS Event interface object length
-PASS Event interface object name
-PASS Event interface: existence and properties of interface prototype object
-PASS Event interface: existence and properties of interface prototype object's "constructor" property
-PASS Event interface: existence and properties of interface prototype object's @@unscopables property
-PASS Event interface: attribute type
-PASS Event interface: attribute target
-PASS Event interface: attribute srcElement
-PASS Event interface: attribute currentTarget
-PASS Event interface: operation composedPath()
-PASS Event interface: constant NONE on interface object
-PASS Event interface: constant NONE on interface prototype object
-PASS Event interface: constant CAPTURING_PHASE on interface object
-PASS Event interface: constant CAPTURING_PHASE on interface prototype object
-PASS Event interface: constant AT_TARGET on interface object
-PASS Event interface: constant AT_TARGET on interface prototype object
-PASS Event interface: constant BUBBLING_PHASE on interface object
-PASS Event interface: constant BUBBLING_PHASE on interface prototype object
-PASS Event interface: attribute eventPhase
-PASS Event interface: operation stopPropagation()
-PASS Event interface: attribute cancelBubble
-PASS Event interface: operation stopImmediatePropagation()
-PASS Event interface: attribute bubbles
-PASS Event interface: attribute cancelable
-PASS Event interface: attribute returnValue
-PASS Event interface: operation preventDefault()
-PASS Event interface: attribute defaultPrevented
-PASS Event interface: attribute composed
-PASS Event interface: attribute timeStamp
-PASS Event interface: operation initEvent(DOMString, boolean, boolean)
-PASS CustomEvent interface: existence and properties of interface object
-PASS CustomEvent interface object length
-PASS CustomEvent interface object name
-PASS CustomEvent interface: existence and properties of interface prototype object
-PASS CustomEvent interface: existence and properties of interface prototype object's "constructor" property
-PASS CustomEvent interface: existence and properties of interface prototype object's @@unscopables property
-PASS CustomEvent interface: attribute detail
-PASS CustomEvent interface: operation initCustomEvent(DOMString, boolean, boolean, any)
-PASS EventTarget interface: existence and properties of interface object
-PASS EventTarget interface object length
-PASS EventTarget interface object name
-PASS EventTarget interface: existence and properties of interface prototype object
-PASS EventTarget interface: existence and properties of interface prototype object's "constructor" property
-PASS EventTarget interface: existence and properties of interface prototype object's @@unscopables property
-PASS EventTarget interface: operation addEventListener(DOMString, EventListener, [object Object],[object Object])
-PASS EventTarget interface: operation removeEventListener(DOMString, EventListener, [object Object],[object Object])
-PASS EventTarget interface: operation dispatchEvent(Event)
-PASS EventListener interface: existence and properties of interface object
-PASS AbortController interface: existence and properties of interface object
-PASS AbortController interface object length
-PASS AbortController interface object name
-PASS AbortController interface: existence and properties of interface prototype object
-PASS AbortController interface: existence and properties of interface prototype object's "constructor" property
-PASS AbortController interface: existence and properties of interface prototype object's @@unscopables property
-PASS AbortController interface: attribute signal
-PASS AbortController interface: operation abort()
-PASS AbortSignal interface: existence and properties of interface object
-PASS AbortSignal interface object length
-PASS AbortSignal interface object name
-PASS AbortSignal interface: existence and properties of interface prototype object
-PASS AbortSignal interface: existence and properties of interface prototype object's "constructor" property
-PASS AbortSignal interface: existence and properties of interface prototype object's @@unscopables property
-PASS AbortSignal interface: attribute aborted
-PASS AbortSignal interface: attribute onabort
-PASS NodeList interface: existence and properties of interface object
-PASS HTMLCollection interface: existence and properties of interface object
-PASS MutationObserver interface: existence and properties of interface object
-PASS MutationRecord interface: existence and properties of interface object
-PASS Node interface: existence and properties of interface object
-PASS Document interface: existence and properties of interface object
-PASS XMLDocument interface: existence and properties of interface object
-PASS DOMImplementation interface: existence and properties of interface object
-PASS DocumentType interface: existence and properties of interface object
-PASS DocumentFragment interface: existence and properties of interface object
-PASS ShadowRoot interface: existence and properties of interface object
-PASS Element interface: existence and properties of interface object
-PASS NamedNodeMap interface: existence and properties of interface object
-PASS Attr interface: existence and properties of interface object
-PASS CharacterData interface: existence and properties of interface object
-PASS Text interface: existence and properties of interface object
-PASS CDATASection interface: existence and properties of interface object
-PASS ProcessingInstruction interface: existence and properties of interface object
-PASS Comment interface: existence and properties of interface object
-PASS AbstractRange interface: existence and properties of interface object
-PASS StaticRange interface: existence and properties of interface object
-PASS Range interface: existence and properties of interface object
-PASS NodeIterator interface: existence and properties of interface object
-PASS TreeWalker interface: existence and properties of interface object
-PASS NodeFilter interface: existence and properties of interface object
-PASS DOMTokenList interface: existence and properties of interface object
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/dom/idlharness.any.sharedworker-expected.txt b/third_party/blink/web_tests/external/wpt/dom/idlharness.any.sharedworker-expected.txt
deleted file mode 100644
index 4df2fa2..0000000
--- a/third_party/blink/web_tests/external/wpt/dom/idlharness.any.sharedworker-expected.txt
+++ /dev/null
@@ -1,99 +0,0 @@
-This is a testharness.js-based test.
-Found 93 tests; 91 PASS, 2 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Window: original interface defined assert_true: Original interface should be defined expected true got false
-PASS Event interface: existence and properties of interface object
-PASS Event interface object length
-PASS Event interface object name
-PASS Event interface: existence and properties of interface prototype object
-PASS Event interface: existence and properties of interface prototype object's "constructor" property
-PASS Event interface: existence and properties of interface prototype object's @@unscopables property
-PASS Event interface: attribute type
-PASS Event interface: attribute target
-PASS Event interface: attribute srcElement
-PASS Event interface: attribute currentTarget
-PASS Event interface: operation composedPath()
-PASS Event interface: constant NONE on interface object
-PASS Event interface: constant NONE on interface prototype object
-PASS Event interface: constant CAPTURING_PHASE on interface object
-PASS Event interface: constant CAPTURING_PHASE on interface prototype object
-PASS Event interface: constant AT_TARGET on interface object
-PASS Event interface: constant AT_TARGET on interface prototype object
-PASS Event interface: constant BUBBLING_PHASE on interface object
-PASS Event interface: constant BUBBLING_PHASE on interface prototype object
-PASS Event interface: attribute eventPhase
-PASS Event interface: operation stopPropagation()
-PASS Event interface: attribute cancelBubble
-PASS Event interface: operation stopImmediatePropagation()
-PASS Event interface: attribute bubbles
-PASS Event interface: attribute cancelable
-PASS Event interface: attribute returnValue
-PASS Event interface: operation preventDefault()
-PASS Event interface: attribute defaultPrevented
-PASS Event interface: attribute composed
-PASS Event interface: attribute timeStamp
-PASS Event interface: operation initEvent(DOMString, boolean, boolean)
-PASS CustomEvent interface: existence and properties of interface object
-PASS CustomEvent interface object length
-PASS CustomEvent interface object name
-PASS CustomEvent interface: existence and properties of interface prototype object
-PASS CustomEvent interface: existence and properties of interface prototype object's "constructor" property
-PASS CustomEvent interface: existence and properties of interface prototype object's @@unscopables property
-PASS CustomEvent interface: attribute detail
-PASS CustomEvent interface: operation initCustomEvent(DOMString, boolean, boolean, any)
-PASS EventTarget interface: existence and properties of interface object
-PASS EventTarget interface object length
-PASS EventTarget interface object name
-PASS EventTarget interface: existence and properties of interface prototype object
-PASS EventTarget interface: existence and properties of interface prototype object's "constructor" property
-PASS EventTarget interface: existence and properties of interface prototype object's @@unscopables property
-PASS EventTarget interface: operation addEventListener(DOMString, EventListener, [object Object],[object Object])
-PASS EventTarget interface: operation removeEventListener(DOMString, EventListener, [object Object],[object Object])
-PASS EventTarget interface: operation dispatchEvent(Event)
-PASS EventListener interface: existence and properties of interface object
-PASS AbortController interface: existence and properties of interface object
-PASS AbortController interface object length
-PASS AbortController interface object name
-PASS AbortController interface: existence and properties of interface prototype object
-PASS AbortController interface: existence and properties of interface prototype object's "constructor" property
-PASS AbortController interface: existence and properties of interface prototype object's @@unscopables property
-PASS AbortController interface: attribute signal
-PASS AbortController interface: operation abort()
-PASS AbortSignal interface: existence and properties of interface object
-PASS AbortSignal interface object length
-PASS AbortSignal interface object name
-PASS AbortSignal interface: existence and properties of interface prototype object
-PASS AbortSignal interface: existence and properties of interface prototype object's "constructor" property
-PASS AbortSignal interface: existence and properties of interface prototype object's @@unscopables property
-PASS AbortSignal interface: attribute aborted
-PASS AbortSignal interface: attribute onabort
-PASS NodeList interface: existence and properties of interface object
-PASS HTMLCollection interface: existence and properties of interface object
-PASS MutationObserver interface: existence and properties of interface object
-PASS MutationRecord interface: existence and properties of interface object
-PASS Node interface: existence and properties of interface object
-PASS Document interface: existence and properties of interface object
-PASS XMLDocument interface: existence and properties of interface object
-PASS DOMImplementation interface: existence and properties of interface object
-PASS DocumentType interface: existence and properties of interface object
-PASS DocumentFragment interface: existence and properties of interface object
-PASS ShadowRoot interface: existence and properties of interface object
-PASS Element interface: existence and properties of interface object
-PASS NamedNodeMap interface: existence and properties of interface object
-PASS Attr interface: existence and properties of interface object
-PASS CharacterData interface: existence and properties of interface object
-PASS Text interface: existence and properties of interface object
-PASS CDATASection interface: existence and properties of interface object
-PASS ProcessingInstruction interface: existence and properties of interface object
-PASS Comment interface: existence and properties of interface object
-PASS AbstractRange interface: existence and properties of interface object
-PASS StaticRange interface: existence and properties of interface object
-PASS Range interface: existence and properties of interface object
-PASS NodeIterator interface: existence and properties of interface object
-PASS TreeWalker interface: existence and properties of interface object
-PASS NodeFilter interface: existence and properties of interface object
-PASS DOMTokenList interface: existence and properties of interface object
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/dom/idlharness.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/dom/idlharness.any.worker-expected.txt
deleted file mode 100644
index 4df2fa2..0000000
--- a/third_party/blink/web_tests/external/wpt/dom/idlharness.any.worker-expected.txt
+++ /dev/null
@@ -1,99 +0,0 @@
-This is a testharness.js-based test.
-Found 93 tests; 91 PASS, 2 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Window: original interface defined assert_true: Original interface should be defined expected true got false
-PASS Event interface: existence and properties of interface object
-PASS Event interface object length
-PASS Event interface object name
-PASS Event interface: existence and properties of interface prototype object
-PASS Event interface: existence and properties of interface prototype object's "constructor" property
-PASS Event interface: existence and properties of interface prototype object's @@unscopables property
-PASS Event interface: attribute type
-PASS Event interface: attribute target
-PASS Event interface: attribute srcElement
-PASS Event interface: attribute currentTarget
-PASS Event interface: operation composedPath()
-PASS Event interface: constant NONE on interface object
-PASS Event interface: constant NONE on interface prototype object
-PASS Event interface: constant CAPTURING_PHASE on interface object
-PASS Event interface: constant CAPTURING_PHASE on interface prototype object
-PASS Event interface: constant AT_TARGET on interface object
-PASS Event interface: constant AT_TARGET on interface prototype object
-PASS Event interface: constant BUBBLING_PHASE on interface object
-PASS Event interface: constant BUBBLING_PHASE on interface prototype object
-PASS Event interface: attribute eventPhase
-PASS Event interface: operation stopPropagation()
-PASS Event interface: attribute cancelBubble
-PASS Event interface: operation stopImmediatePropagation()
-PASS Event interface: attribute bubbles
-PASS Event interface: attribute cancelable
-PASS Event interface: attribute returnValue
-PASS Event interface: operation preventDefault()
-PASS Event interface: attribute defaultPrevented
-PASS Event interface: attribute composed
-PASS Event interface: attribute timeStamp
-PASS Event interface: operation initEvent(DOMString, boolean, boolean)
-PASS CustomEvent interface: existence and properties of interface object
-PASS CustomEvent interface object length
-PASS CustomEvent interface object name
-PASS CustomEvent interface: existence and properties of interface prototype object
-PASS CustomEvent interface: existence and properties of interface prototype object's "constructor" property
-PASS CustomEvent interface: existence and properties of interface prototype object's @@unscopables property
-PASS CustomEvent interface: attribute detail
-PASS CustomEvent interface: operation initCustomEvent(DOMString, boolean, boolean, any)
-PASS EventTarget interface: existence and properties of interface object
-PASS EventTarget interface object length
-PASS EventTarget interface object name
-PASS EventTarget interface: existence and properties of interface prototype object
-PASS EventTarget interface: existence and properties of interface prototype object's "constructor" property
-PASS EventTarget interface: existence and properties of interface prototype object's @@unscopables property
-PASS EventTarget interface: operation addEventListener(DOMString, EventListener, [object Object],[object Object])
-PASS EventTarget interface: operation removeEventListener(DOMString, EventListener, [object Object],[object Object])
-PASS EventTarget interface: operation dispatchEvent(Event)
-PASS EventListener interface: existence and properties of interface object
-PASS AbortController interface: existence and properties of interface object
-PASS AbortController interface object length
-PASS AbortController interface object name
-PASS AbortController interface: existence and properties of interface prototype object
-PASS AbortController interface: existence and properties of interface prototype object's "constructor" property
-PASS AbortController interface: existence and properties of interface prototype object's @@unscopables property
-PASS AbortController interface: attribute signal
-PASS AbortController interface: operation abort()
-PASS AbortSignal interface: existence and properties of interface object
-PASS AbortSignal interface object length
-PASS AbortSignal interface object name
-PASS AbortSignal interface: existence and properties of interface prototype object
-PASS AbortSignal interface: existence and properties of interface prototype object's "constructor" property
-PASS AbortSignal interface: existence and properties of interface prototype object's @@unscopables property
-PASS AbortSignal interface: attribute aborted
-PASS AbortSignal interface: attribute onabort
-PASS NodeList interface: existence and properties of interface object
-PASS HTMLCollection interface: existence and properties of interface object
-PASS MutationObserver interface: existence and properties of interface object
-PASS MutationRecord interface: existence and properties of interface object
-PASS Node interface: existence and properties of interface object
-PASS Document interface: existence and properties of interface object
-PASS XMLDocument interface: existence and properties of interface object
-PASS DOMImplementation interface: existence and properties of interface object
-PASS DocumentType interface: existence and properties of interface object
-PASS DocumentFragment interface: existence and properties of interface object
-PASS ShadowRoot interface: existence and properties of interface object
-PASS Element interface: existence and properties of interface object
-PASS NamedNodeMap interface: existence and properties of interface object
-PASS Attr interface: existence and properties of interface object
-PASS CharacterData interface: existence and properties of interface object
-PASS Text interface: existence and properties of interface object
-PASS CDATASection interface: existence and properties of interface object
-PASS ProcessingInstruction interface: existence and properties of interface object
-PASS Comment interface: existence and properties of interface object
-PASS AbstractRange interface: existence and properties of interface object
-PASS StaticRange interface: existence and properties of interface object
-PASS Range interface: existence and properties of interface object
-PASS NodeIterator interface: existence and properties of interface object
-PASS TreeWalker interface: existence and properties of interface object
-PASS NodeFilter interface: existence and properties of interface object
-PASS DOMTokenList interface: existence and properties of interface object
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/dom/idlharness.window.js b/third_party/blink/web_tests/external/wpt/dom/idlharness.window.js
index 7d87aea..24b56cf 100644
--- a/third_party/blink/web_tests/external/wpt/dom/idlharness.window.js
+++ b/third_party/blink/web_tests/external/wpt/dom/idlharness.window.js
@@ -42,6 +42,11 @@
       NodeList: ['document.querySelectorAll("script")'],
       HTMLCollection: ['document.body.children'],
       DOMTokenList: ['document.body.classList'],
+      XPathEvaluator: ['new XPathEvaluator()'],
+      XPathExpression: ['document.createExpression("//*")'],
+      // Skipped due to https://github.com/web-platform-tests/wpt/issues/18827:
+      // XPathNSResolver: ['document.createNSResolver(document.body)'],
+      XPathResult: ['document.evaluate("//*", document.body)'],
     });
   }
 );
diff --git a/third_party/blink/web_tests/external/wpt/dom/idlharness.window_exclude=Node-expected.txt b/third_party/blink/web_tests/external/wpt/dom/idlharness.window_exclude=Node-expected.txt
index f9945d2..42cd0e0d 100644
--- a/third_party/blink/web_tests/external/wpt/dom/idlharness.window_exclude=Node-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/dom/idlharness.window_exclude=Node-expected.txt
@@ -1,9 +1,7 @@
 This is a testharness.js-based test.
-Found 478 tests; 454 PASS, 24 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Window: original interface defined assert_true: Original interface should be defined expected true got false
+Found 1209 tests; 1184 PASS, 25 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface Window: original interface defined
 PASS Event interface: existence and properties of interface object
 PASS Event interface object length
 PASS Event interface object name
@@ -35,6 +33,56 @@
 PASS Event interface: attribute composed
 PASS Event interface: attribute timeStamp
 PASS Event interface: operation initEvent(DOMString, boolean, boolean)
+PASS Event must be primary interface of document.createEvent("Event")
+PASS Stringification of document.createEvent("Event")
+PASS Event interface: document.createEvent("Event") must inherit property "type" with the proper type
+PASS Event interface: document.createEvent("Event") must inherit property "target" with the proper type
+PASS Event interface: document.createEvent("Event") must inherit property "srcElement" with the proper type
+PASS Event interface: document.createEvent("Event") must inherit property "currentTarget" with the proper type
+PASS Event interface: document.createEvent("Event") must inherit property "composedPath()" with the proper type
+PASS Event interface: document.createEvent("Event") must inherit property "NONE" with the proper type
+PASS Event interface: document.createEvent("Event") must inherit property "CAPTURING_PHASE" with the proper type
+PASS Event interface: document.createEvent("Event") must inherit property "AT_TARGET" with the proper type
+PASS Event interface: document.createEvent("Event") must inherit property "BUBBLING_PHASE" with the proper type
+PASS Event interface: document.createEvent("Event") must inherit property "eventPhase" with the proper type
+PASS Event interface: document.createEvent("Event") must inherit property "stopPropagation()" with the proper type
+PASS Event interface: document.createEvent("Event") must inherit property "cancelBubble" with the proper type
+PASS Event interface: document.createEvent("Event") must inherit property "stopImmediatePropagation()" with the proper type
+PASS Event interface: document.createEvent("Event") must inherit property "bubbles" with the proper type
+PASS Event interface: document.createEvent("Event") must inherit property "cancelable" with the proper type
+PASS Event interface: document.createEvent("Event") must inherit property "returnValue" with the proper type
+PASS Event interface: document.createEvent("Event") must inherit property "preventDefault()" with the proper type
+PASS Event interface: document.createEvent("Event") must inherit property "defaultPrevented" with the proper type
+PASS Event interface: document.createEvent("Event") must inherit property "composed" with the proper type
+PASS Event interface: document.createEvent("Event") must have own property "isTrusted"
+PASS Event interface: document.createEvent("Event") must inherit property "timeStamp" with the proper type
+PASS Event interface: document.createEvent("Event") must inherit property "initEvent(DOMString, boolean, boolean)" with the proper type
+PASS Event interface: calling initEvent(DOMString, boolean, boolean) on document.createEvent("Event") with too few arguments must throw TypeError
+PASS Event must be primary interface of new Event("foo")
+PASS Stringification of new Event("foo")
+PASS Event interface: new Event("foo") must inherit property "type" with the proper type
+PASS Event interface: new Event("foo") must inherit property "target" with the proper type
+PASS Event interface: new Event("foo") must inherit property "srcElement" with the proper type
+PASS Event interface: new Event("foo") must inherit property "currentTarget" with the proper type
+PASS Event interface: new Event("foo") must inherit property "composedPath()" with the proper type
+PASS Event interface: new Event("foo") must inherit property "NONE" with the proper type
+PASS Event interface: new Event("foo") must inherit property "CAPTURING_PHASE" with the proper type
+PASS Event interface: new Event("foo") must inherit property "AT_TARGET" with the proper type
+PASS Event interface: new Event("foo") must inherit property "BUBBLING_PHASE" with the proper type
+PASS Event interface: new Event("foo") must inherit property "eventPhase" with the proper type
+PASS Event interface: new Event("foo") must inherit property "stopPropagation()" with the proper type
+PASS Event interface: new Event("foo") must inherit property "cancelBubble" with the proper type
+PASS Event interface: new Event("foo") must inherit property "stopImmediatePropagation()" with the proper type
+PASS Event interface: new Event("foo") must inherit property "bubbles" with the proper type
+PASS Event interface: new Event("foo") must inherit property "cancelable" with the proper type
+PASS Event interface: new Event("foo") must inherit property "returnValue" with the proper type
+PASS Event interface: new Event("foo") must inherit property "preventDefault()" with the proper type
+PASS Event interface: new Event("foo") must inherit property "defaultPrevented" with the proper type
+PASS Event interface: new Event("foo") must inherit property "composed" with the proper type
+PASS Event interface: new Event("foo") must have own property "isTrusted"
+PASS Event interface: new Event("foo") must inherit property "timeStamp" with the proper type
+PASS Event interface: new Event("foo") must inherit property "initEvent(DOMString, boolean, boolean)" with the proper type
+PASS Event interface: calling initEvent(DOMString, boolean, boolean) on new Event("foo") with too few arguments must throw TypeError
 PASS CustomEvent interface: existence and properties of interface object
 PASS CustomEvent interface object length
 PASS CustomEvent interface object name
@@ -43,6 +91,34 @@
 PASS CustomEvent interface: existence and properties of interface prototype object's @@unscopables property
 PASS CustomEvent interface: attribute detail
 PASS CustomEvent interface: operation initCustomEvent(DOMString, boolean, boolean, any)
+PASS CustomEvent must be primary interface of new CustomEvent("foo")
+PASS Stringification of new CustomEvent("foo")
+PASS CustomEvent interface: new CustomEvent("foo") must inherit property "detail" with the proper type
+PASS CustomEvent interface: new CustomEvent("foo") must inherit property "initCustomEvent(DOMString, boolean, boolean, any)" with the proper type
+PASS CustomEvent interface: calling initCustomEvent(DOMString, boolean, boolean, any) on new CustomEvent("foo") with too few arguments must throw TypeError
+PASS Event interface: new CustomEvent("foo") must inherit property "type" with the proper type
+PASS Event interface: new CustomEvent("foo") must inherit property "target" with the proper type
+PASS Event interface: new CustomEvent("foo") must inherit property "srcElement" with the proper type
+PASS Event interface: new CustomEvent("foo") must inherit property "currentTarget" with the proper type
+PASS Event interface: new CustomEvent("foo") must inherit property "composedPath()" with the proper type
+PASS Event interface: new CustomEvent("foo") must inherit property "NONE" with the proper type
+PASS Event interface: new CustomEvent("foo") must inherit property "CAPTURING_PHASE" with the proper type
+PASS Event interface: new CustomEvent("foo") must inherit property "AT_TARGET" with the proper type
+PASS Event interface: new CustomEvent("foo") must inherit property "BUBBLING_PHASE" with the proper type
+PASS Event interface: new CustomEvent("foo") must inherit property "eventPhase" with the proper type
+PASS Event interface: new CustomEvent("foo") must inherit property "stopPropagation()" with the proper type
+PASS Event interface: new CustomEvent("foo") must inherit property "cancelBubble" with the proper type
+PASS Event interface: new CustomEvent("foo") must inherit property "stopImmediatePropagation()" with the proper type
+PASS Event interface: new CustomEvent("foo") must inherit property "bubbles" with the proper type
+PASS Event interface: new CustomEvent("foo") must inherit property "cancelable" with the proper type
+PASS Event interface: new CustomEvent("foo") must inherit property "returnValue" with the proper type
+PASS Event interface: new CustomEvent("foo") must inherit property "preventDefault()" with the proper type
+PASS Event interface: new CustomEvent("foo") must inherit property "defaultPrevented" with the proper type
+PASS Event interface: new CustomEvent("foo") must inherit property "composed" with the proper type
+PASS Event interface: new CustomEvent("foo") must have own property "isTrusted"
+PASS Event interface: new CustomEvent("foo") must inherit property "timeStamp" with the proper type
+PASS Event interface: new CustomEvent("foo") must inherit property "initEvent(DOMString, boolean, boolean)" with the proper type
+PASS Event interface: calling initEvent(DOMString, boolean, boolean) on new CustomEvent("foo") with too few arguments must throw TypeError
 PASS EventTarget interface: existence and properties of interface object
 PASS EventTarget interface object length
 PASS EventTarget interface object name
@@ -52,6 +128,14 @@
 PASS EventTarget interface: operation addEventListener(DOMString, EventListener, [object Object],[object Object])
 PASS EventTarget interface: operation removeEventListener(DOMString, EventListener, [object Object],[object Object])
 PASS EventTarget interface: operation dispatchEvent(Event)
+PASS EventTarget must be primary interface of new EventTarget()
+PASS Stringification of new EventTarget()
+PASS EventTarget interface: new EventTarget() must inherit property "addEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object],[object Object]) on new EventTarget() with too few arguments must throw TypeError
+PASS EventTarget interface: new EventTarget() must inherit property "removeEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object],[object Object]) on new EventTarget() with too few arguments must throw TypeError
+PASS EventTarget interface: new EventTarget() must inherit property "dispatchEvent(Event)" with the proper type
+PASS EventTarget interface: calling dispatchEvent(Event) on new EventTarget() with too few arguments must throw TypeError
 PASS EventListener interface: existence and properties of interface object
 PASS EventListener interface: existence and properties of interface prototype object
 PASS EventListener interface: existence and properties of interface prototype object's "constructor" property
@@ -65,6 +149,10 @@
 PASS AbortController interface: existence and properties of interface prototype object's @@unscopables property
 PASS AbortController interface: attribute signal
 PASS AbortController interface: operation abort()
+PASS AbortController must be primary interface of new AbortController()
+PASS Stringification of new AbortController()
+PASS AbortController interface: new AbortController() must inherit property "signal" with the proper type
+PASS AbortController interface: new AbortController() must inherit property "abort()" with the proper type
 PASS AbortSignal interface: existence and properties of interface object
 PASS AbortSignal interface object length
 PASS AbortSignal interface object name
@@ -73,6 +161,16 @@
 PASS AbortSignal interface: existence and properties of interface prototype object's @@unscopables property
 PASS AbortSignal interface: attribute aborted
 PASS AbortSignal interface: attribute onabort
+PASS AbortSignal must be primary interface of new AbortController().signal
+PASS Stringification of new AbortController().signal
+PASS AbortSignal interface: new AbortController().signal must inherit property "aborted" with the proper type
+PASS AbortSignal interface: new AbortController().signal must inherit property "onabort" with the proper type
+PASS EventTarget interface: new AbortController().signal must inherit property "addEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object],[object Object]) on new AbortController().signal with too few arguments must throw TypeError
+PASS EventTarget interface: new AbortController().signal must inherit property "removeEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object],[object Object]) on new AbortController().signal with too few arguments must throw TypeError
+PASS EventTarget interface: new AbortController().signal must inherit property "dispatchEvent(Event)" with the proper type
+PASS EventTarget interface: calling dispatchEvent(Event) on new AbortController().signal with too few arguments must throw TypeError
 PASS NodeList interface: existence and properties of interface object
 PASS NodeList interface object length
 PASS NodeList interface object name
@@ -82,6 +180,11 @@
 PASS NodeList interface: operation item(unsigned long)
 PASS NodeList interface: attribute length
 PASS NodeList interface: iterable<Node>
+PASS NodeList must be primary interface of document.querySelectorAll("script")
+PASS Stringification of document.querySelectorAll("script")
+PASS NodeList interface: document.querySelectorAll("script") must inherit property "item(unsigned long)" with the proper type
+PASS NodeList interface: calling item(unsigned long) on document.querySelectorAll("script") with too few arguments must throw TypeError
+PASS NodeList interface: document.querySelectorAll("script") must inherit property "length" with the proper type
 PASS HTMLCollection interface: existence and properties of interface object
 PASS HTMLCollection interface object length
 PASS HTMLCollection interface object name
@@ -91,6 +194,13 @@
 PASS HTMLCollection interface: attribute length
 PASS HTMLCollection interface: operation item(unsigned long)
 PASS HTMLCollection interface: operation namedItem(DOMString)
+PASS HTMLCollection must be primary interface of document.body.children
+PASS Stringification of document.body.children
+PASS HTMLCollection interface: document.body.children must inherit property "length" with the proper type
+PASS HTMLCollection interface: document.body.children must inherit property "item(unsigned long)" with the proper type
+PASS HTMLCollection interface: calling item(unsigned long) on document.body.children with too few arguments must throw TypeError
+PASS HTMLCollection interface: document.body.children must inherit property "namedItem(DOMString)" with the proper type
+PASS HTMLCollection interface: calling namedItem(DOMString) on document.body.children with too few arguments must throw TypeError
 PASS MutationObserver interface: existence and properties of interface object
 PASS MutationObserver interface object length
 PASS MutationObserver interface object name
@@ -159,12 +269,161 @@
 PASS Document interface: operation append([object Object],[object Object])
 PASS Document interface: operation querySelector(DOMString)
 PASS Document interface: operation querySelectorAll(DOMString)
+PASS Document interface: operation createExpression(DOMString, XPathNSResolver)
+PASS Document interface: operation createNSResolver(Node)
+PASS Document interface: operation evaluate(DOMString, Node, XPathNSResolver, unsigned short, XPathResult)
+PASS Document must be primary interface of new Document()
+PASS Stringification of new Document()
+PASS Document interface: new Document() must inherit property "implementation" with the proper type
+PASS Document interface: new Document() must inherit property "URL" with the proper type
+PASS Document interface: new Document() must inherit property "documentURI" with the proper type
+FAIL Document interface: new Document() must inherit property "origin" with the proper type assert_inherits: property "origin" not found in prototype chain
+PASS Document interface: new Document() must inherit property "compatMode" with the proper type
+PASS Document interface: new Document() must inherit property "characterSet" with the proper type
+PASS Document interface: new Document() must inherit property "charset" with the proper type
+PASS Document interface: new Document() must inherit property "inputEncoding" with the proper type
+PASS Document interface: new Document() must inherit property "contentType" with the proper type
+PASS Document interface: new Document() must inherit property "doctype" with the proper type
+PASS Document interface: new Document() must inherit property "documentElement" with the proper type
+PASS Document interface: new Document() must inherit property "getElementsByTagName(DOMString)" with the proper type
+PASS Document interface: calling getElementsByTagName(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "getElementsByTagNameNS(DOMString, DOMString)" with the proper type
+PASS Document interface: calling getElementsByTagNameNS(DOMString, DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "getElementsByClassName(DOMString)" with the proper type
+PASS Document interface: calling getElementsByClassName(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "createElement(DOMString, [object Object],[object Object])" with the proper type
+PASS Document interface: calling createElement(DOMString, [object Object],[object Object]) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "createElementNS(DOMString, DOMString, [object Object],[object Object])" with the proper type
+PASS Document interface: calling createElementNS(DOMString, DOMString, [object Object],[object Object]) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "createDocumentFragment()" with the proper type
+PASS Document interface: new Document() must inherit property "createTextNode(DOMString)" with the proper type
+PASS Document interface: calling createTextNode(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "createCDATASection(DOMString)" with the proper type
+PASS Document interface: calling createCDATASection(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "createComment(DOMString)" with the proper type
+PASS Document interface: calling createComment(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "createProcessingInstruction(DOMString, DOMString)" with the proper type
+PASS Document interface: calling createProcessingInstruction(DOMString, DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "importNode(Node, boolean)" with the proper type
+PASS Document interface: calling importNode(Node, boolean) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "adoptNode(Node)" with the proper type
+PASS Document interface: calling adoptNode(Node) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "createAttribute(DOMString)" with the proper type
+PASS Document interface: calling createAttribute(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "createAttributeNS(DOMString, DOMString)" with the proper type
+PASS Document interface: calling createAttributeNS(DOMString, DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "createEvent(DOMString)" with the proper type
+PASS Document interface: calling createEvent(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "createRange()" with the proper type
+PASS Document interface: new Document() must inherit property "createNodeIterator(Node, unsigned long, NodeFilter)" with the proper type
+PASS Document interface: calling createNodeIterator(Node, unsigned long, NodeFilter) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "createTreeWalker(Node, unsigned long, NodeFilter)" with the proper type
+PASS Document interface: calling createTreeWalker(Node, unsigned long, NodeFilter) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "getElementById(DOMString)" with the proper type
+PASS Document interface: calling getElementById(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "children" with the proper type
+PASS Document interface: new Document() must inherit property "firstElementChild" with the proper type
+PASS Document interface: new Document() must inherit property "lastElementChild" with the proper type
+PASS Document interface: new Document() must inherit property "childElementCount" with the proper type
+PASS Document interface: new Document() must inherit property "prepend([object Object],[object Object])" with the proper type
+PASS Document interface: calling prepend([object Object],[object Object]) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "append([object Object],[object Object])" with the proper type
+PASS Document interface: calling append([object Object],[object Object]) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "querySelector(DOMString)" with the proper type
+PASS Document interface: calling querySelector(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "querySelectorAll(DOMString)" with the proper type
+PASS Document interface: calling querySelectorAll(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "createExpression(DOMString, XPathNSResolver)" with the proper type
+PASS Document interface: calling createExpression(DOMString, XPathNSResolver) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "createNSResolver(Node)" with the proper type
+PASS Document interface: calling createNSResolver(Node) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "evaluate(DOMString, Node, XPathNSResolver, unsigned short, XPathResult)" with the proper type
+PASS Document interface: calling evaluate(DOMString, Node, XPathNSResolver, unsigned short, XPathResult) on new Document() with too few arguments must throw TypeError
+PASS EventTarget interface: new Document() must inherit property "addEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object],[object Object]) on new Document() with too few arguments must throw TypeError
+PASS EventTarget interface: new Document() must inherit property "removeEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object],[object Object]) on new Document() with too few arguments must throw TypeError
+PASS EventTarget interface: new Document() must inherit property "dispatchEvent(Event)" with the proper type
+PASS EventTarget interface: calling dispatchEvent(Event) on new Document() with too few arguments must throw TypeError
 PASS XMLDocument interface: existence and properties of interface object
 PASS XMLDocument interface object length
 PASS XMLDocument interface object name
 PASS XMLDocument interface: existence and properties of interface prototype object
 PASS XMLDocument interface: existence and properties of interface prototype object's "constructor" property
 PASS XMLDocument interface: existence and properties of interface prototype object's @@unscopables property
+PASS XMLDocument must be primary interface of xmlDoc
+PASS Stringification of xmlDoc
+PASS Document interface: xmlDoc must inherit property "implementation" with the proper type
+PASS Document interface: xmlDoc must inherit property "URL" with the proper type
+PASS Document interface: xmlDoc must inherit property "documentURI" with the proper type
+FAIL Document interface: xmlDoc must inherit property "origin" with the proper type assert_inherits: property "origin" not found in prototype chain
+PASS Document interface: xmlDoc must inherit property "compatMode" with the proper type
+PASS Document interface: xmlDoc must inherit property "characterSet" with the proper type
+PASS Document interface: xmlDoc must inherit property "charset" with the proper type
+PASS Document interface: xmlDoc must inherit property "inputEncoding" with the proper type
+PASS Document interface: xmlDoc must inherit property "contentType" with the proper type
+PASS Document interface: xmlDoc must inherit property "doctype" with the proper type
+PASS Document interface: xmlDoc must inherit property "documentElement" with the proper type
+PASS Document interface: xmlDoc must inherit property "getElementsByTagName(DOMString)" with the proper type
+PASS Document interface: calling getElementsByTagName(DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "getElementsByTagNameNS(DOMString, DOMString)" with the proper type
+PASS Document interface: calling getElementsByTagNameNS(DOMString, DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "getElementsByClassName(DOMString)" with the proper type
+PASS Document interface: calling getElementsByClassName(DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "createElement(DOMString, [object Object],[object Object])" with the proper type
+PASS Document interface: calling createElement(DOMString, [object Object],[object Object]) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "createElementNS(DOMString, DOMString, [object Object],[object Object])" with the proper type
+PASS Document interface: calling createElementNS(DOMString, DOMString, [object Object],[object Object]) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "createDocumentFragment()" with the proper type
+PASS Document interface: xmlDoc must inherit property "createTextNode(DOMString)" with the proper type
+PASS Document interface: calling createTextNode(DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "createCDATASection(DOMString)" with the proper type
+PASS Document interface: calling createCDATASection(DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "createComment(DOMString)" with the proper type
+PASS Document interface: calling createComment(DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "createProcessingInstruction(DOMString, DOMString)" with the proper type
+PASS Document interface: calling createProcessingInstruction(DOMString, DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "importNode(Node, boolean)" with the proper type
+PASS Document interface: calling importNode(Node, boolean) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "adoptNode(Node)" with the proper type
+PASS Document interface: calling adoptNode(Node) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "createAttribute(DOMString)" with the proper type
+PASS Document interface: calling createAttribute(DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "createAttributeNS(DOMString, DOMString)" with the proper type
+PASS Document interface: calling createAttributeNS(DOMString, DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "createEvent(DOMString)" with the proper type
+PASS Document interface: calling createEvent(DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "createRange()" with the proper type
+PASS Document interface: xmlDoc must inherit property "createNodeIterator(Node, unsigned long, NodeFilter)" with the proper type
+PASS Document interface: calling createNodeIterator(Node, unsigned long, NodeFilter) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "createTreeWalker(Node, unsigned long, NodeFilter)" with the proper type
+PASS Document interface: calling createTreeWalker(Node, unsigned long, NodeFilter) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "getElementById(DOMString)" with the proper type
+PASS Document interface: calling getElementById(DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "children" with the proper type
+PASS Document interface: xmlDoc must inherit property "firstElementChild" with the proper type
+PASS Document interface: xmlDoc must inherit property "lastElementChild" with the proper type
+PASS Document interface: xmlDoc must inherit property "childElementCount" with the proper type
+PASS Document interface: xmlDoc must inherit property "prepend([object Object],[object Object])" with the proper type
+PASS Document interface: calling prepend([object Object],[object Object]) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "append([object Object],[object Object])" with the proper type
+PASS Document interface: calling append([object Object],[object Object]) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "querySelector(DOMString)" with the proper type
+PASS Document interface: calling querySelector(DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "querySelectorAll(DOMString)" with the proper type
+PASS Document interface: calling querySelectorAll(DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "createExpression(DOMString, XPathNSResolver)" with the proper type
+PASS Document interface: calling createExpression(DOMString, XPathNSResolver) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "createNSResolver(Node)" with the proper type
+PASS Document interface: calling createNSResolver(Node) on xmlDoc with too few arguments must throw TypeError
+PASS Document interface: xmlDoc must inherit property "evaluate(DOMString, Node, XPathNSResolver, unsigned short, XPathResult)" with the proper type
+PASS Document interface: calling evaluate(DOMString, Node, XPathNSResolver, unsigned short, XPathResult) on xmlDoc with too few arguments must throw TypeError
+PASS EventTarget interface: xmlDoc must inherit property "addEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object],[object Object]) on xmlDoc with too few arguments must throw TypeError
+PASS EventTarget interface: xmlDoc must inherit property "removeEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object],[object Object]) on xmlDoc with too few arguments must throw TypeError
+PASS EventTarget interface: xmlDoc must inherit property "dispatchEvent(Event)" with the proper type
+PASS EventTarget interface: calling dispatchEvent(Event) on xmlDoc with too few arguments must throw TypeError
 PASS DOMImplementation interface: existence and properties of interface object
 PASS DOMImplementation interface object length
 PASS DOMImplementation interface object name
@@ -175,6 +434,15 @@
 PASS DOMImplementation interface: operation createDocument(DOMString, DOMString, DocumentType)
 PASS DOMImplementation interface: operation createHTMLDocument(DOMString)
 PASS DOMImplementation interface: operation hasFeature()
+PASS DOMImplementation must be primary interface of document.implementation
+PASS Stringification of document.implementation
+PASS DOMImplementation interface: document.implementation must inherit property "createDocumentType(DOMString, DOMString, DOMString)" with the proper type
+PASS DOMImplementation interface: calling createDocumentType(DOMString, DOMString, DOMString) on document.implementation with too few arguments must throw TypeError
+PASS DOMImplementation interface: document.implementation must inherit property "createDocument(DOMString, DOMString, DocumentType)" with the proper type
+PASS DOMImplementation interface: calling createDocument(DOMString, DOMString, DocumentType) on document.implementation with too few arguments must throw TypeError
+PASS DOMImplementation interface: document.implementation must inherit property "createHTMLDocument(DOMString)" with the proper type
+PASS DOMImplementation interface: calling createHTMLDocument(DOMString) on document.implementation with too few arguments must throw TypeError
+PASS DOMImplementation interface: document.implementation must inherit property "hasFeature()" with the proper type
 PASS DocumentType interface: existence and properties of interface object
 PASS DocumentType interface object length
 PASS DocumentType interface object name
@@ -188,6 +456,24 @@
 PASS DocumentType interface: operation after([object Object],[object Object])
 PASS DocumentType interface: operation replaceWith([object Object],[object Object])
 PASS DocumentType interface: operation remove()
+PASS DocumentType must be primary interface of document.doctype
+PASS Stringification of document.doctype
+PASS DocumentType interface: document.doctype must inherit property "name" with the proper type
+PASS DocumentType interface: document.doctype must inherit property "publicId" with the proper type
+PASS DocumentType interface: document.doctype must inherit property "systemId" with the proper type
+PASS DocumentType interface: document.doctype must inherit property "before([object Object],[object Object])" with the proper type
+PASS DocumentType interface: calling before([object Object],[object Object]) on document.doctype with too few arguments must throw TypeError
+PASS DocumentType interface: document.doctype must inherit property "after([object Object],[object Object])" with the proper type
+PASS DocumentType interface: calling after([object Object],[object Object]) on document.doctype with too few arguments must throw TypeError
+PASS DocumentType interface: document.doctype must inherit property "replaceWith([object Object],[object Object])" with the proper type
+PASS DocumentType interface: calling replaceWith([object Object],[object Object]) on document.doctype with too few arguments must throw TypeError
+PASS DocumentType interface: document.doctype must inherit property "remove()" with the proper type
+PASS EventTarget interface: document.doctype must inherit property "addEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object],[object Object]) on document.doctype with too few arguments must throw TypeError
+PASS EventTarget interface: document.doctype must inherit property "removeEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object],[object Object]) on document.doctype with too few arguments must throw TypeError
+PASS EventTarget interface: document.doctype must inherit property "dispatchEvent(Event)" with the proper type
+PASS EventTarget interface: calling dispatchEvent(Event) on document.doctype with too few arguments must throw TypeError
 PASS DocumentFragment interface: existence and properties of interface object
 PASS DocumentFragment interface object length
 PASS DocumentFragment interface object name
@@ -203,6 +489,28 @@
 PASS DocumentFragment interface: operation append([object Object],[object Object])
 PASS DocumentFragment interface: operation querySelector(DOMString)
 PASS DocumentFragment interface: operation querySelectorAll(DOMString)
+PASS DocumentFragment must be primary interface of document.createDocumentFragment()
+PASS Stringification of document.createDocumentFragment()
+PASS DocumentFragment interface: document.createDocumentFragment() must inherit property "getElementById(DOMString)" with the proper type
+PASS DocumentFragment interface: calling getElementById(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS DocumentFragment interface: document.createDocumentFragment() must inherit property "children" with the proper type
+PASS DocumentFragment interface: document.createDocumentFragment() must inherit property "firstElementChild" with the proper type
+PASS DocumentFragment interface: document.createDocumentFragment() must inherit property "lastElementChild" with the proper type
+PASS DocumentFragment interface: document.createDocumentFragment() must inherit property "childElementCount" with the proper type
+PASS DocumentFragment interface: document.createDocumentFragment() must inherit property "prepend([object Object],[object Object])" with the proper type
+PASS DocumentFragment interface: calling prepend([object Object],[object Object]) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS DocumentFragment interface: document.createDocumentFragment() must inherit property "append([object Object],[object Object])" with the proper type
+PASS DocumentFragment interface: calling append([object Object],[object Object]) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS DocumentFragment interface: document.createDocumentFragment() must inherit property "querySelector(DOMString)" with the proper type
+PASS DocumentFragment interface: calling querySelector(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS DocumentFragment interface: document.createDocumentFragment() must inherit property "querySelectorAll(DOMString)" with the proper type
+PASS DocumentFragment interface: calling querySelectorAll(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS EventTarget interface: document.createDocumentFragment() must inherit property "addEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object],[object Object]) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS EventTarget interface: document.createDocumentFragment() must inherit property "removeEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object],[object Object]) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS EventTarget interface: document.createDocumentFragment() must inherit property "dispatchEvent(Event)" with the proper type
+PASS EventTarget interface: calling dispatchEvent(Event) on document.createDocumentFragment() with too few arguments must throw TypeError
 PASS ShadowRoot interface: existence and properties of interface object
 PASS ShadowRoot interface object length
 PASS ShadowRoot interface object name
@@ -267,6 +575,94 @@
 PASS Element interface: operation replaceWith([object Object],[object Object])
 PASS Element interface: operation remove()
 PASS Element interface: attribute assignedSlot
+PASS Element must be primary interface of element
+PASS Stringification of element
+PASS Element interface: element must inherit property "namespaceURI" with the proper type
+PASS Element interface: element must inherit property "prefix" with the proper type
+PASS Element interface: element must inherit property "localName" with the proper type
+PASS Element interface: element must inherit property "tagName" with the proper type
+PASS Element interface: element must inherit property "id" with the proper type
+PASS Element interface: element must inherit property "className" with the proper type
+PASS Element interface: element must inherit property "classList" with the proper type
+PASS Element interface: element must inherit property "slot" with the proper type
+PASS Element interface: element must inherit property "hasAttributes()" with the proper type
+PASS Element interface: element must inherit property "attributes" with the proper type
+PASS Element interface: element must inherit property "getAttributeNames()" with the proper type
+PASS Element interface: element must inherit property "getAttribute(DOMString)" with the proper type
+PASS Element interface: calling getAttribute(DOMString) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "getAttributeNS(DOMString, DOMString)" with the proper type
+PASS Element interface: calling getAttributeNS(DOMString, DOMString) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "setAttribute(DOMString, DOMString)" with the proper type
+PASS Element interface: calling setAttribute(DOMString, DOMString) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "setAttributeNS(DOMString, DOMString, DOMString)" with the proper type
+PASS Element interface: calling setAttributeNS(DOMString, DOMString, DOMString) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "removeAttribute(DOMString)" with the proper type
+PASS Element interface: calling removeAttribute(DOMString) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "removeAttributeNS(DOMString, DOMString)" with the proper type
+PASS Element interface: calling removeAttributeNS(DOMString, DOMString) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "toggleAttribute(DOMString, boolean)" with the proper type
+PASS Element interface: calling toggleAttribute(DOMString, boolean) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "hasAttribute(DOMString)" with the proper type
+PASS Element interface: calling hasAttribute(DOMString) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "hasAttributeNS(DOMString, DOMString)" with the proper type
+PASS Element interface: calling hasAttributeNS(DOMString, DOMString) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "getAttributeNode(DOMString)" with the proper type
+PASS Element interface: calling getAttributeNode(DOMString) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "getAttributeNodeNS(DOMString, DOMString)" with the proper type
+PASS Element interface: calling getAttributeNodeNS(DOMString, DOMString) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "setAttributeNode(Attr)" with the proper type
+PASS Element interface: calling setAttributeNode(Attr) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "setAttributeNodeNS(Attr)" with the proper type
+PASS Element interface: calling setAttributeNodeNS(Attr) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "removeAttributeNode(Attr)" with the proper type
+PASS Element interface: calling removeAttributeNode(Attr) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "attachShadow(ShadowRootInit)" with the proper type
+PASS Element interface: calling attachShadow(ShadowRootInit) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "shadowRoot" with the proper type
+PASS Element interface: element must inherit property "closest(DOMString)" with the proper type
+PASS Element interface: calling closest(DOMString) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "matches(DOMString)" with the proper type
+PASS Element interface: calling matches(DOMString) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "webkitMatchesSelector(DOMString)" with the proper type
+PASS Element interface: calling webkitMatchesSelector(DOMString) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "getElementsByTagName(DOMString)" with the proper type
+PASS Element interface: calling getElementsByTagName(DOMString) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "getElementsByTagNameNS(DOMString, DOMString)" with the proper type
+PASS Element interface: calling getElementsByTagNameNS(DOMString, DOMString) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "getElementsByClassName(DOMString)" with the proper type
+PASS Element interface: calling getElementsByClassName(DOMString) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "insertAdjacentElement(DOMString, Element)" with the proper type
+PASS Element interface: calling insertAdjacentElement(DOMString, Element) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "insertAdjacentText(DOMString, DOMString)" with the proper type
+PASS Element interface: calling insertAdjacentText(DOMString, DOMString) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "children" with the proper type
+PASS Element interface: element must inherit property "firstElementChild" with the proper type
+PASS Element interface: element must inherit property "lastElementChild" with the proper type
+PASS Element interface: element must inherit property "childElementCount" with the proper type
+PASS Element interface: element must inherit property "prepend([object Object],[object Object])" with the proper type
+PASS Element interface: calling prepend([object Object],[object Object]) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "append([object Object],[object Object])" with the proper type
+PASS Element interface: calling append([object Object],[object Object]) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "querySelector(DOMString)" with the proper type
+PASS Element interface: calling querySelector(DOMString) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "querySelectorAll(DOMString)" with the proper type
+PASS Element interface: calling querySelectorAll(DOMString) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "previousElementSibling" with the proper type
+PASS Element interface: element must inherit property "nextElementSibling" with the proper type
+PASS Element interface: element must inherit property "before([object Object],[object Object])" with the proper type
+PASS Element interface: calling before([object Object],[object Object]) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "after([object Object],[object Object])" with the proper type
+PASS Element interface: calling after([object Object],[object Object]) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "replaceWith([object Object],[object Object])" with the proper type
+PASS Element interface: calling replaceWith([object Object],[object Object]) on element with too few arguments must throw TypeError
+PASS Element interface: element must inherit property "remove()" with the proper type
+PASS Element interface: element must inherit property "assignedSlot" with the proper type
+PASS EventTarget interface: element must inherit property "addEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object],[object Object]) on element with too few arguments must throw TypeError
+PASS EventTarget interface: element must inherit property "removeEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object],[object Object]) on element with too few arguments must throw TypeError
+PASS EventTarget interface: element must inherit property "dispatchEvent(Event)" with the proper type
+PASS EventTarget interface: calling dispatchEvent(Event) on element with too few arguments must throw TypeError
 PASS NamedNodeMap interface: existence and properties of interface object
 PASS NamedNodeMap interface object length
 PASS NamedNodeMap interface object name
@@ -294,6 +690,21 @@
 PASS Attr interface: attribute value
 PASS Attr interface: attribute ownerElement
 PASS Attr interface: attribute specified
+PASS Attr must be primary interface of document.querySelector("[id]").attributes[0]
+PASS Stringification of document.querySelector("[id]").attributes[0]
+PASS Attr interface: document.querySelector("[id]").attributes[0] must inherit property "namespaceURI" with the proper type
+PASS Attr interface: document.querySelector("[id]").attributes[0] must inherit property "prefix" with the proper type
+PASS Attr interface: document.querySelector("[id]").attributes[0] must inherit property "localName" with the proper type
+PASS Attr interface: document.querySelector("[id]").attributes[0] must inherit property "name" with the proper type
+PASS Attr interface: document.querySelector("[id]").attributes[0] must inherit property "value" with the proper type
+PASS Attr interface: document.querySelector("[id]").attributes[0] must inherit property "ownerElement" with the proper type
+PASS Attr interface: document.querySelector("[id]").attributes[0] must inherit property "specified" with the proper type
+PASS EventTarget interface: document.querySelector("[id]").attributes[0] must inherit property "addEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object],[object Object]) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS EventTarget interface: document.querySelector("[id]").attributes[0] must inherit property "removeEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object],[object Object]) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS EventTarget interface: document.querySelector("[id]").attributes[0] must inherit property "dispatchEvent(Event)" with the proper type
+PASS EventTarget interface: calling dispatchEvent(Event) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
 PASS CharacterData interface: existence and properties of interface object
 PASS CharacterData interface object length
 PASS CharacterData interface object name
@@ -322,6 +733,39 @@
 PASS Text interface: operation splitText(unsigned long)
 PASS Text interface: attribute wholeText
 PASS Text interface: attribute assignedSlot
+PASS Text must be primary interface of document.createTextNode("abc")
+PASS Stringification of document.createTextNode("abc")
+PASS Text interface: document.createTextNode("abc") must inherit property "splitText(unsigned long)" with the proper type
+PASS Text interface: calling splitText(unsigned long) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Text interface: document.createTextNode("abc") must inherit property "wholeText" with the proper type
+PASS Text interface: document.createTextNode("abc") must inherit property "assignedSlot" with the proper type
+PASS CharacterData interface: document.createTextNode("abc") must inherit property "data" with the proper type
+PASS CharacterData interface: document.createTextNode("abc") must inherit property "length" with the proper type
+PASS CharacterData interface: document.createTextNode("abc") must inherit property "substringData(unsigned long, unsigned long)" with the proper type
+PASS CharacterData interface: calling substringData(unsigned long, unsigned long) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS CharacterData interface: document.createTextNode("abc") must inherit property "appendData(DOMString)" with the proper type
+PASS CharacterData interface: calling appendData(DOMString) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS CharacterData interface: document.createTextNode("abc") must inherit property "insertData(unsigned long, DOMString)" with the proper type
+PASS CharacterData interface: calling insertData(unsigned long, DOMString) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS CharacterData interface: document.createTextNode("abc") must inherit property "deleteData(unsigned long, unsigned long)" with the proper type
+PASS CharacterData interface: calling deleteData(unsigned long, unsigned long) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS CharacterData interface: document.createTextNode("abc") must inherit property "replaceData(unsigned long, unsigned long, DOMString)" with the proper type
+PASS CharacterData interface: calling replaceData(unsigned long, unsigned long, DOMString) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS CharacterData interface: document.createTextNode("abc") must inherit property "previousElementSibling" with the proper type
+PASS CharacterData interface: document.createTextNode("abc") must inherit property "nextElementSibling" with the proper type
+PASS CharacterData interface: document.createTextNode("abc") must inherit property "before([object Object],[object Object])" with the proper type
+PASS CharacterData interface: calling before([object Object],[object Object]) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS CharacterData interface: document.createTextNode("abc") must inherit property "after([object Object],[object Object])" with the proper type
+PASS CharacterData interface: calling after([object Object],[object Object]) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS CharacterData interface: document.createTextNode("abc") must inherit property "replaceWith([object Object],[object Object])" with the proper type
+PASS CharacterData interface: calling replaceWith([object Object],[object Object]) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS CharacterData interface: document.createTextNode("abc") must inherit property "remove()" with the proper type
+PASS EventTarget interface: document.createTextNode("abc") must inherit property "addEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object],[object Object]) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS EventTarget interface: document.createTextNode("abc") must inherit property "removeEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object],[object Object]) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS EventTarget interface: document.createTextNode("abc") must inherit property "dispatchEvent(Event)" with the proper type
+PASS EventTarget interface: calling dispatchEvent(Event) on document.createTextNode("abc") with too few arguments must throw TypeError
 PASS CDATASection interface: existence and properties of interface object
 PASS CDATASection interface object length
 PASS CDATASection interface object name
@@ -335,12 +779,71 @@
 PASS ProcessingInstruction interface: existence and properties of interface prototype object's "constructor" property
 PASS ProcessingInstruction interface: existence and properties of interface prototype object's @@unscopables property
 PASS ProcessingInstruction interface: attribute target
+PASS ProcessingInstruction must be primary interface of xmlDoc.createProcessingInstruction("abc", "def")
+PASS Stringification of xmlDoc.createProcessingInstruction("abc", "def")
+PASS ProcessingInstruction interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "target" with the proper type
+PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "data" with the proper type
+PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "length" with the proper type
+PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "substringData(unsigned long, unsigned long)" with the proper type
+PASS CharacterData interface: calling substringData(unsigned long, unsigned long) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "appendData(DOMString)" with the proper type
+PASS CharacterData interface: calling appendData(DOMString) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "insertData(unsigned long, DOMString)" with the proper type
+PASS CharacterData interface: calling insertData(unsigned long, DOMString) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "deleteData(unsigned long, unsigned long)" with the proper type
+PASS CharacterData interface: calling deleteData(unsigned long, unsigned long) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "replaceData(unsigned long, unsigned long, DOMString)" with the proper type
+PASS CharacterData interface: calling replaceData(unsigned long, unsigned long, DOMString) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "previousElementSibling" with the proper type
+PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "nextElementSibling" with the proper type
+PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "before([object Object],[object Object])" with the proper type
+PASS CharacterData interface: calling before([object Object],[object Object]) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "after([object Object],[object Object])" with the proper type
+PASS CharacterData interface: calling after([object Object],[object Object]) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "replaceWith([object Object],[object Object])" with the proper type
+PASS CharacterData interface: calling replaceWith([object Object],[object Object]) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS CharacterData interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "remove()" with the proper type
+PASS EventTarget interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "addEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object],[object Object]) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS EventTarget interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "removeEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object],[object Object]) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS EventTarget interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "dispatchEvent(Event)" with the proper type
+PASS EventTarget interface: calling dispatchEvent(Event) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
 PASS Comment interface: existence and properties of interface object
 PASS Comment interface object length
 PASS Comment interface object name
 PASS Comment interface: existence and properties of interface prototype object
 PASS Comment interface: existence and properties of interface prototype object's "constructor" property
 PASS Comment interface: existence and properties of interface prototype object's @@unscopables property
+PASS Comment must be primary interface of document.createComment("abc")
+PASS Stringification of document.createComment("abc")
+PASS CharacterData interface: document.createComment("abc") must inherit property "data" with the proper type
+PASS CharacterData interface: document.createComment("abc") must inherit property "length" with the proper type
+PASS CharacterData interface: document.createComment("abc") must inherit property "substringData(unsigned long, unsigned long)" with the proper type
+PASS CharacterData interface: calling substringData(unsigned long, unsigned long) on document.createComment("abc") with too few arguments must throw TypeError
+PASS CharacterData interface: document.createComment("abc") must inherit property "appendData(DOMString)" with the proper type
+PASS CharacterData interface: calling appendData(DOMString) on document.createComment("abc") with too few arguments must throw TypeError
+PASS CharacterData interface: document.createComment("abc") must inherit property "insertData(unsigned long, DOMString)" with the proper type
+PASS CharacterData interface: calling insertData(unsigned long, DOMString) on document.createComment("abc") with too few arguments must throw TypeError
+PASS CharacterData interface: document.createComment("abc") must inherit property "deleteData(unsigned long, unsigned long)" with the proper type
+PASS CharacterData interface: calling deleteData(unsigned long, unsigned long) on document.createComment("abc") with too few arguments must throw TypeError
+PASS CharacterData interface: document.createComment("abc") must inherit property "replaceData(unsigned long, unsigned long, DOMString)" with the proper type
+PASS CharacterData interface: calling replaceData(unsigned long, unsigned long, DOMString) on document.createComment("abc") with too few arguments must throw TypeError
+PASS CharacterData interface: document.createComment("abc") must inherit property "previousElementSibling" with the proper type
+PASS CharacterData interface: document.createComment("abc") must inherit property "nextElementSibling" with the proper type
+PASS CharacterData interface: document.createComment("abc") must inherit property "before([object Object],[object Object])" with the proper type
+PASS CharacterData interface: calling before([object Object],[object Object]) on document.createComment("abc") with too few arguments must throw TypeError
+PASS CharacterData interface: document.createComment("abc") must inherit property "after([object Object],[object Object])" with the proper type
+PASS CharacterData interface: calling after([object Object],[object Object]) on document.createComment("abc") with too few arguments must throw TypeError
+PASS CharacterData interface: document.createComment("abc") must inherit property "replaceWith([object Object],[object Object])" with the proper type
+PASS CharacterData interface: calling replaceWith([object Object],[object Object]) on document.createComment("abc") with too few arguments must throw TypeError
+PASS CharacterData interface: document.createComment("abc") must inherit property "remove()" with the proper type
+PASS EventTarget interface: document.createComment("abc") must inherit property "addEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object],[object Object]) on document.createComment("abc") with too few arguments must throw TypeError
+PASS EventTarget interface: document.createComment("abc") must inherit property "removeEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type
+PASS EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object],[object Object]) on document.createComment("abc") with too few arguments must throw TypeError
+PASS EventTarget interface: document.createComment("abc") must inherit property "dispatchEvent(Event)" with the proper type
+PASS EventTarget interface: calling dispatchEvent(Event) on document.createComment("abc") with too few arguments must throw TypeError
 FAIL AbstractRange interface: existence and properties of interface object assert_own_property: self does not have own property "AbstractRange" expected property "AbstractRange" missing
 FAIL AbstractRange interface object length assert_own_property: self does not have own property "AbstractRange" expected property "AbstractRange" missing
 FAIL AbstractRange interface object name assert_own_property: self does not have own property "AbstractRange" expected property "AbstractRange" missing
@@ -394,6 +897,100 @@
 PASS Range interface: operation comparePoint(Node, unsigned long)
 PASS Range interface: operation intersectsNode(Node)
 PASS Range interface: stringifier
+PASS Range must be primary interface of document.createRange()
+PASS Stringification of document.createRange()
+PASS Range interface: document.createRange() must inherit property "commonAncestorContainer" with the proper type
+PASS Range interface: document.createRange() must inherit property "setStart(Node, unsigned long)" with the proper type
+PASS Range interface: calling setStart(Node, unsigned long) on document.createRange() with too few arguments must throw TypeError
+PASS Range interface: document.createRange() must inherit property "setEnd(Node, unsigned long)" with the proper type
+PASS Range interface: calling setEnd(Node, unsigned long) on document.createRange() with too few arguments must throw TypeError
+PASS Range interface: document.createRange() must inherit property "setStartBefore(Node)" with the proper type
+PASS Range interface: calling setStartBefore(Node) on document.createRange() with too few arguments must throw TypeError
+PASS Range interface: document.createRange() must inherit property "setStartAfter(Node)" with the proper type
+PASS Range interface: calling setStartAfter(Node) on document.createRange() with too few arguments must throw TypeError
+PASS Range interface: document.createRange() must inherit property "setEndBefore(Node)" with the proper type
+PASS Range interface: calling setEndBefore(Node) on document.createRange() with too few arguments must throw TypeError
+PASS Range interface: document.createRange() must inherit property "setEndAfter(Node)" with the proper type
+PASS Range interface: calling setEndAfter(Node) on document.createRange() with too few arguments must throw TypeError
+PASS Range interface: document.createRange() must inherit property "collapse(boolean)" with the proper type
+PASS Range interface: calling collapse(boolean) on document.createRange() with too few arguments must throw TypeError
+PASS Range interface: document.createRange() must inherit property "selectNode(Node)" with the proper type
+PASS Range interface: calling selectNode(Node) on document.createRange() with too few arguments must throw TypeError
+PASS Range interface: document.createRange() must inherit property "selectNodeContents(Node)" with the proper type
+PASS Range interface: calling selectNodeContents(Node) on document.createRange() with too few arguments must throw TypeError
+PASS Range interface: document.createRange() must inherit property "START_TO_START" with the proper type
+PASS Range interface: document.createRange() must inherit property "START_TO_END" with the proper type
+PASS Range interface: document.createRange() must inherit property "END_TO_END" with the proper type
+PASS Range interface: document.createRange() must inherit property "END_TO_START" with the proper type
+PASS Range interface: document.createRange() must inherit property "compareBoundaryPoints(unsigned short, Range)" with the proper type
+PASS Range interface: calling compareBoundaryPoints(unsigned short, Range) on document.createRange() with too few arguments must throw TypeError
+PASS Range interface: document.createRange() must inherit property "deleteContents()" with the proper type
+PASS Range interface: document.createRange() must inherit property "extractContents()" with the proper type
+PASS Range interface: document.createRange() must inherit property "cloneContents()" with the proper type
+PASS Range interface: document.createRange() must inherit property "insertNode(Node)" with the proper type
+PASS Range interface: calling insertNode(Node) on document.createRange() with too few arguments must throw TypeError
+PASS Range interface: document.createRange() must inherit property "surroundContents(Node)" with the proper type
+PASS Range interface: calling surroundContents(Node) on document.createRange() with too few arguments must throw TypeError
+PASS Range interface: document.createRange() must inherit property "cloneRange()" with the proper type
+PASS Range interface: document.createRange() must inherit property "detach()" with the proper type
+PASS Range interface: document.createRange() must inherit property "isPointInRange(Node, unsigned long)" with the proper type
+PASS Range interface: calling isPointInRange(Node, unsigned long) on document.createRange() with too few arguments must throw TypeError
+PASS Range interface: document.createRange() must inherit property "comparePoint(Node, unsigned long)" with the proper type
+PASS Range interface: calling comparePoint(Node, unsigned long) on document.createRange() with too few arguments must throw TypeError
+PASS Range interface: document.createRange() must inherit property "intersectsNode(Node)" with the proper type
+PASS Range interface: calling intersectsNode(Node) on document.createRange() with too few arguments must throw TypeError
+PASS AbstractRange interface: document.createRange() must inherit property "startContainer" with the proper type
+PASS AbstractRange interface: document.createRange() must inherit property "startOffset" with the proper type
+PASS AbstractRange interface: document.createRange() must inherit property "endContainer" with the proper type
+PASS AbstractRange interface: document.createRange() must inherit property "endOffset" with the proper type
+PASS AbstractRange interface: document.createRange() must inherit property "collapsed" with the proper type
+PASS Range must be primary interface of detachedRange
+PASS Stringification of detachedRange
+PASS Range interface: detachedRange must inherit property "commonAncestorContainer" with the proper type
+PASS Range interface: detachedRange must inherit property "setStart(Node, unsigned long)" with the proper type
+PASS Range interface: calling setStart(Node, unsigned long) on detachedRange with too few arguments must throw TypeError
+PASS Range interface: detachedRange must inherit property "setEnd(Node, unsigned long)" with the proper type
+PASS Range interface: calling setEnd(Node, unsigned long) on detachedRange with too few arguments must throw TypeError
+PASS Range interface: detachedRange must inherit property "setStartBefore(Node)" with the proper type
+PASS Range interface: calling setStartBefore(Node) on detachedRange with too few arguments must throw TypeError
+PASS Range interface: detachedRange must inherit property "setStartAfter(Node)" with the proper type
+PASS Range interface: calling setStartAfter(Node) on detachedRange with too few arguments must throw TypeError
+PASS Range interface: detachedRange must inherit property "setEndBefore(Node)" with the proper type
+PASS Range interface: calling setEndBefore(Node) on detachedRange with too few arguments must throw TypeError
+PASS Range interface: detachedRange must inherit property "setEndAfter(Node)" with the proper type
+PASS Range interface: calling setEndAfter(Node) on detachedRange with too few arguments must throw TypeError
+PASS Range interface: detachedRange must inherit property "collapse(boolean)" with the proper type
+PASS Range interface: calling collapse(boolean) on detachedRange with too few arguments must throw TypeError
+PASS Range interface: detachedRange must inherit property "selectNode(Node)" with the proper type
+PASS Range interface: calling selectNode(Node) on detachedRange with too few arguments must throw TypeError
+PASS Range interface: detachedRange must inherit property "selectNodeContents(Node)" with the proper type
+PASS Range interface: calling selectNodeContents(Node) on detachedRange with too few arguments must throw TypeError
+PASS Range interface: detachedRange must inherit property "START_TO_START" with the proper type
+PASS Range interface: detachedRange must inherit property "START_TO_END" with the proper type
+PASS Range interface: detachedRange must inherit property "END_TO_END" with the proper type
+PASS Range interface: detachedRange must inherit property "END_TO_START" with the proper type
+PASS Range interface: detachedRange must inherit property "compareBoundaryPoints(unsigned short, Range)" with the proper type
+PASS Range interface: calling compareBoundaryPoints(unsigned short, Range) on detachedRange with too few arguments must throw TypeError
+PASS Range interface: detachedRange must inherit property "deleteContents()" with the proper type
+PASS Range interface: detachedRange must inherit property "extractContents()" with the proper type
+PASS Range interface: detachedRange must inherit property "cloneContents()" with the proper type
+PASS Range interface: detachedRange must inherit property "insertNode(Node)" with the proper type
+PASS Range interface: calling insertNode(Node) on detachedRange with too few arguments must throw TypeError
+PASS Range interface: detachedRange must inherit property "surroundContents(Node)" with the proper type
+PASS Range interface: calling surroundContents(Node) on detachedRange with too few arguments must throw TypeError
+PASS Range interface: detachedRange must inherit property "cloneRange()" with the proper type
+PASS Range interface: detachedRange must inherit property "detach()" with the proper type
+PASS Range interface: detachedRange must inherit property "isPointInRange(Node, unsigned long)" with the proper type
+PASS Range interface: calling isPointInRange(Node, unsigned long) on detachedRange with too few arguments must throw TypeError
+PASS Range interface: detachedRange must inherit property "comparePoint(Node, unsigned long)" with the proper type
+PASS Range interface: calling comparePoint(Node, unsigned long) on detachedRange with too few arguments must throw TypeError
+PASS Range interface: detachedRange must inherit property "intersectsNode(Node)" with the proper type
+PASS Range interface: calling intersectsNode(Node) on detachedRange with too few arguments must throw TypeError
+PASS AbstractRange interface: detachedRange must inherit property "startContainer" with the proper type
+PASS AbstractRange interface: detachedRange must inherit property "startOffset" with the proper type
+PASS AbstractRange interface: detachedRange must inherit property "endContainer" with the proper type
+PASS AbstractRange interface: detachedRange must inherit property "endOffset" with the proper type
+PASS AbstractRange interface: detachedRange must inherit property "collapsed" with the proper type
 PASS NodeIterator interface: existence and properties of interface object
 PASS NodeIterator interface object length
 PASS NodeIterator interface object name
@@ -408,6 +1005,16 @@
 PASS NodeIterator interface: operation nextNode()
 PASS NodeIterator interface: operation previousNode()
 PASS NodeIterator interface: operation detach()
+PASS NodeIterator must be primary interface of document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false)
+PASS Stringification of document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false)
+PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "root" with the proper type
+PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "referenceNode" with the proper type
+PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "pointerBeforeReferenceNode" with the proper type
+PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "whatToShow" with the proper type
+PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "filter" with the proper type
+PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "nextNode()" with the proper type
+PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "previousNode()" with the proper type
+PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "detach()" with the proper type
 PASS TreeWalker interface: existence and properties of interface object
 PASS TreeWalker interface object length
 PASS TreeWalker interface object name
@@ -425,6 +1032,19 @@
 PASS TreeWalker interface: operation nextSibling()
 PASS TreeWalker interface: operation previousNode()
 PASS TreeWalker interface: operation nextNode()
+PASS TreeWalker must be primary interface of document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false)
+PASS Stringification of document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false)
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "root" with the proper type
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "whatToShow" with the proper type
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "filter" with the proper type
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "currentNode" with the proper type
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "parentNode()" with the proper type
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "firstChild()" with the proper type
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "lastChild()" with the proper type
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "previousSibling()" with the proper type
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "nextSibling()" with the proper type
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "previousNode()" with the proper type
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "nextNode()" with the proper type
 PASS NodeFilter interface: existence and properties of interface object
 PASS NodeFilter interface object name
 PASS NodeFilter interface: existence and properties of interface prototype object
@@ -480,5 +1100,114 @@
 PASS DOMTokenList interface: attribute value
 PASS DOMTokenList interface: stringifier
 PASS DOMTokenList interface: iterable<DOMString>
+PASS DOMTokenList must be primary interface of document.body.classList
+PASS Stringification of document.body.classList
+PASS DOMTokenList interface: document.body.classList must inherit property "length" with the proper type
+PASS DOMTokenList interface: document.body.classList must inherit property "item(unsigned long)" with the proper type
+PASS DOMTokenList interface: calling item(unsigned long) on document.body.classList with too few arguments must throw TypeError
+PASS DOMTokenList interface: document.body.classList must inherit property "contains(DOMString)" with the proper type
+PASS DOMTokenList interface: calling contains(DOMString) on document.body.classList with too few arguments must throw TypeError
+PASS DOMTokenList interface: document.body.classList must inherit property "add(DOMString)" with the proper type
+PASS DOMTokenList interface: calling add(DOMString) on document.body.classList with too few arguments must throw TypeError
+PASS DOMTokenList interface: document.body.classList must inherit property "remove(DOMString)" with the proper type
+PASS DOMTokenList interface: calling remove(DOMString) on document.body.classList with too few arguments must throw TypeError
+PASS DOMTokenList interface: document.body.classList must inherit property "toggle(DOMString, boolean)" with the proper type
+PASS DOMTokenList interface: calling toggle(DOMString, boolean) on document.body.classList with too few arguments must throw TypeError
+PASS DOMTokenList interface: document.body.classList must inherit property "replace(DOMString, DOMString)" with the proper type
+PASS DOMTokenList interface: calling replace(DOMString, DOMString) on document.body.classList with too few arguments must throw TypeError
+PASS DOMTokenList interface: document.body.classList must inherit property "supports(DOMString)" with the proper type
+PASS DOMTokenList interface: calling supports(DOMString) on document.body.classList with too few arguments must throw TypeError
+PASS DOMTokenList interface: document.body.classList must inherit property "value" with the proper type
+PASS XPathResult interface: existence and properties of interface object
+PASS XPathResult interface object length
+PASS XPathResult interface object name
+PASS XPathResult interface: existence and properties of interface prototype object
+PASS XPathResult interface: existence and properties of interface prototype object's "constructor" property
+PASS XPathResult interface: existence and properties of interface prototype object's @@unscopables property
+PASS XPathResult interface: constant ANY_TYPE on interface object
+PASS XPathResult interface: constant ANY_TYPE on interface prototype object
+PASS XPathResult interface: constant NUMBER_TYPE on interface object
+PASS XPathResult interface: constant NUMBER_TYPE on interface prototype object
+PASS XPathResult interface: constant STRING_TYPE on interface object
+PASS XPathResult interface: constant STRING_TYPE on interface prototype object
+PASS XPathResult interface: constant BOOLEAN_TYPE on interface object
+PASS XPathResult interface: constant BOOLEAN_TYPE on interface prototype object
+PASS XPathResult interface: constant UNORDERED_NODE_ITERATOR_TYPE on interface object
+PASS XPathResult interface: constant UNORDERED_NODE_ITERATOR_TYPE on interface prototype object
+PASS XPathResult interface: constant ORDERED_NODE_ITERATOR_TYPE on interface object
+PASS XPathResult interface: constant ORDERED_NODE_ITERATOR_TYPE on interface prototype object
+PASS XPathResult interface: constant UNORDERED_NODE_SNAPSHOT_TYPE on interface object
+PASS XPathResult interface: constant UNORDERED_NODE_SNAPSHOT_TYPE on interface prototype object
+PASS XPathResult interface: constant ORDERED_NODE_SNAPSHOT_TYPE on interface object
+PASS XPathResult interface: constant ORDERED_NODE_SNAPSHOT_TYPE on interface prototype object
+PASS XPathResult interface: constant ANY_UNORDERED_NODE_TYPE on interface object
+PASS XPathResult interface: constant ANY_UNORDERED_NODE_TYPE on interface prototype object
+PASS XPathResult interface: constant FIRST_ORDERED_NODE_TYPE on interface object
+PASS XPathResult interface: constant FIRST_ORDERED_NODE_TYPE on interface prototype object
+PASS XPathResult interface: attribute resultType
+PASS XPathResult interface: attribute numberValue
+PASS XPathResult interface: attribute stringValue
+PASS XPathResult interface: attribute booleanValue
+PASS XPathResult interface: attribute singleNodeValue
+PASS XPathResult interface: attribute invalidIteratorState
+PASS XPathResult interface: attribute snapshotLength
+PASS XPathResult interface: operation iterateNext()
+PASS XPathResult interface: operation snapshotItem(unsigned long)
+PASS XPathResult must be primary interface of document.evaluate("//*", document.body)
+PASS Stringification of document.evaluate("//*", document.body)
+PASS XPathResult interface: document.evaluate("//*", document.body) must inherit property "ANY_TYPE" with the proper type
+PASS XPathResult interface: document.evaluate("//*", document.body) must inherit property "NUMBER_TYPE" with the proper type
+PASS XPathResult interface: document.evaluate("//*", document.body) must inherit property "STRING_TYPE" with the proper type
+PASS XPathResult interface: document.evaluate("//*", document.body) must inherit property "BOOLEAN_TYPE" with the proper type
+PASS XPathResult interface: document.evaluate("//*", document.body) must inherit property "UNORDERED_NODE_ITERATOR_TYPE" with the proper type
+PASS XPathResult interface: document.evaluate("//*", document.body) must inherit property "ORDERED_NODE_ITERATOR_TYPE" with the proper type
+PASS XPathResult interface: document.evaluate("//*", document.body) must inherit property "UNORDERED_NODE_SNAPSHOT_TYPE" with the proper type
+PASS XPathResult interface: document.evaluate("//*", document.body) must inherit property "ORDERED_NODE_SNAPSHOT_TYPE" with the proper type
+PASS XPathResult interface: document.evaluate("//*", document.body) must inherit property "ANY_UNORDERED_NODE_TYPE" with the proper type
+PASS XPathResult interface: document.evaluate("//*", document.body) must inherit property "FIRST_ORDERED_NODE_TYPE" with the proper type
+PASS XPathResult interface: document.evaluate("//*", document.body) must inherit property "resultType" with the proper type
+PASS XPathResult interface: document.evaluate("//*", document.body) must inherit property "numberValue" with the proper type
+PASS XPathResult interface: document.evaluate("//*", document.body) must inherit property "stringValue" with the proper type
+PASS XPathResult interface: document.evaluate("//*", document.body) must inherit property "booleanValue" with the proper type
+PASS XPathResult interface: document.evaluate("//*", document.body) must inherit property "singleNodeValue" with the proper type
+PASS XPathResult interface: document.evaluate("//*", document.body) must inherit property "invalidIteratorState" with the proper type
+PASS XPathResult interface: document.evaluate("//*", document.body) must inherit property "snapshotLength" with the proper type
+PASS XPathResult interface: document.evaluate("//*", document.body) must inherit property "iterateNext()" with the proper type
+PASS XPathResult interface: document.evaluate("//*", document.body) must inherit property "snapshotItem(unsigned long)" with the proper type
+PASS XPathResult interface: calling snapshotItem(unsigned long) on document.evaluate("//*", document.body) with too few arguments must throw TypeError
+PASS XPathExpression interface: existence and properties of interface object
+PASS XPathExpression interface object length
+PASS XPathExpression interface object name
+PASS XPathExpression interface: existence and properties of interface prototype object
+PASS XPathExpression interface: existence and properties of interface prototype object's "constructor" property
+PASS XPathExpression interface: existence and properties of interface prototype object's @@unscopables property
+PASS XPathExpression interface: operation evaluate(Node, unsigned short, XPathResult)
+PASS XPathExpression must be primary interface of document.createExpression("//*")
+PASS Stringification of document.createExpression("//*")
+PASS XPathExpression interface: document.createExpression("//*") must inherit property "evaluate(Node, unsigned short, XPathResult)" with the proper type
+PASS XPathExpression interface: calling evaluate(Node, unsigned short, XPathResult) on document.createExpression("//*") with too few arguments must throw TypeError
+PASS XPathNSResolver interface: existence and properties of interface object
+PASS XPathNSResolver interface: existence and properties of interface prototype object
+PASS XPathNSResolver interface: existence and properties of interface prototype object's "constructor" property
+PASS XPathNSResolver interface: existence and properties of interface prototype object's @@unscopables property
+PASS XPathNSResolver interface: operation lookupNamespaceURI(DOMString)
+PASS XPathEvaluator interface: existence and properties of interface object
+PASS XPathEvaluator interface object length
+PASS XPathEvaluator interface object name
+PASS XPathEvaluator interface: existence and properties of interface prototype object
+PASS XPathEvaluator interface: existence and properties of interface prototype object's "constructor" property
+PASS XPathEvaluator interface: existence and properties of interface prototype object's @@unscopables property
+PASS XPathEvaluator interface: operation createExpression(DOMString, XPathNSResolver)
+PASS XPathEvaluator interface: operation createNSResolver(Node)
+PASS XPathEvaluator interface: operation evaluate(DOMString, Node, XPathNSResolver, unsigned short, XPathResult)
+PASS XPathEvaluator must be primary interface of new XPathEvaluator()
+PASS Stringification of new XPathEvaluator()
+PASS XPathEvaluator interface: new XPathEvaluator() must inherit property "createExpression(DOMString, XPathNSResolver)" with the proper type
+PASS XPathEvaluator interface: calling createExpression(DOMString, XPathNSResolver) on new XPathEvaluator() with too few arguments must throw TypeError
+PASS XPathEvaluator interface: new XPathEvaluator() must inherit property "createNSResolver(Node)" with the proper type
+PASS XPathEvaluator interface: calling createNSResolver(Node) on new XPathEvaluator() with too few arguments must throw TypeError
+PASS XPathEvaluator interface: new XPathEvaluator() must inherit property "evaluate(DOMString, Node, XPathNSResolver, unsigned short, XPathResult)" with the proper type
+PASS XPathEvaluator interface: calling evaluate(DOMString, Node, XPathNSResolver, unsigned short, XPathResult) on new XPathEvaluator() with too few arguments must throw TypeError
+FAIL Window interface: attribute event assert_true: property should be enumerable expected true got false
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/domxpath/README.md b/third_party/blink/web_tests/external/wpt/domxpath/README.md
new file mode 100644
index 0000000..918997b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/domxpath/README.md
@@ -0,0 +1,9 @@
+# XPath
+
+This directory contains tests for [XPath](https://www.w3.org/TR/DOM-Level-3-XPath/).
+
+See [whatwg/dom#67](https://github.com/whatwg/dom/issues/67) for getting XPath
+better specified.
+
+Because the XPath interfaces are defined in the DOM Standard, the idlharness.js
+tests are in [/dom]([/dom) instead of here.
diff --git a/third_party/blink/web_tests/external/wpt/domxpath/interfaces.tentative.html b/third_party/blink/web_tests/external/wpt/domxpath/interfaces.tentative.html
deleted file mode 100644
index 9036ad8..0000000
--- a/third_party/blink/web_tests/external/wpt/domxpath/interfaces.tentative.html
+++ /dev/null
@@ -1,93 +0,0 @@
-<!doctype html>
-<title>XPath tests</title>
-<!-- This is a tentative test because there's no real spec for XPath IDL.
-     The closest thing is: -->
-<link rel="help" href="https://wiki.whatwg.org/wiki/DOM_XPath">
-<script src='/resources/testharness.js'></script>
-<script src='/resources/testharnessreport.js'></script>
-<script src='/resources/WebIDLParser.js'></script>
-<script src='/resources/idlharness.js'></script>
-<script type='text/plain'>
-[Exposed=Window]
-interface XPathResult {
-  const unsigned short      ANY_TYPE                       = 0;
-  const unsigned short      NUMBER_TYPE                    = 1;
-  const unsigned short      STRING_TYPE                    = 2;
-  const unsigned short      BOOLEAN_TYPE                   = 3;
-  const unsigned short      UNORDERED_NODE_ITERATOR_TYPE   = 4;
-  const unsigned short      ORDERED_NODE_ITERATOR_TYPE     = 5;
-  const unsigned short      UNORDERED_NODE_SNAPSHOT_TYPE   = 6;
-  const unsigned short      ORDERED_NODE_SNAPSHOT_TYPE     = 7;
-  const unsigned short      ANY_UNORDERED_NODE_TYPE        = 8;
-  const unsigned short      FIRST_ORDERED_NODE_TYPE        = 9;
-
-  readonly attribute unsigned short resultType;
-  readonly attribute unrestricted double numberValue;
-  // Maybe "DOMString?".
-  readonly attribute DOMString stringValue;
-  readonly attribute boolean booleanValue;
-  readonly attribute Node? singleNodeValue;
-  readonly attribute boolean          invalidIteratorState;
-  readonly attribute unsigned long    snapshotLength;
-  Node?               iterateNext();
-  Node?               snapshotItem(unsigned long index);
-};
-
-[Exposed=Window]
-interface XPathExpression {
-  XPathResult evaluate(Node contextNode,
-                       optional unsigned short type,
-                       optional XPathResult? result);
-};
-
-callback interface XPathNSResolver {
-  DOMString? lookupNamespaceURI(DOMString? prefix);
-};
-
-interface mixin XPathEvaluatorBase {
-  [NewObject] XPathExpression createExpression(DOMString expression,
-                                               optional XPathNSResolver? resolver);
-  XPathNSResolver    createNSResolver(Node nodeResolver);
-  XPathResult        evaluate(DOMString expression,
-                              Node contextNode,
-                              optional XPathNSResolver? resolver,
-                              optional unsigned short type,
-                              optional XPathResult? result);
-};
-
-[Exposed=Window, Constructor]
-interface XPathEvaluator {};
-
-XPathEvaluator includes XPathEvaluatorBase;
-</script>
-<script type='text/plain' class='untested'>
-interface Document {};
-Document includes XPathEvaluatorBase;
-</script>
-<script>
-"use strict";
-var evaluator = document;
-var resolver = function() {};
-var resolver2 = document.createNSResolver(document.documentElement);
-var expression = document.createExpression("//*", resolver);
-var result = document.evaluate("//*", document.documentElement, resolver, 0, null);
-
-var idlArray;
-setup(function() {
-  idlArray = new IdlArray();
-  [].forEach.call(document.querySelectorAll("script[type=text\\/plain]"), function(node) {
-    if (node.className == "untested") {
-      idlArray.add_untested_idls(node.textContent);
-    } else {
-      idlArray.add_idls(node.textContent);
-    }
-  });
-  idlArray.add_objects({
-    Document: ["document"],
-    XPathExpression: ["expression"],
-    XPathResolver: ["resolver", "resolver2"],
-    XPathResult: ["result"]
-  });
-});
-idlArray.test();
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/feature-policy/idlharness.window-expected.txt
index 534dc5c..c9b2434 100644
--- a/third_party/blink/web_tests/external/wpt/feature-policy/idlharness.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/feature-policy/idlharness.window-expected.txt
@@ -1,9 +1,14 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Document: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface HTMLIFrameElement: original interface defined assert_true: Original interface should be defined expected true got false
+PASS idl_test setup
+PASS Partial interface Document: original interface defined
+PASS Partial interface HTMLIFrameElement: original interface defined
+PASS Stringification of document.featurePolicy
+PASS FeaturePolicy interface: document.featurePolicy must inherit property "allowsFeature(DOMString, DOMString)" with the proper type
+PASS FeaturePolicy interface: calling allowsFeature(DOMString, DOMString) on document.featurePolicy with too few arguments must throw TypeError
+PASS FeaturePolicy interface: document.featurePolicy must inherit property "features()" with the proper type
+PASS FeaturePolicy interface: document.featurePolicy must inherit property "allowedFeatures()" with the proper type
+PASS FeaturePolicy interface: document.featurePolicy must inherit property "getAllowlistForFeature(DOMString)" with the proper type
+PASS FeaturePolicy interface: calling getAllowlistForFeature(DOMString) on document.featurePolicy with too few arguments must throw TypeError
 FAIL FeaturePolicyViolationReportBody interface: existence and properties of interface object assert_own_property: self does not have own property "FeaturePolicyViolationReportBody" expected property "FeaturePolicyViolationReportBody" missing
 FAIL FeaturePolicyViolationReportBody interface object length assert_own_property: self does not have own property "FeaturePolicyViolationReportBody" expected property "FeaturePolicyViolationReportBody" missing
 FAIL FeaturePolicyViolationReportBody interface object name assert_own_property: self does not have own property "FeaturePolicyViolationReportBody" expected property "FeaturePolicyViolationReportBody" missing
@@ -15,5 +20,8 @@
 FAIL FeaturePolicyViolationReportBody interface: attribute lineNumber assert_own_property: self does not have own property "FeaturePolicyViolationReportBody" expected property "FeaturePolicyViolationReportBody" missing
 FAIL FeaturePolicyViolationReportBody interface: attribute columnNumber assert_own_property: self does not have own property "FeaturePolicyViolationReportBody" expected property "FeaturePolicyViolationReportBody" missing
 FAIL FeaturePolicyViolationReportBody interface: attribute disposition assert_own_property: self does not have own property "FeaturePolicyViolationReportBody" expected property "FeaturePolicyViolationReportBody" missing
+PASS HTMLIFrameElement interface: attribute featurePolicy
+PASS Document interface: attribute featurePolicy
+PASS Document interface: document must inherit property "featurePolicy" with the proper type
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/fetch/api/idlharness.any-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/api/idlharness.any-expected.txt
index 39dc3f9..8bf325d7 100644
--- a/third_party/blink/web_tests/external/wpt/fetch/api/idlharness.any-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/fetch/api/idlharness.any-expected.txt
@@ -1,9 +1,7 @@
 This is a testharness.js-based test.
-Found 67 tests; 62 PASS, 5 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
+Found 129 tests; 123 PASS, 6 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined
 PASS Headers interface: existence and properties of interface object
 PASS Headers interface object length
 PASS Headers interface object name
@@ -16,6 +14,18 @@
 PASS Headers interface: operation has(ByteString)
 PASS Headers interface: operation set(ByteString, ByteString)
 PASS Headers interface: iterable<ByteString, ByteString>
+PASS Headers must be primary interface of new Headers()
+PASS Stringification of new Headers()
+PASS Headers interface: new Headers() must inherit property "append(ByteString, ByteString)" with the proper type
+PASS Headers interface: calling append(ByteString, ByteString) on new Headers() with too few arguments must throw TypeError
+PASS Headers interface: new Headers() must inherit property "delete(ByteString)" with the proper type
+PASS Headers interface: calling delete(ByteString) on new Headers() with too few arguments must throw TypeError
+PASS Headers interface: new Headers() must inherit property "get(ByteString)" with the proper type
+PASS Headers interface: calling get(ByteString) on new Headers() with too few arguments must throw TypeError
+PASS Headers interface: new Headers() must inherit property "has(ByteString)" with the proper type
+PASS Headers interface: calling has(ByteString) on new Headers() with too few arguments must throw TypeError
+PASS Headers interface: new Headers() must inherit property "set(ByteString, ByteString)" with the proper type
+PASS Headers interface: calling set(ByteString, ByteString) on new Headers() with too few arguments must throw TypeError
 PASS Request interface: existence and properties of interface object
 PASS Request interface object length
 PASS Request interface object name
@@ -45,6 +55,31 @@
 PASS Request interface: operation formData()
 PASS Request interface: operation json()
 PASS Request interface: operation text()
+PASS Request must be primary interface of new Request('about:blank')
+PASS Stringification of new Request('about:blank')
+PASS Request interface: new Request('about:blank') must inherit property "method" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "url" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "headers" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "destination" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "referrer" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "referrerPolicy" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "mode" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "credentials" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "cache" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "redirect" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "integrity" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "keepalive" with the proper type
+FAIL Request interface: new Request('about:blank') must inherit property "isReloadNavigation" with the proper type assert_inherits: property "isReloadNavigation" not found in prototype chain
+PASS Request interface: new Request('about:blank') must inherit property "isHistoryNavigation" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "signal" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "clone()" with the proper type
+FAIL Request interface: new Request('about:blank') must inherit property "body" with the proper type assert_inherits: property "body" not found in prototype chain
+PASS Request interface: new Request('about:blank') must inherit property "bodyUsed" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "arrayBuffer()" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "blob()" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "formData()" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "json()" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "text()" with the proper type
 PASS Response interface: existence and properties of interface object
 PASS Response interface object length
 PASS Response interface object name
@@ -69,5 +104,30 @@
 PASS Response interface: operation formData()
 PASS Response interface: operation json()
 PASS Response interface: operation text()
+PASS Response must be primary interface of new Response()
+PASS Stringification of new Response()
+PASS Response interface: new Response() must inherit property "error()" with the proper type
+PASS Response interface: new Response() must inherit property "redirect(USVString, unsigned short)" with the proper type
+PASS Response interface: calling redirect(USVString, unsigned short) on new Response() with too few arguments must throw TypeError
+PASS Response interface: new Response() must inherit property "type" with the proper type
+PASS Response interface: new Response() must inherit property "url" with the proper type
+PASS Response interface: new Response() must inherit property "redirected" with the proper type
+PASS Response interface: new Response() must inherit property "status" with the proper type
+PASS Response interface: new Response() must inherit property "ok" with the proper type
+PASS Response interface: new Response() must inherit property "statusText" with the proper type
+PASS Response interface: new Response() must inherit property "headers" with the proper type
+FAIL Response interface: new Response() must inherit property "trailer" with the proper type assert_inherits: property "trailer" not found in prototype chain
+PASS Response interface: new Response() must inherit property "clone()" with the proper type
+PASS Response interface: new Response() must inherit property "body" with the proper type
+PASS Response interface: new Response() must inherit property "bodyUsed" with the proper type
+PASS Response interface: new Response() must inherit property "arrayBuffer()" with the proper type
+PASS Response interface: new Response() must inherit property "blob()" with the proper type
+PASS Response interface: new Response() must inherit property "formData()" with the proper type
+PASS Response interface: new Response() must inherit property "json()" with the proper type
+PASS Response interface: new Response() must inherit property "text()" with the proper type
+PASS Window interface: operation fetch(RequestInfo, RequestInit)
+PASS Window interface: window must inherit property "fetch(RequestInfo, RequestInit)" with the proper type
+PASS Window interface: calling fetch(RequestInfo, RequestInit) on window with too few arguments must throw TypeError
+PASS WorkerGlobalScope interface: existence and properties of interface object
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/fetch/api/idlharness.any.serviceworker-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/api/idlharness.any.serviceworker-expected.txt
index 39dc3f9..7f9da6e 100644
--- a/third_party/blink/web_tests/external/wpt/fetch/api/idlharness.any.serviceworker-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/fetch/api/idlharness.any.serviceworker-expected.txt
@@ -1,9 +1,7 @@
 This is a testharness.js-based test.
-Found 67 tests; 62 PASS, 5 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
+Found 129 tests; 123 PASS, 6 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined
 PASS Headers interface: existence and properties of interface object
 PASS Headers interface object length
 PASS Headers interface object name
@@ -16,6 +14,18 @@
 PASS Headers interface: operation has(ByteString)
 PASS Headers interface: operation set(ByteString, ByteString)
 PASS Headers interface: iterable<ByteString, ByteString>
+PASS Headers must be primary interface of new Headers()
+PASS Stringification of new Headers()
+PASS Headers interface: new Headers() must inherit property "append(ByteString, ByteString)" with the proper type
+PASS Headers interface: calling append(ByteString, ByteString) on new Headers() with too few arguments must throw TypeError
+PASS Headers interface: new Headers() must inherit property "delete(ByteString)" with the proper type
+PASS Headers interface: calling delete(ByteString) on new Headers() with too few arguments must throw TypeError
+PASS Headers interface: new Headers() must inherit property "get(ByteString)" with the proper type
+PASS Headers interface: calling get(ByteString) on new Headers() with too few arguments must throw TypeError
+PASS Headers interface: new Headers() must inherit property "has(ByteString)" with the proper type
+PASS Headers interface: calling has(ByteString) on new Headers() with too few arguments must throw TypeError
+PASS Headers interface: new Headers() must inherit property "set(ByteString, ByteString)" with the proper type
+PASS Headers interface: calling set(ByteString, ByteString) on new Headers() with too few arguments must throw TypeError
 PASS Request interface: existence and properties of interface object
 PASS Request interface object length
 PASS Request interface object name
@@ -45,6 +55,31 @@
 PASS Request interface: operation formData()
 PASS Request interface: operation json()
 PASS Request interface: operation text()
+PASS Request must be primary interface of new Request('about:blank')
+PASS Stringification of new Request('about:blank')
+PASS Request interface: new Request('about:blank') must inherit property "method" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "url" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "headers" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "destination" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "referrer" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "referrerPolicy" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "mode" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "credentials" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "cache" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "redirect" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "integrity" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "keepalive" with the proper type
+FAIL Request interface: new Request('about:blank') must inherit property "isReloadNavigation" with the proper type assert_inherits: property "isReloadNavigation" not found in prototype chain
+PASS Request interface: new Request('about:blank') must inherit property "isHistoryNavigation" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "signal" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "clone()" with the proper type
+FAIL Request interface: new Request('about:blank') must inherit property "body" with the proper type assert_inherits: property "body" not found in prototype chain
+PASS Request interface: new Request('about:blank') must inherit property "bodyUsed" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "arrayBuffer()" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "blob()" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "formData()" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "json()" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "text()" with the proper type
 PASS Response interface: existence and properties of interface object
 PASS Response interface object length
 PASS Response interface object name
@@ -69,5 +104,30 @@
 PASS Response interface: operation formData()
 PASS Response interface: operation json()
 PASS Response interface: operation text()
+PASS Response must be primary interface of new Response()
+PASS Stringification of new Response()
+PASS Response interface: new Response() must inherit property "error()" with the proper type
+PASS Response interface: new Response() must inherit property "redirect(USVString, unsigned short)" with the proper type
+PASS Response interface: calling redirect(USVString, unsigned short) on new Response() with too few arguments must throw TypeError
+PASS Response interface: new Response() must inherit property "type" with the proper type
+PASS Response interface: new Response() must inherit property "url" with the proper type
+PASS Response interface: new Response() must inherit property "redirected" with the proper type
+PASS Response interface: new Response() must inherit property "status" with the proper type
+PASS Response interface: new Response() must inherit property "ok" with the proper type
+PASS Response interface: new Response() must inherit property "statusText" with the proper type
+PASS Response interface: new Response() must inherit property "headers" with the proper type
+FAIL Response interface: new Response() must inherit property "trailer" with the proper type assert_inherits: property "trailer" not found in prototype chain
+PASS Response interface: new Response() must inherit property "clone()" with the proper type
+PASS Response interface: new Response() must inherit property "body" with the proper type
+PASS Response interface: new Response() must inherit property "bodyUsed" with the proper type
+PASS Response interface: new Response() must inherit property "arrayBuffer()" with the proper type
+PASS Response interface: new Response() must inherit property "blob()" with the proper type
+PASS Response interface: new Response() must inherit property "formData()" with the proper type
+PASS Response interface: new Response() must inherit property "json()" with the proper type
+PASS Response interface: new Response() must inherit property "text()" with the proper type
+PASS Window interface: existence and properties of interface object
+PASS WorkerGlobalScope interface: operation fetch(RequestInfo, RequestInit)
+PASS WorkerGlobalScope interface: self must inherit property "fetch(RequestInfo, RequestInit)" with the proper type
+PASS WorkerGlobalScope interface: calling fetch(RequestInfo, RequestInit) on self with too few arguments must throw TypeError
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/fetch/api/idlharness.any.sharedworker-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/api/idlharness.any.sharedworker-expected.txt
index 39dc3f9..7f9da6e 100644
--- a/third_party/blink/web_tests/external/wpt/fetch/api/idlharness.any.sharedworker-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/fetch/api/idlharness.any.sharedworker-expected.txt
@@ -1,9 +1,7 @@
 This is a testharness.js-based test.
-Found 67 tests; 62 PASS, 5 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
+Found 129 tests; 123 PASS, 6 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined
 PASS Headers interface: existence and properties of interface object
 PASS Headers interface object length
 PASS Headers interface object name
@@ -16,6 +14,18 @@
 PASS Headers interface: operation has(ByteString)
 PASS Headers interface: operation set(ByteString, ByteString)
 PASS Headers interface: iterable<ByteString, ByteString>
+PASS Headers must be primary interface of new Headers()
+PASS Stringification of new Headers()
+PASS Headers interface: new Headers() must inherit property "append(ByteString, ByteString)" with the proper type
+PASS Headers interface: calling append(ByteString, ByteString) on new Headers() with too few arguments must throw TypeError
+PASS Headers interface: new Headers() must inherit property "delete(ByteString)" with the proper type
+PASS Headers interface: calling delete(ByteString) on new Headers() with too few arguments must throw TypeError
+PASS Headers interface: new Headers() must inherit property "get(ByteString)" with the proper type
+PASS Headers interface: calling get(ByteString) on new Headers() with too few arguments must throw TypeError
+PASS Headers interface: new Headers() must inherit property "has(ByteString)" with the proper type
+PASS Headers interface: calling has(ByteString) on new Headers() with too few arguments must throw TypeError
+PASS Headers interface: new Headers() must inherit property "set(ByteString, ByteString)" with the proper type
+PASS Headers interface: calling set(ByteString, ByteString) on new Headers() with too few arguments must throw TypeError
 PASS Request interface: existence and properties of interface object
 PASS Request interface object length
 PASS Request interface object name
@@ -45,6 +55,31 @@
 PASS Request interface: operation formData()
 PASS Request interface: operation json()
 PASS Request interface: operation text()
+PASS Request must be primary interface of new Request('about:blank')
+PASS Stringification of new Request('about:blank')
+PASS Request interface: new Request('about:blank') must inherit property "method" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "url" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "headers" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "destination" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "referrer" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "referrerPolicy" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "mode" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "credentials" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "cache" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "redirect" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "integrity" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "keepalive" with the proper type
+FAIL Request interface: new Request('about:blank') must inherit property "isReloadNavigation" with the proper type assert_inherits: property "isReloadNavigation" not found in prototype chain
+PASS Request interface: new Request('about:blank') must inherit property "isHistoryNavigation" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "signal" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "clone()" with the proper type
+FAIL Request interface: new Request('about:blank') must inherit property "body" with the proper type assert_inherits: property "body" not found in prototype chain
+PASS Request interface: new Request('about:blank') must inherit property "bodyUsed" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "arrayBuffer()" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "blob()" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "formData()" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "json()" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "text()" with the proper type
 PASS Response interface: existence and properties of interface object
 PASS Response interface object length
 PASS Response interface object name
@@ -69,5 +104,30 @@
 PASS Response interface: operation formData()
 PASS Response interface: operation json()
 PASS Response interface: operation text()
+PASS Response must be primary interface of new Response()
+PASS Stringification of new Response()
+PASS Response interface: new Response() must inherit property "error()" with the proper type
+PASS Response interface: new Response() must inherit property "redirect(USVString, unsigned short)" with the proper type
+PASS Response interface: calling redirect(USVString, unsigned short) on new Response() with too few arguments must throw TypeError
+PASS Response interface: new Response() must inherit property "type" with the proper type
+PASS Response interface: new Response() must inherit property "url" with the proper type
+PASS Response interface: new Response() must inherit property "redirected" with the proper type
+PASS Response interface: new Response() must inherit property "status" with the proper type
+PASS Response interface: new Response() must inherit property "ok" with the proper type
+PASS Response interface: new Response() must inherit property "statusText" with the proper type
+PASS Response interface: new Response() must inherit property "headers" with the proper type
+FAIL Response interface: new Response() must inherit property "trailer" with the proper type assert_inherits: property "trailer" not found in prototype chain
+PASS Response interface: new Response() must inherit property "clone()" with the proper type
+PASS Response interface: new Response() must inherit property "body" with the proper type
+PASS Response interface: new Response() must inherit property "bodyUsed" with the proper type
+PASS Response interface: new Response() must inherit property "arrayBuffer()" with the proper type
+PASS Response interface: new Response() must inherit property "blob()" with the proper type
+PASS Response interface: new Response() must inherit property "formData()" with the proper type
+PASS Response interface: new Response() must inherit property "json()" with the proper type
+PASS Response interface: new Response() must inherit property "text()" with the proper type
+PASS Window interface: existence and properties of interface object
+PASS WorkerGlobalScope interface: operation fetch(RequestInfo, RequestInit)
+PASS WorkerGlobalScope interface: self must inherit property "fetch(RequestInfo, RequestInit)" with the proper type
+PASS WorkerGlobalScope interface: calling fetch(RequestInfo, RequestInit) on self with too few arguments must throw TypeError
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/fetch/api/idlharness.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/api/idlharness.any.worker-expected.txt
index 39dc3f9..7f9da6e 100644
--- a/third_party/blink/web_tests/external/wpt/fetch/api/idlharness.any.worker-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/fetch/api/idlharness.any.worker-expected.txt
@@ -1,9 +1,7 @@
 This is a testharness.js-based test.
-Found 67 tests; 62 PASS, 5 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
+Found 129 tests; 123 PASS, 6 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined
 PASS Headers interface: existence and properties of interface object
 PASS Headers interface object length
 PASS Headers interface object name
@@ -16,6 +14,18 @@
 PASS Headers interface: operation has(ByteString)
 PASS Headers interface: operation set(ByteString, ByteString)
 PASS Headers interface: iterable<ByteString, ByteString>
+PASS Headers must be primary interface of new Headers()
+PASS Stringification of new Headers()
+PASS Headers interface: new Headers() must inherit property "append(ByteString, ByteString)" with the proper type
+PASS Headers interface: calling append(ByteString, ByteString) on new Headers() with too few arguments must throw TypeError
+PASS Headers interface: new Headers() must inherit property "delete(ByteString)" with the proper type
+PASS Headers interface: calling delete(ByteString) on new Headers() with too few arguments must throw TypeError
+PASS Headers interface: new Headers() must inherit property "get(ByteString)" with the proper type
+PASS Headers interface: calling get(ByteString) on new Headers() with too few arguments must throw TypeError
+PASS Headers interface: new Headers() must inherit property "has(ByteString)" with the proper type
+PASS Headers interface: calling has(ByteString) on new Headers() with too few arguments must throw TypeError
+PASS Headers interface: new Headers() must inherit property "set(ByteString, ByteString)" with the proper type
+PASS Headers interface: calling set(ByteString, ByteString) on new Headers() with too few arguments must throw TypeError
 PASS Request interface: existence and properties of interface object
 PASS Request interface object length
 PASS Request interface object name
@@ -45,6 +55,31 @@
 PASS Request interface: operation formData()
 PASS Request interface: operation json()
 PASS Request interface: operation text()
+PASS Request must be primary interface of new Request('about:blank')
+PASS Stringification of new Request('about:blank')
+PASS Request interface: new Request('about:blank') must inherit property "method" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "url" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "headers" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "destination" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "referrer" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "referrerPolicy" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "mode" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "credentials" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "cache" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "redirect" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "integrity" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "keepalive" with the proper type
+FAIL Request interface: new Request('about:blank') must inherit property "isReloadNavigation" with the proper type assert_inherits: property "isReloadNavigation" not found in prototype chain
+PASS Request interface: new Request('about:blank') must inherit property "isHistoryNavigation" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "signal" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "clone()" with the proper type
+FAIL Request interface: new Request('about:blank') must inherit property "body" with the proper type assert_inherits: property "body" not found in prototype chain
+PASS Request interface: new Request('about:blank') must inherit property "bodyUsed" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "arrayBuffer()" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "blob()" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "formData()" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "json()" with the proper type
+PASS Request interface: new Request('about:blank') must inherit property "text()" with the proper type
 PASS Response interface: existence and properties of interface object
 PASS Response interface object length
 PASS Response interface object name
@@ -69,5 +104,30 @@
 PASS Response interface: operation formData()
 PASS Response interface: operation json()
 PASS Response interface: operation text()
+PASS Response must be primary interface of new Response()
+PASS Stringification of new Response()
+PASS Response interface: new Response() must inherit property "error()" with the proper type
+PASS Response interface: new Response() must inherit property "redirect(USVString, unsigned short)" with the proper type
+PASS Response interface: calling redirect(USVString, unsigned short) on new Response() with too few arguments must throw TypeError
+PASS Response interface: new Response() must inherit property "type" with the proper type
+PASS Response interface: new Response() must inherit property "url" with the proper type
+PASS Response interface: new Response() must inherit property "redirected" with the proper type
+PASS Response interface: new Response() must inherit property "status" with the proper type
+PASS Response interface: new Response() must inherit property "ok" with the proper type
+PASS Response interface: new Response() must inherit property "statusText" with the proper type
+PASS Response interface: new Response() must inherit property "headers" with the proper type
+FAIL Response interface: new Response() must inherit property "trailer" with the proper type assert_inherits: property "trailer" not found in prototype chain
+PASS Response interface: new Response() must inherit property "clone()" with the proper type
+PASS Response interface: new Response() must inherit property "body" with the proper type
+PASS Response interface: new Response() must inherit property "bodyUsed" with the proper type
+PASS Response interface: new Response() must inherit property "arrayBuffer()" with the proper type
+PASS Response interface: new Response() must inherit property "blob()" with the proper type
+PASS Response interface: new Response() must inherit property "formData()" with the proper type
+PASS Response interface: new Response() must inherit property "json()" with the proper type
+PASS Response interface: new Response() must inherit property "text()" with the proper type
+PASS Window interface: existence and properties of interface object
+PASS WorkerGlobalScope interface: operation fetch(RequestInfo, RequestInit)
+PASS WorkerGlobalScope interface: self must inherit property "fetch(RequestInfo, RequestInit)" with the proper type
+PASS WorkerGlobalScope interface: calling fetch(RequestInfo, RequestInit) on self with too few arguments must throw TypeError
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/fetch/cors-rfc1918/idlharness.tentative.any-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/cors-rfc1918/idlharness.tentative.any-expected.txt
deleted file mode 100644
index 43409036..0000000
--- a/third_party/blink/web_tests/external/wpt/fetch/cors-rfc1918/idlharness.tentative.any-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Document: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface WorkerGlobalScope: original interface defined assert_true: Original interface should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/fetch/cors-rfc1918/idlharness.tentative.any.serviceworker-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/cors-rfc1918/idlharness.tentative.any.serviceworker-expected.txt
deleted file mode 100644
index 43409036..0000000
--- a/third_party/blink/web_tests/external/wpt/fetch/cors-rfc1918/idlharness.tentative.any.serviceworker-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Document: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface WorkerGlobalScope: original interface defined assert_true: Original interface should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/fetch/cors-rfc1918/idlharness.tentative.any.sharedworker-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/cors-rfc1918/idlharness.tentative.any.sharedworker-expected.txt
deleted file mode 100644
index 43409036..0000000
--- a/third_party/blink/web_tests/external/wpt/fetch/cors-rfc1918/idlharness.tentative.any.sharedworker-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Document: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface WorkerGlobalScope: original interface defined assert_true: Original interface should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/fetch/cors-rfc1918/idlharness.tentative.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/cors-rfc1918/idlharness.tentative.any.worker-expected.txt
deleted file mode 100644
index 43409036..0000000
--- a/third_party/blink/web_tests/external/wpt/fetch/cors-rfc1918/idlharness.tentative.any.worker-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Document: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface WorkerGlobalScope: original interface defined assert_true: Original interface should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/fullscreen/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/fullscreen/idlharness.window-expected.txt
deleted file mode 100644
index 34b5bd9..0000000
--- a/third_party/blink/web_tests/external/wpt/fullscreen/idlharness.window-expected.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS Partial interface Element: original interface defined
-PASS Partial interface Document: original interface defined
-PASS Partial interface mixin DocumentOrShadowRoot: original interface mixin defined
-PASS Document interface: attribute fullscreenEnabled
-PASS Document interface: attribute fullscreen
-PASS Document interface: operation exitFullscreen()
-PASS Document interface: attribute onfullscreenchange
-PASS Document interface: attribute onfullscreenerror
-PASS Document interface: attribute fullscreenElement
-PASS ShadowRoot interface: attribute fullscreenElement
-PASS Element interface: operation requestFullscreen(FullscreenOptions)
-PASS Element interface: attribute onfullscreenchange
-PASS Element interface: attribute onfullscreenerror
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/gamepad/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/gamepad/idlharness.window-expected.txt
index 0d821873..915af064 100644
--- a/third_party/blink/web_tests/external/wpt/gamepad/idlharness.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/gamepad/idlharness.window-expected.txt
@@ -1,8 +1,7 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
+PASS idl_test setup
+PASS Partial interface Navigator: original interface defined
+PASS Partial interface Navigator: valid exposure set
 PASS Gamepad interface: existence and properties of interface object
 PASS Gamepad interface object length
 PASS Gamepad interface object name
@@ -32,5 +31,10 @@
 PASS GamepadEvent interface: existence and properties of interface prototype object's "constructor" property
 PASS GamepadEvent interface: existence and properties of interface prototype object's @@unscopables property
 PASS GamepadEvent interface: attribute gamepad
+PASS GamepadEvent must be primary interface of new GamepadEvent("gamepad")
+PASS Stringification of new GamepadEvent("gamepad")
+PASS GamepadEvent interface: new GamepadEvent("gamepad") must inherit property "gamepad" with the proper type
+PASS Navigator interface: operation getGamepads()
+PASS Navigator interface: navigator must inherit property "getGamepads()" with the proper type
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/generic-sensor/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/generic-sensor/idlharness.https.window-expected.txt
deleted file mode 100644
index c78b7069..0000000
--- a/third_party/blink/web_tests/external/wpt/generic-sensor/idlharness.https.window-expected.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS Sensor interface: existence and properties of interface object
-PASS Sensor interface object length
-PASS Sensor interface object name
-PASS Sensor interface: existence and properties of interface prototype object
-PASS Sensor interface: existence and properties of interface prototype object's "constructor" property
-PASS Sensor interface: existence and properties of interface prototype object's @@unscopables property
-PASS Sensor interface: attribute activated
-PASS Sensor interface: attribute hasReading
-PASS Sensor interface: attribute timestamp
-PASS Sensor interface: operation start()
-PASS Sensor interface: operation stop()
-PASS Sensor interface: attribute onreading
-PASS Sensor interface: attribute onactivate
-PASS Sensor interface: attribute onerror
-PASS SensorErrorEvent interface: existence and properties of interface object
-PASS SensorErrorEvent interface object length
-PASS SensorErrorEvent interface object name
-PASS SensorErrorEvent interface: existence and properties of interface prototype object
-PASS SensorErrorEvent interface: existence and properties of interface prototype object's "constructor" property
-PASS SensorErrorEvent interface: existence and properties of interface prototype object's @@unscopables property
-PASS SensorErrorEvent interface: attribute error
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/hr-time/idlharness.any-expected.txt b/third_party/blink/web_tests/external/wpt/hr-time/idlharness.any-expected.txt
deleted file mode 100644
index c717e8b..0000000
--- a/third_party/blink/web_tests/external/wpt/hr-time/idlharness.any-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/hr-time/idlharness.any.serviceworker-expected.txt b/third_party/blink/web_tests/external/wpt/hr-time/idlharness.any.serviceworker-expected.txt
deleted file mode 100644
index c717e8b..0000000
--- a/third_party/blink/web_tests/external/wpt/hr-time/idlharness.any.serviceworker-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/hr-time/idlharness.any.sharedworker-expected.txt b/third_party/blink/web_tests/external/wpt/hr-time/idlharness.any.sharedworker-expected.txt
deleted file mode 100644
index c717e8b..0000000
--- a/third_party/blink/web_tests/external/wpt/hr-time/idlharness.any.sharedworker-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/hr-time/idlharness.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/hr-time/idlharness.any.worker-expected.txt
deleted file mode 100644
index c717e8b..0000000
--- a/third_party/blink/web_tests/external/wpt/hr-time/idlharness.any.worker-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/html-media-capture/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/html-media-capture/idlharness.window-expected.txt
index 0d977e0..c8248ba9 100644
--- a/third_party/blink/web_tests/external/wpt/html-media-capture/idlharness.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/html-media-capture/idlharness.window-expected.txt
@@ -1,7 +1,7 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface HTMLInputElement: original interface defined assert_true: Original interface should be defined expected true got false
+PASS idl_test setup
+PASS Partial interface HTMLInputElement: original interface defined
+FAIL HTMLInputElement interface: attribute capture assert_true: The prototype object must have a property "capture" expected true got false
+FAIL HTMLInputElement interface: input must inherit property "capture" with the proper type assert_inherits: property "capture" not found in prototype chain
 Harness: the test ran to completion.
 
diff --git "a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML._\051-expected.txt" "b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML._\051-expected.txt"
index adb6cc43..234075d 100644
--- "a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML._\051-expected.txt"
+++ "b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML._\051-expected.txt"
@@ -1,6 +1,1275 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+Found 1271 tests; 1223 PASS, 48 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface Document: original interface defined
+PASS Partial interface mixin DocumentOrShadowRoot: original interface mixin defined
+PASS Partial interface mixin NavigatorID: original interface mixin defined
+PASS Partial interface HTMLAnchorElement: original interface defined
+PASS Partial interface HTMLAreaElement: original interface defined
+PASS Partial interface HTMLBodyElement: original interface defined
+PASS Partial interface HTMLBRElement: original interface defined
+PASS Partial interface HTMLTableCaptionElement: original interface defined
+PASS Partial interface HTMLTableColElement: original interface defined
+PASS Partial interface HTMLDivElement: original interface defined
+PASS Partial interface HTMLDListElement: original interface defined
+PASS Partial interface HTMLEmbedElement: original interface defined
+PASS Partial interface HTMLHeadingElement: original interface defined
+PASS Partial interface HTMLHRElement: original interface defined
+PASS Partial interface HTMLHtmlElement: original interface defined
+PASS Partial interface HTMLIFrameElement: original interface defined
+PASS Partial interface HTMLImageElement: original interface defined
+PASS Partial interface HTMLInputElement: original interface defined
+PASS Partial interface HTMLLegendElement: original interface defined
+PASS Partial interface HTMLLIElement: original interface defined
+PASS Partial interface HTMLLinkElement: original interface defined
+PASS Partial interface HTMLMenuElement: original interface defined
+PASS Partial interface HTMLMetaElement: original interface defined
+PASS Partial interface HTMLObjectElement: original interface defined
+PASS Partial interface HTMLOListElement: original interface defined
+PASS Partial interface HTMLParagraphElement: original interface defined
+PASS Partial interface HTMLParamElement: original interface defined
+PASS Partial interface HTMLPreElement: original interface defined
+PASS Partial interface HTMLStyleElement: original interface defined
+PASS Partial interface HTMLScriptElement: original interface defined
+PASS Partial interface HTMLTableElement: original interface defined
+PASS Partial interface HTMLTableSectionElement: original interface defined
+PASS Partial interface HTMLTableCellElement: original interface defined
+PASS Partial interface HTMLTableRowElement: original interface defined
+PASS Partial interface HTMLUListElement: original interface defined
+PASS Partial interface Document[2]: original interface defined
+PASS Partial interface Window: original interface defined
+PASS RadioNodeList interface: existence and properties of interface object
+PASS RadioNodeList interface object length
+PASS RadioNodeList interface object name
+PASS RadioNodeList interface: existence and properties of interface prototype object
+PASS RadioNodeList interface: existence and properties of interface prototype object's "constructor" property
+PASS RadioNodeList interface: existence and properties of interface prototype object's @@unscopables property
+PASS RadioNodeList interface: attribute value
+PASS DOMStringList interface: existence and properties of interface object
+PASS DOMStringList interface object length
+PASS DOMStringList interface object name
+PASS DOMStringList interface: existence and properties of interface prototype object
+PASS DOMStringList interface: existence and properties of interface prototype object's "constructor" property
+PASS DOMStringList interface: existence and properties of interface prototype object's @@unscopables property
+PASS DOMStringList interface: attribute length
+PASS DOMStringList interface: operation item(unsigned long)
+PASS DOMStringList interface: operation contains(DOMString)
+PASS DOMStringList must be primary interface of location.ancestorOrigins
+PASS Stringification of location.ancestorOrigins
+PASS DOMStringList interface: location.ancestorOrigins must inherit property "length" with the proper type
+PASS DOMStringList interface: location.ancestorOrigins must inherit property "item(unsigned long)" with the proper type
+PASS DOMStringList interface: calling item(unsigned long) on location.ancestorOrigins with too few arguments must throw TypeError
+PASS DOMStringList interface: location.ancestorOrigins must inherit property "contains(DOMString)" with the proper type
+PASS DOMStringList interface: calling contains(DOMString) on location.ancestorOrigins with too few arguments must throw TypeError
+PASS DOMStringMap interface: existence and properties of interface object
+PASS DOMStringMap interface object length
+PASS DOMStringMap interface object name
+PASS DOMStringMap interface: existence and properties of interface prototype object
+PASS DOMStringMap interface: existence and properties of interface prototype object's "constructor" property
+PASS DOMStringMap interface: existence and properties of interface prototype object's @@unscopables property
+PASS DOMStringMap must be primary interface of document.head.dataset
+PASS Stringification of document.head.dataset
+PASS MediaError interface: existence and properties of interface object
+PASS MediaError interface object length
+PASS MediaError interface object name
+PASS MediaError interface: existence and properties of interface prototype object
+PASS MediaError interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaError interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaError interface: constant MEDIA_ERR_ABORTED on interface object
+PASS MediaError interface: constant MEDIA_ERR_ABORTED on interface prototype object
+PASS MediaError interface: constant MEDIA_ERR_NETWORK on interface object
+PASS MediaError interface: constant MEDIA_ERR_NETWORK on interface prototype object
+PASS MediaError interface: constant MEDIA_ERR_DECODE on interface object
+PASS MediaError interface: constant MEDIA_ERR_DECODE on interface prototype object
+PASS MediaError interface: constant MEDIA_ERR_SRC_NOT_SUPPORTED on interface object
+PASS MediaError interface: constant MEDIA_ERR_SRC_NOT_SUPPORTED on interface prototype object
+PASS MediaError interface: attribute code
+PASS MediaError interface: attribute message
+PASS MediaError must be primary interface of errorVideo.error
+PASS Stringification of errorVideo.error
+PASS MediaError interface: errorVideo.error must inherit property "MEDIA_ERR_ABORTED" with the proper type
+PASS MediaError interface: errorVideo.error must inherit property "MEDIA_ERR_NETWORK" with the proper type
+PASS MediaError interface: errorVideo.error must inherit property "MEDIA_ERR_DECODE" with the proper type
+PASS MediaError interface: errorVideo.error must inherit property "MEDIA_ERR_SRC_NOT_SUPPORTED" with the proper type
+PASS MediaError interface: errorVideo.error must inherit property "code" with the proper type
+PASS MediaError interface: errorVideo.error must inherit property "message" with the proper type
+PASS AudioTrackList interface: existence and properties of interface object
+PASS AudioTrackList interface object length
+PASS AudioTrackList interface object name
+PASS AudioTrackList interface: existence and properties of interface prototype object
+PASS AudioTrackList interface: existence and properties of interface prototype object's "constructor" property
+PASS AudioTrackList interface: existence and properties of interface prototype object's @@unscopables property
+PASS AudioTrackList interface: attribute length
+PASS AudioTrackList interface: operation getTrackById(DOMString)
+PASS AudioTrackList interface: attribute onchange
+PASS AudioTrackList interface: attribute onaddtrack
+PASS AudioTrackList interface: attribute onremovetrack
+PASS AudioTrack interface: existence and properties of interface object
+PASS AudioTrack interface object length
+PASS AudioTrack interface object name
+PASS AudioTrack interface: existence and properties of interface prototype object
+PASS AudioTrack interface: existence and properties of interface prototype object's "constructor" property
+PASS AudioTrack interface: existence and properties of interface prototype object's @@unscopables property
+PASS AudioTrack interface: attribute id
+PASS AudioTrack interface: attribute kind
+PASS AudioTrack interface: attribute label
+PASS AudioTrack interface: attribute language
+PASS AudioTrack interface: attribute enabled
+PASS VideoTrackList interface: existence and properties of interface object
+PASS VideoTrackList interface object length
+PASS VideoTrackList interface object name
+PASS VideoTrackList interface: existence and properties of interface prototype object
+PASS VideoTrackList interface: existence and properties of interface prototype object's "constructor" property
+PASS VideoTrackList interface: existence and properties of interface prototype object's @@unscopables property
+PASS VideoTrackList interface: attribute length
+PASS VideoTrackList interface: operation getTrackById(DOMString)
+PASS VideoTrackList interface: attribute selectedIndex
+PASS VideoTrackList interface: attribute onchange
+PASS VideoTrackList interface: attribute onaddtrack
+PASS VideoTrackList interface: attribute onremovetrack
+PASS VideoTrack interface: existence and properties of interface object
+PASS VideoTrack interface object length
+PASS VideoTrack interface object name
+PASS VideoTrack interface: existence and properties of interface prototype object
+PASS VideoTrack interface: existence and properties of interface prototype object's "constructor" property
+PASS VideoTrack interface: existence and properties of interface prototype object's @@unscopables property
+PASS VideoTrack interface: attribute id
+PASS VideoTrack interface: attribute kind
+PASS VideoTrack interface: attribute label
+PASS VideoTrack interface: attribute language
+PASS VideoTrack interface: attribute selected
+PASS TextTrackList interface: existence and properties of interface object
+PASS TextTrackList interface object length
+PASS TextTrackList interface object name
+PASS TextTrackList interface: existence and properties of interface prototype object
+PASS TextTrackList interface: existence and properties of interface prototype object's "constructor" property
+PASS TextTrackList interface: existence and properties of interface prototype object's @@unscopables property
+PASS TextTrackList interface: attribute length
+PASS TextTrackList interface: operation getTrackById(DOMString)
+PASS TextTrackList interface: attribute onchange
+PASS TextTrackList interface: attribute onaddtrack
+PASS TextTrackList interface: attribute onremovetrack
+PASS TextTrackList must be primary interface of document.createElement("video").textTracks
+PASS Stringification of document.createElement("video").textTracks
+PASS TextTrackList interface: document.createElement("video").textTracks must inherit property "length" with the proper type
+PASS TextTrackList interface: document.createElement("video").textTracks must inherit property "getTrackById(DOMString)" with the proper type
+PASS TextTrackList interface: calling getTrackById(DOMString) on document.createElement("video").textTracks with too few arguments must throw TypeError
+PASS TextTrackList interface: document.createElement("video").textTracks must inherit property "onchange" with the proper type
+PASS TextTrackList interface: document.createElement("video").textTracks must inherit property "onaddtrack" with the proper type
+PASS TextTrackList interface: document.createElement("video").textTracks must inherit property "onremovetrack" with the proper type
+PASS TextTrack interface: existence and properties of interface object
+PASS TextTrack interface object length
+PASS TextTrack interface object name
+PASS TextTrack interface: existence and properties of interface prototype object
+PASS TextTrack interface: existence and properties of interface prototype object's "constructor" property
+PASS TextTrack interface: existence and properties of interface prototype object's @@unscopables property
+PASS TextTrack interface: attribute kind
+PASS TextTrack interface: attribute label
+PASS TextTrack interface: attribute language
+PASS TextTrack interface: attribute id
+FAIL TextTrack interface: attribute inBandMetadataTrackDispatchType assert_true: The prototype object must have a property "inBandMetadataTrackDispatchType" expected true got false
+PASS TextTrack interface: attribute mode
+PASS TextTrack interface: attribute cues
+PASS TextTrack interface: attribute activeCues
+PASS TextTrack interface: operation addCue(TextTrackCue)
+PASS TextTrack interface: operation removeCue(TextTrackCue)
+PASS TextTrack interface: attribute oncuechange
+PASS TextTrack must be primary interface of document.createElement("track").track
+PASS Stringification of document.createElement("track").track
+PASS TextTrack interface: document.createElement("track").track must inherit property "kind" with the proper type
+PASS TextTrack interface: document.createElement("track").track must inherit property "label" with the proper type
+PASS TextTrack interface: document.createElement("track").track must inherit property "language" with the proper type
+PASS TextTrack interface: document.createElement("track").track must inherit property "id" with the proper type
+FAIL TextTrack interface: document.createElement("track").track must inherit property "inBandMetadataTrackDispatchType" with the proper type assert_inherits: property "inBandMetadataTrackDispatchType" not found in prototype chain
+PASS TextTrack interface: document.createElement("track").track must inherit property "mode" with the proper type
+PASS TextTrack interface: document.createElement("track").track must inherit property "cues" with the proper type
+PASS TextTrack interface: document.createElement("track").track must inherit property "activeCues" with the proper type
+PASS TextTrack interface: document.createElement("track").track must inherit property "addCue(TextTrackCue)" with the proper type
+PASS TextTrack interface: calling addCue(TextTrackCue) on document.createElement("track").track with too few arguments must throw TypeError
+PASS TextTrack interface: document.createElement("track").track must inherit property "removeCue(TextTrackCue)" with the proper type
+PASS TextTrack interface: calling removeCue(TextTrackCue) on document.createElement("track").track with too few arguments must throw TypeError
+PASS TextTrack interface: document.createElement("track").track must inherit property "oncuechange" with the proper type
+PASS TextTrackCueList interface: existence and properties of interface object
+PASS TextTrackCueList interface object length
+PASS TextTrackCueList interface object name
+PASS TextTrackCueList interface: existence and properties of interface prototype object
+PASS TextTrackCueList interface: existence and properties of interface prototype object's "constructor" property
+PASS TextTrackCueList interface: existence and properties of interface prototype object's @@unscopables property
+PASS TextTrackCueList interface: attribute length
+PASS TextTrackCueList interface: operation getCueById(DOMString)
+PASS TextTrackCueList must be primary interface of document.createElement("video").addTextTrack("subtitles").cues
+PASS Stringification of document.createElement("video").addTextTrack("subtitles").cues
+PASS TextTrackCueList interface: document.createElement("video").addTextTrack("subtitles").cues must inherit property "length" with the proper type
+PASS TextTrackCueList interface: document.createElement("video").addTextTrack("subtitles").cues must inherit property "getCueById(DOMString)" with the proper type
+PASS TextTrackCueList interface: calling getCueById(DOMString) on document.createElement("video").addTextTrack("subtitles").cues with too few arguments must throw TypeError
+PASS TextTrackCue interface: existence and properties of interface object
+PASS TextTrackCue interface object length
+PASS TextTrackCue interface object name
+PASS TextTrackCue interface: existence and properties of interface prototype object
+PASS TextTrackCue interface: existence and properties of interface prototype object's "constructor" property
+PASS TextTrackCue interface: existence and properties of interface prototype object's @@unscopables property
+PASS TextTrackCue interface: attribute track
+PASS TextTrackCue interface: attribute id
+PASS TextTrackCue interface: attribute startTime
+PASS TextTrackCue interface: attribute endTime
+PASS TextTrackCue interface: attribute pauseOnExit
+PASS TextTrackCue interface: attribute onenter
+PASS TextTrackCue interface: attribute onexit
+PASS TimeRanges interface: existence and properties of interface object
+PASS TimeRanges interface object length
+PASS TimeRanges interface object name
+PASS TimeRanges interface: existence and properties of interface prototype object
+PASS TimeRanges interface: existence and properties of interface prototype object's "constructor" property
+PASS TimeRanges interface: existence and properties of interface prototype object's @@unscopables property
+PASS TimeRanges interface: attribute length
+PASS TimeRanges interface: operation start(unsigned long)
+PASS TimeRanges interface: operation end(unsigned long)
+PASS TimeRanges must be primary interface of document.createElement("video").buffered
+PASS Stringification of document.createElement("video").buffered
+PASS TimeRanges interface: document.createElement("video").buffered must inherit property "length" with the proper type
+PASS TimeRanges interface: document.createElement("video").buffered must inherit property "start(unsigned long)" with the proper type
+PASS TimeRanges interface: calling start(unsigned long) on document.createElement("video").buffered with too few arguments must throw TypeError
+PASS TimeRanges interface: document.createElement("video").buffered must inherit property "end(unsigned long)" with the proper type
+PASS TimeRanges interface: calling end(unsigned long) on document.createElement("video").buffered with too few arguments must throw TypeError
+PASS TrackEvent interface: existence and properties of interface object
+PASS TrackEvent interface object length
+PASS TrackEvent interface object name
+PASS TrackEvent interface: existence and properties of interface prototype object
+PASS TrackEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS TrackEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS TrackEvent interface: attribute track
+PASS TrackEvent must be primary interface of new TrackEvent("addtrack", {track:document.createElement("track").track})
+PASS Stringification of new TrackEvent("addtrack", {track:document.createElement("track").track})
+PASS TrackEvent interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "track" with the proper type
+PASS ValidityState interface: existence and properties of interface object
+PASS ValidityState interface object length
+PASS ValidityState interface object name
+PASS ValidityState interface: existence and properties of interface prototype object
+PASS ValidityState interface: existence and properties of interface prototype object's "constructor" property
+PASS ValidityState interface: existence and properties of interface prototype object's @@unscopables property
+PASS ValidityState interface: attribute valueMissing
+PASS ValidityState interface: attribute typeMismatch
+PASS ValidityState interface: attribute patternMismatch
+PASS ValidityState interface: attribute tooLong
+PASS ValidityState interface: attribute tooShort
+PASS ValidityState interface: attribute rangeUnderflow
+PASS ValidityState interface: attribute rangeOverflow
+PASS ValidityState interface: attribute stepMismatch
+PASS ValidityState interface: attribute badInput
+PASS ValidityState interface: attribute customError
+PASS ValidityState interface: attribute valid
+PASS ValidityState must be primary interface of document.createElement("input").validity
+PASS Stringification of document.createElement("input").validity
+PASS ValidityState interface: document.createElement("input").validity must inherit property "valueMissing" with the proper type
+PASS ValidityState interface: document.createElement("input").validity must inherit property "typeMismatch" with the proper type
+PASS ValidityState interface: document.createElement("input").validity must inherit property "patternMismatch" with the proper type
+PASS ValidityState interface: document.createElement("input").validity must inherit property "tooLong" with the proper type
+PASS ValidityState interface: document.createElement("input").validity must inherit property "tooShort" with the proper type
+PASS ValidityState interface: document.createElement("input").validity must inherit property "rangeUnderflow" with the proper type
+PASS ValidityState interface: document.createElement("input").validity must inherit property "rangeOverflow" with the proper type
+PASS ValidityState interface: document.createElement("input").validity must inherit property "stepMismatch" with the proper type
+PASS ValidityState interface: document.createElement("input").validity must inherit property "badInput" with the proper type
+PASS ValidityState interface: document.createElement("input").validity must inherit property "customError" with the proper type
+PASS ValidityState interface: document.createElement("input").validity must inherit property "valid" with the proper type
+PASS FormDataEvent interface: existence and properties of interface object
+PASS FormDataEvent interface object length
+PASS FormDataEvent interface object name
+PASS FormDataEvent interface: existence and properties of interface prototype object
+PASS FormDataEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS FormDataEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS FormDataEvent interface: attribute formData
+PASS FormDataEvent must be primary interface of new FormDataEvent("formdata", { formData: new FormData() })
+PASS Stringification of new FormDataEvent("formdata", { formData: new FormData() })
+PASS FormDataEvent interface: new FormDataEvent("formdata", { formData: new FormData() }) must inherit property "formData" with the proper type
+PASS CanvasRenderingContext2D interface: existence and properties of interface object
+PASS CanvasRenderingContext2D interface object length
+PASS CanvasRenderingContext2D interface object name
+PASS CanvasRenderingContext2D interface: existence and properties of interface prototype object
+PASS CanvasRenderingContext2D interface: existence and properties of interface prototype object's "constructor" property
+PASS CanvasRenderingContext2D interface: existence and properties of interface prototype object's @@unscopables property
+PASS CanvasRenderingContext2D interface: attribute canvas
+PASS CanvasRenderingContext2D interface: operation getContextAttributes()
+PASS CanvasRenderingContext2D interface: operation save()
+PASS CanvasRenderingContext2D interface: operation restore()
+PASS CanvasRenderingContext2D interface: operation scale(unrestricted double, unrestricted double)
+PASS CanvasRenderingContext2D interface: operation rotate(unrestricted double)
+PASS CanvasRenderingContext2D interface: operation translate(unrestricted double, unrestricted double)
+PASS CanvasRenderingContext2D interface: operation transform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS CanvasRenderingContext2D interface: operation getTransform()
+PASS CanvasRenderingContext2D interface: operation setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS CanvasRenderingContext2D interface: operation setTransform(DOMMatrix2DInit)
+PASS CanvasRenderingContext2D interface: operation resetTransform()
+PASS CanvasRenderingContext2D interface: attribute globalAlpha
+PASS CanvasRenderingContext2D interface: attribute globalCompositeOperation
+PASS CanvasRenderingContext2D interface: attribute imageSmoothingEnabled
+PASS CanvasRenderingContext2D interface: attribute imageSmoothingQuality
+PASS CanvasRenderingContext2D interface: attribute strokeStyle
+PASS CanvasRenderingContext2D interface: attribute fillStyle
+PASS CanvasRenderingContext2D interface: operation createLinearGradient(double, double, double, double)
+PASS CanvasRenderingContext2D interface: operation createRadialGradient(double, double, double, double, double, double)
+PASS CanvasRenderingContext2D interface: operation createPattern(CanvasImageSource, DOMString)
+PASS CanvasRenderingContext2D interface: attribute shadowOffsetX
+PASS CanvasRenderingContext2D interface: attribute shadowOffsetY
+PASS CanvasRenderingContext2D interface: attribute shadowBlur
+PASS CanvasRenderingContext2D interface: attribute shadowColor
+PASS CanvasRenderingContext2D interface: attribute filter
+PASS CanvasRenderingContext2D interface: operation clearRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS CanvasRenderingContext2D interface: operation fillRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS CanvasRenderingContext2D interface: operation strokeRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS CanvasRenderingContext2D interface: operation beginPath()
+PASS CanvasRenderingContext2D interface: operation fill(CanvasFillRule)
+PASS CanvasRenderingContext2D interface: operation fill(Path2D, CanvasFillRule)
+PASS CanvasRenderingContext2D interface: operation stroke()
+PASS CanvasRenderingContext2D interface: operation stroke(Path2D)
+PASS CanvasRenderingContext2D interface: operation clip(CanvasFillRule)
+PASS CanvasRenderingContext2D interface: operation clip(Path2D, CanvasFillRule)
+PASS CanvasRenderingContext2D interface: operation isPointInPath(unrestricted double, unrestricted double, CanvasFillRule)
+PASS CanvasRenderingContext2D interface: operation isPointInPath(Path2D, unrestricted double, unrestricted double, CanvasFillRule)
+PASS CanvasRenderingContext2D interface: operation isPointInStroke(unrestricted double, unrestricted double)
+PASS CanvasRenderingContext2D interface: operation isPointInStroke(Path2D, unrestricted double, unrestricted double)
+PASS CanvasRenderingContext2D interface: operation drawFocusIfNeeded(Element)
+PASS CanvasRenderingContext2D interface: operation drawFocusIfNeeded(Path2D, Element)
+PASS CanvasRenderingContext2D interface: operation scrollPathIntoView()
+PASS CanvasRenderingContext2D interface: operation scrollPathIntoView(Path2D)
+PASS CanvasRenderingContext2D interface: operation fillText(DOMString, unrestricted double, unrestricted double, unrestricted double)
+PASS CanvasRenderingContext2D interface: operation strokeText(DOMString, unrestricted double, unrestricted double, unrestricted double)
+PASS CanvasRenderingContext2D interface: operation measureText(DOMString)
+PASS CanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double)
+PASS CanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS CanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS CanvasRenderingContext2D interface: operation createImageData(long, long)
+PASS CanvasRenderingContext2D interface: operation createImageData(ImageData)
+PASS CanvasRenderingContext2D interface: operation getImageData(long, long, long, long)
+PASS CanvasRenderingContext2D interface: operation putImageData(ImageData, long, long)
+PASS CanvasRenderingContext2D interface: operation putImageData(ImageData, long, long, long, long, long, long)
+PASS CanvasRenderingContext2D interface: attribute lineWidth
+PASS CanvasRenderingContext2D interface: attribute lineCap
+PASS CanvasRenderingContext2D interface: attribute lineJoin
+PASS CanvasRenderingContext2D interface: attribute miterLimit
+PASS CanvasRenderingContext2D interface: operation setLineDash([object Object])
+PASS CanvasRenderingContext2D interface: operation getLineDash()
+PASS CanvasRenderingContext2D interface: attribute lineDashOffset
+PASS CanvasRenderingContext2D interface: attribute font
+PASS CanvasRenderingContext2D interface: attribute textAlign
+PASS CanvasRenderingContext2D interface: attribute textBaseline
+PASS CanvasRenderingContext2D interface: attribute direction
+PASS CanvasRenderingContext2D interface: operation closePath()
+PASS CanvasRenderingContext2D interface: operation moveTo(unrestricted double, unrestricted double)
+PASS CanvasRenderingContext2D interface: operation lineTo(unrestricted double, unrestricted double)
+PASS CanvasRenderingContext2D interface: operation quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS CanvasRenderingContext2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS CanvasRenderingContext2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS CanvasRenderingContext2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS CanvasRenderingContext2D interface: operation arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)
+PASS CanvasRenderingContext2D interface: operation ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)
+PASS CanvasRenderingContext2D must be primary interface of document.createElement("canvas").getContext("2d")
+PASS Stringification of document.createElement("canvas").getContext("2d")
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "canvas" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getContextAttributes()" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "save()" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "restore()" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "scale(unrestricted double, unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling scale(unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "rotate(unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling rotate(unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "translate(unrestricted double, unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling translate(unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "transform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling transform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getTransform()" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "setTransform(DOMMatrix2DInit)" with the proper type
+PASS CanvasRenderingContext2D interface: calling setTransform(DOMMatrix2DInit) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "resetTransform()" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "globalAlpha" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "globalCompositeOperation" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "imageSmoothingEnabled" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "imageSmoothingQuality" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "strokeStyle" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "fillStyle" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "createLinearGradient(double, double, double, double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling createLinearGradient(double, double, double, double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "createRadialGradient(double, double, double, double, double, double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling createRadialGradient(double, double, double, double, double, double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "createPattern(CanvasImageSource, DOMString)" with the proper type
+PASS CanvasRenderingContext2D interface: calling createPattern(CanvasImageSource, DOMString) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "shadowOffsetX" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "shadowOffsetY" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "shadowBlur" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "shadowColor" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "filter" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "clearRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling clearRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "fillRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling fillRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "strokeRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling strokeRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "beginPath()" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "fill(CanvasFillRule)" with the proper type
+PASS CanvasRenderingContext2D interface: calling fill(CanvasFillRule) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "fill(Path2D, CanvasFillRule)" with the proper type
+PASS CanvasRenderingContext2D interface: calling fill(Path2D, CanvasFillRule) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "stroke()" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "stroke(Path2D)" with the proper type
+PASS CanvasRenderingContext2D interface: calling stroke(Path2D) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "clip(CanvasFillRule)" with the proper type
+PASS CanvasRenderingContext2D interface: calling clip(CanvasFillRule) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "clip(Path2D, CanvasFillRule)" with the proper type
+PASS CanvasRenderingContext2D interface: calling clip(Path2D, CanvasFillRule) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "isPointInPath(unrestricted double, unrestricted double, CanvasFillRule)" with the proper type
+PASS CanvasRenderingContext2D interface: calling isPointInPath(unrestricted double, unrestricted double, CanvasFillRule) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "isPointInPath(Path2D, unrestricted double, unrestricted double, CanvasFillRule)" with the proper type
+PASS CanvasRenderingContext2D interface: calling isPointInPath(Path2D, unrestricted double, unrestricted double, CanvasFillRule) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "isPointInStroke(unrestricted double, unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling isPointInStroke(unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "isPointInStroke(Path2D, unrestricted double, unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling isPointInStroke(Path2D, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawFocusIfNeeded(Element)" with the proper type
+PASS CanvasRenderingContext2D interface: calling drawFocusIfNeeded(Element) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawFocusIfNeeded(Path2D, Element)" with the proper type
+PASS CanvasRenderingContext2D interface: calling drawFocusIfNeeded(Path2D, Element) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "scrollPathIntoView()" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "scrollPathIntoView(Path2D)" with the proper type
+PASS CanvasRenderingContext2D interface: calling scrollPathIntoView(Path2D) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "fillText(DOMString, unrestricted double, unrestricted double, unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling fillText(DOMString, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "strokeText(DOMString, unrestricted double, unrestricted double, unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling strokeText(DOMString, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "measureText(DOMString)" with the proper type
+PASS CanvasRenderingContext2D interface: calling measureText(DOMString) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawImage(CanvasImageSource, unrestricted double, unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling drawImage(CanvasImageSource, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "createImageData(long, long)" with the proper type
+PASS CanvasRenderingContext2D interface: calling createImageData(long, long) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "createImageData(ImageData)" with the proper type
+PASS CanvasRenderingContext2D interface: calling createImageData(ImageData) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getImageData(long, long, long, long)" with the proper type
+PASS CanvasRenderingContext2D interface: calling getImageData(long, long, long, long) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "putImageData(ImageData, long, long)" with the proper type
+PASS CanvasRenderingContext2D interface: calling putImageData(ImageData, long, long) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "putImageData(ImageData, long, long, long, long, long, long)" with the proper type
+PASS CanvasRenderingContext2D interface: calling putImageData(ImageData, long, long, long, long, long, long) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "lineWidth" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "lineCap" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "lineJoin" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "miterLimit" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "setLineDash([object Object])" with the proper type
+PASS CanvasRenderingContext2D interface: calling setLineDash([object Object]) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getLineDash()" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "lineDashOffset" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "font" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "textAlign" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "textBaseline" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "direction" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "closePath()" with the proper type
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "moveTo(unrestricted double, unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling moveTo(unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "lineTo(unrestricted double, unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling lineTo(unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type
+PASS CanvasRenderingContext2D interface: calling rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)" with the proper type
+PASS CanvasRenderingContext2D interface: calling arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)" with the proper type
+PASS CanvasRenderingContext2D interface: calling ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError
+PASS CanvasGradient interface: existence and properties of interface object
+PASS CanvasGradient interface object length
+PASS CanvasGradient interface object name
+PASS CanvasGradient interface: existence and properties of interface prototype object
+PASS CanvasGradient interface: existence and properties of interface prototype object's "constructor" property
+PASS CanvasGradient interface: existence and properties of interface prototype object's @@unscopables property
+PASS CanvasGradient interface: operation addColorStop(double, DOMString)
+PASS CanvasPattern interface: existence and properties of interface object
+PASS CanvasPattern interface object length
+PASS CanvasPattern interface object name
+PASS CanvasPattern interface: existence and properties of interface prototype object
+PASS CanvasPattern interface: existence and properties of interface prototype object's "constructor" property
+PASS CanvasPattern interface: existence and properties of interface prototype object's @@unscopables property
+PASS CanvasPattern interface: operation setTransform(DOMMatrix2DInit)
+PASS TextMetrics interface: existence and properties of interface object
+PASS TextMetrics interface object length
+PASS TextMetrics interface object name
+PASS TextMetrics interface: existence and properties of interface prototype object
+PASS TextMetrics interface: existence and properties of interface prototype object's "constructor" property
+PASS TextMetrics interface: existence and properties of interface prototype object's @@unscopables property
+PASS TextMetrics interface: attribute width
+PASS TextMetrics interface: attribute actualBoundingBoxLeft
+PASS TextMetrics interface: attribute actualBoundingBoxRight
+PASS TextMetrics interface: attribute fontBoundingBoxAscent
+PASS TextMetrics interface: attribute fontBoundingBoxDescent
+PASS TextMetrics interface: attribute actualBoundingBoxAscent
+PASS TextMetrics interface: attribute actualBoundingBoxDescent
+PASS TextMetrics interface: attribute emHeightAscent
+PASS TextMetrics interface: attribute emHeightDescent
+FAIL TextMetrics interface: attribute hangingBaseline assert_true: The prototype object must have a property "hangingBaseline" expected true got false
+FAIL TextMetrics interface: attribute alphabeticBaseline assert_true: The prototype object must have a property "alphabeticBaseline" expected true got false
+FAIL TextMetrics interface: attribute ideographicBaseline assert_true: The prototype object must have a property "ideographicBaseline" expected true got false
+PASS ImageData interface: existence and properties of interface object
+PASS ImageData interface object length
+PASS ImageData interface object name
+PASS ImageData interface: existence and properties of interface prototype object
+PASS ImageData interface: existence and properties of interface prototype object's "constructor" property
+PASS ImageData interface: existence and properties of interface prototype object's @@unscopables property
+PASS ImageData interface: attribute width
+PASS ImageData interface: attribute height
+PASS ImageData interface: attribute data
+PASS ImageData must be primary interface of new ImageData(10, 10)
+PASS Stringification of new ImageData(10, 10)
+PASS ImageData interface: new ImageData(10, 10) must inherit property "width" with the proper type
+PASS ImageData interface: new ImageData(10, 10) must inherit property "height" with the proper type
+FAIL ImageData interface: new ImageData(10, 10) must inherit property "data" with the proper type assert_inherits: property "data" found on object expected in prototype chain
+PASS Path2D interface: existence and properties of interface object
+PASS Path2D interface object length
+PASS Path2D interface object name
+PASS Path2D interface: existence and properties of interface prototype object
+PASS Path2D interface: existence and properties of interface prototype object's "constructor" property
+PASS Path2D interface: existence and properties of interface prototype object's @@unscopables property
+PASS Path2D interface: operation addPath(Path2D, DOMMatrix2DInit)
+PASS Path2D interface: operation closePath()
+PASS Path2D interface: operation moveTo(unrestricted double, unrestricted double)
+PASS Path2D interface: operation lineTo(unrestricted double, unrestricted double)
+PASS Path2D interface: operation quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS Path2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS Path2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS Path2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS Path2D interface: operation arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)
+PASS Path2D interface: operation ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)
+PASS ImageBitmapRenderingContext interface: existence and properties of interface object
+PASS ImageBitmapRenderingContext interface object length
+PASS ImageBitmapRenderingContext interface object name
+PASS ImageBitmapRenderingContext interface: existence and properties of interface prototype object
+PASS ImageBitmapRenderingContext interface: existence and properties of interface prototype object's "constructor" property
+PASS ImageBitmapRenderingContext interface: existence and properties of interface prototype object's @@unscopables property
+PASS ImageBitmapRenderingContext interface: attribute canvas
+PASS ImageBitmapRenderingContext interface: operation transferFromImageBitmap(ImageBitmap)
+PASS OffscreenCanvas interface: existence and properties of interface object
+PASS OffscreenCanvas interface object length
+PASS OffscreenCanvas interface object name
+PASS OffscreenCanvas interface: existence and properties of interface prototype object
+PASS OffscreenCanvas interface: existence and properties of interface prototype object's "constructor" property
+PASS OffscreenCanvas interface: existence and properties of interface prototype object's @@unscopables property
+PASS OffscreenCanvas interface: attribute width
+PASS OffscreenCanvas interface: attribute height
+PASS OffscreenCanvas interface: operation getContext(OffscreenRenderingContextId, any)
+PASS OffscreenCanvas interface: operation transferToImageBitmap()
+PASS OffscreenCanvas interface: operation convertToBlob(ImageEncodeOptions)
+PASS OffscreenCanvasRenderingContext2D interface: existence and properties of interface object
+PASS OffscreenCanvasRenderingContext2D interface object length
+PASS OffscreenCanvasRenderingContext2D interface object name
+PASS OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object
+PASS OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object's "constructor" property
+PASS OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object's @@unscopables property
+PASS OffscreenCanvasRenderingContext2D interface: operation commit()
+PASS OffscreenCanvasRenderingContext2D interface: attribute canvas
+PASS OffscreenCanvasRenderingContext2D interface: operation save()
+PASS OffscreenCanvasRenderingContext2D interface: operation restore()
+PASS OffscreenCanvasRenderingContext2D interface: operation scale(unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation rotate(unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation translate(unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation transform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+FAIL OffscreenCanvasRenderingContext2D interface: operation getTransform() assert_own_property: interface prototype object missing non-static operation expected property "getTransform" missing
+FAIL OffscreenCanvasRenderingContext2D interface: operation setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) assert_equals: property has wrong .length expected 0 but got 6
+FAIL OffscreenCanvasRenderingContext2D interface: operation setTransform(DOMMatrix2DInit) assert_equals: property has wrong .length expected 0 but got 6
+PASS OffscreenCanvasRenderingContext2D interface: operation resetTransform()
+PASS OffscreenCanvasRenderingContext2D interface: attribute globalAlpha
+PASS OffscreenCanvasRenderingContext2D interface: attribute globalCompositeOperation
+PASS OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingEnabled
+PASS OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingQuality
+PASS OffscreenCanvasRenderingContext2D interface: attribute strokeStyle
+PASS OffscreenCanvasRenderingContext2D interface: attribute fillStyle
+PASS OffscreenCanvasRenderingContext2D interface: operation createLinearGradient(double, double, double, double)
+PASS OffscreenCanvasRenderingContext2D interface: operation createRadialGradient(double, double, double, double, double, double)
+PASS OffscreenCanvasRenderingContext2D interface: operation createPattern(CanvasImageSource, DOMString)
+PASS OffscreenCanvasRenderingContext2D interface: attribute shadowOffsetX
+PASS OffscreenCanvasRenderingContext2D interface: attribute shadowOffsetY
+PASS OffscreenCanvasRenderingContext2D interface: attribute shadowBlur
+PASS OffscreenCanvasRenderingContext2D interface: attribute shadowColor
+PASS OffscreenCanvasRenderingContext2D interface: attribute filter
+PASS OffscreenCanvasRenderingContext2D interface: operation clearRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation fillRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation strokeRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation beginPath()
+PASS OffscreenCanvasRenderingContext2D interface: operation fill(CanvasFillRule)
+PASS OffscreenCanvasRenderingContext2D interface: operation fill(Path2D, CanvasFillRule)
+PASS OffscreenCanvasRenderingContext2D interface: operation stroke()
+PASS OffscreenCanvasRenderingContext2D interface: operation stroke(Path2D)
+PASS OffscreenCanvasRenderingContext2D interface: operation clip(CanvasFillRule)
+PASS OffscreenCanvasRenderingContext2D interface: operation clip(Path2D, CanvasFillRule)
+PASS OffscreenCanvasRenderingContext2D interface: operation isPointInPath(unrestricted double, unrestricted double, CanvasFillRule)
+PASS OffscreenCanvasRenderingContext2D interface: operation isPointInPath(Path2D, unrestricted double, unrestricted double, CanvasFillRule)
+PASS OffscreenCanvasRenderingContext2D interface: operation isPointInStroke(unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation isPointInStroke(Path2D, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation fillText(DOMString, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation strokeText(DOMString, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation measureText(DOMString)
+PASS OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation createImageData(long, long)
+PASS OffscreenCanvasRenderingContext2D interface: operation createImageData(ImageData)
+PASS OffscreenCanvasRenderingContext2D interface: operation getImageData(long, long, long, long)
+PASS OffscreenCanvasRenderingContext2D interface: operation putImageData(ImageData, long, long)
+PASS OffscreenCanvasRenderingContext2D interface: operation putImageData(ImageData, long, long, long, long, long, long)
+PASS OffscreenCanvasRenderingContext2D interface: attribute lineWidth
+PASS OffscreenCanvasRenderingContext2D interface: attribute lineCap
+PASS OffscreenCanvasRenderingContext2D interface: attribute lineJoin
+PASS OffscreenCanvasRenderingContext2D interface: attribute miterLimit
+PASS OffscreenCanvasRenderingContext2D interface: operation setLineDash([object Object])
+PASS OffscreenCanvasRenderingContext2D interface: operation getLineDash()
+PASS OffscreenCanvasRenderingContext2D interface: attribute lineDashOffset
+PASS OffscreenCanvasRenderingContext2D interface: attribute font
+PASS OffscreenCanvasRenderingContext2D interface: attribute textAlign
+PASS OffscreenCanvasRenderingContext2D interface: attribute textBaseline
+PASS OffscreenCanvasRenderingContext2D interface: attribute direction
+PASS OffscreenCanvasRenderingContext2D interface: operation closePath()
+PASS OffscreenCanvasRenderingContext2D interface: operation moveTo(unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation lineTo(unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)
+PASS OffscreenCanvasRenderingContext2D interface: operation ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)
+PASS CustomElementRegistry interface: existence and properties of interface object
+PASS CustomElementRegistry interface object length
+PASS CustomElementRegistry interface object name
+PASS CustomElementRegistry interface: existence and properties of interface prototype object
+PASS CustomElementRegistry interface: existence and properties of interface prototype object's "constructor" property
+PASS CustomElementRegistry interface: existence and properties of interface prototype object's @@unscopables property
+PASS CustomElementRegistry interface: operation define(DOMString, CustomElementConstructor, ElementDefinitionOptions)
+PASS CustomElementRegistry interface: operation get(DOMString)
+PASS CustomElementRegistry interface: operation whenDefined(DOMString)
+PASS CustomElementRegistry interface: operation upgrade(Node)
+PASS ElementInternals interface: existence and properties of interface object
+PASS ElementInternals interface object length
+PASS ElementInternals interface object name
+PASS ElementInternals interface: existence and properties of interface prototype object
+PASS ElementInternals interface: existence and properties of interface prototype object's "constructor" property
+PASS ElementInternals interface: existence and properties of interface prototype object's @@unscopables property
+PASS ElementInternals interface: operation setFormValue([object Object],[object Object],[object Object], [object Object],[object Object],[object Object])
+PASS ElementInternals interface: attribute form
+PASS ElementInternals interface: operation setValidity(ValidityStateFlags, DOMString, HTMLElement)
+PASS ElementInternals interface: attribute willValidate
+PASS ElementInternals interface: attribute validity
+PASS ElementInternals interface: attribute validationMessage
+PASS ElementInternals interface: operation checkValidity()
+PASS ElementInternals interface: operation reportValidity()
+PASS ElementInternals interface: attribute labels
+PASS DataTransfer interface: existence and properties of interface object
+PASS DataTransfer interface object length
+PASS DataTransfer interface object name
+PASS DataTransfer interface: existence and properties of interface prototype object
+PASS DataTransfer interface: existence and properties of interface prototype object's "constructor" property
+PASS DataTransfer interface: existence and properties of interface prototype object's @@unscopables property
+PASS DataTransfer interface: attribute dropEffect
+PASS DataTransfer interface: attribute effectAllowed
+PASS DataTransfer interface: attribute items
+PASS DataTransfer interface: operation setDragImage(Element, long, long)
+PASS DataTransfer interface: attribute types
+PASS DataTransfer interface: operation getData(DOMString)
+PASS DataTransfer interface: operation setData(DOMString, DOMString)
+PASS DataTransfer interface: operation clearData(DOMString)
+PASS DataTransfer interface: attribute files
+PASS DataTransferItemList interface: existence and properties of interface object
+PASS DataTransferItemList interface object length
+PASS DataTransferItemList interface object name
+PASS DataTransferItemList interface: existence and properties of interface prototype object
+PASS DataTransferItemList interface: existence and properties of interface prototype object's "constructor" property
+PASS DataTransferItemList interface: existence and properties of interface prototype object's @@unscopables property
+PASS DataTransferItemList interface: attribute length
+PASS DataTransferItemList interface: operation add(DOMString, DOMString)
+PASS DataTransferItemList interface: operation add(File)
+PASS DataTransferItemList interface: operation remove(unsigned long)
+PASS DataTransferItemList interface: operation clear()
+PASS DataTransferItem interface: existence and properties of interface object
+PASS DataTransferItem interface object length
+PASS DataTransferItem interface object name
+PASS DataTransferItem interface: existence and properties of interface prototype object
+PASS DataTransferItem interface: existence and properties of interface prototype object's "constructor" property
+PASS DataTransferItem interface: existence and properties of interface prototype object's @@unscopables property
+PASS DataTransferItem interface: attribute kind
+PASS DataTransferItem interface: attribute type
+PASS DataTransferItem interface: operation getAsString(FunctionStringCallback)
+PASS DataTransferItem interface: operation getAsFile()
+PASS DragEvent interface: existence and properties of interface object
+PASS DragEvent interface object length
+PASS DragEvent interface object name
+PASS DragEvent interface: existence and properties of interface prototype object
+PASS DragEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS DragEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS DragEvent interface: attribute dataTransfer
+PASS BarProp interface: existence and properties of interface object
+PASS BarProp interface object length
+PASS BarProp interface object name
+PASS BarProp interface: existence and properties of interface prototype object
+PASS BarProp interface: existence and properties of interface prototype object's "constructor" property
+PASS BarProp interface: existence and properties of interface prototype object's @@unscopables property
+PASS BarProp interface: attribute visible
+PASS History interface: existence and properties of interface object
+PASS History interface object length
+PASS History interface object name
+PASS History interface: existence and properties of interface prototype object
+PASS History interface: existence and properties of interface prototype object's "constructor" property
+PASS History interface: existence and properties of interface prototype object's @@unscopables property
+PASS History interface: attribute length
+PASS History interface: attribute scrollRestoration
+PASS History interface: attribute state
+PASS History interface: operation go(long)
+PASS History interface: operation back()
+PASS History interface: operation forward()
+PASS History interface: operation pushState(any, DOMString, USVString)
+PASS History interface: operation replaceState(any, DOMString, USVString)
+PASS History must be primary interface of window.history
+PASS Stringification of window.history
+PASS History interface: window.history must inherit property "length" with the proper type
+PASS History interface: window.history must inherit property "scrollRestoration" with the proper type
+PASS History interface: window.history must inherit property "state" with the proper type
+PASS History interface: window.history must inherit property "go(long)" with the proper type
+PASS History interface: calling go(long) on window.history with too few arguments must throw TypeError
+PASS History interface: window.history must inherit property "back()" with the proper type
+PASS History interface: window.history must inherit property "forward()" with the proper type
+PASS History interface: window.history must inherit property "pushState(any, DOMString, USVString)" with the proper type
+PASS History interface: calling pushState(any, DOMString, USVString) on window.history with too few arguments must throw TypeError
+PASS History interface: window.history must inherit property "replaceState(any, DOMString, USVString)" with the proper type
+PASS History interface: calling replaceState(any, DOMString, USVString) on window.history with too few arguments must throw TypeError
+PASS Location interface: existence and properties of interface object
+PASS Location interface object length
+PASS Location interface object name
+PASS Location interface: existence and properties of interface prototype object
+PASS Location interface: existence and properties of interface prototype object's "constructor" property
+PASS Location interface: existence and properties of interface prototype object's @@unscopables property
+FAIL Location interface: stringifier assert_own_property: interface prototype object missing non-static operation expected property "toString" missing
+PASS Location must be primary interface of window.location
+PASS Stringification of window.location
+FAIL Location interface: window.location must have own property "href" assert_false: property descriptor should not have a "value" field expected false got true
+PASS Location interface: window.location must have own property "origin"
+PASS Location interface: window.location must have own property "protocol"
+PASS Location interface: window.location must have own property "host"
+PASS Location interface: window.location must have own property "hostname"
+PASS Location interface: window.location must have own property "port"
+PASS Location interface: window.location must have own property "pathname"
+PASS Location interface: window.location must have own property "search"
+PASS Location interface: window.location must have own property "hash"
+PASS Location interface: window.location must have own property "assign"
+PASS Location interface: calling assign(USVString) on window.location with too few arguments must throw TypeError
+PASS Location interface: window.location must have own property "replace"
+PASS Location interface: calling replace(USVString) on window.location with too few arguments must throw TypeError
+PASS Location interface: window.location must have own property "reload"
+PASS Location interface: window.location must have own property "ancestorOrigins"
+PASS PopStateEvent interface: existence and properties of interface object
+PASS PopStateEvent interface object length
+PASS PopStateEvent interface object name
+PASS PopStateEvent interface: existence and properties of interface prototype object
+PASS PopStateEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS PopStateEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS PopStateEvent interface: attribute state
+PASS PopStateEvent must be primary interface of new PopStateEvent("popstate", { data: {} })
+PASS Stringification of new PopStateEvent("popstate", { data: {} })
+PASS PopStateEvent interface: new PopStateEvent("popstate", { data: {} }) must inherit property "state" with the proper type
+PASS HashChangeEvent interface: existence and properties of interface object
+PASS HashChangeEvent interface object length
+PASS HashChangeEvent interface object name
+PASS HashChangeEvent interface: existence and properties of interface prototype object
+PASS HashChangeEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS HashChangeEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS HashChangeEvent interface: attribute oldURL
+PASS HashChangeEvent interface: attribute newURL
+PASS PageTransitionEvent interface: existence and properties of interface object
+PASS PageTransitionEvent interface object length
+PASS PageTransitionEvent interface object name
+PASS PageTransitionEvent interface: existence and properties of interface prototype object
+PASS PageTransitionEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS PageTransitionEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS PageTransitionEvent interface: attribute persisted
+PASS BeforeUnloadEvent interface: existence and properties of interface object
+PASS BeforeUnloadEvent interface object length
+PASS BeforeUnloadEvent interface object name
+PASS BeforeUnloadEvent interface: existence and properties of interface prototype object
+PASS BeforeUnloadEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS BeforeUnloadEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS BeforeUnloadEvent interface: attribute returnValue
+PASS ApplicationCache interface: existence and properties of interface object
+PASS ApplicationCache interface object length
+PASS ApplicationCache interface object name
+PASS ApplicationCache interface: existence and properties of interface prototype object
+PASS ApplicationCache interface: existence and properties of interface prototype object's "constructor" property
+PASS ApplicationCache interface: existence and properties of interface prototype object's @@unscopables property
+PASS ApplicationCache interface: constant UNCACHED on interface object
+PASS ApplicationCache interface: constant UNCACHED on interface prototype object
+PASS ApplicationCache interface: constant IDLE on interface object
+PASS ApplicationCache interface: constant IDLE on interface prototype object
+PASS ApplicationCache interface: constant CHECKING on interface object
+PASS ApplicationCache interface: constant CHECKING on interface prototype object
+PASS ApplicationCache interface: constant DOWNLOADING on interface object
+PASS ApplicationCache interface: constant DOWNLOADING on interface prototype object
+PASS ApplicationCache interface: constant UPDATEREADY on interface object
+PASS ApplicationCache interface: constant UPDATEREADY on interface prototype object
+PASS ApplicationCache interface: constant OBSOLETE on interface object
+PASS ApplicationCache interface: constant OBSOLETE on interface prototype object
+PASS ApplicationCache interface: attribute status
+PASS ApplicationCache interface: operation update()
+PASS ApplicationCache interface: operation abort()
+PASS ApplicationCache interface: operation swapCache()
+PASS ApplicationCache interface: attribute onchecking
+PASS ApplicationCache interface: attribute onerror
+PASS ApplicationCache interface: attribute onnoupdate
+PASS ApplicationCache interface: attribute ondownloading
+PASS ApplicationCache interface: attribute onprogress
+PASS ApplicationCache interface: attribute onupdateready
+PASS ApplicationCache interface: attribute oncached
+PASS ApplicationCache interface: attribute onobsolete
+PASS ApplicationCache must be primary interface of window.applicationCache
+PASS Stringification of window.applicationCache
+PASS ApplicationCache interface: window.applicationCache must inherit property "UNCACHED" with the proper type
+PASS ApplicationCache interface: window.applicationCache must inherit property "IDLE" with the proper type
+PASS ApplicationCache interface: window.applicationCache must inherit property "CHECKING" with the proper type
+PASS ApplicationCache interface: window.applicationCache must inherit property "DOWNLOADING" with the proper type
+PASS ApplicationCache interface: window.applicationCache must inherit property "UPDATEREADY" with the proper type
+PASS ApplicationCache interface: window.applicationCache must inherit property "OBSOLETE" with the proper type
+PASS ApplicationCache interface: window.applicationCache must inherit property "status" with the proper type
+PASS ApplicationCache interface: window.applicationCache must inherit property "update()" with the proper type
+PASS ApplicationCache interface: window.applicationCache must inherit property "abort()" with the proper type
+PASS ApplicationCache interface: window.applicationCache must inherit property "swapCache()" with the proper type
+PASS ApplicationCache interface: window.applicationCache must inherit property "onchecking" with the proper type
+PASS ApplicationCache interface: window.applicationCache must inherit property "onerror" with the proper type
+PASS ApplicationCache interface: window.applicationCache must inherit property "onnoupdate" with the proper type
+PASS ApplicationCache interface: window.applicationCache must inherit property "ondownloading" with the proper type
+PASS ApplicationCache interface: window.applicationCache must inherit property "onprogress" with the proper type
+PASS ApplicationCache interface: window.applicationCache must inherit property "onupdateready" with the proper type
+PASS ApplicationCache interface: window.applicationCache must inherit property "oncached" with the proper type
+PASS ApplicationCache interface: window.applicationCache must inherit property "onobsolete" with the proper type
+PASS ErrorEvent interface: existence and properties of interface object
+PASS ErrorEvent interface object length
+PASS ErrorEvent interface object name
+PASS ErrorEvent interface: existence and properties of interface prototype object
+PASS ErrorEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS ErrorEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS ErrorEvent interface: attribute message
+PASS ErrorEvent interface: attribute filename
+PASS ErrorEvent interface: attribute lineno
+PASS ErrorEvent interface: attribute colno
+PASS ErrorEvent interface: attribute error
+PASS PromiseRejectionEvent interface: existence and properties of interface object
+PASS PromiseRejectionEvent interface object length
+PASS PromiseRejectionEvent interface object name
+PASS PromiseRejectionEvent interface: existence and properties of interface prototype object
+PASS PromiseRejectionEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS PromiseRejectionEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS PromiseRejectionEvent interface: attribute promise
+PASS PromiseRejectionEvent interface: attribute reason
+PASS Navigator interface: existence and properties of interface object
+PASS Navigator interface object length
+PASS Navigator interface object name
+PASS Navigator interface: existence and properties of interface prototype object
+PASS Navigator interface: existence and properties of interface prototype object's "constructor" property
+PASS Navigator interface: existence and properties of interface prototype object's @@unscopables property
+PASS Navigator interface: attribute appCodeName
+PASS Navigator interface: attribute appName
+PASS Navigator interface: attribute appVersion
+PASS Navigator interface: attribute platform
+PASS Navigator interface: attribute product
+PASS Navigator interface: attribute productSub
+PASS Navigator interface: attribute userAgent
+PASS Navigator interface: attribute vendor
+PASS Navigator interface: attribute vendorSub
+FAIL Navigator interface: operation taintEnabled() assert_own_property: interface prototype object missing non-static operation expected property "taintEnabled" missing
+FAIL Navigator interface: attribute oscpu assert_true: The prototype object must have a property "oscpu" expected true got false
+PASS Navigator interface: attribute language
+PASS Navigator interface: attribute languages
+PASS Navigator interface: attribute onLine
+PASS Navigator interface: operation registerProtocolHandler(DOMString, USVString, DOMString)
+PASS Navigator interface: operation unregisterProtocolHandler(DOMString, USVString)
+PASS Navigator interface: attribute cookieEnabled
+PASS Navigator interface: attribute plugins
+PASS Navigator interface: attribute mimeTypes
+PASS Navigator interface: operation javaEnabled()
+PASS Navigator interface: attribute hardwareConcurrency
+PASS Navigator must be primary interface of window.navigator
+PASS Stringification of window.navigator
+PASS Navigator interface: window.navigator must inherit property "appCodeName" with the proper type
+PASS Navigator interface: window.navigator must inherit property "appName" with the proper type
+PASS Navigator interface: window.navigator must inherit property "appVersion" with the proper type
+PASS Navigator interface: window.navigator must inherit property "platform" with the proper type
+PASS Navigator interface: window.navigator must inherit property "product" with the proper type
+PASS Navigator interface: window.navigator must inherit property "productSub" with the proper type
+PASS Navigator interface: window.navigator must inherit property "userAgent" with the proper type
+PASS Navigator interface: window.navigator must inherit property "vendor" with the proper type
+PASS Navigator interface: window.navigator must inherit property "vendorSub" with the proper type
+FAIL Navigator interface: window.navigator must inherit property "taintEnabled()" with the proper type assert_inherits: property "taintEnabled" not found in prototype chain
+FAIL Navigator interface: window.navigator must inherit property "oscpu" with the proper type assert_inherits: property "oscpu" not found in prototype chain
+PASS Navigator interface: window.navigator must inherit property "language" with the proper type
+PASS Navigator interface: window.navigator must inherit property "languages" with the proper type
+PASS Navigator interface: window.navigator must inherit property "onLine" with the proper type
+PASS Navigator interface: window.navigator must inherit property "registerProtocolHandler(DOMString, USVString, DOMString)" with the proper type
+PASS Navigator interface: calling registerProtocolHandler(DOMString, USVString, DOMString) on window.navigator with too few arguments must throw TypeError
+PASS Navigator interface: window.navigator must inherit property "unregisterProtocolHandler(DOMString, USVString)" with the proper type
+PASS Navigator interface: calling unregisterProtocolHandler(DOMString, USVString) on window.navigator with too few arguments must throw TypeError
+PASS Navigator interface: window.navigator must inherit property "cookieEnabled" with the proper type
+PASS Navigator interface: window.navigator must inherit property "plugins" with the proper type
+PASS Navigator interface: window.navigator must inherit property "mimeTypes" with the proper type
+PASS Navigator interface: window.navigator must inherit property "javaEnabled()" with the proper type
+PASS Navigator interface: window.navigator must inherit property "hardwareConcurrency" with the proper type
+PASS PluginArray interface: existence and properties of interface object
+PASS PluginArray interface object length
+PASS PluginArray interface object name
+PASS PluginArray interface: existence and properties of interface prototype object
+PASS PluginArray interface: existence and properties of interface prototype object's "constructor" property
+PASS PluginArray interface: existence and properties of interface prototype object's @@unscopables property
+PASS PluginArray interface: operation refresh(boolean)
+PASS PluginArray interface: attribute length
+PASS PluginArray interface: operation item(unsigned long)
+PASS PluginArray interface: operation namedItem(DOMString)
+PASS MimeTypeArray interface: existence and properties of interface object
+PASS MimeTypeArray interface object length
+PASS MimeTypeArray interface object name
+PASS MimeTypeArray interface: existence and properties of interface prototype object
+PASS MimeTypeArray interface: existence and properties of interface prototype object's "constructor" property
+PASS MimeTypeArray interface: existence and properties of interface prototype object's @@unscopables property
+PASS MimeTypeArray interface: attribute length
+PASS MimeTypeArray interface: operation item(unsigned long)
+PASS MimeTypeArray interface: operation namedItem(DOMString)
+PASS Plugin interface: existence and properties of interface object
+PASS Plugin interface object length
+PASS Plugin interface object name
+PASS Plugin interface: existence and properties of interface prototype object
+PASS Plugin interface: existence and properties of interface prototype object's "constructor" property
+PASS Plugin interface: existence and properties of interface prototype object's @@unscopables property
+PASS Plugin interface: attribute name
+PASS Plugin interface: attribute description
+PASS Plugin interface: attribute filename
+PASS Plugin interface: attribute length
+PASS Plugin interface: operation item(unsigned long)
+PASS Plugin interface: operation namedItem(DOMString)
+PASS MimeType interface: existence and properties of interface object
+PASS MimeType interface object length
+PASS MimeType interface object name
+PASS MimeType interface: existence and properties of interface prototype object
+PASS MimeType interface: existence and properties of interface prototype object's "constructor" property
+PASS MimeType interface: existence and properties of interface prototype object's @@unscopables property
+PASS MimeType interface: attribute type
+PASS MimeType interface: attribute description
+PASS MimeType interface: attribute suffixes
+PASS MimeType interface: attribute enabledPlugin
+PASS ImageBitmap interface: existence and properties of interface object
+PASS ImageBitmap interface object length
+PASS ImageBitmap interface object name
+PASS ImageBitmap interface: existence and properties of interface prototype object
+PASS ImageBitmap interface: existence and properties of interface prototype object's "constructor" property
+PASS ImageBitmap interface: existence and properties of interface prototype object's @@unscopables property
+PASS ImageBitmap interface: attribute width
+PASS ImageBitmap interface: attribute height
+PASS ImageBitmap interface: operation close()
+PASS MessageEvent interface: existence and properties of interface object
+PASS MessageEvent interface object length
+PASS MessageEvent interface object name
+PASS MessageEvent interface: existence and properties of interface prototype object
+PASS MessageEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS MessageEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS MessageEvent interface: attribute data
+PASS MessageEvent interface: attribute origin
+PASS MessageEvent interface: attribute lastEventId
+PASS MessageEvent interface: attribute source
+PASS MessageEvent interface: attribute ports
+PASS MessageEvent interface: operation initMessageEvent(DOMString, boolean, boolean, any, USVString, DOMString, MessageEventSource, [object Object])
+PASS MessageEvent must be primary interface of new MessageEvent("message", { data: 5 })
+PASS Stringification of new MessageEvent("message", { data: 5 })
+PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "data" with the proper type
+PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "origin" with the proper type
+PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "lastEventId" with the proper type
+FAIL MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "source" with the proper type Unrecognized type WindowProxy
+PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "ports" with the proper type
+PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "initMessageEvent(DOMString, boolean, boolean, any, USVString, DOMString, MessageEventSource, [object Object])" with the proper type
+PASS MessageEvent interface: calling initMessageEvent(DOMString, boolean, boolean, any, USVString, DOMString, MessageEventSource, [object Object]) on new MessageEvent("message", { data: 5 }) with too few arguments must throw TypeError
+PASS EventSource interface: existence and properties of interface object
+PASS EventSource interface object length
+PASS EventSource interface object name
+PASS EventSource interface: existence and properties of interface prototype object
+PASS EventSource interface: existence and properties of interface prototype object's "constructor" property
+PASS EventSource interface: existence and properties of interface prototype object's @@unscopables property
+PASS EventSource interface: attribute url
+PASS EventSource interface: attribute withCredentials
+PASS EventSource interface: constant CONNECTING on interface object
+PASS EventSource interface: constant CONNECTING on interface prototype object
+PASS EventSource interface: constant OPEN on interface object
+PASS EventSource interface: constant OPEN on interface prototype object
+PASS EventSource interface: constant CLOSED on interface object
+PASS EventSource interface: constant CLOSED on interface prototype object
+PASS EventSource interface: attribute readyState
+PASS EventSource interface: attribute onopen
+PASS EventSource interface: attribute onmessage
+PASS EventSource interface: attribute onerror
+PASS EventSource interface: operation close()
+PASS WebSocket interface: existence and properties of interface object
+PASS WebSocket interface object length
+PASS WebSocket interface object name
+PASS WebSocket interface: existence and properties of interface prototype object
+PASS WebSocket interface: existence and properties of interface prototype object's "constructor" property
+PASS WebSocket interface: existence and properties of interface prototype object's @@unscopables property
+PASS WebSocket interface: attribute url
+PASS WebSocket interface: constant CONNECTING on interface object
+PASS WebSocket interface: constant CONNECTING on interface prototype object
+PASS WebSocket interface: constant OPEN on interface object
+PASS WebSocket interface: constant OPEN on interface prototype object
+PASS WebSocket interface: constant CLOSING on interface object
+PASS WebSocket interface: constant CLOSING on interface prototype object
+PASS WebSocket interface: constant CLOSED on interface object
+PASS WebSocket interface: constant CLOSED on interface prototype object
+PASS WebSocket interface: attribute readyState
+PASS WebSocket interface: attribute bufferedAmount
+PASS WebSocket interface: attribute onopen
+PASS WebSocket interface: attribute onerror
+PASS WebSocket interface: attribute onclose
+PASS WebSocket interface: attribute extensions
+PASS WebSocket interface: attribute protocol
+PASS WebSocket interface: operation close(unsigned short, USVString)
+PASS WebSocket interface: attribute onmessage
+PASS WebSocket interface: attribute binaryType
+PASS WebSocket interface: operation send(USVString)
+PASS WebSocket interface: operation send(Blob)
+PASS WebSocket interface: operation send(ArrayBuffer)
+PASS WebSocket interface: operation send(ArrayBufferView)
+PASS WebSocket must be primary interface of new WebSocket("wss://nonexistent.web-platform.test")
+PASS Stringification of new WebSocket("wss://nonexistent.web-platform.test")
+PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "url" with the proper type
+PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "CONNECTING" with the proper type
+PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "OPEN" with the proper type
+PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "CLOSING" with the proper type
+PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "CLOSED" with the proper type
+PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "readyState" with the proper type
+PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "bufferedAmount" with the proper type
+PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "onopen" with the proper type
+PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "onerror" with the proper type
+PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "onclose" with the proper type
+PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "extensions" with the proper type
+PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "protocol" with the proper type
+PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "close(unsigned short, USVString)" with the proper type
+PASS WebSocket interface: calling close(unsigned short, USVString) on new WebSocket("wss://nonexistent.web-platform.test") with too few arguments must throw TypeError
+PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "onmessage" with the proper type
+PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "binaryType" with the proper type
+PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "send(USVString)" with the proper type
+PASS WebSocket interface: calling send(USVString) on new WebSocket("wss://nonexistent.web-platform.test") with too few arguments must throw TypeError
+PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "send(Blob)" with the proper type
+PASS WebSocket interface: calling send(Blob) on new WebSocket("wss://nonexistent.web-platform.test") with too few arguments must throw TypeError
+PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "send(ArrayBuffer)" with the proper type
+PASS WebSocket interface: calling send(ArrayBuffer) on new WebSocket("wss://nonexistent.web-platform.test") with too few arguments must throw TypeError
+PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "send(ArrayBufferView)" with the proper type
+PASS WebSocket interface: calling send(ArrayBufferView) on new WebSocket("wss://nonexistent.web-platform.test") with too few arguments must throw TypeError
+PASS CloseEvent interface: existence and properties of interface object
+PASS CloseEvent interface object length
+PASS CloseEvent interface object name
+PASS CloseEvent interface: existence and properties of interface prototype object
+PASS CloseEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS CloseEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS CloseEvent interface: attribute wasClean
+PASS CloseEvent interface: attribute code
+PASS CloseEvent interface: attribute reason
+PASS CloseEvent must be primary interface of new CloseEvent("close")
+PASS Stringification of new CloseEvent("close")
+PASS CloseEvent interface: new CloseEvent("close") must inherit property "wasClean" with the proper type
+PASS CloseEvent interface: new CloseEvent("close") must inherit property "code" with the proper type
+PASS CloseEvent interface: new CloseEvent("close") must inherit property "reason" with the proper type
+PASS MessageChannel interface: existence and properties of interface object
+PASS MessageChannel interface object length
+PASS MessageChannel interface object name
+PASS MessageChannel interface: existence and properties of interface prototype object
+PASS MessageChannel interface: existence and properties of interface prototype object's "constructor" property
+PASS MessageChannel interface: existence and properties of interface prototype object's @@unscopables property
+PASS MessageChannel interface: attribute port1
+PASS MessageChannel interface: attribute port2
+PASS MessagePort interface: existence and properties of interface object
+PASS MessagePort interface object length
+PASS MessagePort interface object name
+PASS MessagePort interface: existence and properties of interface prototype object
+PASS MessagePort interface: existence and properties of interface prototype object's "constructor" property
+PASS MessagePort interface: existence and properties of interface prototype object's @@unscopables property
+PASS MessagePort interface: operation postMessage(any, [object Object])
+PASS MessagePort interface: operation postMessage(any, PostMessageOptions)
+PASS MessagePort interface: operation start()
+PASS MessagePort interface: operation close()
+PASS MessagePort interface: attribute onmessage
+PASS MessagePort interface: attribute onmessageerror
+PASS BroadcastChannel interface: existence and properties of interface object
+PASS BroadcastChannel interface object length
+PASS BroadcastChannel interface object name
+PASS BroadcastChannel interface: existence and properties of interface prototype object
+PASS BroadcastChannel interface: existence and properties of interface prototype object's "constructor" property
+PASS BroadcastChannel interface: existence and properties of interface prototype object's @@unscopables property
+PASS BroadcastChannel interface: attribute name
+PASS BroadcastChannel interface: operation postMessage(any)
+PASS BroadcastChannel interface: operation close()
+PASS BroadcastChannel interface: attribute onmessage
+PASS BroadcastChannel interface: attribute onmessageerror
+PASS WorkerGlobalScope interface: existence and properties of interface object
+PASS DedicatedWorkerGlobalScope interface: existence and properties of interface object
+PASS SharedWorkerGlobalScope interface: existence and properties of interface object
+PASS Worker interface: existence and properties of interface object
+PASS Worker interface object length
+PASS Worker interface object name
+PASS Worker interface: existence and properties of interface prototype object
+PASS Worker interface: existence and properties of interface prototype object's "constructor" property
+PASS Worker interface: existence and properties of interface prototype object's @@unscopables property
+PASS Worker interface: operation terminate()
+PASS Worker interface: operation postMessage(any, [object Object])
+PASS Worker interface: operation postMessage(any, PostMessageOptions)
+PASS Worker interface: attribute onmessage
+FAIL Worker interface: attribute onmessageerror assert_true: The prototype object must have a property "onmessageerror" expected true got false
+PASS Worker interface: attribute onerror
+PASS SharedWorker interface: existence and properties of interface object
+PASS SharedWorker interface object length
+PASS SharedWorker interface object name
+PASS SharedWorker interface: existence and properties of interface prototype object
+PASS SharedWorker interface: existence and properties of interface prototype object's "constructor" property
+PASS SharedWorker interface: existence and properties of interface prototype object's @@unscopables property
+PASS SharedWorker interface: attribute port
+PASS SharedWorker interface: attribute onerror
+PASS WorkerNavigator interface: existence and properties of interface object
+PASS WorkerLocation interface: existence and properties of interface object
+PASS Storage interface: existence and properties of interface object
+PASS Storage interface object length
+PASS Storage interface object name
+PASS Storage interface: existence and properties of interface prototype object
+PASS Storage interface: existence and properties of interface prototype object's "constructor" property
+PASS Storage interface: existence and properties of interface prototype object's @@unscopables property
+PASS Storage interface: attribute length
+PASS Storage interface: operation key(unsigned long)
+PASS Storage interface: operation getItem(DOMString)
+PASS Storage interface: operation setItem(DOMString, DOMString)
+PASS Storage interface: operation removeItem(DOMString)
+PASS Storage interface: operation clear()
+PASS StorageEvent interface: existence and properties of interface object
+PASS StorageEvent interface object length
+PASS StorageEvent interface object name
+PASS StorageEvent interface: existence and properties of interface prototype object
+PASS StorageEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS StorageEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS StorageEvent interface: attribute key
+PASS StorageEvent interface: attribute oldValue
+PASS StorageEvent interface: attribute newValue
+PASS StorageEvent interface: attribute url
+PASS StorageEvent interface: attribute storageArea
+PASS StorageEvent interface: operation initStorageEvent(DOMString, boolean, boolean, DOMString, DOMString, DOMString, USVString, Storage)
+PASS External interface: existence and properties of interface object
+PASS External interface object length
+PASS External interface object name
+PASS External interface: existence and properties of interface prototype object
+PASS External interface: existence and properties of interface prototype object's "constructor" property
+PASS External interface: existence and properties of interface prototype object's @@unscopables property
+PASS External interface: operation AddSearchProvider()
+PASS External interface: operation IsSearchProviderInstalled()
+PASS External must be primary interface of window.external
+PASS Stringification of window.external
+PASS External interface: window.external must inherit property "AddSearchProvider()" with the proper type
+PASS External interface: window.external must inherit property "IsSearchProviderInstalled()" with the proper type
+PASS SVGElement interface: attribute onabort
+PASS SVGElement interface: attribute onauxclick
+PASS SVGElement interface: attribute onblur
+PASS SVGElement interface: attribute oncancel
+PASS SVGElement interface: attribute oncanplay
+PASS SVGElement interface: attribute oncanplaythrough
+PASS SVGElement interface: attribute onchange
+PASS SVGElement interface: attribute onclick
+PASS SVGElement interface: attribute onclose
+PASS SVGElement interface: attribute oncontextmenu
+PASS SVGElement interface: attribute oncuechange
+PASS SVGElement interface: attribute ondblclick
+PASS SVGElement interface: attribute ondrag
+PASS SVGElement interface: attribute ondragend
+PASS SVGElement interface: attribute ondragenter
+FAIL SVGElement interface: attribute ondragexit assert_true: The prototype object must have a property "ondragexit" expected true got false
+PASS SVGElement interface: attribute ondragleave
+PASS SVGElement interface: attribute ondragover
+PASS SVGElement interface: attribute ondragstart
+PASS SVGElement interface: attribute ondrop
+PASS SVGElement interface: attribute ondurationchange
+PASS SVGElement interface: attribute onemptied
+PASS SVGElement interface: attribute onended
+PASS SVGElement interface: attribute onerror
+PASS SVGElement interface: attribute onfocus
+PASS SVGElement interface: attribute onformdata
+PASS SVGElement interface: attribute oninput
+PASS SVGElement interface: attribute oninvalid
+PASS SVGElement interface: attribute onkeydown
+PASS SVGElement interface: attribute onkeypress
+PASS SVGElement interface: attribute onkeyup
+PASS SVGElement interface: attribute onload
+PASS SVGElement interface: attribute onloadeddata
+PASS SVGElement interface: attribute onloadedmetadata
+PASS SVGElement interface: attribute onloadstart
+PASS SVGElement interface: attribute onmousedown
+PASS SVGElement interface: attribute onmouseenter
+PASS SVGElement interface: attribute onmouseleave
+PASS SVGElement interface: attribute onmousemove
+PASS SVGElement interface: attribute onmouseout
+PASS SVGElement interface: attribute onmouseover
+PASS SVGElement interface: attribute onmouseup
+PASS SVGElement interface: attribute onwheel
+PASS SVGElement interface: attribute onpause
+PASS SVGElement interface: attribute onplay
+PASS SVGElement interface: attribute onplaying
+PASS SVGElement interface: attribute onprogress
+PASS SVGElement interface: attribute onratechange
+PASS SVGElement interface: attribute onreset
+PASS SVGElement interface: attribute onresize
+PASS SVGElement interface: attribute onscroll
+FAIL SVGElement interface: attribute onsecuritypolicyviolation assert_true: The prototype object must have a property "onsecuritypolicyviolation" expected true got false
+PASS SVGElement interface: attribute onseeked
+PASS SVGElement interface: attribute onseeking
+PASS SVGElement interface: attribute onselect
+PASS SVGElement interface: attribute onstalled
+PASS SVGElement interface: attribute onsubmit
+PASS SVGElement interface: attribute onsuspend
+PASS SVGElement interface: attribute ontimeupdate
+PASS SVGElement interface: attribute ontoggle
+PASS SVGElement interface: attribute onvolumechange
+PASS SVGElement interface: attribute onwaiting
+PASS SVGElement interface: attribute oncopy
+PASS SVGElement interface: attribute oncut
+PASS SVGElement interface: attribute onpaste
+PASS SVGElement interface: attribute dataset
+PASS SVGElement interface: attribute nonce
+FAIL SVGElement interface: attribute autofocus assert_true: The prototype object must have a property "autofocus" expected true got false
+PASS SVGElement interface: attribute tabIndex
+PASS SVGElement interface: operation focus(FocusOptions)
+PASS SVGElement interface: operation blur()
+FAIL SVGSVGElement interface: attribute onafterprint assert_true: The prototype object must have a property "onafterprint" expected true got false
+FAIL SVGSVGElement interface: attribute onbeforeprint assert_true: The prototype object must have a property "onbeforeprint" expected true got false
+FAIL SVGSVGElement interface: attribute onbeforeunload assert_true: The prototype object must have a property "onbeforeunload" expected true got false
+FAIL SVGSVGElement interface: attribute onhashchange assert_true: The prototype object must have a property "onhashchange" expected true got false
+FAIL SVGSVGElement interface: attribute onlanguagechange assert_true: The prototype object must have a property "onlanguagechange" expected true got false
+FAIL SVGSVGElement interface: attribute onmessage assert_true: The prototype object must have a property "onmessage" expected true got false
+FAIL SVGSVGElement interface: attribute onmessageerror assert_true: The prototype object must have a property "onmessageerror" expected true got false
+FAIL SVGSVGElement interface: attribute onoffline assert_true: The prototype object must have a property "onoffline" expected true got false
+FAIL SVGSVGElement interface: attribute ononline assert_true: The prototype object must have a property "ononline" expected true got false
+FAIL SVGSVGElement interface: attribute onpagehide assert_true: The prototype object must have a property "onpagehide" expected true got false
+FAIL SVGSVGElement interface: attribute onpageshow assert_true: The prototype object must have a property "onpageshow" expected true got false
+FAIL SVGSVGElement interface: attribute onpopstate assert_true: The prototype object must have a property "onpopstate" expected true got false
+FAIL SVGSVGElement interface: attribute onrejectionhandled assert_true: The prototype object must have a property "onrejectionhandled" expected true got false
+FAIL SVGSVGElement interface: attribute onstorage assert_true: The prototype object must have a property "onstorage" expected true got false
+FAIL SVGSVGElement interface: attribute onunhandledrejection assert_true: The prototype object must have a property "onunhandledrejection" expected true got false
+FAIL SVGSVGElement interface: attribute onunload assert_true: The prototype object must have a property "onunload" expected true got false
+FAIL SVGAElement interface: attribute href assert_equals: setter must be function for PutForwards, Replaceable, or non-readonly attributes expected "function" but got "undefined"
+FAIL SVGAElement interface: stringifier assert_own_property: interface prototype object missing non-static operation expected property "toString" missing
+FAIL SVGAElement interface: attribute origin assert_true: The prototype object must have a property "origin" expected true got false
+FAIL SVGAElement interface: attribute protocol assert_true: The prototype object must have a property "protocol" expected true got false
+FAIL SVGAElement interface: attribute username assert_true: The prototype object must have a property "username" expected true got false
+FAIL SVGAElement interface: attribute password assert_true: The prototype object must have a property "password" expected true got false
+FAIL SVGAElement interface: attribute host assert_true: The prototype object must have a property "host" expected true got false
+FAIL SVGAElement interface: attribute hostname assert_true: The prototype object must have a property "hostname" expected true got false
+FAIL SVGAElement interface: attribute port assert_true: The prototype object must have a property "port" expected true got false
+FAIL SVGAElement interface: attribute pathname assert_true: The prototype object must have a property "pathname" expected true got false
+FAIL SVGAElement interface: attribute search assert_true: The prototype object must have a property "search" expected true got false
+FAIL SVGAElement interface: attribute hash assert_true: The prototype object must have a property "hash" expected true got false
+PASS ShadowRoot interface: attribute activeElement
 Harness: the test ran to completion.
 
diff --git "a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=\050Document_Window\051-expected.txt" "b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=\050Document_Window\051-expected.txt"
index adb6cc43..8213dc41 100644
--- "a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=\050Document_Window\051-expected.txt"
+++ "b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=\050Document_Window\051-expected.txt"
@@ -1,6 +1,807 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+Found 803 tests; 779 PASS, 24 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface Document: original interface defined
+PASS Partial interface mixin DocumentOrShadowRoot: original interface mixin defined
+PASS Partial interface mixin NavigatorID: original interface mixin defined
+PASS Partial interface HTMLAnchorElement: original interface defined
+PASS Partial interface HTMLAreaElement: original interface defined
+PASS Partial interface HTMLBodyElement: original interface defined
+PASS Partial interface HTMLBRElement: original interface defined
+PASS Partial interface HTMLTableCaptionElement: original interface defined
+PASS Partial interface HTMLTableColElement: original interface defined
+PASS Partial interface HTMLDivElement: original interface defined
+PASS Partial interface HTMLDListElement: original interface defined
+PASS Partial interface HTMLEmbedElement: original interface defined
+PASS Partial interface HTMLHeadingElement: original interface defined
+PASS Partial interface HTMLHRElement: original interface defined
+PASS Partial interface HTMLHtmlElement: original interface defined
+PASS Partial interface HTMLIFrameElement: original interface defined
+PASS Partial interface HTMLImageElement: original interface defined
+PASS Partial interface HTMLInputElement: original interface defined
+PASS Partial interface HTMLLegendElement: original interface defined
+PASS Partial interface HTMLLIElement: original interface defined
+PASS Partial interface HTMLLinkElement: original interface defined
+PASS Partial interface HTMLMenuElement: original interface defined
+PASS Partial interface HTMLMetaElement: original interface defined
+PASS Partial interface HTMLObjectElement: original interface defined
+PASS Partial interface HTMLOListElement: original interface defined
+PASS Partial interface HTMLParagraphElement: original interface defined
+PASS Partial interface HTMLParamElement: original interface defined
+PASS Partial interface HTMLPreElement: original interface defined
+PASS Partial interface HTMLStyleElement: original interface defined
+PASS Partial interface HTMLScriptElement: original interface defined
+PASS Partial interface HTMLTableElement: original interface defined
+PASS Partial interface HTMLTableSectionElement: original interface defined
+PASS Partial interface HTMLTableCellElement: original interface defined
+PASS Partial interface HTMLTableRowElement: original interface defined
+PASS Partial interface HTMLUListElement: original interface defined
+PASS Partial interface Document[2]: original interface defined
+PASS Partial interface Window: original interface defined
+PASS Window interface: existence and properties of interface object
+PASS Window interface object length
+PASS Window interface object name
+PASS Window interface: existence and properties of interface prototype object
+PASS Window interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to a new value via Object.setPrototypeOf should throw a TypeError
+PASS Window interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to a new value via __proto__ should throw a TypeError
+PASS Window interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to a new value via Reflect.setPrototypeOf should return false
+PASS Window interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to its original value via Object.setPrototypeOf should not throw
+PASS Window interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to its original value via __proto__ should not throw
+PASS Window interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to its original value via Reflect.setPrototypeOf should return true
+PASS Window interface: existence and properties of interface prototype object's "constructor" property
+PASS Window interface: existence and properties of interface prototype object's @@unscopables property
+FAIL Window interface: attribute self assert_equals: "self" must have a getter expected "function" but got "undefined"
+PASS Window interface: attribute name
+PASS Window interface: attribute history
+PASS Window interface: attribute customElements
+PASS Window interface: attribute locationbar
+PASS Window interface: attribute menubar
+PASS Window interface: attribute personalbar
+PASS Window interface: attribute scrollbars
+PASS Window interface: attribute statusbar
+PASS Window interface: attribute toolbar
+PASS Window interface: attribute status
+PASS Window interface: operation close()
+FAIL Window interface: attribute closed assert_equals: "closed" must have a getter expected "function" but got "undefined"
+PASS Window interface: operation stop()
+PASS Window interface: operation focus()
+PASS Window interface: operation blur()
+FAIL Window interface: attribute frames assert_equals: "frames" must have a getter expected "function" but got "undefined"
+FAIL Window interface: attribute length assert_equals: "length" must have a getter expected "function" but got "undefined"
+FAIL Window interface: attribute opener assert_equals: "opener" must have a getter expected "function" but got "undefined"
+FAIL Window interface: attribute parent assert_equals: "parent" must have a getter expected "function" but got "undefined"
+PASS Window interface: attribute frameElement
+PASS Window interface: operation open(USVString, DOMString, DOMString)
+PASS Window interface: attribute navigator
+PASS Window interface: attribute applicationCache
+PASS Window interface: operation alert()
+PASS Window interface: operation alert(DOMString)
+PASS Window interface: operation confirm(DOMString)
+PASS Window interface: operation prompt(DOMString, DOMString)
+PASS Window interface: operation print()
+PASS Window interface: operation postMessage(any, USVString, [object Object])
+PASS Window interface: operation postMessage(any, WindowPostMessageOptions)
+PASS Window interface: operation captureEvents()
+PASS Window interface: operation releaseEvents()
+PASS Window interface: attribute external
+PASS Window interface: attribute onabort
+PASS Window interface: attribute onauxclick
+PASS Window interface: attribute onblur
+PASS Window interface: attribute oncancel
+PASS Window interface: attribute oncanplay
+PASS Window interface: attribute oncanplaythrough
+PASS Window interface: attribute onchange
+PASS Window interface: attribute onclick
+PASS Window interface: attribute onclose
+PASS Window interface: attribute oncontextmenu
+PASS Window interface: attribute oncuechange
+PASS Window interface: attribute ondblclick
+PASS Window interface: attribute ondrag
+PASS Window interface: attribute ondragend
+PASS Window interface: attribute ondragenter
+FAIL Window interface: attribute ondragexit assert_own_property: The global object must have a property "ondragexit" expected property "ondragexit" missing
+PASS Window interface: attribute ondragleave
+PASS Window interface: attribute ondragover
+PASS Window interface: attribute ondragstart
+PASS Window interface: attribute ondrop
+PASS Window interface: attribute ondurationchange
+PASS Window interface: attribute onemptied
+PASS Window interface: attribute onended
+PASS Window interface: attribute onerror
+PASS Window interface: attribute onfocus
+PASS Window interface: attribute onformdata
+PASS Window interface: attribute oninput
+PASS Window interface: attribute oninvalid
+PASS Window interface: attribute onkeydown
+PASS Window interface: attribute onkeypress
+PASS Window interface: attribute onkeyup
+PASS Window interface: attribute onload
+PASS Window interface: attribute onloadeddata
+PASS Window interface: attribute onloadedmetadata
+PASS Window interface: attribute onloadstart
+PASS Window interface: attribute onmousedown
+PASS Window interface: attribute onmouseenter
+PASS Window interface: attribute onmouseleave
+PASS Window interface: attribute onmousemove
+PASS Window interface: attribute onmouseout
+PASS Window interface: attribute onmouseover
+PASS Window interface: attribute onmouseup
+PASS Window interface: attribute onwheel
+PASS Window interface: attribute onpause
+PASS Window interface: attribute onplay
+PASS Window interface: attribute onplaying
+PASS Window interface: attribute onprogress
+PASS Window interface: attribute onratechange
+PASS Window interface: attribute onreset
+PASS Window interface: attribute onresize
+PASS Window interface: attribute onscroll
+FAIL Window interface: attribute onsecuritypolicyviolation assert_own_property: The global object must have a property "onsecuritypolicyviolation" expected property "onsecuritypolicyviolation" missing
+PASS Window interface: attribute onseeked
+PASS Window interface: attribute onseeking
+PASS Window interface: attribute onselect
+PASS Window interface: attribute onstalled
+PASS Window interface: attribute onsubmit
+PASS Window interface: attribute onsuspend
+PASS Window interface: attribute ontimeupdate
+PASS Window interface: attribute ontoggle
+PASS Window interface: attribute onvolumechange
+PASS Window interface: attribute onwaiting
+PASS Window interface: attribute onafterprint
+PASS Window interface: attribute onbeforeprint
+PASS Window interface: attribute onbeforeunload
+PASS Window interface: attribute onhashchange
+PASS Window interface: attribute onlanguagechange
+PASS Window interface: attribute onmessage
+PASS Window interface: attribute onmessageerror
+PASS Window interface: attribute onoffline
+PASS Window interface: attribute ononline
+PASS Window interface: attribute onpagehide
+PASS Window interface: attribute onpageshow
+PASS Window interface: attribute onpopstate
+PASS Window interface: attribute onrejectionhandled
+PASS Window interface: attribute onstorage
+PASS Window interface: attribute onunhandledrejection
+PASS Window interface: attribute onunload
+PASS Window interface: attribute origin
+PASS Window interface: operation btoa(DOMString)
+PASS Window interface: operation atob(DOMString)
+PASS Window interface: operation setTimeout(TimerHandler, long, any)
+PASS Window interface: operation clearTimeout(long)
+PASS Window interface: operation setInterval(TimerHandler, long, any)
+PASS Window interface: operation clearInterval(long)
+PASS Window interface: operation queueMicrotask(VoidFunction)
+PASS Window interface: operation createImageBitmap(ImageBitmapSource, ImageBitmapOptions)
+PASS Window interface: operation createImageBitmap(ImageBitmapSource, long, long, long, long, ImageBitmapOptions)
+PASS Window interface: operation requestAnimationFrame(FrameRequestCallback)
+PASS Window interface: operation cancelAnimationFrame(unsigned long)
+PASS Window interface: attribute sessionStorage
+PASS Window interface: attribute localStorage
+PASS Window interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via Object.setPrototypeOf should throw a TypeError
+PASS Window interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via __proto__ should throw a TypeError
+PASS Window interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via Reflect.setPrototypeOf should return false
+PASS Window interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via Object.setPrototypeOf should not throw
+PASS Window interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via __proto__ should not throw
+PASS Window interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via Reflect.setPrototypeOf should return true
+PASS Window must be primary interface of window
+PASS Stringification of window
+FAIL Window interface: window must have own property "window" assert_false: property descriptor should not have a "value" field expected false got true
+FAIL Window interface: window must inherit property "self" with the proper type Unrecognized type WindowProxy
+PASS Window interface: window must have own property "document"
+PASS Window interface: window must inherit property "name" with the proper type
+FAIL Window interface: window must have own property "location" assert_false: property descriptor should not have a "value" field expected false got true
+PASS Window interface: window must inherit property "history" with the proper type
+PASS Window interface: window must inherit property "customElements" with the proper type
+PASS Window interface: window must inherit property "locationbar" with the proper type
+PASS Window interface: window must inherit property "menubar" with the proper type
+PASS Window interface: window must inherit property "personalbar" with the proper type
+PASS Window interface: window must inherit property "scrollbars" with the proper type
+PASS Window interface: window must inherit property "statusbar" with the proper type
+PASS Window interface: window must inherit property "toolbar" with the proper type
+PASS Window interface: window must inherit property "status" with the proper type
+PASS Window interface: window must inherit property "close()" with the proper type
+PASS Window interface: window must inherit property "closed" with the proper type
+PASS Window interface: window must inherit property "stop()" with the proper type
+PASS Window interface: window must inherit property "focus()" with the proper type
+PASS Window interface: window must inherit property "blur()" with the proper type
+FAIL Window interface: window must inherit property "frames" with the proper type Unrecognized type WindowProxy
+PASS Window interface: window must inherit property "length" with the proper type
+FAIL Window interface: window must have own property "top" assert_false: property descriptor should not have a "value" field expected false got true
+PASS Window interface: window must inherit property "opener" with the proper type
+FAIL Window interface: window must inherit property "parent" with the proper type Unrecognized type WindowProxy
+PASS Window interface: window must inherit property "frameElement" with the proper type
+PASS Window interface: window must inherit property "open(USVString, DOMString, DOMString)" with the proper type
+PASS Window interface: calling open(USVString, DOMString, DOMString) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "navigator" with the proper type
+PASS Window interface: window must inherit property "applicationCache" with the proper type
+PASS Window interface: window must inherit property "alert()" with the proper type
+PASS Window interface: window must inherit property "alert(DOMString)" with the proper type
+PASS Window interface: calling alert(DOMString) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "confirm(DOMString)" with the proper type
+PASS Window interface: calling confirm(DOMString) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "prompt(DOMString, DOMString)" with the proper type
+PASS Window interface: calling prompt(DOMString, DOMString) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "print()" with the proper type
+PASS Window interface: window must inherit property "postMessage(any, USVString, [object Object])" with the proper type
+PASS Window interface: calling postMessage(any, USVString, [object Object]) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "postMessage(any, WindowPostMessageOptions)" with the proper type
+PASS Window interface: calling postMessage(any, WindowPostMessageOptions) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "captureEvents()" with the proper type
+PASS Window interface: window must inherit property "releaseEvents()" with the proper type
+PASS Window interface: window must inherit property "external" with the proper type
+PASS Window interface: window must inherit property "onabort" with the proper type
+PASS Window interface: window must inherit property "onauxclick" with the proper type
+PASS Window interface: window must inherit property "onblur" with the proper type
+PASS Window interface: window must inherit property "oncancel" with the proper type
+PASS Window interface: window must inherit property "oncanplay" with the proper type
+PASS Window interface: window must inherit property "oncanplaythrough" with the proper type
+PASS Window interface: window must inherit property "onchange" with the proper type
+PASS Window interface: window must inherit property "onclick" with the proper type
+PASS Window interface: window must inherit property "onclose" with the proper type
+PASS Window interface: window must inherit property "oncontextmenu" with the proper type
+PASS Window interface: window must inherit property "oncuechange" with the proper type
+PASS Window interface: window must inherit property "ondblclick" with the proper type
+PASS Window interface: window must inherit property "ondrag" with the proper type
+PASS Window interface: window must inherit property "ondragend" with the proper type
+PASS Window interface: window must inherit property "ondragenter" with the proper type
+FAIL Window interface: window must inherit property "ondragexit" with the proper type assert_own_property: expected property "ondragexit" missing
+PASS Window interface: window must inherit property "ondragleave" with the proper type
+PASS Window interface: window must inherit property "ondragover" with the proper type
+PASS Window interface: window must inherit property "ondragstart" with the proper type
+PASS Window interface: window must inherit property "ondrop" with the proper type
+PASS Window interface: window must inherit property "ondurationchange" with the proper type
+PASS Window interface: window must inherit property "onemptied" with the proper type
+PASS Window interface: window must inherit property "onended" with the proper type
+PASS Window interface: window must inherit property "onerror" with the proper type
+PASS Window interface: window must inherit property "onfocus" with the proper type
+PASS Window interface: window must inherit property "onformdata" with the proper type
+PASS Window interface: window must inherit property "oninput" with the proper type
+PASS Window interface: window must inherit property "oninvalid" with the proper type
+PASS Window interface: window must inherit property "onkeydown" with the proper type
+PASS Window interface: window must inherit property "onkeypress" with the proper type
+PASS Window interface: window must inherit property "onkeyup" with the proper type
+PASS Window interface: window must inherit property "onload" with the proper type
+PASS Window interface: window must inherit property "onloadeddata" with the proper type
+PASS Window interface: window must inherit property "onloadedmetadata" with the proper type
+PASS Window interface: window must inherit property "onloadstart" with the proper type
+PASS Window interface: window must inherit property "onmousedown" with the proper type
+PASS Window interface: window must inherit property "onmouseenter" with the proper type
+PASS Window interface: window must inherit property "onmouseleave" with the proper type
+PASS Window interface: window must inherit property "onmousemove" with the proper type
+PASS Window interface: window must inherit property "onmouseout" with the proper type
+PASS Window interface: window must inherit property "onmouseover" with the proper type
+PASS Window interface: window must inherit property "onmouseup" with the proper type
+PASS Window interface: window must inherit property "onwheel" with the proper type
+PASS Window interface: window must inherit property "onpause" with the proper type
+PASS Window interface: window must inherit property "onplay" with the proper type
+PASS Window interface: window must inherit property "onplaying" with the proper type
+PASS Window interface: window must inherit property "onprogress" with the proper type
+PASS Window interface: window must inherit property "onratechange" with the proper type
+PASS Window interface: window must inherit property "onreset" with the proper type
+PASS Window interface: window must inherit property "onresize" with the proper type
+PASS Window interface: window must inherit property "onscroll" with the proper type
+FAIL Window interface: window must inherit property "onsecuritypolicyviolation" with the proper type assert_own_property: expected property "onsecuritypolicyviolation" missing
+PASS Window interface: window must inherit property "onseeked" with the proper type
+PASS Window interface: window must inherit property "onseeking" with the proper type
+PASS Window interface: window must inherit property "onselect" with the proper type
+PASS Window interface: window must inherit property "onstalled" with the proper type
+PASS Window interface: window must inherit property "onsubmit" with the proper type
+PASS Window interface: window must inherit property "onsuspend" with the proper type
+PASS Window interface: window must inherit property "ontimeupdate" with the proper type
+PASS Window interface: window must inherit property "ontoggle" with the proper type
+PASS Window interface: window must inherit property "onvolumechange" with the proper type
+PASS Window interface: window must inherit property "onwaiting" with the proper type
+PASS Window interface: window must inherit property "onafterprint" with the proper type
+PASS Window interface: window must inherit property "onbeforeprint" with the proper type
+PASS Window interface: window must inherit property "onbeforeunload" with the proper type
+PASS Window interface: window must inherit property "onhashchange" with the proper type
+PASS Window interface: window must inherit property "onlanguagechange" with the proper type
+PASS Window interface: window must inherit property "onmessage" with the proper type
+PASS Window interface: window must inherit property "onmessageerror" with the proper type
+PASS Window interface: window must inherit property "onoffline" with the proper type
+PASS Window interface: window must inherit property "ononline" with the proper type
+PASS Window interface: window must inherit property "onpagehide" with the proper type
+PASS Window interface: window must inherit property "onpageshow" with the proper type
+PASS Window interface: window must inherit property "onpopstate" with the proper type
+PASS Window interface: window must inherit property "onrejectionhandled" with the proper type
+PASS Window interface: window must inherit property "onstorage" with the proper type
+PASS Window interface: window must inherit property "onunhandledrejection" with the proper type
+PASS Window interface: window must inherit property "onunload" with the proper type
+PASS Window interface: window must inherit property "origin" with the proper type
+PASS Window interface: window must inherit property "btoa(DOMString)" with the proper type
+PASS Window interface: calling btoa(DOMString) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "atob(DOMString)" with the proper type
+PASS Window interface: calling atob(DOMString) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "setTimeout(TimerHandler, long, any)" with the proper type
+PASS Window interface: calling setTimeout(TimerHandler, long, any) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "clearTimeout(long)" with the proper type
+PASS Window interface: calling clearTimeout(long) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "setInterval(TimerHandler, long, any)" with the proper type
+PASS Window interface: calling setInterval(TimerHandler, long, any) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "clearInterval(long)" with the proper type
+PASS Window interface: calling clearInterval(long) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "queueMicrotask(VoidFunction)" with the proper type
+PASS Window interface: calling queueMicrotask(VoidFunction) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "createImageBitmap(ImageBitmapSource, ImageBitmapOptions)" with the proper type
+PASS Window interface: calling createImageBitmap(ImageBitmapSource, ImageBitmapOptions) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "createImageBitmap(ImageBitmapSource, long, long, long, long, ImageBitmapOptions)" with the proper type
+PASS Window interface: calling createImageBitmap(ImageBitmapSource, long, long, long, long, ImageBitmapOptions) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "requestAnimationFrame(FrameRequestCallback)" with the proper type
+PASS Window interface: calling requestAnimationFrame(FrameRequestCallback) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "cancelAnimationFrame(unsigned long)" with the proper type
+PASS Window interface: calling cancelAnimationFrame(unsigned long) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "sessionStorage" with the proper type
+PASS Window interface: window must inherit property "localStorage" with the proper type
+PASS Document interface: attribute domain
+PASS Document interface: attribute referrer
+PASS Document interface: attribute cookie
+PASS Document interface: attribute lastModified
+PASS Document interface: attribute readyState
+PASS Document interface: attribute title
+PASS Document interface: attribute dir
+PASS Document interface: attribute body
+PASS Document interface: attribute head
+PASS Document interface: attribute images
+PASS Document interface: attribute embeds
+PASS Document interface: attribute plugins
+PASS Document interface: attribute links
+PASS Document interface: attribute forms
+PASS Document interface: attribute scripts
+PASS Document interface: operation getElementsByName(DOMString)
+PASS Document interface: attribute currentScript
+PASS Document interface: operation open(DOMString, DOMString)
+PASS Document interface: operation open(USVString, DOMString, DOMString)
+PASS Document interface: operation close()
+PASS Document interface: operation write(DOMString)
+PASS Document interface: operation writeln(DOMString)
+PASS Document interface: attribute defaultView
+PASS Document interface: operation hasFocus()
+PASS Document interface: attribute designMode
+PASS Document interface: operation execCommand(DOMString, boolean, DOMString)
+PASS Document interface: operation queryCommandEnabled(DOMString)
+PASS Document interface: operation queryCommandIndeterm(DOMString)
+PASS Document interface: operation queryCommandState(DOMString)
+PASS Document interface: operation queryCommandSupported(DOMString)
+PASS Document interface: operation queryCommandValue(DOMString)
+PASS Document interface: attribute onreadystatechange
+PASS Document interface: attribute fgColor
+PASS Document interface: attribute linkColor
+PASS Document interface: attribute vlinkColor
+PASS Document interface: attribute alinkColor
+PASS Document interface: attribute bgColor
+PASS Document interface: attribute anchors
+PASS Document interface: attribute applets
+PASS Document interface: operation clear()
+PASS Document interface: operation captureEvents()
+PASS Document interface: operation releaseEvents()
+PASS Document interface: attribute all
+PASS Document interface: attribute onabort
+PASS Document interface: attribute onauxclick
+PASS Document interface: attribute onblur
+PASS Document interface: attribute oncancel
+PASS Document interface: attribute oncanplay
+PASS Document interface: attribute oncanplaythrough
+PASS Document interface: attribute onchange
+PASS Document interface: attribute onclick
+PASS Document interface: attribute onclose
+PASS Document interface: attribute oncontextmenu
+PASS Document interface: attribute oncuechange
+PASS Document interface: attribute ondblclick
+PASS Document interface: attribute ondrag
+PASS Document interface: attribute ondragend
+PASS Document interface: attribute ondragenter
+FAIL Document interface: attribute ondragexit assert_true: The prototype object must have a property "ondragexit" expected true got false
+PASS Document interface: attribute ondragleave
+PASS Document interface: attribute ondragover
+PASS Document interface: attribute ondragstart
+PASS Document interface: attribute ondrop
+PASS Document interface: attribute ondurationchange
+PASS Document interface: attribute onemptied
+PASS Document interface: attribute onended
+PASS Document interface: attribute onerror
+PASS Document interface: attribute onfocus
+PASS Document interface: attribute onformdata
+PASS Document interface: attribute oninput
+PASS Document interface: attribute oninvalid
+PASS Document interface: attribute onkeydown
+PASS Document interface: attribute onkeypress
+PASS Document interface: attribute onkeyup
+PASS Document interface: attribute onload
+PASS Document interface: attribute onloadeddata
+PASS Document interface: attribute onloadedmetadata
+PASS Document interface: attribute onloadstart
+PASS Document interface: attribute onmousedown
+PASS Document interface: attribute onmouseenter
+PASS Document interface: attribute onmouseleave
+PASS Document interface: attribute onmousemove
+PASS Document interface: attribute onmouseout
+PASS Document interface: attribute onmouseover
+PASS Document interface: attribute onmouseup
+PASS Document interface: attribute onwheel
+PASS Document interface: attribute onpause
+PASS Document interface: attribute onplay
+PASS Document interface: attribute onplaying
+PASS Document interface: attribute onprogress
+PASS Document interface: attribute onratechange
+PASS Document interface: attribute onreset
+PASS Document interface: attribute onresize
+PASS Document interface: attribute onscroll
+PASS Document interface: attribute onsecuritypolicyviolation
+PASS Document interface: attribute onseeked
+PASS Document interface: attribute onseeking
+PASS Document interface: attribute onselect
+PASS Document interface: attribute onstalled
+PASS Document interface: attribute onsubmit
+PASS Document interface: attribute onsuspend
+PASS Document interface: attribute ontimeupdate
+PASS Document interface: attribute ontoggle
+PASS Document interface: attribute onvolumechange
+PASS Document interface: attribute onwaiting
+PASS Document interface: attribute oncopy
+PASS Document interface: attribute oncut
+PASS Document interface: attribute onpaste
+PASS Document interface: attribute activeElement
+PASS Document interface: iframe.contentDocument must have own property "location"
+PASS Document interface: iframe.contentDocument must inherit property "domain" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "referrer" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "cookie" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "lastModified" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "readyState" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "title" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "dir" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "body" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "head" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "images" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "embeds" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "plugins" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "links" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "forms" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "scripts" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "getElementsByName(DOMString)" with the proper type
+PASS Document interface: calling getElementsByName(DOMString) on iframe.contentDocument with too few arguments must throw TypeError
+PASS Document interface: iframe.contentDocument must inherit property "currentScript" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "open(DOMString, DOMString)" with the proper type
+PASS Document interface: calling open(DOMString, DOMString) on iframe.contentDocument with too few arguments must throw TypeError
+PASS Document interface: iframe.contentDocument must inherit property "open(USVString, DOMString, DOMString)" with the proper type
+PASS Document interface: calling open(USVString, DOMString, DOMString) on iframe.contentDocument with too few arguments must throw TypeError
+PASS Document interface: iframe.contentDocument must inherit property "close()" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "write(DOMString)" with the proper type
+PASS Document interface: calling write(DOMString) on iframe.contentDocument with too few arguments must throw TypeError
+PASS Document interface: iframe.contentDocument must inherit property "writeln(DOMString)" with the proper type
+PASS Document interface: calling writeln(DOMString) on iframe.contentDocument with too few arguments must throw TypeError
+FAIL Document interface: iframe.contentDocument must inherit property "defaultView" with the proper type Unrecognized type WindowProxy
+PASS Document interface: iframe.contentDocument must inherit property "hasFocus()" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "designMode" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "execCommand(DOMString, boolean, DOMString)" with the proper type
+PASS Document interface: calling execCommand(DOMString, boolean, DOMString) on iframe.contentDocument with too few arguments must throw TypeError
+PASS Document interface: iframe.contentDocument must inherit property "queryCommandEnabled(DOMString)" with the proper type
+PASS Document interface: calling queryCommandEnabled(DOMString) on iframe.contentDocument with too few arguments must throw TypeError
+PASS Document interface: iframe.contentDocument must inherit property "queryCommandIndeterm(DOMString)" with the proper type
+PASS Document interface: calling queryCommandIndeterm(DOMString) on iframe.contentDocument with too few arguments must throw TypeError
+PASS Document interface: iframe.contentDocument must inherit property "queryCommandState(DOMString)" with the proper type
+PASS Document interface: calling queryCommandState(DOMString) on iframe.contentDocument with too few arguments must throw TypeError
+PASS Document interface: iframe.contentDocument must inherit property "queryCommandSupported(DOMString)" with the proper type
+PASS Document interface: calling queryCommandSupported(DOMString) on iframe.contentDocument with too few arguments must throw TypeError
+PASS Document interface: iframe.contentDocument must inherit property "queryCommandValue(DOMString)" with the proper type
+PASS Document interface: calling queryCommandValue(DOMString) on iframe.contentDocument with too few arguments must throw TypeError
+PASS Document interface: iframe.contentDocument must inherit property "onreadystatechange" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "fgColor" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "linkColor" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "vlinkColor" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "alinkColor" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "bgColor" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "anchors" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "applets" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "clear()" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "captureEvents()" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "releaseEvents()" with the proper type
+FAIL Document interface: iframe.contentDocument must inherit property "all" with the proper type assert_in_array: wrong type: not object or function value "undefined" not in array ["object", "function"]
+PASS Document interface: iframe.contentDocument must inherit property "onabort" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onauxclick" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onblur" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "oncancel" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "oncanplay" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "oncanplaythrough" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onchange" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onclick" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onclose" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "oncontextmenu" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "oncuechange" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "ondblclick" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "ondrag" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "ondragend" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "ondragenter" with the proper type
+FAIL Document interface: iframe.contentDocument must inherit property "ondragexit" with the proper type assert_inherits: property "ondragexit" not found in prototype chain
+PASS Document interface: iframe.contentDocument must inherit property "ondragleave" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "ondragover" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "ondragstart" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "ondrop" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "ondurationchange" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onemptied" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onended" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onerror" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onfocus" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onformdata" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "oninput" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "oninvalid" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onkeydown" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onkeypress" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onkeyup" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onload" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onloadeddata" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onloadedmetadata" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onloadstart" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onmousedown" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onmouseenter" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onmouseleave" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onmousemove" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onmouseout" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onmouseover" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onmouseup" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onwheel" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onpause" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onplay" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onplaying" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onprogress" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onratechange" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onreset" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onresize" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onscroll" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onsecuritypolicyviolation" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onseeked" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onseeking" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onselect" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onstalled" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onsubmit" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onsuspend" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "ontimeupdate" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "ontoggle" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onvolumechange" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onwaiting" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "oncopy" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "oncut" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "onpaste" with the proper type
+PASS Document interface: iframe.contentDocument must inherit property "activeElement" with the proper type
+PASS Document interface: new Document() must have own property "location"
+PASS Document interface: new Document() must inherit property "domain" with the proper type
+PASS Document interface: new Document() must inherit property "referrer" with the proper type
+PASS Document interface: new Document() must inherit property "cookie" with the proper type
+PASS Document interface: new Document() must inherit property "lastModified" with the proper type
+PASS Document interface: new Document() must inherit property "readyState" with the proper type
+PASS Document interface: new Document() must inherit property "title" with the proper type
+PASS Document interface: new Document() must inherit property "dir" with the proper type
+PASS Document interface: new Document() must inherit property "body" with the proper type
+PASS Document interface: new Document() must inherit property "head" with the proper type
+PASS Document interface: new Document() must inherit property "images" with the proper type
+PASS Document interface: new Document() must inherit property "embeds" with the proper type
+PASS Document interface: new Document() must inherit property "plugins" with the proper type
+PASS Document interface: new Document() must inherit property "links" with the proper type
+PASS Document interface: new Document() must inherit property "forms" with the proper type
+PASS Document interface: new Document() must inherit property "scripts" with the proper type
+PASS Document interface: new Document() must inherit property "getElementsByName(DOMString)" with the proper type
+PASS Document interface: calling getElementsByName(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "currentScript" with the proper type
+PASS Document interface: new Document() must inherit property "open(DOMString, DOMString)" with the proper type
+PASS Document interface: calling open(DOMString, DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "open(USVString, DOMString, DOMString)" with the proper type
+PASS Document interface: calling open(USVString, DOMString, DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "close()" with the proper type
+PASS Document interface: new Document() must inherit property "write(DOMString)" with the proper type
+PASS Document interface: calling write(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "writeln(DOMString)" with the proper type
+PASS Document interface: calling writeln(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "defaultView" with the proper type
+PASS Document interface: new Document() must inherit property "hasFocus()" with the proper type
+PASS Document interface: new Document() must inherit property "designMode" with the proper type
+PASS Document interface: new Document() must inherit property "execCommand(DOMString, boolean, DOMString)" with the proper type
+PASS Document interface: calling execCommand(DOMString, boolean, DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "queryCommandEnabled(DOMString)" with the proper type
+PASS Document interface: calling queryCommandEnabled(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "queryCommandIndeterm(DOMString)" with the proper type
+PASS Document interface: calling queryCommandIndeterm(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "queryCommandState(DOMString)" with the proper type
+PASS Document interface: calling queryCommandState(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "queryCommandSupported(DOMString)" with the proper type
+PASS Document interface: calling queryCommandSupported(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "queryCommandValue(DOMString)" with the proper type
+PASS Document interface: calling queryCommandValue(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Document interface: new Document() must inherit property "onreadystatechange" with the proper type
+PASS Document interface: new Document() must inherit property "fgColor" with the proper type
+PASS Document interface: new Document() must inherit property "linkColor" with the proper type
+PASS Document interface: new Document() must inherit property "vlinkColor" with the proper type
+PASS Document interface: new Document() must inherit property "alinkColor" with the proper type
+PASS Document interface: new Document() must inherit property "bgColor" with the proper type
+PASS Document interface: new Document() must inherit property "anchors" with the proper type
+PASS Document interface: new Document() must inherit property "applets" with the proper type
+PASS Document interface: new Document() must inherit property "clear()" with the proper type
+PASS Document interface: new Document() must inherit property "captureEvents()" with the proper type
+PASS Document interface: new Document() must inherit property "releaseEvents()" with the proper type
+FAIL Document interface: new Document() must inherit property "all" with the proper type assert_in_array: wrong type: not object or function value "undefined" not in array ["object", "function"]
+PASS Document interface: new Document() must inherit property "onabort" with the proper type
+PASS Document interface: new Document() must inherit property "onauxclick" with the proper type
+PASS Document interface: new Document() must inherit property "onblur" with the proper type
+PASS Document interface: new Document() must inherit property "oncancel" with the proper type
+PASS Document interface: new Document() must inherit property "oncanplay" with the proper type
+PASS Document interface: new Document() must inherit property "oncanplaythrough" with the proper type
+PASS Document interface: new Document() must inherit property "onchange" with the proper type
+PASS Document interface: new Document() must inherit property "onclick" with the proper type
+PASS Document interface: new Document() must inherit property "onclose" with the proper type
+PASS Document interface: new Document() must inherit property "oncontextmenu" with the proper type
+PASS Document interface: new Document() must inherit property "oncuechange" with the proper type
+PASS Document interface: new Document() must inherit property "ondblclick" with the proper type
+PASS Document interface: new Document() must inherit property "ondrag" with the proper type
+PASS Document interface: new Document() must inherit property "ondragend" with the proper type
+PASS Document interface: new Document() must inherit property "ondragenter" with the proper type
+FAIL Document interface: new Document() must inherit property "ondragexit" with the proper type assert_inherits: property "ondragexit" not found in prototype chain
+PASS Document interface: new Document() must inherit property "ondragleave" with the proper type
+PASS Document interface: new Document() must inherit property "ondragover" with the proper type
+PASS Document interface: new Document() must inherit property "ondragstart" with the proper type
+PASS Document interface: new Document() must inherit property "ondrop" with the proper type
+PASS Document interface: new Document() must inherit property "ondurationchange" with the proper type
+PASS Document interface: new Document() must inherit property "onemptied" with the proper type
+PASS Document interface: new Document() must inherit property "onended" with the proper type
+PASS Document interface: new Document() must inherit property "onerror" with the proper type
+PASS Document interface: new Document() must inherit property "onfocus" with the proper type
+PASS Document interface: new Document() must inherit property "onformdata" with the proper type
+PASS Document interface: new Document() must inherit property "oninput" with the proper type
+PASS Document interface: new Document() must inherit property "oninvalid" with the proper type
+PASS Document interface: new Document() must inherit property "onkeydown" with the proper type
+PASS Document interface: new Document() must inherit property "onkeypress" with the proper type
+PASS Document interface: new Document() must inherit property "onkeyup" with the proper type
+PASS Document interface: new Document() must inherit property "onload" with the proper type
+PASS Document interface: new Document() must inherit property "onloadeddata" with the proper type
+PASS Document interface: new Document() must inherit property "onloadedmetadata" with the proper type
+PASS Document interface: new Document() must inherit property "onloadstart" with the proper type
+PASS Document interface: new Document() must inherit property "onmousedown" with the proper type
+PASS Document interface: new Document() must inherit property "onmouseenter" with the proper type
+PASS Document interface: new Document() must inherit property "onmouseleave" with the proper type
+PASS Document interface: new Document() must inherit property "onmousemove" with the proper type
+PASS Document interface: new Document() must inherit property "onmouseout" with the proper type
+PASS Document interface: new Document() must inherit property "onmouseover" with the proper type
+PASS Document interface: new Document() must inherit property "onmouseup" with the proper type
+PASS Document interface: new Document() must inherit property "onwheel" with the proper type
+PASS Document interface: new Document() must inherit property "onpause" with the proper type
+PASS Document interface: new Document() must inherit property "onplay" with the proper type
+PASS Document interface: new Document() must inherit property "onplaying" with the proper type
+PASS Document interface: new Document() must inherit property "onprogress" with the proper type
+PASS Document interface: new Document() must inherit property "onratechange" with the proper type
+PASS Document interface: new Document() must inherit property "onreset" with the proper type
+PASS Document interface: new Document() must inherit property "onresize" with the proper type
+PASS Document interface: new Document() must inherit property "onscroll" with the proper type
+PASS Document interface: new Document() must inherit property "onsecuritypolicyviolation" with the proper type
+PASS Document interface: new Document() must inherit property "onseeked" with the proper type
+PASS Document interface: new Document() must inherit property "onseeking" with the proper type
+PASS Document interface: new Document() must inherit property "onselect" with the proper type
+PASS Document interface: new Document() must inherit property "onstalled" with the proper type
+PASS Document interface: new Document() must inherit property "onsubmit" with the proper type
+PASS Document interface: new Document() must inherit property "onsuspend" with the proper type
+PASS Document interface: new Document() must inherit property "ontimeupdate" with the proper type
+PASS Document interface: new Document() must inherit property "ontoggle" with the proper type
+PASS Document interface: new Document() must inherit property "onvolumechange" with the proper type
+PASS Document interface: new Document() must inherit property "onwaiting" with the proper type
+PASS Document interface: new Document() must inherit property "oncopy" with the proper type
+PASS Document interface: new Document() must inherit property "oncut" with the proper type
+PASS Document interface: new Document() must inherit property "onpaste" with the proper type
+PASS Document interface: new Document() must inherit property "activeElement" with the proper type
+PASS Document interface: documentWithHandlers must have own property "location"
+PASS Document interface: documentWithHandlers must inherit property "domain" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "referrer" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "cookie" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "lastModified" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "readyState" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "title" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "dir" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "body" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "head" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "images" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "embeds" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "plugins" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "links" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "forms" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "scripts" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "getElementsByName(DOMString)" with the proper type
+PASS Document interface: calling getElementsByName(DOMString) on documentWithHandlers with too few arguments must throw TypeError
+PASS Document interface: documentWithHandlers must inherit property "currentScript" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "open(DOMString, DOMString)" with the proper type
+PASS Document interface: calling open(DOMString, DOMString) on documentWithHandlers with too few arguments must throw TypeError
+PASS Document interface: documentWithHandlers must inherit property "open(USVString, DOMString, DOMString)" with the proper type
+PASS Document interface: calling open(USVString, DOMString, DOMString) on documentWithHandlers with too few arguments must throw TypeError
+PASS Document interface: documentWithHandlers must inherit property "close()" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "write(DOMString)" with the proper type
+PASS Document interface: calling write(DOMString) on documentWithHandlers with too few arguments must throw TypeError
+PASS Document interface: documentWithHandlers must inherit property "writeln(DOMString)" with the proper type
+PASS Document interface: calling writeln(DOMString) on documentWithHandlers with too few arguments must throw TypeError
+PASS Document interface: documentWithHandlers must inherit property "defaultView" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "hasFocus()" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "designMode" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "execCommand(DOMString, boolean, DOMString)" with the proper type
+PASS Document interface: calling execCommand(DOMString, boolean, DOMString) on documentWithHandlers with too few arguments must throw TypeError
+PASS Document interface: documentWithHandlers must inherit property "queryCommandEnabled(DOMString)" with the proper type
+PASS Document interface: calling queryCommandEnabled(DOMString) on documentWithHandlers with too few arguments must throw TypeError
+PASS Document interface: documentWithHandlers must inherit property "queryCommandIndeterm(DOMString)" with the proper type
+PASS Document interface: calling queryCommandIndeterm(DOMString) on documentWithHandlers with too few arguments must throw TypeError
+PASS Document interface: documentWithHandlers must inherit property "queryCommandState(DOMString)" with the proper type
+PASS Document interface: calling queryCommandState(DOMString) on documentWithHandlers with too few arguments must throw TypeError
+PASS Document interface: documentWithHandlers must inherit property "queryCommandSupported(DOMString)" with the proper type
+PASS Document interface: calling queryCommandSupported(DOMString) on documentWithHandlers with too few arguments must throw TypeError
+PASS Document interface: documentWithHandlers must inherit property "queryCommandValue(DOMString)" with the proper type
+PASS Document interface: calling queryCommandValue(DOMString) on documentWithHandlers with too few arguments must throw TypeError
+PASS Document interface: documentWithHandlers must inherit property "onreadystatechange" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "fgColor" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "linkColor" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "vlinkColor" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "alinkColor" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "bgColor" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "anchors" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "applets" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "clear()" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "captureEvents()" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "releaseEvents()" with the proper type
+FAIL Document interface: documentWithHandlers must inherit property "all" with the proper type assert_in_array: wrong type: not object or function value "undefined" not in array ["object", "function"]
+PASS Document interface: documentWithHandlers must inherit property "onabort" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onauxclick" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onblur" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "oncancel" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "oncanplay" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "oncanplaythrough" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onchange" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onclick" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onclose" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "oncontextmenu" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "oncuechange" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "ondblclick" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "ondrag" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "ondragend" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "ondragenter" with the proper type
+FAIL Document interface: documentWithHandlers must inherit property "ondragexit" with the proper type assert_inherits: property "ondragexit" found on object expected in prototype chain
+PASS Document interface: documentWithHandlers must inherit property "ondragleave" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "ondragover" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "ondragstart" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "ondrop" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "ondurationchange" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onemptied" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onended" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onerror" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onfocus" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onformdata" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "oninput" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "oninvalid" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onkeydown" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onkeypress" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onkeyup" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onload" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onloadeddata" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onloadedmetadata" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onloadstart" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onmousedown" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onmouseenter" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onmouseleave" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onmousemove" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onmouseout" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onmouseover" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onmouseup" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onwheel" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onpause" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onplay" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onplaying" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onprogress" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onratechange" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onreset" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onresize" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onscroll" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onsecuritypolicyviolation" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onseeked" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onseeking" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onselect" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onstalled" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onsubmit" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onsuspend" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "ontimeupdate" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "ontoggle" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onvolumechange" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onwaiting" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "oncopy" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "oncut" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "onpaste" with the proper type
+PASS Document interface: documentWithHandlers must inherit property "activeElement" with the proper type
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.worker-expected.txt b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.worker-expected.txt
index adb6cc43..7354ff6 100644
--- a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.worker-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.worker-expected.txt
@@ -1,6 +1,677 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+Found 673 tests; 647 PASS, 26 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface Document: original interface defined
+PASS Partial interface mixin DocumentOrShadowRoot: original interface mixin defined
+PASS Partial interface mixin NavigatorID: original interface mixin defined
+PASS Partial interface HTMLAnchorElement: original interface defined
+PASS Partial interface HTMLAreaElement: original interface defined
+PASS Partial interface HTMLBodyElement: original interface defined
+PASS Partial interface HTMLBRElement: original interface defined
+PASS Partial interface HTMLTableCaptionElement: original interface defined
+PASS Partial interface HTMLTableColElement: original interface defined
+PASS Partial interface HTMLDivElement: original interface defined
+PASS Partial interface HTMLDListElement: original interface defined
+PASS Partial interface HTMLEmbedElement: original interface defined
+PASS Partial interface HTMLHeadingElement: original interface defined
+PASS Partial interface HTMLHRElement: original interface defined
+PASS Partial interface HTMLHtmlElement: original interface defined
+PASS Partial interface HTMLIFrameElement: original interface defined
+PASS Partial interface HTMLImageElement: original interface defined
+PASS Partial interface HTMLInputElement: original interface defined
+PASS Partial interface HTMLLegendElement: original interface defined
+PASS Partial interface HTMLLIElement: original interface defined
+PASS Partial interface HTMLLinkElement: original interface defined
+PASS Partial interface HTMLMenuElement: original interface defined
+PASS Partial interface HTMLMetaElement: original interface defined
+PASS Partial interface HTMLObjectElement: original interface defined
+PASS Partial interface HTMLOListElement: original interface defined
+PASS Partial interface HTMLParagraphElement: original interface defined
+PASS Partial interface HTMLParamElement: original interface defined
+PASS Partial interface HTMLPreElement: original interface defined
+PASS Partial interface HTMLStyleElement: original interface defined
+PASS Partial interface HTMLScriptElement: original interface defined
+PASS Partial interface HTMLTableElement: original interface defined
+PASS Partial interface HTMLTableSectionElement: original interface defined
+PASS Partial interface HTMLTableCellElement: original interface defined
+PASS Partial interface HTMLTableRowElement: original interface defined
+PASS Partial interface HTMLUListElement: original interface defined
+PASS Partial interface Document[2]: original interface defined
+PASS Partial interface Window: original interface defined
+PASS HTMLAllCollection interface: existence and properties of interface object
+PASS HTMLFormControlsCollection interface: existence and properties of interface object
+PASS RadioNodeList interface: existence and properties of interface object
+PASS HTMLOptionsCollection interface: existence and properties of interface object
+PASS DOMStringList interface: existence and properties of interface object
+PASS DOMStringList interface object length
+PASS DOMStringList interface object name
+PASS DOMStringList interface: existence and properties of interface prototype object
+PASS DOMStringList interface: existence and properties of interface prototype object's "constructor" property
+PASS DOMStringList interface: existence and properties of interface prototype object's @@unscopables property
+PASS DOMStringList interface: attribute length
+PASS DOMStringList interface: operation item(unsigned long)
+PASS DOMStringList interface: operation contains(DOMString)
+PASS HTMLElement interface: existence and properties of interface object
+PASS HTMLUnknownElement interface: existence and properties of interface object
+PASS DOMStringMap interface: existence and properties of interface object
+PASS HTMLHtmlElement interface: existence and properties of interface object
+PASS HTMLHeadElement interface: existence and properties of interface object
+PASS HTMLTitleElement interface: existence and properties of interface object
+PASS HTMLBaseElement interface: existence and properties of interface object
+PASS HTMLLinkElement interface: existence and properties of interface object
+PASS HTMLMetaElement interface: existence and properties of interface object
+PASS HTMLStyleElement interface: existence and properties of interface object
+PASS HTMLBodyElement interface: existence and properties of interface object
+PASS HTMLHeadingElement interface: existence and properties of interface object
+PASS HTMLParagraphElement interface: existence and properties of interface object
+PASS HTMLHRElement interface: existence and properties of interface object
+PASS HTMLPreElement interface: existence and properties of interface object
+PASS HTMLQuoteElement interface: existence and properties of interface object
+PASS HTMLOListElement interface: existence and properties of interface object
+PASS HTMLUListElement interface: existence and properties of interface object
+PASS HTMLMenuElement interface: existence and properties of interface object
+PASS HTMLLIElement interface: existence and properties of interface object
+PASS HTMLDListElement interface: existence and properties of interface object
+PASS HTMLDivElement interface: existence and properties of interface object
+PASS HTMLAnchorElement interface: existence and properties of interface object
+PASS HTMLDataElement interface: existence and properties of interface object
+PASS HTMLTimeElement interface: existence and properties of interface object
+PASS HTMLSpanElement interface: existence and properties of interface object
+PASS HTMLBRElement interface: existence and properties of interface object
+PASS HTMLModElement interface: existence and properties of interface object
+PASS HTMLPictureElement interface: existence and properties of interface object
+PASS HTMLSourceElement interface: existence and properties of interface object
+PASS HTMLImageElement interface: existence and properties of interface object
+PASS HTMLIFrameElement interface: existence and properties of interface object
+PASS HTMLEmbedElement interface: existence and properties of interface object
+PASS HTMLObjectElement interface: existence and properties of interface object
+PASS HTMLParamElement interface: existence and properties of interface object
+PASS HTMLVideoElement interface: existence and properties of interface object
+PASS HTMLAudioElement interface: existence and properties of interface object
+PASS HTMLTrackElement interface: existence and properties of interface object
+PASS HTMLMediaElement interface: existence and properties of interface object
+PASS MediaError interface: existence and properties of interface object
+PASS AudioTrackList interface: existence and properties of interface object
+PASS AudioTrack interface: existence and properties of interface object
+PASS VideoTrackList interface: existence and properties of interface object
+PASS VideoTrack interface: existence and properties of interface object
+PASS TextTrackList interface: existence and properties of interface object
+PASS TextTrack interface: existence and properties of interface object
+PASS TextTrackCueList interface: existence and properties of interface object
+PASS TextTrackCue interface: existence and properties of interface object
+PASS TimeRanges interface: existence and properties of interface object
+PASS TrackEvent interface: existence and properties of interface object
+PASS HTMLMapElement interface: existence and properties of interface object
+PASS HTMLAreaElement interface: existence and properties of interface object
+PASS HTMLTableElement interface: existence and properties of interface object
+PASS HTMLTableCaptionElement interface: existence and properties of interface object
+PASS HTMLTableColElement interface: existence and properties of interface object
+PASS HTMLTableSectionElement interface: existence and properties of interface object
+PASS HTMLTableRowElement interface: existence and properties of interface object
+PASS HTMLTableCellElement interface: existence and properties of interface object
+PASS HTMLFormElement interface: existence and properties of interface object
+PASS HTMLLabelElement interface: existence and properties of interface object
+PASS HTMLInputElement interface: existence and properties of interface object
+PASS HTMLButtonElement interface: existence and properties of interface object
+PASS HTMLSelectElement interface: existence and properties of interface object
+PASS HTMLDataListElement interface: existence and properties of interface object
+PASS HTMLOptGroupElement interface: existence and properties of interface object
+PASS HTMLOptionElement interface: existence and properties of interface object
+PASS HTMLTextAreaElement interface: existence and properties of interface object
+PASS HTMLOutputElement interface: existence and properties of interface object
+PASS HTMLProgressElement interface: existence and properties of interface object
+PASS HTMLMeterElement interface: existence and properties of interface object
+PASS HTMLFieldSetElement interface: existence and properties of interface object
+PASS HTMLLegendElement interface: existence and properties of interface object
+PASS ValidityState interface: existence and properties of interface object
+PASS FormDataEvent interface: existence and properties of interface object
+PASS HTMLDetailsElement interface: existence and properties of interface object
+PASS HTMLDialogElement interface: existence and properties of interface object
+PASS HTMLScriptElement interface: existence and properties of interface object
+PASS HTMLTemplateElement interface: existence and properties of interface object
+PASS HTMLSlotElement interface: existence and properties of interface object
+PASS HTMLCanvasElement interface: existence and properties of interface object
+PASS CanvasRenderingContext2D interface: existence and properties of interface object
+PASS CanvasGradient interface: existence and properties of interface object
+PASS CanvasGradient interface object length
+PASS CanvasGradient interface object name
+PASS CanvasGradient interface: existence and properties of interface prototype object
+PASS CanvasGradient interface: existence and properties of interface prototype object's "constructor" property
+PASS CanvasGradient interface: existence and properties of interface prototype object's @@unscopables property
+PASS CanvasGradient interface: operation addColorStop(double, DOMString)
+PASS CanvasPattern interface: existence and properties of interface object
+PASS CanvasPattern interface object length
+PASS CanvasPattern interface object name
+PASS CanvasPattern interface: existence and properties of interface prototype object
+PASS CanvasPattern interface: existence and properties of interface prototype object's "constructor" property
+PASS CanvasPattern interface: existence and properties of interface prototype object's @@unscopables property
+PASS CanvasPattern interface: operation setTransform(DOMMatrix2DInit)
+PASS TextMetrics interface: existence and properties of interface object
+PASS TextMetrics interface object length
+PASS TextMetrics interface object name
+PASS TextMetrics interface: existence and properties of interface prototype object
+PASS TextMetrics interface: existence and properties of interface prototype object's "constructor" property
+PASS TextMetrics interface: existence and properties of interface prototype object's @@unscopables property
+PASS TextMetrics interface: attribute width
+PASS TextMetrics interface: attribute actualBoundingBoxLeft
+PASS TextMetrics interface: attribute actualBoundingBoxRight
+PASS TextMetrics interface: attribute fontBoundingBoxAscent
+PASS TextMetrics interface: attribute fontBoundingBoxDescent
+PASS TextMetrics interface: attribute actualBoundingBoxAscent
+PASS TextMetrics interface: attribute actualBoundingBoxDescent
+PASS TextMetrics interface: attribute emHeightAscent
+PASS TextMetrics interface: attribute emHeightDescent
+FAIL TextMetrics interface: attribute hangingBaseline assert_true: The prototype object must have a property "hangingBaseline" expected true got false
+FAIL TextMetrics interface: attribute alphabeticBaseline assert_true: The prototype object must have a property "alphabeticBaseline" expected true got false
+FAIL TextMetrics interface: attribute ideographicBaseline assert_true: The prototype object must have a property "ideographicBaseline" expected true got false
+PASS ImageData interface: existence and properties of interface object
+PASS ImageData interface object length
+PASS ImageData interface object name
+PASS ImageData interface: existence and properties of interface prototype object
+PASS ImageData interface: existence and properties of interface prototype object's "constructor" property
+PASS ImageData interface: existence and properties of interface prototype object's @@unscopables property
+PASS ImageData interface: attribute width
+PASS ImageData interface: attribute height
+PASS ImageData interface: attribute data
+PASS Path2D interface: existence and properties of interface object
+PASS Path2D interface object length
+PASS Path2D interface object name
+PASS Path2D interface: existence and properties of interface prototype object
+PASS Path2D interface: existence and properties of interface prototype object's "constructor" property
+PASS Path2D interface: existence and properties of interface prototype object's @@unscopables property
+PASS Path2D interface: operation addPath(Path2D, DOMMatrix2DInit)
+PASS Path2D interface: operation closePath()
+PASS Path2D interface: operation moveTo(unrestricted double, unrestricted double)
+PASS Path2D interface: operation lineTo(unrestricted double, unrestricted double)
+PASS Path2D interface: operation quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS Path2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS Path2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS Path2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS Path2D interface: operation arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)
+PASS Path2D interface: operation ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)
+PASS ImageBitmapRenderingContext interface: existence and properties of interface object
+PASS ImageBitmapRenderingContext interface object length
+PASS ImageBitmapRenderingContext interface object name
+PASS ImageBitmapRenderingContext interface: existence and properties of interface prototype object
+PASS ImageBitmapRenderingContext interface: existence and properties of interface prototype object's "constructor" property
+PASS ImageBitmapRenderingContext interface: existence and properties of interface prototype object's @@unscopables property
+PASS ImageBitmapRenderingContext interface: attribute canvas
+PASS ImageBitmapRenderingContext interface: operation transferFromImageBitmap(ImageBitmap)
+PASS OffscreenCanvas interface: existence and properties of interface object
+PASS OffscreenCanvas interface object length
+PASS OffscreenCanvas interface object name
+PASS OffscreenCanvas interface: existence and properties of interface prototype object
+PASS OffscreenCanvas interface: existence and properties of interface prototype object's "constructor" property
+PASS OffscreenCanvas interface: existence and properties of interface prototype object's @@unscopables property
+PASS OffscreenCanvas interface: attribute width
+PASS OffscreenCanvas interface: attribute height
+PASS OffscreenCanvas interface: operation getContext(OffscreenRenderingContextId, any)
+PASS OffscreenCanvas interface: operation transferToImageBitmap()
+PASS OffscreenCanvas interface: operation convertToBlob(ImageEncodeOptions)
+PASS OffscreenCanvasRenderingContext2D interface: existence and properties of interface object
+PASS OffscreenCanvasRenderingContext2D interface object length
+PASS OffscreenCanvasRenderingContext2D interface object name
+PASS OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object
+PASS OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object's "constructor" property
+PASS OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object's @@unscopables property
+PASS OffscreenCanvasRenderingContext2D interface: operation commit()
+PASS OffscreenCanvasRenderingContext2D interface: attribute canvas
+PASS OffscreenCanvasRenderingContext2D interface: operation save()
+PASS OffscreenCanvasRenderingContext2D interface: operation restore()
+PASS OffscreenCanvasRenderingContext2D interface: operation scale(unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation rotate(unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation translate(unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation transform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+FAIL OffscreenCanvasRenderingContext2D interface: operation getTransform() assert_own_property: interface prototype object missing non-static operation expected property "getTransform" missing
+FAIL OffscreenCanvasRenderingContext2D interface: operation setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) assert_equals: property has wrong .length expected 0 but got 6
+FAIL OffscreenCanvasRenderingContext2D interface: operation setTransform(DOMMatrix2DInit) assert_equals: property has wrong .length expected 0 but got 6
+PASS OffscreenCanvasRenderingContext2D interface: operation resetTransform()
+PASS OffscreenCanvasRenderingContext2D interface: attribute globalAlpha
+PASS OffscreenCanvasRenderingContext2D interface: attribute globalCompositeOperation
+PASS OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingEnabled
+PASS OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingQuality
+PASS OffscreenCanvasRenderingContext2D interface: attribute strokeStyle
+PASS OffscreenCanvasRenderingContext2D interface: attribute fillStyle
+PASS OffscreenCanvasRenderingContext2D interface: operation createLinearGradient(double, double, double, double)
+PASS OffscreenCanvasRenderingContext2D interface: operation createRadialGradient(double, double, double, double, double, double)
+PASS OffscreenCanvasRenderingContext2D interface: operation createPattern(CanvasImageSource, DOMString)
+PASS OffscreenCanvasRenderingContext2D interface: attribute shadowOffsetX
+PASS OffscreenCanvasRenderingContext2D interface: attribute shadowOffsetY
+PASS OffscreenCanvasRenderingContext2D interface: attribute shadowBlur
+PASS OffscreenCanvasRenderingContext2D interface: attribute shadowColor
+PASS OffscreenCanvasRenderingContext2D interface: attribute filter
+PASS OffscreenCanvasRenderingContext2D interface: operation clearRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation fillRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation strokeRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation beginPath()
+PASS OffscreenCanvasRenderingContext2D interface: operation fill(CanvasFillRule)
+PASS OffscreenCanvasRenderingContext2D interface: operation fill(Path2D, CanvasFillRule)
+PASS OffscreenCanvasRenderingContext2D interface: operation stroke()
+PASS OffscreenCanvasRenderingContext2D interface: operation stroke(Path2D)
+PASS OffscreenCanvasRenderingContext2D interface: operation clip(CanvasFillRule)
+PASS OffscreenCanvasRenderingContext2D interface: operation clip(Path2D, CanvasFillRule)
+PASS OffscreenCanvasRenderingContext2D interface: operation isPointInPath(unrestricted double, unrestricted double, CanvasFillRule)
+PASS OffscreenCanvasRenderingContext2D interface: operation isPointInPath(Path2D, unrestricted double, unrestricted double, CanvasFillRule)
+PASS OffscreenCanvasRenderingContext2D interface: operation isPointInStroke(unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation isPointInStroke(Path2D, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation fillText(DOMString, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation strokeText(DOMString, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation measureText(DOMString)
+PASS OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation createImageData(long, long)
+PASS OffscreenCanvasRenderingContext2D interface: operation createImageData(ImageData)
+PASS OffscreenCanvasRenderingContext2D interface: operation getImageData(long, long, long, long)
+PASS OffscreenCanvasRenderingContext2D interface: operation putImageData(ImageData, long, long)
+PASS OffscreenCanvasRenderingContext2D interface: operation putImageData(ImageData, long, long, long, long, long, long)
+PASS OffscreenCanvasRenderingContext2D interface: attribute lineWidth
+PASS OffscreenCanvasRenderingContext2D interface: attribute lineCap
+PASS OffscreenCanvasRenderingContext2D interface: attribute lineJoin
+PASS OffscreenCanvasRenderingContext2D interface: attribute miterLimit
+PASS OffscreenCanvasRenderingContext2D interface: operation setLineDash([object Object])
+PASS OffscreenCanvasRenderingContext2D interface: operation getLineDash()
+PASS OffscreenCanvasRenderingContext2D interface: attribute lineDashOffset
+PASS OffscreenCanvasRenderingContext2D interface: attribute font
+PASS OffscreenCanvasRenderingContext2D interface: attribute textAlign
+PASS OffscreenCanvasRenderingContext2D interface: attribute textBaseline
+PASS OffscreenCanvasRenderingContext2D interface: attribute direction
+PASS OffscreenCanvasRenderingContext2D interface: operation closePath()
+PASS OffscreenCanvasRenderingContext2D interface: operation moveTo(unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation lineTo(unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)
+PASS OffscreenCanvasRenderingContext2D interface: operation arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)
+PASS OffscreenCanvasRenderingContext2D interface: operation ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)
+PASS CustomElementRegistry interface: existence and properties of interface object
+PASS ElementInternals interface: existence and properties of interface object
+PASS DataTransfer interface: existence and properties of interface object
+PASS DataTransferItemList interface: existence and properties of interface object
+PASS DataTransferItem interface: existence and properties of interface object
+PASS DragEvent interface: existence and properties of interface object
+PASS Window interface: existence and properties of interface object
+PASS BarProp interface: existence and properties of interface object
+PASS History interface: existence and properties of interface object
+PASS Location interface: existence and properties of interface object
+PASS PopStateEvent interface: existence and properties of interface object
+PASS HashChangeEvent interface: existence and properties of interface object
+PASS PageTransitionEvent interface: existence and properties of interface object
+PASS BeforeUnloadEvent interface: existence and properties of interface object
+PASS ApplicationCache interface: existence and properties of interface object
+PASS ErrorEvent interface: existence and properties of interface object
+PASS ErrorEvent interface object length
+PASS ErrorEvent interface object name
+PASS ErrorEvent interface: existence and properties of interface prototype object
+PASS ErrorEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS ErrorEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS ErrorEvent interface: attribute message
+PASS ErrorEvent interface: attribute filename
+PASS ErrorEvent interface: attribute lineno
+PASS ErrorEvent interface: attribute colno
+PASS ErrorEvent interface: attribute error
+PASS PromiseRejectionEvent interface: existence and properties of interface object
+PASS PromiseRejectionEvent interface object length
+PASS PromiseRejectionEvent interface object name
+PASS PromiseRejectionEvent interface: existence and properties of interface prototype object
+PASS PromiseRejectionEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS PromiseRejectionEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS PromiseRejectionEvent interface: attribute promise
+PASS PromiseRejectionEvent interface: attribute reason
+PASS Navigator interface: existence and properties of interface object
+PASS PluginArray interface: existence and properties of interface object
+PASS MimeTypeArray interface: existence and properties of interface object
+PASS Plugin interface: existence and properties of interface object
+PASS MimeType interface: existence and properties of interface object
+PASS ImageBitmap interface: existence and properties of interface object
+PASS ImageBitmap interface object length
+PASS ImageBitmap interface object name
+PASS ImageBitmap interface: existence and properties of interface prototype object
+PASS ImageBitmap interface: existence and properties of interface prototype object's "constructor" property
+PASS ImageBitmap interface: existence and properties of interface prototype object's @@unscopables property
+PASS ImageBitmap interface: attribute width
+PASS ImageBitmap interface: attribute height
+PASS ImageBitmap interface: operation close()
+PASS MessageEvent interface: existence and properties of interface object
+PASS MessageEvent interface object length
+PASS MessageEvent interface object name
+PASS MessageEvent interface: existence and properties of interface prototype object
+PASS MessageEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS MessageEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS MessageEvent interface: attribute data
+PASS MessageEvent interface: attribute origin
+PASS MessageEvent interface: attribute lastEventId
+PASS MessageEvent interface: attribute source
+PASS MessageEvent interface: attribute ports
+PASS MessageEvent interface: operation initMessageEvent(DOMString, boolean, boolean, any, USVString, DOMString, MessageEventSource, [object Object])
+PASS MessageEvent must be primary interface of new MessageEvent("message", { data: 5 })
+PASS Stringification of new MessageEvent("message", { data: 5 })
+PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "data" with the proper type
+PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "origin" with the proper type
+PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "lastEventId" with the proper type
+FAIL MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "source" with the proper type Unrecognized type WindowProxy
+PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "ports" with the proper type
+PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "initMessageEvent(DOMString, boolean, boolean, any, USVString, DOMString, MessageEventSource, [object Object])" with the proper type
+PASS MessageEvent interface: calling initMessageEvent(DOMString, boolean, boolean, any, USVString, DOMString, MessageEventSource, [object Object]) on new MessageEvent("message", { data: 5 }) with too few arguments must throw TypeError
+PASS EventSource interface: existence and properties of interface object
+PASS EventSource interface object length
+PASS EventSource interface object name
+PASS EventSource interface: existence and properties of interface prototype object
+PASS EventSource interface: existence and properties of interface prototype object's "constructor" property
+PASS EventSource interface: existence and properties of interface prototype object's @@unscopables property
+PASS EventSource interface: attribute url
+PASS EventSource interface: attribute withCredentials
+PASS EventSource interface: constant CONNECTING on interface object
+PASS EventSource interface: constant CONNECTING on interface prototype object
+PASS EventSource interface: constant OPEN on interface object
+PASS EventSource interface: constant OPEN on interface prototype object
+PASS EventSource interface: constant CLOSED on interface object
+PASS EventSource interface: constant CLOSED on interface prototype object
+PASS EventSource interface: attribute readyState
+PASS EventSource interface: attribute onopen
+PASS EventSource interface: attribute onmessage
+PASS EventSource interface: attribute onerror
+PASS EventSource interface: operation close()
+PASS WebSocket interface: existence and properties of interface object
+PASS WebSocket interface object length
+PASS WebSocket interface object name
+PASS WebSocket interface: existence and properties of interface prototype object
+PASS WebSocket interface: existence and properties of interface prototype object's "constructor" property
+PASS WebSocket interface: existence and properties of interface prototype object's @@unscopables property
+PASS WebSocket interface: attribute url
+PASS WebSocket interface: constant CONNECTING on interface object
+PASS WebSocket interface: constant CONNECTING on interface prototype object
+PASS WebSocket interface: constant OPEN on interface object
+PASS WebSocket interface: constant OPEN on interface prototype object
+PASS WebSocket interface: constant CLOSING on interface object
+PASS WebSocket interface: constant CLOSING on interface prototype object
+PASS WebSocket interface: constant CLOSED on interface object
+PASS WebSocket interface: constant CLOSED on interface prototype object
+PASS WebSocket interface: attribute readyState
+PASS WebSocket interface: attribute bufferedAmount
+PASS WebSocket interface: attribute onopen
+PASS WebSocket interface: attribute onerror
+PASS WebSocket interface: attribute onclose
+PASS WebSocket interface: attribute extensions
+PASS WebSocket interface: attribute protocol
+PASS WebSocket interface: operation close(unsigned short, USVString)
+PASS WebSocket interface: attribute onmessage
+PASS WebSocket interface: attribute binaryType
+PASS WebSocket interface: operation send(USVString)
+PASS WebSocket interface: operation send(Blob)
+PASS WebSocket interface: operation send(ArrayBuffer)
+PASS WebSocket interface: operation send(ArrayBufferView)
+PASS WebSocket must be primary interface of new WebSocket("ws://foo")
+PASS Stringification of new WebSocket("ws://foo")
+PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "url" with the proper type
+PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "CONNECTING" with the proper type
+PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "OPEN" with the proper type
+PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "CLOSING" with the proper type
+PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "CLOSED" with the proper type
+PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "readyState" with the proper type
+PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "bufferedAmount" with the proper type
+PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "onopen" with the proper type
+PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "onerror" with the proper type
+PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "onclose" with the proper type
+PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "extensions" with the proper type
+PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "protocol" with the proper type
+PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "close(unsigned short, USVString)" with the proper type
+PASS WebSocket interface: calling close(unsigned short, USVString) on new WebSocket("ws://foo") with too few arguments must throw TypeError
+PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "onmessage" with the proper type
+PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "binaryType" with the proper type
+PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "send(USVString)" with the proper type
+PASS WebSocket interface: calling send(USVString) on new WebSocket("ws://foo") with too few arguments must throw TypeError
+PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "send(Blob)" with the proper type
+PASS WebSocket interface: calling send(Blob) on new WebSocket("ws://foo") with too few arguments must throw TypeError
+PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "send(ArrayBuffer)" with the proper type
+PASS WebSocket interface: calling send(ArrayBuffer) on new WebSocket("ws://foo") with too few arguments must throw TypeError
+PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "send(ArrayBufferView)" with the proper type
+PASS WebSocket interface: calling send(ArrayBufferView) on new WebSocket("ws://foo") with too few arguments must throw TypeError
+PASS CloseEvent interface: existence and properties of interface object
+PASS CloseEvent interface object length
+PASS CloseEvent interface object name
+PASS CloseEvent interface: existence and properties of interface prototype object
+PASS CloseEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS CloseEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS CloseEvent interface: attribute wasClean
+PASS CloseEvent interface: attribute code
+PASS CloseEvent interface: attribute reason
+PASS CloseEvent must be primary interface of new CloseEvent("close")
+PASS Stringification of new CloseEvent("close")
+PASS CloseEvent interface: new CloseEvent("close") must inherit property "wasClean" with the proper type
+PASS CloseEvent interface: new CloseEvent("close") must inherit property "code" with the proper type
+PASS CloseEvent interface: new CloseEvent("close") must inherit property "reason" with the proper type
+PASS MessageChannel interface: existence and properties of interface object
+PASS MessageChannel interface object length
+PASS MessageChannel interface object name
+PASS MessageChannel interface: existence and properties of interface prototype object
+PASS MessageChannel interface: existence and properties of interface prototype object's "constructor" property
+PASS MessageChannel interface: existence and properties of interface prototype object's @@unscopables property
+PASS MessageChannel interface: attribute port1
+PASS MessageChannel interface: attribute port2
+PASS MessagePort interface: existence and properties of interface object
+PASS MessagePort interface object length
+PASS MessagePort interface object name
+PASS MessagePort interface: existence and properties of interface prototype object
+PASS MessagePort interface: existence and properties of interface prototype object's "constructor" property
+PASS MessagePort interface: existence and properties of interface prototype object's @@unscopables property
+PASS MessagePort interface: operation postMessage(any, [object Object])
+PASS MessagePort interface: operation postMessage(any, PostMessageOptions)
+PASS MessagePort interface: operation start()
+PASS MessagePort interface: operation close()
+PASS MessagePort interface: attribute onmessage
+PASS MessagePort interface: attribute onmessageerror
+PASS BroadcastChannel interface: existence and properties of interface object
+PASS BroadcastChannel interface object length
+PASS BroadcastChannel interface object name
+PASS BroadcastChannel interface: existence and properties of interface prototype object
+PASS BroadcastChannel interface: existence and properties of interface prototype object's "constructor" property
+PASS BroadcastChannel interface: existence and properties of interface prototype object's @@unscopables property
+PASS BroadcastChannel interface: attribute name
+PASS BroadcastChannel interface: operation postMessage(any)
+PASS BroadcastChannel interface: operation close()
+PASS BroadcastChannel interface: attribute onmessage
+PASS BroadcastChannel interface: attribute onmessageerror
+PASS WorkerGlobalScope interface: existence and properties of interface object
+PASS WorkerGlobalScope interface object length
+PASS WorkerGlobalScope interface object name
+PASS WorkerGlobalScope interface: existence and properties of interface prototype object
+PASS WorkerGlobalScope interface: existence and properties of interface prototype object's "constructor" property
+PASS WorkerGlobalScope interface: existence and properties of interface prototype object's @@unscopables property
+PASS WorkerGlobalScope interface: attribute self
+PASS WorkerGlobalScope interface: attribute location
+PASS WorkerGlobalScope interface: attribute navigator
+PASS WorkerGlobalScope interface: operation importScripts(USVString)
+PASS WorkerGlobalScope interface: attribute onerror
+PASS WorkerGlobalScope interface: attribute onlanguagechange
+FAIL WorkerGlobalScope interface: attribute onoffline assert_true: The prototype object must have a property "onoffline" expected true got false
+FAIL WorkerGlobalScope interface: attribute ononline assert_true: The prototype object must have a property "ononline" expected true got false
+PASS WorkerGlobalScope interface: attribute onrejectionhandled
+PASS WorkerGlobalScope interface: attribute onunhandledrejection
+PASS WorkerGlobalScope interface: attribute origin
+PASS WorkerGlobalScope interface: operation btoa(DOMString)
+PASS WorkerGlobalScope interface: operation atob(DOMString)
+PASS WorkerGlobalScope interface: operation setTimeout(TimerHandler, long, any)
+PASS WorkerGlobalScope interface: operation clearTimeout(long)
+PASS WorkerGlobalScope interface: operation setInterval(TimerHandler, long, any)
+PASS WorkerGlobalScope interface: operation clearInterval(long)
+PASS WorkerGlobalScope interface: operation queueMicrotask(VoidFunction)
+PASS WorkerGlobalScope interface: operation createImageBitmap(ImageBitmapSource, ImageBitmapOptions)
+PASS WorkerGlobalScope interface: operation createImageBitmap(ImageBitmapSource, long, long, long, long, ImageBitmapOptions)
+PASS DedicatedWorkerGlobalScope interface: existence and properties of interface object
+PASS DedicatedWorkerGlobalScope interface object length
+PASS DedicatedWorkerGlobalScope interface object name
+PASS DedicatedWorkerGlobalScope interface: existence and properties of interface prototype object
+PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to a new value via Object.setPrototypeOf should throw a TypeError
+PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to a new value via __proto__ should throw a TypeError
+PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to a new value via Reflect.setPrototypeOf should return false
+PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to its original value via Object.setPrototypeOf should not throw
+PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to its original value via __proto__ should not throw
+PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to its original value via Reflect.setPrototypeOf should return true
+PASS DedicatedWorkerGlobalScope interface: existence and properties of interface prototype object's "constructor" property
+PASS DedicatedWorkerGlobalScope interface: existence and properties of interface prototype object's @@unscopables property
+PASS DedicatedWorkerGlobalScope interface: attribute name
+PASS DedicatedWorkerGlobalScope interface: operation postMessage(any, [object Object])
+PASS DedicatedWorkerGlobalScope interface: operation postMessage(any, PostMessageOptions)
+PASS DedicatedWorkerGlobalScope interface: operation close()
+PASS DedicatedWorkerGlobalScope interface: attribute onmessage
+PASS DedicatedWorkerGlobalScope interface: attribute onmessageerror
+FAIL DedicatedWorkerGlobalScope interface: operation requestAnimationFrame(FrameRequestCallback) assert_own_property: global object missing non-static operation expected property "requestAnimationFrame" missing
+FAIL DedicatedWorkerGlobalScope interface: operation cancelAnimationFrame(unsigned long) assert_own_property: global object missing non-static operation expected property "cancelAnimationFrame" missing
+PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via Object.setPrototypeOf should throw a TypeError
+PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via __proto__ should throw a TypeError
+PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via Reflect.setPrototypeOf should return false
+PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via Object.setPrototypeOf should not throw
+PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via __proto__ should not throw
+PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via Reflect.setPrototypeOf should return true
+PASS DedicatedWorkerGlobalScope must be primary interface of self
+PASS Stringification of self
+PASS DedicatedWorkerGlobalScope interface: self must inherit property "name" with the proper type
+PASS DedicatedWorkerGlobalScope interface: self must inherit property "postMessage(any, [object Object])" with the proper type
+PASS DedicatedWorkerGlobalScope interface: calling postMessage(any, [object Object]) on self with too few arguments must throw TypeError
+PASS DedicatedWorkerGlobalScope interface: self must inherit property "postMessage(any, PostMessageOptions)" with the proper type
+PASS DedicatedWorkerGlobalScope interface: calling postMessage(any, PostMessageOptions) on self with too few arguments must throw TypeError
+PASS DedicatedWorkerGlobalScope interface: self must inherit property "close()" with the proper type
+PASS DedicatedWorkerGlobalScope interface: self must inherit property "onmessage" with the proper type
+PASS DedicatedWorkerGlobalScope interface: self must inherit property "onmessageerror" with the proper type
+FAIL DedicatedWorkerGlobalScope interface: self must inherit property "requestAnimationFrame(FrameRequestCallback)" with the proper type assert_own_property: expected property "requestAnimationFrame" missing
+FAIL DedicatedWorkerGlobalScope interface: calling requestAnimationFrame(FrameRequestCallback) on self with too few arguments must throw TypeError assert_own_property: expected property "requestAnimationFrame" missing
+FAIL DedicatedWorkerGlobalScope interface: self must inherit property "cancelAnimationFrame(unsigned long)" with the proper type assert_own_property: expected property "cancelAnimationFrame" missing
+FAIL DedicatedWorkerGlobalScope interface: calling cancelAnimationFrame(unsigned long) on self with too few arguments must throw TypeError assert_own_property: expected property "cancelAnimationFrame" missing
+PASS WorkerGlobalScope interface: self must inherit property "self" with the proper type
+PASS WorkerGlobalScope interface: self must inherit property "location" with the proper type
+PASS WorkerGlobalScope interface: self must inherit property "navigator" with the proper type
+PASS WorkerGlobalScope interface: self must inherit property "importScripts(USVString)" with the proper type
+PASS WorkerGlobalScope interface: calling importScripts(USVString) on self with too few arguments must throw TypeError
+PASS WorkerGlobalScope interface: self must inherit property "onerror" with the proper type
+PASS WorkerGlobalScope interface: self must inherit property "onlanguagechange" with the proper type
+FAIL WorkerGlobalScope interface: self must inherit property "onoffline" with the proper type assert_inherits: property "onoffline" not found in prototype chain
+FAIL WorkerGlobalScope interface: self must inherit property "ononline" with the proper type assert_inherits: property "ononline" not found in prototype chain
+PASS WorkerGlobalScope interface: self must inherit property "onrejectionhandled" with the proper type
+PASS WorkerGlobalScope interface: self must inherit property "onunhandledrejection" with the proper type
+PASS WorkerGlobalScope interface: self must inherit property "origin" with the proper type
+PASS WorkerGlobalScope interface: self must inherit property "btoa(DOMString)" with the proper type
+PASS WorkerGlobalScope interface: calling btoa(DOMString) on self with too few arguments must throw TypeError
+PASS WorkerGlobalScope interface: self must inherit property "atob(DOMString)" with the proper type
+PASS WorkerGlobalScope interface: calling atob(DOMString) on self with too few arguments must throw TypeError
+PASS WorkerGlobalScope interface: self must inherit property "setTimeout(TimerHandler, long, any)" with the proper type
+PASS WorkerGlobalScope interface: calling setTimeout(TimerHandler, long, any) on self with too few arguments must throw TypeError
+PASS WorkerGlobalScope interface: self must inherit property "clearTimeout(long)" with the proper type
+PASS WorkerGlobalScope interface: calling clearTimeout(long) on self with too few arguments must throw TypeError
+PASS WorkerGlobalScope interface: self must inherit property "setInterval(TimerHandler, long, any)" with the proper type
+PASS WorkerGlobalScope interface: calling setInterval(TimerHandler, long, any) on self with too few arguments must throw TypeError
+PASS WorkerGlobalScope interface: self must inherit property "clearInterval(long)" with the proper type
+PASS WorkerGlobalScope interface: calling clearInterval(long) on self with too few arguments must throw TypeError
+PASS WorkerGlobalScope interface: self must inherit property "queueMicrotask(VoidFunction)" with the proper type
+PASS WorkerGlobalScope interface: calling queueMicrotask(VoidFunction) on self with too few arguments must throw TypeError
+PASS WorkerGlobalScope interface: self must inherit property "createImageBitmap(ImageBitmapSource, ImageBitmapOptions)" with the proper type
+PASS WorkerGlobalScope interface: calling createImageBitmap(ImageBitmapSource, ImageBitmapOptions) on self with too few arguments must throw TypeError
+PASS WorkerGlobalScope interface: self must inherit property "createImageBitmap(ImageBitmapSource, long, long, long, long, ImageBitmapOptions)" with the proper type
+PASS WorkerGlobalScope interface: calling createImageBitmap(ImageBitmapSource, long, long, long, long, ImageBitmapOptions) on self with too few arguments must throw TypeError
+PASS SharedWorkerGlobalScope interface: existence and properties of interface object
+PASS Worker interface: existence and properties of interface object
+PASS Worker interface object length
+PASS Worker interface object name
+PASS Worker interface: existence and properties of interface prototype object
+PASS Worker interface: existence and properties of interface prototype object's "constructor" property
+PASS Worker interface: existence and properties of interface prototype object's @@unscopables property
+PASS Worker interface: operation terminate()
+PASS Worker interface: operation postMessage(any, [object Object])
+PASS Worker interface: operation postMessage(any, PostMessageOptions)
+PASS Worker interface: attribute onmessage
+FAIL Worker interface: attribute onmessageerror assert_true: The prototype object must have a property "onmessageerror" expected true got false
+PASS Worker interface: attribute onerror
+FAIL SharedWorker interface: existence and properties of interface object assert_own_property: self does not have own property "SharedWorker" expected property "SharedWorker" missing
+FAIL SharedWorker interface object length assert_own_property: self does not have own property "SharedWorker" expected property "SharedWorker" missing
+FAIL SharedWorker interface object name assert_own_property: self does not have own property "SharedWorker" expected property "SharedWorker" missing
+FAIL SharedWorker interface: existence and properties of interface prototype object assert_own_property: self does not have own property "SharedWorker" expected property "SharedWorker" missing
+FAIL SharedWorker interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "SharedWorker" expected property "SharedWorker" missing
+FAIL SharedWorker interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "SharedWorker" expected property "SharedWorker" missing
+FAIL SharedWorker interface: attribute port assert_own_property: self does not have own property "SharedWorker" expected property "SharedWorker" missing
+FAIL SharedWorker interface: attribute onerror assert_own_property: self does not have own property "SharedWorker" expected property "SharedWorker" missing
+PASS WorkerNavigator interface: existence and properties of interface object
+PASS WorkerNavigator interface object length
+PASS WorkerNavigator interface object name
+PASS WorkerNavigator interface: existence and properties of interface prototype object
+PASS WorkerNavigator interface: existence and properties of interface prototype object's "constructor" property
+PASS WorkerNavigator interface: existence and properties of interface prototype object's @@unscopables property
+PASS WorkerNavigator interface: attribute appCodeName
+PASS WorkerNavigator interface: attribute appName
+PASS WorkerNavigator interface: attribute appVersion
+PASS WorkerNavigator interface: attribute platform
+PASS WorkerNavigator interface: attribute product
+PASS WorkerNavigator interface: member productSub
+PASS WorkerNavigator interface: attribute userAgent
+PASS WorkerNavigator interface: member vendor
+PASS WorkerNavigator interface: member vendorSub
+PASS WorkerNavigator interface: member taintEnabled
+PASS WorkerNavigator interface: member oscpu
+PASS WorkerNavigator interface: attribute language
+PASS WorkerNavigator interface: attribute languages
+PASS WorkerNavigator interface: attribute onLine
+PASS WorkerNavigator interface: attribute hardwareConcurrency
+PASS WorkerNavigator must be primary interface of self.navigator
+PASS Stringification of self.navigator
+PASS WorkerNavigator interface: self.navigator must inherit property "appCodeName" with the proper type
+PASS WorkerNavigator interface: self.navigator must inherit property "appName" with the proper type
+PASS WorkerNavigator interface: self.navigator must inherit property "appVersion" with the proper type
+PASS WorkerNavigator interface: self.navigator must inherit property "platform" with the proper type
+PASS WorkerNavigator interface: self.navigator must inherit property "product" with the proper type
+PASS WorkerNavigator interface: self.navigator must not have property "productSub"
+PASS WorkerNavigator interface: self.navigator must inherit property "userAgent" with the proper type
+PASS WorkerNavigator interface: self.navigator must not have property "vendor"
+PASS WorkerNavigator interface: self.navigator must not have property "vendorSub"
+PASS WorkerNavigator interface: self.navigator must not have property "taintEnabled"
+PASS WorkerNavigator interface: self.navigator must not have property "oscpu"
+PASS WorkerNavigator interface: self.navigator must inherit property "language" with the proper type
+PASS WorkerNavigator interface: self.navigator must inherit property "languages" with the proper type
+PASS WorkerNavigator interface: self.navigator must inherit property "onLine" with the proper type
+PASS WorkerNavigator interface: self.navigator must inherit property "hardwareConcurrency" with the proper type
+PASS WorkerLocation interface: existence and properties of interface object
+PASS WorkerLocation interface object length
+PASS WorkerLocation interface object name
+PASS WorkerLocation interface: existence and properties of interface prototype object
+PASS WorkerLocation interface: existence and properties of interface prototype object's "constructor" property
+PASS WorkerLocation interface: existence and properties of interface prototype object's @@unscopables property
+PASS WorkerLocation interface: attribute href
+PASS WorkerLocation interface: stringifier
+PASS WorkerLocation interface: attribute origin
+PASS WorkerLocation interface: attribute protocol
+PASS WorkerLocation interface: attribute host
+PASS WorkerLocation interface: attribute hostname
+PASS WorkerLocation interface: attribute port
+PASS WorkerLocation interface: attribute pathname
+PASS WorkerLocation interface: attribute search
+PASS WorkerLocation interface: attribute hash
+PASS WorkerLocation must be primary interface of self.location
+PASS Stringification of self.location
+PASS WorkerLocation interface: self.location must inherit property "href" with the proper type
+PASS WorkerLocation interface: self.location must inherit property "origin" with the proper type
+PASS WorkerLocation interface: self.location must inherit property "protocol" with the proper type
+PASS WorkerLocation interface: self.location must inherit property "host" with the proper type
+PASS WorkerLocation interface: self.location must inherit property "hostname" with the proper type
+PASS WorkerLocation interface: self.location must inherit property "port" with the proper type
+PASS WorkerLocation interface: self.location must inherit property "pathname" with the proper type
+PASS WorkerLocation interface: self.location must inherit property "search" with the proper type
+PASS WorkerLocation interface: self.location must inherit property "hash" with the proper type
+PASS Storage interface: existence and properties of interface object
+PASS StorageEvent interface: existence and properties of interface object
+PASS HTMLMarqueeElement interface: existence and properties of interface object
+PASS HTMLFrameSetElement interface: existence and properties of interface object
+PASS HTMLFrameElement interface: existence and properties of interface object
+PASS HTMLDirectoryElement interface: existence and properties of interface object
+PASS HTMLFontElement interface: existence and properties of interface object
+PASS External interface: existence and properties of interface object
+PASS NodeList interface: existence and properties of interface object
+PASS HTMLCollection interface: existence and properties of interface object
+PASS Node interface: existence and properties of interface object
+PASS Document interface: existence and properties of interface object
+PASS DocumentFragment interface: existence and properties of interface object
+PASS ShadowRoot interface: existence and properties of interface object
+PASS Element interface: existence and properties of interface object
+PASS DOMTokenList interface: existence and properties of interface object
+PASS UIEvent interface: existence and properties of interface object
+PASS MouseEvent interface: existence and properties of interface object
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-img-element/invalid-src-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-img-element/invalid-src-expected.txt
deleted file mode 100644
index 4b8f9770..0000000
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-img-element/invalid-src-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-This is a testharness.js-based test.
-FAIL src="http://[" assert_true: loadend event fired expected true got false
-PASS src=""
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-img-element/invalid-src.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-img-element/invalid-src.html
index c3c57ee3..37ea8ce7 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-img-element/invalid-src.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-img-element/invalid-src.html
@@ -9,41 +9,23 @@
 async_test(function(t) {
     var img = document.getElementById("brokenurl");
     img.src = "http://[";
-    var errorevent = false;
-    var loadendevent = false;
 
     // The errors should be queued in the event loop, so they should only trigger
     // after this block of code finishes, not during the img.src setter itself
     img.addEventListener('error', t.step_func(function() {
-        assert_false(loadendevent, "loadend should fire after error");
-        errorevent = true;
-        t.step_timeout(t.step_func_done(function() {
-            assert_true(loadendevent, "loadend event fired");
-        }), 0);
-    }));
-    img.addEventListener('loadend', t.step_func(function() {
-        assert_true(errorevent, "error event fired");
-        loadendevent = true;
+        t.step_timeout(t.step_func_done(), 0);
     }));
 }, 'src="http://["');
 
 async_test(function(t) {
     var img = document.getElementById("emptysrc");
     img.src = "";
-    var loadendevent = false;
 
     // Setting src to empty string triggers only error event.
     // The errors should be queued in the event loop, so they should only trigger
     // after this block of code finishes, not during the img.src setter itself
     img.addEventListener('error', t.step_func(function() {
-        // Queue this check in the event loop to check there is no loadend event
-        // fired.
-        t.step_timeout(t.step_func_done(function() {
-            assert_false(loadendevent, "loadend event should not be fired");
-        }), 0);
-    }));
-    img.addEventListener('loadend', t.step_func(function() {
-        loadendevent = true;
+        t.step_timeout(t.step_func_done(), 0);
     }));
 }, 'src=""');
 
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/autofocus-on-stable-document.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/autofocus-on-stable-document.html
new file mode 100644
index 0000000..47e3e3f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/autofocus-on-stable-document.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+
+<body>
+<script>
+'use strict';
+
+promise_test(async t => {
+  await waitForLoad(window);
+  await timeOut(t, 1000);
+  let element = document.createElement('input');
+  element.autofocus = true;
+  document.body.appendChild(element);
+  await waitUntilStableAutofocusState();
+  assert_equals(document.activeElement, element);
+}, 'Autofocus should work if an element with autofocus is inserted into a ' +
+    'document which was loaded some time ago.');
+</script>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first-reconnected-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first-reconnected-expected.txt
new file mode 100644
index 0000000..b056ed0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first-reconnected-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL The second autofocus element wins if the first autofocus element was disconnected and reconnected before flushing the autofocus candidates. assert_equals: expected Element node <input autofocus="" id="i2"></input> but got Element node <input autofocus="" id="i1"></input>
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first-reconnected.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first-reconnected.html
new file mode 100644
index 0000000..99ee9198
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first-reconnected.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+
+<input autofocus id="i1">
+<input autofocus id="i2">
+<script>
+"use strict";
+
+promise_test(async () => {
+  const input1 = document.querySelector("#i1");
+  const input2 = document.querySelector("#i2");
+  input1.remove();
+  input2.parentNode.insertBefore(input1, input2);
+
+  await waitUntilStableAutofocusState();
+  assert_equals(document.activeElement, input2);
+}, 'The second autofocus element wins if the first autofocus element was ' +
+   'disconnected and reconnected before flushing the autofocus candidates.');
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first-when-later-but-before-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first-when-later-but-before-expected.txt
index 587c981..535ad230 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first-when-later-but-before-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first-when-later-but-before-expected.txt
@@ -1,4 +1,4 @@
 This is a testharness.js-based test.
-FAIL The temporally first autofocus in the document wins, even if an element is inserted later that is previous in the document tree Uncaught Error: assert_equals: expected Element node <input autofocus=""></input> but got Element node <input autofocus=""></input>
+FAIL The temporally first autofocus in the document wins, even if an element is inserted later that is previous in the document tree. assert_equals: expected Element node <input autofocus=""></input> but got Element node <input autofocus=""></input>
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first-when-later-but-before.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first-when-later-but-before.html
index 0267f46..f3614634 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first-when-later-but-before.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first-when-later-but-before.html
@@ -6,22 +6,21 @@
 
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
 
 <input autofocus>
 
 <script>
 "use strict";
 
-const input1 = document.querySelector("input");
+promise_test(async () => {
+  const input1 = document.querySelector("input");
+  const input2 = document.createElement("input");
+  input2.autofocus = true;
+  document.body.prepend(input2);
 
-const input2 = document.createElement("input");
-input2.autofocus = true;
-document.body.prepend(input2);
-
-step_timeout(() => {
-    assert_equals(document.activeElement, input1);
-    assert_not_equals(document.activeElement, input2);
-
-    done();
-}, 100);
+  await waitUntilStableAutofocusState();
+  assert_equals(document.activeElement, input1);
+  assert_not_equals(document.activeElement, input2);
+}, 'The temporally first autofocus in the document wins, even if an element is inserted later that is previous in the document tree.');
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first-when-later.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first-when-later.html
index 9ced437f..1d64b86 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first-when-later.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first-when-later.html
@@ -6,22 +6,21 @@
 
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
 
 <input autofocus>
 
 <script>
 "use strict";
 
-const input1 = document.querySelector("input");
+promise_test(async () => {
+  const input1 = document.querySelector("input");
+  const input2 = document.createElement("input");
+  input2.autofocus = true;
+  document.body.appendChild(input2);
 
-const input2 = document.createElement("input");
-input2.autofocus = true;
-document.body.appendChild(input2);
-
-step_timeout(() => {
-    assert_equals(document.activeElement, input1);
-    assert_not_equals(document.activeElement, input2);
-
-    done();
-}, 100);
+  await waitUntilStableAutofocusState();
+  assert_equals(document.activeElement, input1);
+  assert_not_equals(document.activeElement, input2);
+}, 'The first autofocus in the document wins, even if elements are inserted later.');
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first.html
index de56cf7..02ebb79 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/first.html
@@ -6,6 +6,7 @@
 
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
 
 <input autofocus>
 <input autofocus>
@@ -13,12 +14,11 @@
 <script>
 "use strict";
 
-const [input1, input2] = document.querySelectorAll("input");
+promise_test(async () => {
+  const [input1, input2] = document.querySelectorAll("input");
 
-step_timeout(() => {
+  await waitUntilStableAutofocusState();
   assert_equals(document.activeElement, input1);
   assert_not_equals(document.activeElement, input2);
-
-  done();
-}, 100);
+}, 'The first autofocus element in the document should win.');
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/focusable-area-in-top-document-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/focusable-area-in-top-document-expected.txt
new file mode 100644
index 0000000..f8760c9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/focusable-area-in-top-document-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL If topDocument's focused area is not topDocument, autofocus is not processed. assert_equals: activeElement should not be changed expected Element node <iframe srcdoc="<input><script>document.querySelector('in... but got Element node <input autofocus=""></input>
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/focusable-area-in-top-document.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/focusable-area-in-top-document.html
new file mode 100644
index 0000000..327040e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/focusable-area-in-top-document.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+
+<iframe srcdoc="<input><script>document.querySelector('input').focus();</script>"></iframe>
+
+<script>
+'use strict';
+
+promise_test(async () => {
+  await waitForLoad(window);
+  let iframe = document.querySelector('iframe');
+  assert_equals(document.activeElement, iframe, 'Prereq: IFRAME should be focused');
+
+  let input = document.createElement('input');
+  input.autofocus = true;
+  document.body.appendChild(input);
+
+  await waitUntilStableAutofocusState();
+  assert_equals(document.activeElement, iframe, 'activeElement should not be changed');
+  assert_not_equals(document.activeElement, input);
+}, 'If topDocument\'s focused area is not topDocument, autofocus is not processed.');
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/no-sandboxed-automatic-features.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/no-sandboxed-automatic-features.html
new file mode 100644
index 0000000..991373d3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/no-sandboxed-automatic-features.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+
+<iframe sandbox srcdoc="<input autofocus>"></iframe>
+
+<script>
+'use strict';
+
+promise_test(async () => {
+  await waitForLoad(window);
+  await waitUntilStableAutofocusState();
+  assert_not_equals(document.activeElement, document.querySelector('iframe'));
+}, 'If the sandboxed automatic features browsing context flag is set, ' +
+    'autofocus in the browsing context should not be handled.');
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/queue-non-focusable.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/queue-non-focusable.html
new file mode 100644
index 0000000..e3b5560
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/queue-non-focusable.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+
+<textarea autofocus disabled></textarea>
+<select autofocus></select>
+
+<script>
+'use strict';
+
+promise_test(async () => {
+  const [textarea, select] = document.querySelectorAll('[autofocus]');
+  textarea.disabled = false;
+
+  await waitUntilStableAutofocusState();
+  assert_equals(document.activeElement, textarea);
+  assert_not_equals(document.activeElement, select);
+}, 'If the first autofocus element is not focusable, but becomes focusable before a frame, it should be focused.');
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/resources/erase-first.css b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/resources/erase-first.css
new file mode 100644
index 0000000..bbbcf799
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/resources/erase-first.css
@@ -0,0 +1,3 @@
+#first {
+  display: none;
+}
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/resources/frame-with-autofocus-element.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/resources/frame-with-autofocus-element.html
new file mode 100644
index 0000000..985cba4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/resources/frame-with-autofocus-element.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<body>
+<div id="anchor1"></div>
+<input autofocus>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/resources/moving-autofocus-to-parent.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/resources/moving-autofocus-to-parent.html
new file mode 100644
index 0000000..fc6c298
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/resources/moving-autofocus-to-parent.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<body>
+<script>
+const input = document.createElement('input');
+input.autofocus = true;
+document.body.appendChild(input);
+input.autofocus = false;
+window.opener.document.body.appendChild(input);
+</script>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/resources/utils.js b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/resources/utils.js
new file mode 100644
index 0000000..0eeb5a9f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/resources/utils.js
@@ -0,0 +1,42 @@
+'use strict';
+
+function waitForEvent(target, type, options) {
+  return new Promise((resolve, reject) => {
+    target.addEventListener(type, resolve, options);
+  });
+}
+
+function waitForAnimationFrame(w) {
+  let targetWindow = w || window;
+  return new Promise((resolve, reject) => {
+    targetWindow.requestAnimationFrame(resolve);
+  });
+}
+
+function waitForEvent(target, type, options) {
+  return new Promise((resolve, reject) => {
+    target.addEventListener(type, resolve, options);
+  });
+}
+
+function waitForLoad(target) {
+  return waitForEvent(target, 'load');
+}
+
+function timeOut(test, ms) {
+  return new Promise((resolve, reject) => {
+    test.step_timeout(resolve, ms);
+  });
+}
+
+// If an element with autofocus is connected to a document and this function
+// is called, the autofocus result is deterministic after returning from the
+// function.
+// Exception: If the document has script-blocking style sheets, this function
+// doesn't work well.
+async function waitUntilStableAutofocusState(w) {
+  let targetWindow = w || window;
+  // Awaiting two animation frames is an easy way to determine autofocus state.
+  await waitForAnimationFrame(targetWindow);
+  await waitForAnimationFrame(targetWindow);
+}
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/skip-another-top-level-browsing-context.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/skip-another-top-level-browsing-context.html
new file mode 100644
index 0000000..d392b90
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/skip-another-top-level-browsing-context.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+<script>
+'use strict';
+
+promise_test(async () => {
+  let w = window.open('resources/moving-autofocus-to-parent.html');
+  await waitForLoad(w);
+  await waitUntilStableAutofocusState(w);
+  assert_equals(w.document.activeElement, w.document.body);
+  assert_equals(document.activeElement, document.body);
+  w.close();
+}, 'Autofocus elements queued in another top-level browsing context\'s ' +
+   'documents should be skipped.');
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/skip-document-with-fragment-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/skip-document-with-fragment-expected.txt
new file mode 100644
index 0000000..699bc67
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/skip-document-with-fragment-expected.txt
@@ -0,0 +1,9 @@
+This is a testharness.js-based test.
+FAIL Autofocus elements in iframed documents with URL fragments should be skipped. assert_equals: Autofocus elements in iframes should not be focused. expected Element node <body><iframe src="resources/frame-with-autofocus-element... but got Element node <iframe src="resources/frame-with-autofocus-element.html#...
+FAIL Autofocus elements in top-level browsing context's documents with URI fragments should be skipped. assert_equals: expected Element node <body>
+<div id="anchor1"></div>
+<input autofocus="">
+
+</b... but got Element node <input autofocus=""></input>
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/skip-document-with-fragment.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/skip-document-with-fragment.html
new file mode 100644
index 0000000..a4301e13
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/skip-document-with-fragment.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+
+<iframe src="resources/frame-with-autofocus-element.html#anchor1"></iframe>
+<iframe src="resources/frame-with-autofocus-element.html#non-existent-anchor"></iframe>
+
+<script>
+'use strict';
+
+promise_test(async () => {
+  await waitForLoad(window);
+  await waitUntilStableAutofocusState();
+  assert_equals(document.activeElement, document.body,
+      'Autofocus elements in iframes should not be focused.');
+
+  let input = document.createElement('input');
+  input.autofocus = true;
+  document.body.appendChild(input);
+  await waitUntilStableAutofocusState();
+  assert_equals(document.activeElement, input);
+}, 'Autofocus elements in iframed documents with URL fragments should be skipped.');
+
+promise_test(async () => {
+  let w = window.open('resources/frame-with-autofocus-element.html#xpointer(//body)');
+  await waitForLoad(w);
+  await waitUntilStableAutofocusState(w);
+  assert_equals(w.document.activeElement, w.document.body);
+  w.close();
+}, 'Autofocus elements in top-level browsing context\'s documents with URI fragments should be skipped.');
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/skip-non-focusable-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/skip-non-focusable-expected.txt
new file mode 100644
index 0000000..eaeff36a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/skip-non-focusable-expected.txt
@@ -0,0 +1,5 @@
+This is a testharness.js-based test.
+FAIL Non-focusable autofocus element is skipped. assert_equals: expected Element node <select autofocus=""></select> but got Element node <body><textarea autofocus="" disabled=""></textarea>
+<sel...
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/skip-non-focusable.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/skip-non-focusable.html
new file mode 100644
index 0000000..008371d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/skip-non-focusable.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+
+<textarea autofocus disabled></textarea>
+<select autofocus></select>
+
+<script>
+'use strict';
+
+promise_test(async () => {
+  const [textarea, select] = document.querySelectorAll('[autofocus]');
+
+  await waitUntilStableAutofocusState();
+  assert_not_equals(document.activeElement, textarea);
+  assert_equals(document.activeElement, select);
+}, 'Non-focusable autofocus element is skipped.');
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/skip-not-fully-active.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/skip-not-fully-active.html
new file mode 100644
index 0000000..32008b30
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/skip-not-fully-active.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+
+<iframe srcdoc="<input autofocus><script>window.frameElement.remove();</script>"></iframe>
+
+<script>
+'use strict';
+
+promise_test(async () => {
+  let iframe = document.querySelector('iframe');
+  let iframeDocument = iframe.contentDocument;
+  await waitForLoad(window);
+  assert_not_equals(document.activeElement, iframe);
+  assert_equals(iframeDocument.activeElement, iframeDocument.body);
+}, 'Autofocus element in not-fully-active document should be skipped.');
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/spin-by-blocking-style-sheet.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/spin-by-blocking-style-sheet.html
new file mode 100644
index 0000000..22a4c35
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/spin-by-blocking-style-sheet.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+<link rel="stylesheet" href="resources/erase-first.css?pipe=trickle(d1)">
+
+<input id="first" autofocus>
+<input id="second" autofocus>
+
+<script>
+'use strict';
+
+promise_test(async () => {
+  await waitForEvent(document.body, 'focus', {capture:true});
+  assert_equals(document.activeElement.id, 'second');
+}, 'Script-blocking style sheet should pause flushing autofocus candidates.');
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/supported-elements-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/supported-elements-expected.txt
new file mode 100644
index 0000000..ad7ebdf
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/supported-elements-expected.txt
@@ -0,0 +1,6 @@
+This is a testharness.js-based test.
+FAIL Contenteditable element should support autofocus assert_equals: expected "DIV" but got "BODY"
+FAIL Element with tabindex should support autofocus assert_equals: expected "SPAN" but got "BODY"
+PASS Non-HTMLElement should not support autofocus
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/supported-elements.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/supported-elements.html
new file mode 100644
index 0000000..398577e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/supported-elements.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+<script>
+"use strict";
+
+promise_test(async t => {
+  let w = window.open('/common/blank.html');
+  await waitForLoad(w);
+  t.add_cleanup(() => { w.close(); });
+  w.document.body.innerHTML = '<div contenteditable=true autofocus></div>';
+  await waitUntilStableAutofocusState(w);
+  assert_equals(w.document.activeElement.tagName, 'DIV');
+}, 'Contenteditable element should support autofocus');
+
+promise_test(async t => {
+  let w = window.open('/common/blank.html');
+  await waitForLoad(w);
+  t.add_cleanup(() => { w.close(); });
+  w.document.body.innerHTML = '<span tabindex=0></span>';
+  await waitUntilStableAutofocusState(w);
+  assert_equals(w.document.activeElement.tagName, 'SPAN');
+}, 'Element with tabindex should support autofocus');
+
+promise_test(async t => {
+  let w = window.open('/common/blank.html');
+  await waitForLoad(w);
+  t.add_cleanup(() => { w.close(); });
+  let element = w.document.createElementNS('uri1', 'prefix:local');
+  element.setAttribute('autofocus', '');
+  w.document.body.appendChild(element);
+  await waitUntilStableAutofocusState(w);
+  assert_equals(w.document.activeElement.tagName, 'BODY');
+}, 'Non-HTMLElement should not support autofocus');
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/update-the-rendering-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/update-the-rendering-expected.txt
new file mode 100644
index 0000000..5f907cc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/update-the-rendering-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL "Flush autofocus candidates" should be happen after the first animation frame callbacks, and before a resize event in the next iteration of window event loop. assert_array_equals: lengths differ, expected 3 got 2
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/update-the-rendering.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/update-the-rendering.html
new file mode 100644
index 0000000..afaf0926
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/autofocus/update-the-rendering.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<link rel="help" href="https://html.spec.whatwg.org/C/#update-the-rendering">
+
+<body>
+<script>
+'use strict';
+
+async_test(t => {
+  t.events = [];
+
+  let iframe = document.createElement('iframe');
+  iframe.addEventListener('load', t.step_func(() => {
+    let w = iframe.contentWindow;
+    w.requestAnimationFrame(t.step_func(() => {
+      t.events.push('animationFrame');
+      w.requestAnimationFrame(t.step_func(() => {
+        t.events.push('animationFrame-should-not-be-recorded');
+      }));
+    }));
+    let element = w.document.createElement('input');
+    element.autofocus = true;
+    element.addEventListener('focus', t.step_func(() => {
+      t.events.push('autofocus');
+      iframe.style.width = '71px';
+    }));
+
+    w.addEventListener('resize', t.step_func_done(() => {
+      t.events.push('resize');
+      assert_array_equals(t.events, ['animationFrame', 'autofocus', 'resize']);
+    }));
+
+    w.document.body.appendChild(element);
+  }));
+  document.body.appendChild(iframe);
+}, '"Flush autofocus candidates" should be happen after the first animation ' +
+    'frame callbacks, and before a resize event in the next iteration of ' +
+    'window event loop.');
+</script>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-all-global-events-expected.txt b/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-all-global-events-expected.txt
index 3ef65dce..d3689768 100644
--- a/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-all-global-events-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-all-global-events-expected.txt
@@ -1,6 +1,309 @@
 This is a testharness.js-based test.
-FAIL GlobalEventHandlers Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list
+Found 305 tests; 297 PASS, 8 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS onabort: must be on the appropriate locations for GlobalEventHandlers
+PASS onabort: the default value must be null
+PASS onabort: the content attribute must be compiled into a function as the corresponding property
+PASS onabort: the content attribute must execute when an event is dispatched
+PASS onabort: dispatching an Event at a <meta> element must trigger element.onabort
+PASS onauxclick: must be on the appropriate locations for GlobalEventHandlers
+PASS onauxclick: the default value must be null
+PASS onauxclick: the content attribute must be compiled into a function as the corresponding property
+PASS onauxclick: the content attribute must execute when an event is dispatched
+PASS onauxclick: dispatching an Event at a <meta> element must trigger element.onauxclick
+PASS onblur: must be on the appropriate locations for GlobalEventHandlers
+PASS onblur: the default value must be null
+PASS onblur: the content attribute must be compiled into a function as the corresponding property
+PASS onblur: the content attribute must execute when an event is dispatched
+PASS onblur: dispatching an Event at a <meta> element must trigger element.onblur
+PASS oncancel: must be on the appropriate locations for GlobalEventHandlers
+PASS oncancel: the default value must be null
+PASS oncancel: the content attribute must be compiled into a function as the corresponding property
+PASS oncancel: the content attribute must execute when an event is dispatched
+PASS oncancel: dispatching an Event at a <meta> element must trigger element.oncancel
+PASS oncanplay: must be on the appropriate locations for GlobalEventHandlers
+PASS oncanplay: the default value must be null
+PASS oncanplay: the content attribute must be compiled into a function as the corresponding property
+PASS oncanplay: the content attribute must execute when an event is dispatched
+PASS oncanplay: dispatching an Event at a <meta> element must trigger element.oncanplay
+PASS oncanplaythrough: must be on the appropriate locations for GlobalEventHandlers
+PASS oncanplaythrough: the default value must be null
+PASS oncanplaythrough: the content attribute must be compiled into a function as the corresponding property
+PASS oncanplaythrough: the content attribute must execute when an event is dispatched
+PASS oncanplaythrough: dispatching an Event at a <meta> element must trigger element.oncanplaythrough
+PASS onchange: must be on the appropriate locations for GlobalEventHandlers
+PASS onchange: the default value must be null
+PASS onchange: the content attribute must be compiled into a function as the corresponding property
+PASS onchange: the content attribute must execute when an event is dispatched
+PASS onchange: dispatching an Event at a <meta> element must trigger element.onchange
+PASS onclick: must be on the appropriate locations for GlobalEventHandlers
+PASS onclick: the default value must be null
+PASS onclick: the content attribute must be compiled into a function as the corresponding property
+PASS onclick: the content attribute must execute when an event is dispatched
+PASS onclick: dispatching an Event at a <meta> element must trigger element.onclick
+PASS onclose: must be on the appropriate locations for GlobalEventHandlers
+PASS onclose: the default value must be null
+PASS onclose: the content attribute must be compiled into a function as the corresponding property
+PASS onclose: the content attribute must execute when an event is dispatched
+PASS onclose: dispatching an Event at a <meta> element must trigger element.onclose
+PASS oncontextmenu: must be on the appropriate locations for GlobalEventHandlers
+PASS oncontextmenu: the default value must be null
+PASS oncontextmenu: the content attribute must be compiled into a function as the corresponding property
+PASS oncontextmenu: the content attribute must execute when an event is dispatched
+PASS oncontextmenu: dispatching an Event at a <meta> element must trigger element.oncontextmenu
+PASS oncuechange: must be on the appropriate locations for GlobalEventHandlers
+PASS oncuechange: the default value must be null
+PASS oncuechange: the content attribute must be compiled into a function as the corresponding property
+PASS oncuechange: the content attribute must execute when an event is dispatched
+PASS oncuechange: dispatching an Event at a <meta> element must trigger element.oncuechange
+PASS ondblclick: must be on the appropriate locations for GlobalEventHandlers
+PASS ondblclick: the default value must be null
+PASS ondblclick: the content attribute must be compiled into a function as the corresponding property
+PASS ondblclick: the content attribute must execute when an event is dispatched
+PASS ondblclick: dispatching an Event at a <meta> element must trigger element.ondblclick
+PASS ondrag: must be on the appropriate locations for GlobalEventHandlers
+PASS ondrag: the default value must be null
+PASS ondrag: the content attribute must be compiled into a function as the corresponding property
+PASS ondrag: the content attribute must execute when an event is dispatched
+PASS ondrag: dispatching an Event at a <meta> element must trigger element.ondrag
+PASS ondragend: must be on the appropriate locations for GlobalEventHandlers
+PASS ondragend: the default value must be null
+PASS ondragend: the content attribute must be compiled into a function as the corresponding property
+PASS ondragend: the content attribute must execute when an event is dispatched
+PASS ondragend: dispatching an Event at a <meta> element must trigger element.ondragend
+PASS ondragenter: must be on the appropriate locations for GlobalEventHandlers
+PASS ondragenter: the default value must be null
+PASS ondragenter: the content attribute must be compiled into a function as the corresponding property
+PASS ondragenter: the content attribute must execute when an event is dispatched
+PASS ondragenter: dispatching an Event at a <meta> element must trigger element.ondragenter
+FAIL ondragexit: must be on the appropriate locations for GlobalEventHandlers assert_true: Window has an own property named "ondragexit" expected true got false
+FAIL ondragexit: the default value must be null assert_equals: The default value of the property is null for a Window instance expected (object) null but got (undefined) undefined
+FAIL ondragexit: the content attribute must be compiled into a function as the corresponding property assert_equals: The ondragexit property must be a function expected "function" but got "undefined"
+FAIL ondragexit: the content attribute must execute when an event is dispatched assert_true: Dispatching an event must run the code expected true got undefined
+PASS ondragexit: dispatching an Event at a <meta> element must trigger element.ondragexit
+PASS ondragleave: must be on the appropriate locations for GlobalEventHandlers
+PASS ondragleave: the default value must be null
+PASS ondragleave: the content attribute must be compiled into a function as the corresponding property
+PASS ondragleave: the content attribute must execute when an event is dispatched
+PASS ondragleave: dispatching an Event at a <meta> element must trigger element.ondragleave
+PASS ondragover: must be on the appropriate locations for GlobalEventHandlers
+PASS ondragover: the default value must be null
+PASS ondragover: the content attribute must be compiled into a function as the corresponding property
+PASS ondragover: the content attribute must execute when an event is dispatched
+PASS ondragover: dispatching an Event at a <meta> element must trigger element.ondragover
+PASS ondragstart: must be on the appropriate locations for GlobalEventHandlers
+PASS ondragstart: the default value must be null
+PASS ondragstart: the content attribute must be compiled into a function as the corresponding property
+PASS ondragstart: the content attribute must execute when an event is dispatched
+PASS ondragstart: dispatching an Event at a <meta> element must trigger element.ondragstart
+PASS ondrop: must be on the appropriate locations for GlobalEventHandlers
+PASS ondrop: the default value must be null
+PASS ondrop: the content attribute must be compiled into a function as the corresponding property
+PASS ondrop: the content attribute must execute when an event is dispatched
+PASS ondrop: dispatching an Event at a <meta> element must trigger element.ondrop
+PASS ondurationchange: must be on the appropriate locations for GlobalEventHandlers
+PASS ondurationchange: the default value must be null
+PASS ondurationchange: the content attribute must be compiled into a function as the corresponding property
+PASS ondurationchange: the content attribute must execute when an event is dispatched
+PASS ondurationchange: dispatching an Event at a <meta> element must trigger element.ondurationchange
+PASS onemptied: must be on the appropriate locations for GlobalEventHandlers
+PASS onemptied: the default value must be null
+PASS onemptied: the content attribute must be compiled into a function as the corresponding property
+PASS onemptied: the content attribute must execute when an event is dispatched
+PASS onemptied: dispatching an Event at a <meta> element must trigger element.onemptied
+PASS onended: must be on the appropriate locations for GlobalEventHandlers
+PASS onended: the default value must be null
+PASS onended: the content attribute must be compiled into a function as the corresponding property
+PASS onended: the content attribute must execute when an event is dispatched
+PASS onended: dispatching an Event at a <meta> element must trigger element.onended
+PASS onfocus: must be on the appropriate locations for GlobalEventHandlers
+PASS onfocus: the default value must be null
+PASS onfocus: the content attribute must be compiled into a function as the corresponding property
+PASS onfocus: the content attribute must execute when an event is dispatched
+PASS onfocus: dispatching an Event at a <meta> element must trigger element.onfocus
+PASS onformdata: must be on the appropriate locations for GlobalEventHandlers
+PASS onformdata: the default value must be null
+PASS onformdata: the content attribute must be compiled into a function as the corresponding property
+PASS onformdata: the content attribute must execute when an event is dispatched
+PASS onformdata: dispatching an Event at a <meta> element must trigger element.onformdata
+PASS oninput: must be on the appropriate locations for GlobalEventHandlers
+PASS oninput: the default value must be null
+PASS oninput: the content attribute must be compiled into a function as the corresponding property
+PASS oninput: the content attribute must execute when an event is dispatched
+PASS oninput: dispatching an Event at a <meta> element must trigger element.oninput
+PASS oninvalid: must be on the appropriate locations for GlobalEventHandlers
+PASS oninvalid: the default value must be null
+PASS oninvalid: the content attribute must be compiled into a function as the corresponding property
+PASS oninvalid: the content attribute must execute when an event is dispatched
+PASS oninvalid: dispatching an Event at a <meta> element must trigger element.oninvalid
+PASS onkeydown: must be on the appropriate locations for GlobalEventHandlers
+PASS onkeydown: the default value must be null
+PASS onkeydown: the content attribute must be compiled into a function as the corresponding property
+PASS onkeydown: the content attribute must execute when an event is dispatched
+PASS onkeydown: dispatching an Event at a <meta> element must trigger element.onkeydown
+PASS onkeypress: must be on the appropriate locations for GlobalEventHandlers
+PASS onkeypress: the default value must be null
+PASS onkeypress: the content attribute must be compiled into a function as the corresponding property
+PASS onkeypress: the content attribute must execute when an event is dispatched
+PASS onkeypress: dispatching an Event at a <meta> element must trigger element.onkeypress
+PASS onkeyup: must be on the appropriate locations for GlobalEventHandlers
+PASS onkeyup: the default value must be null
+PASS onkeyup: the content attribute must be compiled into a function as the corresponding property
+PASS onkeyup: the content attribute must execute when an event is dispatched
+PASS onkeyup: dispatching an Event at a <meta> element must trigger element.onkeyup
+PASS onload: must be on the appropriate locations for GlobalEventHandlers
+PASS onload: the default value must be null
+PASS onload: the content attribute must be compiled into a function as the corresponding property
+PASS onload: the content attribute must execute when an event is dispatched
+PASS onload: dispatching an Event at a <meta> element must trigger element.onload
+PASS onloadeddata: must be on the appropriate locations for GlobalEventHandlers
+PASS onloadeddata: the default value must be null
+PASS onloadeddata: the content attribute must be compiled into a function as the corresponding property
+PASS onloadeddata: the content attribute must execute when an event is dispatched
+PASS onloadeddata: dispatching an Event at a <meta> element must trigger element.onloadeddata
+PASS onloadedmetadata: must be on the appropriate locations for GlobalEventHandlers
+PASS onloadedmetadata: the default value must be null
+PASS onloadedmetadata: the content attribute must be compiled into a function as the corresponding property
+PASS onloadedmetadata: the content attribute must execute when an event is dispatched
+PASS onloadedmetadata: dispatching an Event at a <meta> element must trigger element.onloadedmetadata
+PASS onloadstart: must be on the appropriate locations for GlobalEventHandlers
+PASS onloadstart: the default value must be null
+PASS onloadstart: the content attribute must be compiled into a function as the corresponding property
+PASS onloadstart: the content attribute must execute when an event is dispatched
+PASS onloadstart: dispatching an Event at a <meta> element must trigger element.onloadstart
+PASS onmousedown: must be on the appropriate locations for GlobalEventHandlers
+PASS onmousedown: the default value must be null
+PASS onmousedown: the content attribute must be compiled into a function as the corresponding property
+PASS onmousedown: the content attribute must execute when an event is dispatched
+PASS onmousedown: dispatching an Event at a <meta> element must trigger element.onmousedown
+PASS onmouseenter: must be on the appropriate locations for GlobalEventHandlers
+PASS onmouseenter: the default value must be null
+PASS onmouseenter: the content attribute must be compiled into a function as the corresponding property
+PASS onmouseenter: the content attribute must execute when an event is dispatched
+PASS onmouseenter: dispatching an Event at a <meta> element must trigger element.onmouseenter
+PASS onmouseleave: must be on the appropriate locations for GlobalEventHandlers
+PASS onmouseleave: the default value must be null
+PASS onmouseleave: the content attribute must be compiled into a function as the corresponding property
+PASS onmouseleave: the content attribute must execute when an event is dispatched
+PASS onmouseleave: dispatching an Event at a <meta> element must trigger element.onmouseleave
+PASS onmousemove: must be on the appropriate locations for GlobalEventHandlers
+PASS onmousemove: the default value must be null
+PASS onmousemove: the content attribute must be compiled into a function as the corresponding property
+PASS onmousemove: the content attribute must execute when an event is dispatched
+PASS onmousemove: dispatching an Event at a <meta> element must trigger element.onmousemove
+PASS onmouseout: must be on the appropriate locations for GlobalEventHandlers
+PASS onmouseout: the default value must be null
+PASS onmouseout: the content attribute must be compiled into a function as the corresponding property
+PASS onmouseout: the content attribute must execute when an event is dispatched
+PASS onmouseout: dispatching an Event at a <meta> element must trigger element.onmouseout
+PASS onmouseover: must be on the appropriate locations for GlobalEventHandlers
+PASS onmouseover: the default value must be null
+PASS onmouseover: the content attribute must be compiled into a function as the corresponding property
+PASS onmouseover: the content attribute must execute when an event is dispatched
+PASS onmouseover: dispatching an Event at a <meta> element must trigger element.onmouseover
+PASS onmouseup: must be on the appropriate locations for GlobalEventHandlers
+PASS onmouseup: the default value must be null
+PASS onmouseup: the content attribute must be compiled into a function as the corresponding property
+PASS onmouseup: the content attribute must execute when an event is dispatched
+PASS onmouseup: dispatching an Event at a <meta> element must trigger element.onmouseup
+PASS onwheel: must be on the appropriate locations for GlobalEventHandlers
+PASS onwheel: the default value must be null
+PASS onwheel: the content attribute must be compiled into a function as the corresponding property
+PASS onwheel: the content attribute must execute when an event is dispatched
+PASS onwheel: dispatching an Event at a <meta> element must trigger element.onwheel
+PASS onpause: must be on the appropriate locations for GlobalEventHandlers
+PASS onpause: the default value must be null
+PASS onpause: the content attribute must be compiled into a function as the corresponding property
+PASS onpause: the content attribute must execute when an event is dispatched
+PASS onpause: dispatching an Event at a <meta> element must trigger element.onpause
+PASS onplay: must be on the appropriate locations for GlobalEventHandlers
+PASS onplay: the default value must be null
+PASS onplay: the content attribute must be compiled into a function as the corresponding property
+PASS onplay: the content attribute must execute when an event is dispatched
+PASS onplay: dispatching an Event at a <meta> element must trigger element.onplay
+PASS onplaying: must be on the appropriate locations for GlobalEventHandlers
+PASS onplaying: the default value must be null
+PASS onplaying: the content attribute must be compiled into a function as the corresponding property
+PASS onplaying: the content attribute must execute when an event is dispatched
+PASS onplaying: dispatching an Event at a <meta> element must trigger element.onplaying
+PASS onprogress: must be on the appropriate locations for GlobalEventHandlers
+PASS onprogress: the default value must be null
+PASS onprogress: the content attribute must be compiled into a function as the corresponding property
+PASS onprogress: the content attribute must execute when an event is dispatched
+PASS onprogress: dispatching an Event at a <meta> element must trigger element.onprogress
+PASS onratechange: must be on the appropriate locations for GlobalEventHandlers
+PASS onratechange: the default value must be null
+PASS onratechange: the content attribute must be compiled into a function as the corresponding property
+PASS onratechange: the content attribute must execute when an event is dispatched
+PASS onratechange: dispatching an Event at a <meta> element must trigger element.onratechange
+PASS onreset: must be on the appropriate locations for GlobalEventHandlers
+PASS onreset: the default value must be null
+PASS onreset: the content attribute must be compiled into a function as the corresponding property
+PASS onreset: the content attribute must execute when an event is dispatched
+PASS onreset: dispatching an Event at a <meta> element must trigger element.onreset
+PASS onresize: must be on the appropriate locations for GlobalEventHandlers
+PASS onresize: the default value must be null
+PASS onresize: the content attribute must be compiled into a function as the corresponding property
+PASS onresize: the content attribute must execute when an event is dispatched
+PASS onresize: dispatching an Event at a <meta> element must trigger element.onresize
+PASS onscroll: must be on the appropriate locations for GlobalEventHandlers
+PASS onscroll: the default value must be null
+PASS onscroll: the content attribute must be compiled into a function as the corresponding property
+PASS onscroll: the content attribute must execute when an event is dispatched
+PASS onscroll: dispatching an Event at a <meta> element must trigger element.onscroll
+FAIL onsecuritypolicyviolation: must be on the appropriate locations for GlobalEventHandlers assert_true: Window has an own property named "onsecuritypolicyviolation" expected true got false
+FAIL onsecuritypolicyviolation: the default value must be null assert_equals: The default value of the property is null for a Window instance expected (object) null but got (undefined) undefined
+FAIL onsecuritypolicyviolation: the content attribute must be compiled into a function as the corresponding property assert_equals: The onsecuritypolicyviolation property must be a function expected "function" but got "undefined"
+FAIL onsecuritypolicyviolation: the content attribute must execute when an event is dispatched assert_true: Dispatching an event must run the code expected true got undefined
+PASS onsecuritypolicyviolation: dispatching an Event at a <meta> element must trigger element.onsecuritypolicyviolation
+PASS onseeked: must be on the appropriate locations for GlobalEventHandlers
+PASS onseeked: the default value must be null
+PASS onseeked: the content attribute must be compiled into a function as the corresponding property
+PASS onseeked: the content attribute must execute when an event is dispatched
+PASS onseeked: dispatching an Event at a <meta> element must trigger element.onseeked
+PASS onseeking: must be on the appropriate locations for GlobalEventHandlers
+PASS onseeking: the default value must be null
+PASS onseeking: the content attribute must be compiled into a function as the corresponding property
+PASS onseeking: the content attribute must execute when an event is dispatched
+PASS onseeking: dispatching an Event at a <meta> element must trigger element.onseeking
+PASS onselect: must be on the appropriate locations for GlobalEventHandlers
+PASS onselect: the default value must be null
+PASS onselect: the content attribute must be compiled into a function as the corresponding property
+PASS onselect: the content attribute must execute when an event is dispatched
+PASS onselect: dispatching an Event at a <meta> element must trigger element.onselect
+PASS onstalled: must be on the appropriate locations for GlobalEventHandlers
+PASS onstalled: the default value must be null
+PASS onstalled: the content attribute must be compiled into a function as the corresponding property
+PASS onstalled: the content attribute must execute when an event is dispatched
+PASS onstalled: dispatching an Event at a <meta> element must trigger element.onstalled
+PASS onsubmit: must be on the appropriate locations for GlobalEventHandlers
+PASS onsubmit: the default value must be null
+PASS onsubmit: the content attribute must be compiled into a function as the corresponding property
+PASS onsubmit: the content attribute must execute when an event is dispatched
+PASS onsubmit: dispatching an Event at a <meta> element must trigger element.onsubmit
+PASS onsuspend: must be on the appropriate locations for GlobalEventHandlers
+PASS onsuspend: the default value must be null
+PASS onsuspend: the content attribute must be compiled into a function as the corresponding property
+PASS onsuspend: the content attribute must execute when an event is dispatched
+PASS onsuspend: dispatching an Event at a <meta> element must trigger element.onsuspend
+PASS ontimeupdate: must be on the appropriate locations for GlobalEventHandlers
+PASS ontimeupdate: the default value must be null
+PASS ontimeupdate: the content attribute must be compiled into a function as the corresponding property
+PASS ontimeupdate: the content attribute must execute when an event is dispatched
+PASS ontimeupdate: dispatching an Event at a <meta> element must trigger element.ontimeupdate
+PASS ontoggle: must be on the appropriate locations for GlobalEventHandlers
+PASS ontoggle: the default value must be null
+PASS ontoggle: the content attribute must be compiled into a function as the corresponding property
+PASS ontoggle: the content attribute must execute when an event is dispatched
+PASS ontoggle: dispatching an Event at a <meta> element must trigger element.ontoggle
+PASS onvolumechange: must be on the appropriate locations for GlobalEventHandlers
+PASS onvolumechange: the default value must be null
+PASS onvolumechange: the content attribute must be compiled into a function as the corresponding property
+PASS onvolumechange: the content attribute must execute when an event is dispatched
+PASS onvolumechange: dispatching an Event at a <meta> element must trigger element.onvolumechange
+PASS onwaiting: must be on the appropriate locations for GlobalEventHandlers
+PASS onwaiting: the default value must be null
+PASS onwaiting: the content attribute must be compiled into a function as the corresponding property
+PASS onwaiting: the content attribute must execute when an event is dispatched
+PASS onwaiting: dispatching an Event at a <meta> element must trigger element.onwaiting
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-body-window-expected.txt b/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-body-window-expected.txt
index 2f8c2372..e317caa 100644
--- a/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-body-window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-body-window-expected.txt
@@ -1,6 +1,313 @@
 This is a testharness.js-based test.
-FAIL HTMLBodyElement event handlers Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list
+Found 309 tests; 297 PASS, 12 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS shadowed blur (document.body)
+PASS shadowed error (document.body)
+PASS shadowed focus (document.body)
+PASS shadowed load (document.body)
+PASS shadowed resize (document.body)
+PASS shadowed scroll (document.body)
+PASS shadowed afterprint (document.body)
+PASS shadowed beforeprint (document.body)
+PASS shadowed beforeunload (document.body)
+PASS shadowed hashchange (document.body)
+PASS shadowed languagechange (document.body)
+PASS shadowed message (document.body)
+PASS shadowed messageerror (document.body)
+PASS shadowed offline (document.body)
+PASS shadowed online (document.body)
+PASS shadowed pagehide (document.body)
+PASS shadowed pageshow (document.body)
+PASS shadowed popstate (document.body)
+PASS shadowed rejectionhandled (document.body)
+PASS shadowed storage (document.body)
+PASS shadowed unhandledrejection (document.body)
+PASS shadowed unload (document.body)
+PASS not shadowed abort (document.body)
+PASS not shadowed auxclick (document.body)
+PASS not shadowed cancel (document.body)
+PASS not shadowed canplay (document.body)
+PASS not shadowed canplaythrough (document.body)
+PASS not shadowed change (document.body)
+PASS not shadowed click (document.body)
+PASS not shadowed close (document.body)
+PASS not shadowed contextmenu (document.body)
+PASS not shadowed cuechange (document.body)
+PASS not shadowed dblclick (document.body)
+PASS not shadowed drag (document.body)
+PASS not shadowed dragend (document.body)
+PASS not shadowed dragenter (document.body)
+FAIL not shadowed dragexit (document.body) assert_equals: alternative body should reflect expected (object) null but got (undefined) undefined
+PASS not shadowed dragleave (document.body)
+PASS not shadowed dragover (document.body)
+PASS not shadowed dragstart (document.body)
+PASS not shadowed drop (document.body)
+PASS not shadowed durationchange (document.body)
+PASS not shadowed emptied (document.body)
+PASS not shadowed ended (document.body)
+PASS not shadowed formdata (document.body)
+PASS not shadowed input (document.body)
+PASS not shadowed invalid (document.body)
+PASS not shadowed keydown (document.body)
+PASS not shadowed keypress (document.body)
+PASS not shadowed keyup (document.body)
+PASS not shadowed loadeddata (document.body)
+PASS not shadowed loadedmetadata (document.body)
+PASS not shadowed loadstart (document.body)
+PASS not shadowed mousedown (document.body)
+PASS not shadowed mouseenter (document.body)
+PASS not shadowed mouseleave (document.body)
+PASS not shadowed mousemove (document.body)
+PASS not shadowed mouseout (document.body)
+PASS not shadowed mouseover (document.body)
+PASS not shadowed mouseup (document.body)
+PASS not shadowed wheel (document.body)
+PASS not shadowed pause (document.body)
+PASS not shadowed play (document.body)
+PASS not shadowed playing (document.body)
+PASS not shadowed progress (document.body)
+PASS not shadowed ratechange (document.body)
+PASS not shadowed reset (document.body)
+FAIL not shadowed securitypolicyviolation (document.body) assert_equals: alternative body should reflect expected (object) null but got (undefined) undefined
+PASS not shadowed seeked (document.body)
+PASS not shadowed seeking (document.body)
+PASS not shadowed select (document.body)
+PASS not shadowed stalled (document.body)
+PASS not shadowed submit (document.body)
+PASS not shadowed suspend (document.body)
+PASS not shadowed timeupdate (document.body)
+PASS not shadowed toggle (document.body)
+PASS not shadowed volumechange (document.body)
+PASS not shadowed waiting (document.body)
+FAIL not shadowed copy (document.body) assert_equals: window should reflect expected (object) null but got (undefined) undefined
+FAIL not shadowed cut (document.body) assert_equals: window should reflect expected (object) null but got (undefined) undefined
+FAIL not shadowed paste (document.body) assert_equals: window should reflect expected (object) null but got (undefined) undefined
+PASS shadowed blur removal (document.body)
+PASS shadowed error removal (document.body)
+PASS shadowed focus removal (document.body)
+PASS shadowed load removal (document.body)
+PASS shadowed resize removal (document.body)
+PASS shadowed scroll removal (document.body)
+PASS shadowed afterprint removal (document.body)
+PASS shadowed beforeprint removal (document.body)
+PASS shadowed beforeunload removal (document.body)
+PASS shadowed hashchange removal (document.body)
+PASS shadowed languagechange removal (document.body)
+PASS shadowed message removal (document.body)
+PASS shadowed messageerror removal (document.body)
+PASS shadowed offline removal (document.body)
+PASS shadowed online removal (document.body)
+PASS shadowed pagehide removal (document.body)
+PASS shadowed pageshow removal (document.body)
+PASS shadowed popstate removal (document.body)
+PASS shadowed rejectionhandled removal (document.body)
+PASS shadowed storage removal (document.body)
+PASS shadowed unhandledrejection removal (document.body)
+PASS shadowed unload removal (document.body)
+PASS shadowed blur (document.createElement("body"))
+PASS shadowed error (document.createElement("body"))
+PASS shadowed focus (document.createElement("body"))
+PASS shadowed load (document.createElement("body"))
+PASS shadowed resize (document.createElement("body"))
+PASS shadowed scroll (document.createElement("body"))
+PASS shadowed afterprint (document.createElement("body"))
+PASS shadowed beforeprint (document.createElement("body"))
+PASS shadowed beforeunload (document.createElement("body"))
+PASS shadowed hashchange (document.createElement("body"))
+PASS shadowed languagechange (document.createElement("body"))
+PASS shadowed message (document.createElement("body"))
+PASS shadowed messageerror (document.createElement("body"))
+PASS shadowed offline (document.createElement("body"))
+PASS shadowed online (document.createElement("body"))
+PASS shadowed pagehide (document.createElement("body"))
+PASS shadowed pageshow (document.createElement("body"))
+PASS shadowed popstate (document.createElement("body"))
+PASS shadowed rejectionhandled (document.createElement("body"))
+PASS shadowed storage (document.createElement("body"))
+PASS shadowed unhandledrejection (document.createElement("body"))
+PASS shadowed unload (document.createElement("body"))
+PASS not shadowed abort (document.createElement("body"))
+PASS not shadowed auxclick (document.createElement("body"))
+PASS not shadowed cancel (document.createElement("body"))
+PASS not shadowed canplay (document.createElement("body"))
+PASS not shadowed canplaythrough (document.createElement("body"))
+PASS not shadowed change (document.createElement("body"))
+PASS not shadowed click (document.createElement("body"))
+PASS not shadowed close (document.createElement("body"))
+PASS not shadowed contextmenu (document.createElement("body"))
+PASS not shadowed cuechange (document.createElement("body"))
+PASS not shadowed dblclick (document.createElement("body"))
+PASS not shadowed drag (document.createElement("body"))
+PASS not shadowed dragend (document.createElement("body"))
+PASS not shadowed dragenter (document.createElement("body"))
+FAIL not shadowed dragexit (document.createElement("body")) assert_equals: body should reflect expected (object) null but got (undefined) undefined
+PASS not shadowed dragleave (document.createElement("body"))
+PASS not shadowed dragover (document.createElement("body"))
+PASS not shadowed dragstart (document.createElement("body"))
+PASS not shadowed drop (document.createElement("body"))
+PASS not shadowed durationchange (document.createElement("body"))
+PASS not shadowed emptied (document.createElement("body"))
+PASS not shadowed ended (document.createElement("body"))
+PASS not shadowed formdata (document.createElement("body"))
+PASS not shadowed input (document.createElement("body"))
+PASS not shadowed invalid (document.createElement("body"))
+PASS not shadowed keydown (document.createElement("body"))
+PASS not shadowed keypress (document.createElement("body"))
+PASS not shadowed keyup (document.createElement("body"))
+PASS not shadowed loadeddata (document.createElement("body"))
+PASS not shadowed loadedmetadata (document.createElement("body"))
+PASS not shadowed loadstart (document.createElement("body"))
+PASS not shadowed mousedown (document.createElement("body"))
+PASS not shadowed mouseenter (document.createElement("body"))
+PASS not shadowed mouseleave (document.createElement("body"))
+PASS not shadowed mousemove (document.createElement("body"))
+PASS not shadowed mouseout (document.createElement("body"))
+PASS not shadowed mouseover (document.createElement("body"))
+PASS not shadowed mouseup (document.createElement("body"))
+PASS not shadowed wheel (document.createElement("body"))
+PASS not shadowed pause (document.createElement("body"))
+PASS not shadowed play (document.createElement("body"))
+PASS not shadowed playing (document.createElement("body"))
+PASS not shadowed progress (document.createElement("body"))
+PASS not shadowed ratechange (document.createElement("body"))
+PASS not shadowed reset (document.createElement("body"))
+FAIL not shadowed securitypolicyviolation (document.createElement("body")) assert_equals: body should reflect expected (object) null but got (undefined) undefined
+PASS not shadowed seeked (document.createElement("body"))
+PASS not shadowed seeking (document.createElement("body"))
+PASS not shadowed select (document.createElement("body"))
+PASS not shadowed stalled (document.createElement("body"))
+PASS not shadowed submit (document.createElement("body"))
+PASS not shadowed suspend (document.createElement("body"))
+PASS not shadowed timeupdate (document.createElement("body"))
+PASS not shadowed toggle (document.createElement("body"))
+PASS not shadowed volumechange (document.createElement("body"))
+PASS not shadowed waiting (document.createElement("body"))
+FAIL not shadowed copy (document.createElement("body")) assert_equals: window should reflect expected (object) null but got (undefined) undefined
+FAIL not shadowed cut (document.createElement("body")) assert_equals: window should reflect expected (object) null but got (undefined) undefined
+FAIL not shadowed paste (document.createElement("body")) assert_equals: window should reflect expected (object) null but got (undefined) undefined
+PASS shadowed blur removal (document.createElement("body"))
+PASS shadowed error removal (document.createElement("body"))
+PASS shadowed focus removal (document.createElement("body"))
+PASS shadowed load removal (document.createElement("body"))
+PASS shadowed resize removal (document.createElement("body"))
+PASS shadowed scroll removal (document.createElement("body"))
+PASS shadowed afterprint removal (document.createElement("body"))
+PASS shadowed beforeprint removal (document.createElement("body"))
+PASS shadowed beforeunload removal (document.createElement("body"))
+PASS shadowed hashchange removal (document.createElement("body"))
+PASS shadowed languagechange removal (document.createElement("body"))
+PASS shadowed message removal (document.createElement("body"))
+PASS shadowed messageerror removal (document.createElement("body"))
+PASS shadowed offline removal (document.createElement("body"))
+PASS shadowed online removal (document.createElement("body"))
+PASS shadowed pagehide removal (document.createElement("body"))
+PASS shadowed pageshow removal (document.createElement("body"))
+PASS shadowed popstate removal (document.createElement("body"))
+PASS shadowed rejectionhandled removal (document.createElement("body"))
+PASS shadowed storage removal (document.createElement("body"))
+PASS shadowed unhandledrejection removal (document.createElement("body"))
+PASS shadowed unload removal (document.createElement("body"))
+PASS shadowed blur (window)
+PASS shadowed error (window)
+PASS shadowed focus (window)
+PASS shadowed load (window)
+PASS shadowed resize (window)
+PASS shadowed scroll (window)
+PASS shadowed afterprint (window)
+PASS shadowed beforeprint (window)
+PASS shadowed beforeunload (window)
+PASS shadowed hashchange (window)
+PASS shadowed languagechange (window)
+PASS shadowed message (window)
+PASS shadowed messageerror (window)
+PASS shadowed offline (window)
+PASS shadowed online (window)
+PASS shadowed pagehide (window)
+PASS shadowed pageshow (window)
+PASS shadowed popstate (window)
+PASS shadowed rejectionhandled (window)
+PASS shadowed storage (window)
+PASS shadowed unhandledrejection (window)
+PASS shadowed unload (window)
+PASS not shadowed abort (window)
+PASS not shadowed auxclick (window)
+PASS not shadowed cancel (window)
+PASS not shadowed canplay (window)
+PASS not shadowed canplaythrough (window)
+PASS not shadowed change (window)
+PASS not shadowed click (window)
+PASS not shadowed close (window)
+PASS not shadowed contextmenu (window)
+PASS not shadowed cuechange (window)
+PASS not shadowed dblclick (window)
+PASS not shadowed drag (window)
+PASS not shadowed dragend (window)
+PASS not shadowed dragenter (window)
+FAIL not shadowed dragexit (window) assert_equals: body should reflect expected (object) null but got (undefined) undefined
+PASS not shadowed dragleave (window)
+PASS not shadowed dragover (window)
+PASS not shadowed dragstart (window)
+PASS not shadowed drop (window)
+PASS not shadowed durationchange (window)
+PASS not shadowed emptied (window)
+PASS not shadowed ended (window)
+PASS not shadowed formdata (window)
+PASS not shadowed input (window)
+PASS not shadowed invalid (window)
+PASS not shadowed keydown (window)
+PASS not shadowed keypress (window)
+PASS not shadowed keyup (window)
+PASS not shadowed loadeddata (window)
+PASS not shadowed loadedmetadata (window)
+PASS not shadowed loadstart (window)
+PASS not shadowed mousedown (window)
+PASS not shadowed mouseenter (window)
+PASS not shadowed mouseleave (window)
+PASS not shadowed mousemove (window)
+PASS not shadowed mouseout (window)
+PASS not shadowed mouseover (window)
+PASS not shadowed mouseup (window)
+PASS not shadowed wheel (window)
+PASS not shadowed pause (window)
+PASS not shadowed play (window)
+PASS not shadowed playing (window)
+PASS not shadowed progress (window)
+PASS not shadowed ratechange (window)
+PASS not shadowed reset (window)
+FAIL not shadowed securitypolicyviolation (window) assert_equals: body should reflect expected (object) null but got (undefined) undefined
+PASS not shadowed seeked (window)
+PASS not shadowed seeking (window)
+PASS not shadowed select (window)
+PASS not shadowed stalled (window)
+PASS not shadowed submit (window)
+PASS not shadowed suspend (window)
+PASS not shadowed timeupdate (window)
+PASS not shadowed toggle (window)
+PASS not shadowed volumechange (window)
+PASS not shadowed waiting (window)
+PASS not shadowed copy (window)
+PASS not shadowed cut (window)
+PASS not shadowed paste (window)
+PASS shadowed blur removal (window)
+PASS shadowed error removal (window)
+PASS shadowed focus removal (window)
+PASS shadowed load removal (window)
+PASS shadowed resize removal (window)
+PASS shadowed scroll removal (window)
+PASS shadowed afterprint removal (window)
+PASS shadowed beforeprint removal (window)
+PASS shadowed beforeunload removal (window)
+PASS shadowed hashchange removal (window)
+PASS shadowed languagechange removal (window)
+PASS shadowed message removal (window)
+PASS shadowed messageerror removal (window)
+PASS shadowed offline removal (window)
+PASS shadowed online removal (window)
+PASS shadowed pagehide removal (window)
+PASS shadowed pageshow removal (window)
+PASS shadowed popstate removal (window)
+PASS shadowed rejectionhandled removal (window)
+PASS shadowed storage removal (window)
+PASS shadowed unhandledrejection removal (window)
+PASS shadowed unload removal (window)
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-frameset-window-expected.txt b/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-frameset-window-expected.txt
index 873ce5bc..c4e1cb8 100644
--- a/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-frameset-window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-frameset-window-expected.txt
@@ -1,6 +1,313 @@
 This is a testharness.js-based test.
-FAIL event handlers Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list
+Found 309 tests; 297 PASS, 12 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS shadowed blur (document.body)
+PASS shadowed error (document.body)
+PASS shadowed focus (document.body)
+PASS shadowed load (document.body)
+PASS shadowed resize (document.body)
+PASS shadowed scroll (document.body)
+PASS shadowed afterprint (document.body)
+PASS shadowed beforeprint (document.body)
+PASS shadowed beforeunload (document.body)
+PASS shadowed hashchange (document.body)
+PASS shadowed languagechange (document.body)
+PASS shadowed message (document.body)
+PASS shadowed messageerror (document.body)
+PASS shadowed offline (document.body)
+PASS shadowed online (document.body)
+PASS shadowed pagehide (document.body)
+PASS shadowed pageshow (document.body)
+PASS shadowed popstate (document.body)
+PASS shadowed rejectionhandled (document.body)
+PASS shadowed storage (document.body)
+PASS shadowed unhandledrejection (document.body)
+PASS shadowed unload (document.body)
+PASS not shadowed abort (document.body)
+PASS not shadowed auxclick (document.body)
+PASS not shadowed cancel (document.body)
+PASS not shadowed canplay (document.body)
+PASS not shadowed canplaythrough (document.body)
+PASS not shadowed change (document.body)
+PASS not shadowed click (document.body)
+PASS not shadowed close (document.body)
+PASS not shadowed contextmenu (document.body)
+PASS not shadowed cuechange (document.body)
+PASS not shadowed dblclick (document.body)
+PASS not shadowed drag (document.body)
+PASS not shadowed dragend (document.body)
+PASS not shadowed dragenter (document.body)
+FAIL not shadowed dragexit (document.body) assert_equals: alternative body should reflect expected (object) null but got (undefined) undefined
+PASS not shadowed dragleave (document.body)
+PASS not shadowed dragover (document.body)
+PASS not shadowed dragstart (document.body)
+PASS not shadowed drop (document.body)
+PASS not shadowed durationchange (document.body)
+PASS not shadowed emptied (document.body)
+PASS not shadowed ended (document.body)
+PASS not shadowed formdata (document.body)
+PASS not shadowed input (document.body)
+PASS not shadowed invalid (document.body)
+PASS not shadowed keydown (document.body)
+PASS not shadowed keypress (document.body)
+PASS not shadowed keyup (document.body)
+PASS not shadowed loadeddata (document.body)
+PASS not shadowed loadedmetadata (document.body)
+PASS not shadowed loadstart (document.body)
+PASS not shadowed mousedown (document.body)
+PASS not shadowed mouseenter (document.body)
+PASS not shadowed mouseleave (document.body)
+PASS not shadowed mousemove (document.body)
+PASS not shadowed mouseout (document.body)
+PASS not shadowed mouseover (document.body)
+PASS not shadowed mouseup (document.body)
+PASS not shadowed wheel (document.body)
+PASS not shadowed pause (document.body)
+PASS not shadowed play (document.body)
+PASS not shadowed playing (document.body)
+PASS not shadowed progress (document.body)
+PASS not shadowed ratechange (document.body)
+PASS not shadowed reset (document.body)
+FAIL not shadowed securitypolicyviolation (document.body) assert_equals: alternative body should reflect expected (object) null but got (undefined) undefined
+PASS not shadowed seeked (document.body)
+PASS not shadowed seeking (document.body)
+PASS not shadowed select (document.body)
+PASS not shadowed stalled (document.body)
+PASS not shadowed submit (document.body)
+PASS not shadowed suspend (document.body)
+PASS not shadowed timeupdate (document.body)
+PASS not shadowed toggle (document.body)
+PASS not shadowed volumechange (document.body)
+PASS not shadowed waiting (document.body)
+FAIL not shadowed copy (document.body) assert_equals: window should reflect expected (object) null but got (undefined) undefined
+FAIL not shadowed cut (document.body) assert_equals: window should reflect expected (object) null but got (undefined) undefined
+FAIL not shadowed paste (document.body) assert_equals: window should reflect expected (object) null but got (undefined) undefined
+PASS shadowed blur removal (document.body)
+PASS shadowed error removal (document.body)
+PASS shadowed focus removal (document.body)
+PASS shadowed load removal (document.body)
+PASS shadowed resize removal (document.body)
+PASS shadowed scroll removal (document.body)
+PASS shadowed afterprint removal (document.body)
+PASS shadowed beforeprint removal (document.body)
+PASS shadowed beforeunload removal (document.body)
+PASS shadowed hashchange removal (document.body)
+PASS shadowed languagechange removal (document.body)
+PASS shadowed message removal (document.body)
+PASS shadowed messageerror removal (document.body)
+PASS shadowed offline removal (document.body)
+PASS shadowed online removal (document.body)
+PASS shadowed pagehide removal (document.body)
+PASS shadowed pageshow removal (document.body)
+PASS shadowed popstate removal (document.body)
+PASS shadowed rejectionhandled removal (document.body)
+PASS shadowed storage removal (document.body)
+PASS shadowed unhandledrejection removal (document.body)
+PASS shadowed unload removal (document.body)
+PASS shadowed blur (document.createElement("frameset"))
+PASS shadowed error (document.createElement("frameset"))
+PASS shadowed focus (document.createElement("frameset"))
+PASS shadowed load (document.createElement("frameset"))
+PASS shadowed resize (document.createElement("frameset"))
+PASS shadowed scroll (document.createElement("frameset"))
+PASS shadowed afterprint (document.createElement("frameset"))
+PASS shadowed beforeprint (document.createElement("frameset"))
+PASS shadowed beforeunload (document.createElement("frameset"))
+PASS shadowed hashchange (document.createElement("frameset"))
+PASS shadowed languagechange (document.createElement("frameset"))
+PASS shadowed message (document.createElement("frameset"))
+PASS shadowed messageerror (document.createElement("frameset"))
+PASS shadowed offline (document.createElement("frameset"))
+PASS shadowed online (document.createElement("frameset"))
+PASS shadowed pagehide (document.createElement("frameset"))
+PASS shadowed pageshow (document.createElement("frameset"))
+PASS shadowed popstate (document.createElement("frameset"))
+PASS shadowed rejectionhandled (document.createElement("frameset"))
+PASS shadowed storage (document.createElement("frameset"))
+PASS shadowed unhandledrejection (document.createElement("frameset"))
+PASS shadowed unload (document.createElement("frameset"))
+PASS not shadowed abort (document.createElement("frameset"))
+PASS not shadowed auxclick (document.createElement("frameset"))
+PASS not shadowed cancel (document.createElement("frameset"))
+PASS not shadowed canplay (document.createElement("frameset"))
+PASS not shadowed canplaythrough (document.createElement("frameset"))
+PASS not shadowed change (document.createElement("frameset"))
+PASS not shadowed click (document.createElement("frameset"))
+PASS not shadowed close (document.createElement("frameset"))
+PASS not shadowed contextmenu (document.createElement("frameset"))
+PASS not shadowed cuechange (document.createElement("frameset"))
+PASS not shadowed dblclick (document.createElement("frameset"))
+PASS not shadowed drag (document.createElement("frameset"))
+PASS not shadowed dragend (document.createElement("frameset"))
+PASS not shadowed dragenter (document.createElement("frameset"))
+FAIL not shadowed dragexit (document.createElement("frameset")) assert_equals: body should reflect expected (object) null but got (undefined) undefined
+PASS not shadowed dragleave (document.createElement("frameset"))
+PASS not shadowed dragover (document.createElement("frameset"))
+PASS not shadowed dragstart (document.createElement("frameset"))
+PASS not shadowed drop (document.createElement("frameset"))
+PASS not shadowed durationchange (document.createElement("frameset"))
+PASS not shadowed emptied (document.createElement("frameset"))
+PASS not shadowed ended (document.createElement("frameset"))
+PASS not shadowed formdata (document.createElement("frameset"))
+PASS not shadowed input (document.createElement("frameset"))
+PASS not shadowed invalid (document.createElement("frameset"))
+PASS not shadowed keydown (document.createElement("frameset"))
+PASS not shadowed keypress (document.createElement("frameset"))
+PASS not shadowed keyup (document.createElement("frameset"))
+PASS not shadowed loadeddata (document.createElement("frameset"))
+PASS not shadowed loadedmetadata (document.createElement("frameset"))
+PASS not shadowed loadstart (document.createElement("frameset"))
+PASS not shadowed mousedown (document.createElement("frameset"))
+PASS not shadowed mouseenter (document.createElement("frameset"))
+PASS not shadowed mouseleave (document.createElement("frameset"))
+PASS not shadowed mousemove (document.createElement("frameset"))
+PASS not shadowed mouseout (document.createElement("frameset"))
+PASS not shadowed mouseover (document.createElement("frameset"))
+PASS not shadowed mouseup (document.createElement("frameset"))
+PASS not shadowed wheel (document.createElement("frameset"))
+PASS not shadowed pause (document.createElement("frameset"))
+PASS not shadowed play (document.createElement("frameset"))
+PASS not shadowed playing (document.createElement("frameset"))
+PASS not shadowed progress (document.createElement("frameset"))
+PASS not shadowed ratechange (document.createElement("frameset"))
+PASS not shadowed reset (document.createElement("frameset"))
+FAIL not shadowed securitypolicyviolation (document.createElement("frameset")) assert_equals: body should reflect expected (object) null but got (undefined) undefined
+PASS not shadowed seeked (document.createElement("frameset"))
+PASS not shadowed seeking (document.createElement("frameset"))
+PASS not shadowed select (document.createElement("frameset"))
+PASS not shadowed stalled (document.createElement("frameset"))
+PASS not shadowed submit (document.createElement("frameset"))
+PASS not shadowed suspend (document.createElement("frameset"))
+PASS not shadowed timeupdate (document.createElement("frameset"))
+PASS not shadowed toggle (document.createElement("frameset"))
+PASS not shadowed volumechange (document.createElement("frameset"))
+PASS not shadowed waiting (document.createElement("frameset"))
+FAIL not shadowed copy (document.createElement("frameset")) assert_equals: window should reflect expected (object) null but got (undefined) undefined
+FAIL not shadowed cut (document.createElement("frameset")) assert_equals: window should reflect expected (object) null but got (undefined) undefined
+FAIL not shadowed paste (document.createElement("frameset")) assert_equals: window should reflect expected (object) null but got (undefined) undefined
+PASS shadowed blur removal (document.createElement("frameset"))
+PASS shadowed error removal (document.createElement("frameset"))
+PASS shadowed focus removal (document.createElement("frameset"))
+PASS shadowed load removal (document.createElement("frameset"))
+PASS shadowed resize removal (document.createElement("frameset"))
+PASS shadowed scroll removal (document.createElement("frameset"))
+PASS shadowed afterprint removal (document.createElement("frameset"))
+PASS shadowed beforeprint removal (document.createElement("frameset"))
+PASS shadowed beforeunload removal (document.createElement("frameset"))
+PASS shadowed hashchange removal (document.createElement("frameset"))
+PASS shadowed languagechange removal (document.createElement("frameset"))
+PASS shadowed message removal (document.createElement("frameset"))
+PASS shadowed messageerror removal (document.createElement("frameset"))
+PASS shadowed offline removal (document.createElement("frameset"))
+PASS shadowed online removal (document.createElement("frameset"))
+PASS shadowed pagehide removal (document.createElement("frameset"))
+PASS shadowed pageshow removal (document.createElement("frameset"))
+PASS shadowed popstate removal (document.createElement("frameset"))
+PASS shadowed rejectionhandled removal (document.createElement("frameset"))
+PASS shadowed storage removal (document.createElement("frameset"))
+PASS shadowed unhandledrejection removal (document.createElement("frameset"))
+PASS shadowed unload removal (document.createElement("frameset"))
+PASS shadowed blur (window)
+PASS shadowed error (window)
+PASS shadowed focus (window)
+PASS shadowed load (window)
+PASS shadowed resize (window)
+PASS shadowed scroll (window)
+PASS shadowed afterprint (window)
+PASS shadowed beforeprint (window)
+PASS shadowed beforeunload (window)
+PASS shadowed hashchange (window)
+PASS shadowed languagechange (window)
+PASS shadowed message (window)
+PASS shadowed messageerror (window)
+PASS shadowed offline (window)
+PASS shadowed online (window)
+PASS shadowed pagehide (window)
+PASS shadowed pageshow (window)
+PASS shadowed popstate (window)
+PASS shadowed rejectionhandled (window)
+PASS shadowed storage (window)
+PASS shadowed unhandledrejection (window)
+PASS shadowed unload (window)
+PASS not shadowed abort (window)
+PASS not shadowed auxclick (window)
+PASS not shadowed cancel (window)
+PASS not shadowed canplay (window)
+PASS not shadowed canplaythrough (window)
+PASS not shadowed change (window)
+PASS not shadowed click (window)
+PASS not shadowed close (window)
+PASS not shadowed contextmenu (window)
+PASS not shadowed cuechange (window)
+PASS not shadowed dblclick (window)
+PASS not shadowed drag (window)
+PASS not shadowed dragend (window)
+PASS not shadowed dragenter (window)
+FAIL not shadowed dragexit (window) assert_equals: body should reflect expected (object) null but got (undefined) undefined
+PASS not shadowed dragleave (window)
+PASS not shadowed dragover (window)
+PASS not shadowed dragstart (window)
+PASS not shadowed drop (window)
+PASS not shadowed durationchange (window)
+PASS not shadowed emptied (window)
+PASS not shadowed ended (window)
+PASS not shadowed formdata (window)
+PASS not shadowed input (window)
+PASS not shadowed invalid (window)
+PASS not shadowed keydown (window)
+PASS not shadowed keypress (window)
+PASS not shadowed keyup (window)
+PASS not shadowed loadeddata (window)
+PASS not shadowed loadedmetadata (window)
+PASS not shadowed loadstart (window)
+PASS not shadowed mousedown (window)
+PASS not shadowed mouseenter (window)
+PASS not shadowed mouseleave (window)
+PASS not shadowed mousemove (window)
+PASS not shadowed mouseout (window)
+PASS not shadowed mouseover (window)
+PASS not shadowed mouseup (window)
+PASS not shadowed wheel (window)
+PASS not shadowed pause (window)
+PASS not shadowed play (window)
+PASS not shadowed playing (window)
+PASS not shadowed progress (window)
+PASS not shadowed ratechange (window)
+PASS not shadowed reset (window)
+FAIL not shadowed securitypolicyviolation (window) assert_equals: body should reflect expected (object) null but got (undefined) undefined
+PASS not shadowed seeked (window)
+PASS not shadowed seeking (window)
+PASS not shadowed select (window)
+PASS not shadowed stalled (window)
+PASS not shadowed submit (window)
+PASS not shadowed suspend (window)
+PASS not shadowed timeupdate (window)
+PASS not shadowed toggle (window)
+PASS not shadowed volumechange (window)
+PASS not shadowed waiting (window)
+PASS not shadowed copy (window)
+PASS not shadowed cut (window)
+PASS not shadowed paste (window)
+PASS shadowed blur removal (window)
+PASS shadowed error removal (window)
+PASS shadowed focus removal (window)
+PASS shadowed load removal (window)
+PASS shadowed resize removal (window)
+PASS shadowed scroll removal (window)
+PASS shadowed afterprint removal (window)
+PASS shadowed beforeprint removal (window)
+PASS shadowed beforeunload removal (window)
+PASS shadowed hashchange removal (window)
+PASS shadowed languagechange removal (window)
+PASS shadowed message removal (window)
+PASS shadowed messageerror removal (window)
+PASS shadowed offline removal (window)
+PASS shadowed online removal (window)
+PASS shadowed pagehide removal (window)
+PASS shadowed pageshow removal (window)
+PASS shadowed popstate removal (window)
+PASS shadowed rejectionhandled removal (window)
+PASS shadowed storage removal (window)
+PASS shadowed unhandledrejection removal (window)
+PASS shadowed unload removal (window)
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/idle-detection/idlharness.https.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/idle-detection/idlharness.https.any.worker-expected.txt
deleted file mode 100644
index 7834d00..0000000
--- a/third_party/blink/web_tests/external/wpt/idle-detection/idlharness.https.any.worker-expected.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This is a testharness.js-based test.
-FAIL Test IDL implementation of Idle Detection API promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/images/canvas-line.png b/third_party/blink/web_tests/external/wpt/images/canvas-line.png
deleted file mode 100644
index 30f8f45..0000000
--- a/third_party/blink/web_tests/external/wpt/images/canvas-line.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/expected-fail/uncaught-exception-expected.txt b/third_party/blink/web_tests/external/wpt/infrastructure/expected-fail/uncaught-exception-expected.txt
new file mode 100644
index 0000000..1765dd9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/infrastructure/expected-fail/uncaught-exception-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Uncaught exception Uncaught Error: error outside any setup or test
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/expected-fail/uncaught-exception.html b/third_party/blink/web_tests/external/wpt/infrastructure/expected-fail/uncaught-exception.html
new file mode 100644
index 0000000..4442d51
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/infrastructure/expected-fail/uncaught-exception.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Uncaught exception</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+throw new Error("error outside any setup or test");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/assumptions/document-fonts-ready.html.ini b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/assumptions/document-fonts-ready.html.ini
new file mode 100644
index 0000000..d074292
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/assumptions/document-fonts-ready.html.ini
@@ -0,0 +1,4 @@
+[document-fonts-ready.html]
+  [document.fonts.ready resolves after layout depending on loaded fonts]
+    expected:
+      if product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=174030
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/assumptions/html-elements.html.ini b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/assumptions/html-elements.html.ini
index 5bb1bf5..4be883a 100644
--- a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/assumptions/html-elements.html.ini
+++ b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/assumptions/html-elements.html.ini
@@ -6,9 +6,9 @@
 
   [Compare CSS span definitions (only valid if pre-reqs pass)]
     expected:
-      if product == "safari": FAIL # https://webkit.org/show_bug.cgi?id=187052
+      if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=187052
 
 
   [Compare CSS div definitions (only valid if pre-reqs pass)]
     expected:
-      if product == "safari": FAIL # https://webkit.org/show_bug.cgi?id=187052
+      if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=187052
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/expected-fail/uncaught-exception.html.ini b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/expected-fail/uncaught-exception.html.ini
new file mode 100644
index 0000000..0bcdd374
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/expected-fail/uncaught-exception.html.ini
@@ -0,0 +1,4 @@
+[uncaught-exception.html]
+  [Uncaught exception]
+    expected: FAIL
+
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/context.any.js.ini b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/context.any.js.ini
index ff57a13..9667d4d2 100644
--- a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/context.any.js.ini
+++ b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/context.any.js.ini
@@ -2,4 +2,9 @@
   [context]
     expected:
       if product == "edge_webdriver": FAIL
-      if product == "safari": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
+      if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
+
+[context.any.serviceworker.html]
+  [context]
+    expected:
+      if product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=200815
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/order-of-metas.any.js.ini b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/order-of-metas.any.js.ini
index e4a96de..a62ae82b 100644
--- a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/order-of-metas.any.js.ini
+++ b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/order-of-metas.any.js.ini
@@ -18,7 +18,7 @@
   [foo]
     expected:
       if product == "edge_webdriver": FAIL
-      if product == "safari": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
+      if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
 
 
 [order-of-metas.window.html]
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/secure-context.https.any.js.ini b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/secure-context.https.any.js.ini
index f483bca..0a602b9a 100644
--- a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/secure-context.https.any.js.ini
+++ b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/secure-context.https.any.js.ini
@@ -2,4 +2,9 @@
   [secure-context]
     expected:
       if product == "edge_webdriver": FAIL
-      if product == "safari": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
+      if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
+
+[secure-context.https.any.serviceworker.html]
+  [secure-context]
+    expected:
+      if product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=200815
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/title.any.js.ini b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/title.any.js.ini
index cbae6b15..6f7fed9 100644
--- a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/title.any.js.ini
+++ b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/title.any.js.ini
@@ -12,7 +12,7 @@
 
   [foobar]
     expected:
-      if product == "safari": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
+      if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
 
 
 [title.any.worker.html]
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/wpt-server-http.sub.html.ini b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/wpt-server-http.sub.html.ini
new file mode 100644
index 0000000..e2f26c7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/wpt-server-http.sub.html.ini
@@ -0,0 +1,20 @@
+[wpt-server-http.sub.html]
+  [HTTPS protocol, punycode subdomain #1]
+    expected:
+      if product == "epiphany" or product == "webkit": FAIL
+
+  [HTTPS protocol, www subdomain #1]
+    expected:
+      if product == "epiphany" or product == "webkit": FAIL
+
+  [HTTPS protocol, www subdomain #2]
+    expected:
+      if product == "epiphany" or product == "webkit": FAIL
+
+  [HTTPS protocol, www subdomain #3]
+    expected:
+      if product == "epiphany" or product == "webkit": FAIL
+
+  [HTTPS protocol, punycode subdomain #2]
+    expected:
+      if product == "epiphany" or product == "webkit": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/wpt-server-websocket.sub.html.ini b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/wpt-server-websocket.sub.html.ini
new file mode 100644
index 0000000..2cc364b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/server/wpt-server-websocket.sub.html.ini
@@ -0,0 +1,41 @@
+[wpt-server-websocket.sub.html]
+  [WSS protocol, www subdomain #3]
+    expected:
+      if product == "epiphany" or product == "webkit": FAIL
+
+  [WSS protocol, punycode subdomain #1]
+    expected:
+      if product == "epiphany" or product == "webkit": FAIL
+
+  [WSS protocol, punycode subdomain #2]
+    expected:
+      if product == "epiphany" or product == "webkit": FAIL
+
+  [WSS protocol, www subdomain #1]
+    expected:
+      if product == "epiphany" or product == "webkit": FAIL
+
+  [WSS protocol, www subdomain #2]
+    expected:
+      if product == "epiphany" or product == "webkit": FAIL
+
+  [WSS protocol, www subdomain #3]
+    expected:
+      if product == "epiphany" or product == "webkit": FAIL
+
+  [WSS protocol, punycode subdomain #1]
+    expected:
+      if product == "epiphany" or product == "webkit": FAIL
+
+  [WSS protocol, punycode subdomain #2]
+    expected:
+      if product == "epiphany" or product == "webkit": FAIL
+
+  [WSS protocol, www subdomain #1]
+    expected:
+      if product == "epiphany" or product == "webkit": FAIL
+
+  [WSS protocol, www subdomain #2]
+    expected:
+      if product == "epiphany" or product == "webkit": FAIL
+
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini
index ee12178..c34584c 100644
--- a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini
+++ b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini
@@ -1,6 +1,6 @@
 [actionsWithKeyPressed.html]
   expected:
-    if product == "safari": ERROR
+    if product == "safari" or product == "epiphany" or product == "webkit": ERROR
 
   [TestDriver actions: actions with key pressed]
     expected:
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/actions/eventOrder.html.ini b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/actions/eventOrder.html.ini
index bcd78da2..894f4a1 100644
--- a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/actions/eventOrder.html.ini
+++ b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/actions/eventOrder.html.ini
@@ -1,3 +1,3 @@
 [eventOrder.html]
   expected:
-    if product == "safari": ERROR
+    if product == "safari" or product == "epiphany" or product == "webkit": ERROR
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/actions/multiDevice.html.ini b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/actions/multiDevice.html.ini
index 04b97a7..baf2116 100644
--- a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/actions/multiDevice.html.ini
+++ b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/actions/multiDevice.html.ini
@@ -1,3 +1,3 @@
 [multiDevice.html]
   expected:
-    if product == "safari": ERROR
+    if product == "safari" or product == "epiphany" or product == "webkit": ERROR
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/actions/pause.html.ini b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/actions/pause.html.ini
index da47a2a..657d2a24 100644
--- a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/actions/pause.html.ini
+++ b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/actions/pause.html.ini
@@ -1,3 +1,3 @@
 [pause.html]
   expected:
-    if product == "safari": ERROR
+    if product == "epiphany" or product == "webkit": ERROR
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/file_upload.sub.html.ini b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/file_upload.sub.html.ini
index 42c9811..a39640b 100644
--- a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/file_upload.sub.html.ini
+++ b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/file_upload.sub.html.ini
@@ -1,3 +1,7 @@
 [file_upload.sub.html]
   expected:
     if product == "edge_webdriver": ERROR
+
+  [File upload using testdriver]
+    expected:
+      if product == "epiphany" or product == "webkit": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/generate_test_report.html.ini b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/generate_test_report.html.ini
index 0b01c836..3e43b63 100644
--- a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/generate_test_report.html.ini
+++ b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/generate_test_report.html.ini
@@ -1,4 +1,4 @@
 [generate_test_report.html]
   expected:
     if product == "firefox": ERROR
-    if product == "safari": ERROR
+    if product == "safari" or product == "epiphany" or product == "webkit": ERROR
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/InputDeviceCapabilities.idl b/third_party/blink/web_tests/external/wpt/interfaces/InputDeviceCapabilities.idl
index 17f74b6..cb5d2827 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/InputDeviceCapabilities.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/InputDeviceCapabilities.idl
@@ -3,7 +3,8 @@
 // (https://github.com/tidoust/reffy-reports)
 // Source: Input Device Capabilities (https://wicg.github.io/InputDeviceCapabilities/)
 
-[Constructor(optional InputDeviceCapabilitiesInit deviceInitDict)]
+[Exposed=Window,
+ Constructor(optional InputDeviceCapabilitiesInit deviceInitDict = {})]
 interface InputDeviceCapabilities {
   readonly attribute boolean firesTouchEvents;
   readonly attribute boolean pointerMovementScrolls;
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/SVG.idl b/third_party/blink/web_tests/external/wpt/interfaces/SVG.idl
index 8894f7b33..97871c2 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/SVG.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/SVG.idl
@@ -219,16 +219,6 @@
   [SameObject] readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
 };
 
-interface mixin SVGZoomAndPan {
-
-  // Zoom and Pan Types
-  const unsigned short SVG_ZOOMANDPAN_UNKNOWN = 0;
-  const unsigned short SVG_ZOOMANDPAN_DISABLE = 1;
-  const unsigned short SVG_ZOOMANDPAN_MAGNIFY = 2;
-
-  attribute unsigned short zoomAndPan;
-};
-
 interface mixin SVGURIReference {
   [SameObject] readonly attribute SVGAnimatedString href;
 };
@@ -275,7 +265,6 @@
 };
 
 SVGSVGElement includes SVGFitToViewBox;
-SVGSVGElement includes SVGZoomAndPan;
 SVGSVGElement includes WindowEventHandlers;
 
 [Exposed=Window]
@@ -688,4 +677,3 @@
 interface SVGViewElement : SVGElement {};
 
 SVGViewElement includes SVGFitToViewBox;
-SVGViewElement includes SVGZoomAndPan;
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/appmanifest.idl b/third_party/blink/web_tests/external/wpt/interfaces/appmanifest.idl
index ddfe82d..4a642582 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/appmanifest.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/appmanifest.idl
@@ -3,10 +3,10 @@
 // (https://github.com/tidoust/reffy-reports)
 // Source: Web App Manifest (https://w3c.github.io/manifest/)
 
-[Constructor(DOMString type, optional EventInit eventInitDict = {}),
- Exposed=Window]
+[Exposed=Window]
 interface BeforeInstallPromptEvent : Event {
-    Promise<PromptResponseObject> prompt();
+  constructor(DOMString type, optional EventInit eventInitDict = {});
+  Promise<PromptResponseObject> prompt();
 };
 
 dictionary PromptResponseObject {
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/dom.idl b/third_party/blink/web_tests/external/wpt/interfaces/dom.idl
index 91157033..03a0201b 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/dom.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/dom.idl
@@ -558,3 +558,51 @@
   [CEReactions] stringifier attribute DOMString value;
   iterable<DOMString>;
 };
+
+[Exposed=Window]
+interface XPathResult {
+  const unsigned short ANY_TYPE = 0;
+  const unsigned short NUMBER_TYPE = 1;
+  const unsigned short STRING_TYPE = 2;
+  const unsigned short BOOLEAN_TYPE = 3;
+  const unsigned short UNORDERED_NODE_ITERATOR_TYPE = 4;
+  const unsigned short ORDERED_NODE_ITERATOR_TYPE = 5;
+  const unsigned short UNORDERED_NODE_SNAPSHOT_TYPE = 6;
+  const unsigned short ORDERED_NODE_SNAPSHOT_TYPE = 7;
+  const unsigned short ANY_UNORDERED_NODE_TYPE = 8;
+  const unsigned short FIRST_ORDERED_NODE_TYPE = 9;
+
+  readonly attribute unsigned short resultType;
+  readonly attribute unrestricted double numberValue;
+  readonly attribute DOMString stringValue;
+  readonly attribute boolean booleanValue;
+  readonly attribute Node? singleNodeValue;
+  readonly attribute boolean invalidIteratorState;
+  readonly attribute unsigned long snapshotLength;
+
+  Node? iterateNext();
+  Node? snapshotItem(unsigned long index);
+};
+
+[Exposed=Window]
+interface XPathExpression {
+  // XPathResult.ANY_TYPE = 0
+  XPathResult evaluate(Node contextNode, optional unsigned short type = 0, optional XPathResult? result = null);
+};
+
+callback interface XPathNSResolver {
+  DOMString? lookupNamespaceURI(DOMString? prefix);
+};
+
+interface mixin XPathEvaluatorBase {
+  [NewObject] XPathExpression createExpression(DOMString expression, optional XPathNSResolver? resolver = null);
+  XPathNSResolver createNSResolver(Node nodeResolver);
+  // XPathResult.ANY_TYPE = 0
+  XPathResult evaluate(DOMString expression, Node contextNode, optional XPathNSResolver? resolver = null, optional unsigned short type = 0, optional XPathResult? result = null);
+};
+Document includes XPathEvaluatorBase;
+
+[Exposed=Window, Constructor]
+interface XPathEvaluator {};
+
+XPathEvaluator includes XPathEvaluatorBase;
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/html.idl b/third_party/blink/web_tests/external/wpt/interfaces/html.idl
index 98c633af..d856cd5 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/html.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/html.idl
@@ -136,6 +136,7 @@
   [SameObject] readonly attribute DOMStringMap dataset;
   attribute DOMString nonce; // intentionally no [CEReactions]
 
+  [CEReactions] attribute boolean autofocus;
   [CEReactions] attribute long tabIndex;
   void focus(optional FocusOptions options = {});
   void blur();
@@ -820,7 +821,6 @@
   [CEReactions] attribute DOMString accept;
   [CEReactions] attribute DOMString alt;
   [CEReactions] attribute DOMString autocomplete;
-  [CEReactions] attribute boolean autofocus;
   [CEReactions] attribute boolean defaultChecked;
   attribute boolean checked;
   [CEReactions] attribute DOMString dirName;
@@ -881,7 +881,6 @@
 [Exposed=Window,
  HTMLConstructor]
 interface HTMLButtonElement : HTMLElement {
-  [CEReactions] attribute boolean autofocus;
   [CEReactions] attribute boolean disabled;
   readonly attribute HTMLFormElement? form;
   [CEReactions] attribute USVString formAction;
@@ -907,7 +906,6 @@
  HTMLConstructor]
 interface HTMLSelectElement : HTMLElement {
   [CEReactions] attribute DOMString autocomplete;
-  [CEReactions] attribute boolean autofocus;
   [CEReactions] attribute boolean disabled;
   readonly attribute HTMLFormElement? form;
   [CEReactions] attribute boolean multiple;
@@ -972,7 +970,6 @@
  HTMLConstructor]
 interface HTMLTextAreaElement : HTMLElement {
   [CEReactions] attribute DOMString autocomplete;
-  [CEReactions] attribute boolean autofocus;
   [CEReactions] attribute unsigned long cols;
   [CEReactions] attribute DOMString dirName;
   [CEReactions] attribute boolean disabled;
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/web-nfc.idl b/third_party/blink/web_tests/external/wpt/interfaces/web-nfc.idl
index 76ed6f0..8c77339a 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/web-nfc.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/web-nfc.idl
@@ -3,8 +3,10 @@
 // (https://github.com/tidoust/reffy-reports)
 // Source: Web NFC API (https://w3c.github.io/web-nfc/)
 
-[Constructor(NDEFMessageInit messageInit), Exposed=Window]
+[Exposed=Window]
 interface NDEFMessage {
+  constructor(NDEFMessageInit messageInit);
+
   readonly attribute USVString url;
   readonly attribute FrozenArray<NDEFRecord> records;
 };
@@ -16,19 +18,24 @@
 
 typedef any NDEFRecordData;
 
-[Constructor(NDEFRecordInit recordInit), Exposed=Window]
+[Exposed=Window]
 interface NDEFRecord {
+  constructor(NDEFRecordInit recordInit);
+
   readonly attribute NDEFRecordType recordType;
   readonly attribute USVString mediaType;
+  readonly attribute USVString id;
 
   USVString? toText();
   [NewObject] ArrayBuffer? toArrayBuffer();
   [NewObject] any toJSON();
+  sequence<NDEFRecord> toRecords();
 };
 
 dictionary NDEFRecordInit {
   NDEFRecordType recordType;
   USVString mediaType;
+  USVString id;
 
   NDEFRecordData data;
 };
@@ -37,21 +44,27 @@
 
 typedef (DOMString or ArrayBuffer or NDEFMessageInit) NDEFMessageSource;
 
-[Constructor, SecureContext, Exposed=Window]
+[SecureContext, Exposed=Window]
 interface NFCWriter {
+  constructor();
+
   Promise<void> push(NDEFMessageSource message, optional NFCPushOptions options={});
 };
 
-[Constructor, SecureContext, Exposed=Window]
+[SecureContext, Exposed=Window]
 interface NFCReader : EventTarget {
+  constructor();
+
   attribute EventHandler onreading;
   attribute EventHandler onerror;
 
   void scan(optional NFCScanOptions options={});
 };
 
-[Constructor(DOMString type, NFCReadingEventInit readingEventInitDict), SecureContext, Exposed=Window]
+[SecureContext, Exposed=Window]
 interface NFCReadingEvent : Event {
+  constructor(DOMString type, NFCReadingEventInit readingEventInitDict);
+
   readonly attribute DOMString serialNumber;
   [SameObject] readonly attribute NDEFMessage message;
 };
@@ -61,8 +74,10 @@
   required NDEFMessageInit message;
 };
 
-[Constructor(DOMString type, NFCErrorEventInit errorEventInitDict), SecureContext, Exposed=Window]
+[SecureContext, Exposed=Window]
 interface NFCErrorEvent : Event {
+  constructor(DOMString type, NFCErrorEventInit errorEventInitDict);
+
   readonly attribute DOMException error;
 };
 
@@ -70,18 +85,11 @@
   required DOMException error;
 };
 
-enum NDEFCompatibility {
-  "nfc-forum",
-  "vendor",
-  "any"
-};
-
 dictionary NFCPushOptions {
   NFCPushTarget target = "any";
   unrestricted double timeout = Infinity;
   boolean ignoreRead = true;
   AbortSignal? signal;
-  NDEFCompatibility compatibility = "nfc-forum";
 };
 
 enum NFCPushTarget {
@@ -91,9 +99,8 @@
 };
 
 dictionary NFCScanOptions {
-  AbortSignal? signal;
   USVString url = "";
   NDEFRecordType recordType;
   USVString mediaType = "";
-  NDEFCompatibility compatibility = "nfc-forum";
+  AbortSignal? signal;
 };
diff --git a/third_party/blink/web_tests/external/wpt/keyboard-lock/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/keyboard-lock/idlharness.https.window-expected.txt
deleted file mode 100644
index 4be7529d..0000000
--- a/third_party/blink/web_tests/external/wpt/keyboard-lock/idlharness.https.window-expected.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
-PASS Keyboard interface: existence and properties of interface object
-PASS Keyboard interface object length
-PASS Keyboard interface object name
-PASS Keyboard interface: existence and properties of interface prototype object
-PASS Keyboard interface: existence and properties of interface prototype object's "constructor" property
-PASS Keyboard interface: existence and properties of interface prototype object's @@unscopables property
-PASS Keyboard interface: operation lock([object Object])
-PASS Keyboard interface: operation unlock()
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/keyboard-map/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/keyboard-map/idlharness.https.window-expected.txt
deleted file mode 100644
index f3cf5bd1..0000000
--- a/third_party/blink/web_tests/external/wpt/keyboard-map/idlharness.https.window-expected.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
-PASS KeyboardLayoutMap interface: existence and properties of interface object
-PASS KeyboardLayoutMap interface object length
-PASS KeyboardLayoutMap interface object name
-PASS KeyboardLayoutMap interface: existence and properties of interface prototype object
-PASS KeyboardLayoutMap interface: existence and properties of interface prototype object's "constructor" property
-PASS KeyboardLayoutMap interface: existence and properties of interface prototype object's @@unscopables property
-PASS Keyboard interface: existence and properties of interface object
-PASS Keyboard interface object length
-PASS Keyboard interface object name
-PASS Keyboard interface: existence and properties of interface prototype object
-PASS Keyboard interface: existence and properties of interface prototype object's "constructor" property
-PASS Keyboard interface: existence and properties of interface prototype object's @@unscopables property
-PASS Keyboard interface: operation getLayoutMap()
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/css-inline-style-dynamic.tentative-ref.html b/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/css-inline-style-dynamic.tentative-ref.html
new file mode 100644
index 0000000..13f01392
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/css-inline-style-dynamic.tentative-ref.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8"/>
+<title>MathML 'ElementCSSInlineStyle` Dynamic Tests</title>
+</head>
+<body>
+  <span>This tests that `ElementCSSInlineStyle` interface changes update rendering.</span>
+  <div>
+    <math style="background-color: green"><mspace width="50px" height="100px"/><mspace width="50px" height="100px"/></math>
+  </div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/css-inline-style-dynamic.tentative.html b/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/css-inline-style-dynamic.tentative.html
new file mode 100644
index 0000000..ca3e679
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/css-inline-style-dynamic.tentative.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+  <head>
+    <meta charset="utf-8" />
+    <title>MathML 'ElementCSSInlineStyle` Dynamic Tests</title>
+    <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#dom-and-javascript"/>
+    <link rel="match" href="css-inline-style-dynamic.tentative-ref.html"/>
+    <style>
+      #hidden  {
+        visibility: hidden;
+        background-color: green;
+      }
+      #red  {
+        background-color: red;
+      }
+    </style>
+    <meta
+      name="assert"
+      content="MathMLElements ElementCSSInlineStyle interface changes update rendering"
+    />
+    <script type="text/javascript">
+      function test()
+      {
+        document.body.offsetTop; // Update layout
+        document.getElementById("hidden").style.visibility = "visible";
+        document.getElementById("red").style.backgroundColor = "green";
+        document.documentElement.className = "";
+      }
+    </script>
+  </head>
+  <body onload="test()">
+    <span>This tests that `ElementCSSInlineStyle` interface changes update rendering.</span>
+    <div>
+      <math><mspace width="50px" height="100px" id="hidden"/><mspace width="50px" height="100px" id="red"/></math>
+    </div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/media-capabilities/idlharness.any-expected.txt b/third_party/blink/web_tests/external/wpt/media-capabilities/idlharness.any-expected.txt
index 687751c..55528510 100644
--- a/third_party/blink/web_tests/external/wpt/media-capabilities/idlharness.any-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/media-capabilities/idlharness.any-expected.txt
@@ -1,11 +1,11 @@
 This is a testharness.js-based test.
 PASS idlharness
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface WorkerNavigator: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface Screen: original interface defined assert_true: Original interface should be defined expected true got false
+PASS idl_test setup
+PASS Partial interface Navigator: original interface defined
+PASS Partial interface Navigator: valid exposure set
+PASS Partial interface WorkerNavigator: original interface defined
+PASS Partial interface WorkerNavigator: valid exposure set
+PASS Partial interface Screen: original interface defined
 PASS MediaCapabilities interface: existence and properties of interface object
 PASS MediaCapabilities interface object length
 PASS MediaCapabilities interface object name
@@ -14,6 +14,12 @@
 PASS MediaCapabilities interface: existence and properties of interface prototype object's @@unscopables property
 PASS MediaCapabilities interface: operation decodingInfo(MediaDecodingConfiguration)
 PASS MediaCapabilities interface: operation encodingInfo(MediaEncodingConfiguration)
+PASS MediaCapabilities must be primary interface of navigator.mediaCapabilities
+PASS Stringification of navigator.mediaCapabilities
+PASS MediaCapabilities interface: navigator.mediaCapabilities must inherit property "decodingInfo(MediaDecodingConfiguration)" with the proper type
+PASS MediaCapabilities interface: calling decodingInfo(MediaDecodingConfiguration) on navigator.mediaCapabilities with too few arguments must throw TypeError
+PASS MediaCapabilities interface: navigator.mediaCapabilities must inherit property "encodingInfo(MediaEncodingConfiguration)" with the proper type
+PASS MediaCapabilities interface: calling encodingInfo(MediaEncodingConfiguration) on navigator.mediaCapabilities with too few arguments must throw TypeError
 FAIL ScreenLuminance interface: existence and properties of interface object assert_own_property: self does not have own property "ScreenLuminance" expected property "ScreenLuminance" missing
 FAIL ScreenLuminance interface object length assert_own_property: self does not have own property "ScreenLuminance" expected property "ScreenLuminance" missing
 FAIL ScreenLuminance interface object name assert_own_property: self does not have own property "ScreenLuminance" expected property "ScreenLuminance" missing
@@ -23,5 +29,19 @@
 FAIL ScreenLuminance interface: attribute min assert_own_property: self does not have own property "ScreenLuminance" expected property "ScreenLuminance" missing
 FAIL ScreenLuminance interface: attribute max assert_own_property: self does not have own property "ScreenLuminance" expected property "ScreenLuminance" missing
 FAIL ScreenLuminance interface: attribute maxAverage assert_own_property: self does not have own property "ScreenLuminance" expected property "ScreenLuminance" missing
+FAIL ScreenLuminance must be primary interface of screen.luminance assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL Stringification of screen.luminance assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL ScreenLuminance interface: screen.luminance must inherit property "min" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL ScreenLuminance interface: screen.luminance must inherit property "max" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL ScreenLuminance interface: screen.luminance must inherit property "maxAverage" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+PASS Navigator interface: attribute mediaCapabilities
+PASS Navigator interface: navigator must inherit property "mediaCapabilities" with the proper type
+PASS WorkerNavigator interface: existence and properties of interface object
+FAIL Screen interface: attribute colorGamut assert_true: The prototype object must have a property "colorGamut" expected true got false
+FAIL Screen interface: attribute luminance assert_true: The prototype object must have a property "luminance" expected true got false
+FAIL Screen interface: attribute onchange assert_true: The prototype object must have a property "onchange" expected true got false
+FAIL Screen interface: screen must inherit property "colorGamut" with the proper type assert_inherits: property "colorGamut" not found in prototype chain
+FAIL Screen interface: screen must inherit property "luminance" with the proper type assert_inherits: property "luminance" not found in prototype chain
+FAIL Screen interface: screen must inherit property "onchange" with the proper type assert_inherits: property "onchange" not found in prototype chain
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/media-capabilities/idlharness.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/media-capabilities/idlharness.any.worker-expected.txt
index e9ec6a3..405b3ba 100644
--- a/third_party/blink/web_tests/external/wpt/media-capabilities/idlharness.any.worker-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/media-capabilities/idlharness.any.worker-expected.txt
@@ -1,11 +1,11 @@
 This is a testharness.js-based test.
 PASS idlharness
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface WorkerNavigator: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface Screen: original interface defined assert_true: Original interface should be defined expected true got false
+PASS idl_test setup
+PASS Partial interface Navigator: original interface defined
+PASS Partial interface Navigator: valid exposure set
+PASS Partial interface WorkerNavigator: original interface defined
+PASS Partial interface WorkerNavigator: valid exposure set
+PASS Partial interface Screen: original interface defined
 PASS MediaCapabilities interface: existence and properties of interface object
 PASS MediaCapabilities interface object length
 PASS MediaCapabilities interface object name
@@ -14,6 +14,24 @@
 PASS MediaCapabilities interface: existence and properties of interface prototype object's @@unscopables property
 PASS MediaCapabilities interface: operation decodingInfo(MediaDecodingConfiguration)
 PASS MediaCapabilities interface: operation encodingInfo(MediaEncodingConfiguration)
+PASS MediaCapabilities must be primary interface of navigator.mediaCapabilities
+PASS Stringification of navigator.mediaCapabilities
+PASS MediaCapabilities interface: navigator.mediaCapabilities must inherit property "decodingInfo(MediaDecodingConfiguration)" with the proper type
+PASS MediaCapabilities interface: calling decodingInfo(MediaDecodingConfiguration) on navigator.mediaCapabilities with too few arguments must throw TypeError
+PASS MediaCapabilities interface: navigator.mediaCapabilities must inherit property "encodingInfo(MediaEncodingConfiguration)" with the proper type
+PASS MediaCapabilities interface: calling encodingInfo(MediaEncodingConfiguration) on navigator.mediaCapabilities with too few arguments must throw TypeError
 PASS ScreenLuminance interface: existence and properties of interface object
+FAIL ScreenLuminance must be primary interface of screen.luminance assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: screen is not defined"
+FAIL Stringification of screen.luminance assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: screen is not defined"
+FAIL ScreenLuminance interface: screen.luminance must not have property "min" assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: screen is not defined"
+FAIL ScreenLuminance interface: screen.luminance must not have property "max" assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: screen is not defined"
+FAIL ScreenLuminance interface: screen.luminance must not have property "maxAverage" assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: screen is not defined"
+PASS Navigator interface: existence and properties of interface object
+PASS WorkerNavigator interface: attribute mediaCapabilities
+PASS WorkerNavigator interface: navigator must inherit property "mediaCapabilities" with the proper type
+PASS Screen interface: existence and properties of interface object
+FAIL Screen interface: screen must not have property "colorGamut" assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: screen is not defined"
+FAIL Screen interface: screen must not have property "luminance" assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: screen is not defined"
+FAIL Screen interface: screen must not have property "onchange" assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: screen is not defined"
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/media-playback-quality/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/media-playback-quality/idlharness.window-expected.txt
deleted file mode 100644
index c770047e..0000000
--- a/third_party/blink/web_tests/external/wpt/media-playback-quality/idlharness.window-expected.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface HTMLVideoElement: original interface defined assert_true: Original interface should be defined expected true got false
-PASS VideoPlaybackQuality interface: existence and properties of interface object
-PASS VideoPlaybackQuality interface object length
-PASS VideoPlaybackQuality interface object name
-PASS VideoPlaybackQuality interface: existence and properties of interface prototype object
-PASS VideoPlaybackQuality interface: existence and properties of interface prototype object's "constructor" property
-PASS VideoPlaybackQuality interface: existence and properties of interface prototype object's @@unscopables property
-PASS VideoPlaybackQuality interface: attribute creationTime
-PASS VideoPlaybackQuality interface: attribute corruptedVideoFrames
-PASS VideoPlaybackQuality interface: attribute droppedVideoFrames
-PASS VideoPlaybackQuality interface: attribute totalVideoFrames
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/media-source/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/media-source/idlharness.window-expected.txt
index ad9883c..21a2eec7 100644
--- a/third_party/blink/web_tests/external/wpt/media-source/idlharness.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/media-source/idlharness.window-expected.txt
@@ -1,12 +1,11 @@
 This is a testharness.js-based test.
-Found 56 tests; 50 PASS, 6 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface URL: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface AudioTrack: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface VideoTrack: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface TextTrack: original interface defined assert_true: Original interface should be defined expected true got false
+Found 107 tests; 104 PASS, 3 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface URL: original interface defined
+PASS Partial interface URL: valid exposure set
+PASS Partial interface AudioTrack: original interface defined
+PASS Partial interface VideoTrack: original interface defined
+PASS Partial interface TextTrack: original interface defined
 PASS MediaSource interface: existence and properties of interface object
 PASS MediaSource interface object length
 PASS MediaSource interface object name
@@ -26,6 +25,26 @@
 PASS MediaSource interface: operation setLiveSeekableRange(double, double)
 PASS MediaSource interface: operation clearLiveSeekableRange()
 PASS MediaSource interface: operation isTypeSupported(DOMString)
+PASS MediaSource must be primary interface of mediaSource
+PASS Stringification of mediaSource
+PASS MediaSource interface: mediaSource must inherit property "sourceBuffers" with the proper type
+PASS MediaSource interface: mediaSource must inherit property "activeSourceBuffers" with the proper type
+PASS MediaSource interface: mediaSource must inherit property "readyState" with the proper type
+PASS MediaSource interface: mediaSource must inherit property "duration" with the proper type
+PASS MediaSource interface: mediaSource must inherit property "onsourceopen" with the proper type
+PASS MediaSource interface: mediaSource must inherit property "onsourceended" with the proper type
+PASS MediaSource interface: mediaSource must inherit property "onsourceclose" with the proper type
+PASS MediaSource interface: mediaSource must inherit property "addSourceBuffer(DOMString)" with the proper type
+PASS MediaSource interface: calling addSourceBuffer(DOMString) on mediaSource with too few arguments must throw TypeError
+PASS MediaSource interface: mediaSource must inherit property "removeSourceBuffer(SourceBuffer)" with the proper type
+PASS MediaSource interface: calling removeSourceBuffer(SourceBuffer) on mediaSource with too few arguments must throw TypeError
+PASS MediaSource interface: mediaSource must inherit property "endOfStream(EndOfStreamError)" with the proper type
+PASS MediaSource interface: calling endOfStream(EndOfStreamError) on mediaSource with too few arguments must throw TypeError
+PASS MediaSource interface: mediaSource must inherit property "setLiveSeekableRange(double, double)" with the proper type
+PASS MediaSource interface: calling setLiveSeekableRange(double, double) on mediaSource with too few arguments must throw TypeError
+PASS MediaSource interface: mediaSource must inherit property "clearLiveSeekableRange()" with the proper type
+PASS MediaSource interface: mediaSource must inherit property "isTypeSupported(DOMString)" with the proper type
+PASS MediaSource interface: calling isTypeSupported(DOMString) on mediaSource with too few arguments must throw TypeError
 PASS SourceBuffer interface: existence and properties of interface object
 PASS SourceBuffer interface object length
 PASS SourceBuffer interface object name
@@ -49,6 +68,27 @@
 PASS SourceBuffer interface: operation appendBuffer(BufferSource)
 PASS SourceBuffer interface: operation abort()
 PASS SourceBuffer interface: operation remove(double, unrestricted double)
+PASS SourceBuffer must be primary interface of sourceBuffer
+PASS Stringification of sourceBuffer
+PASS SourceBuffer interface: sourceBuffer must inherit property "mode" with the proper type
+PASS SourceBuffer interface: sourceBuffer must inherit property "updating" with the proper type
+PASS SourceBuffer interface: sourceBuffer must inherit property "buffered" with the proper type
+PASS SourceBuffer interface: sourceBuffer must inherit property "timestampOffset" with the proper type
+PASS SourceBuffer interface: sourceBuffer must inherit property "audioTracks" with the proper type
+PASS SourceBuffer interface: sourceBuffer must inherit property "videoTracks" with the proper type
+FAIL SourceBuffer interface: sourceBuffer must inherit property "textTracks" with the proper type assert_inherits: property "textTracks" not found in prototype chain
+PASS SourceBuffer interface: sourceBuffer must inherit property "appendWindowStart" with the proper type
+PASS SourceBuffer interface: sourceBuffer must inherit property "appendWindowEnd" with the proper type
+PASS SourceBuffer interface: sourceBuffer must inherit property "onupdatestart" with the proper type
+PASS SourceBuffer interface: sourceBuffer must inherit property "onupdate" with the proper type
+PASS SourceBuffer interface: sourceBuffer must inherit property "onupdateend" with the proper type
+PASS SourceBuffer interface: sourceBuffer must inherit property "onerror" with the proper type
+PASS SourceBuffer interface: sourceBuffer must inherit property "onabort" with the proper type
+PASS SourceBuffer interface: sourceBuffer must inherit property "appendBuffer(BufferSource)" with the proper type
+PASS SourceBuffer interface: calling appendBuffer(BufferSource) on sourceBuffer with too few arguments must throw TypeError
+PASS SourceBuffer interface: sourceBuffer must inherit property "abort()" with the proper type
+PASS SourceBuffer interface: sourceBuffer must inherit property "remove(double, unrestricted double)" with the proper type
+PASS SourceBuffer interface: calling remove(double, unrestricted double) on sourceBuffer with too few arguments must throw TypeError
 PASS SourceBufferList interface: existence and properties of interface object
 PASS SourceBufferList interface object length
 PASS SourceBufferList interface object name
@@ -58,5 +98,14 @@
 PASS SourceBufferList interface: attribute length
 PASS SourceBufferList interface: attribute onaddsourcebuffer
 PASS SourceBufferList interface: attribute onremovesourcebuffer
+PASS SourceBufferList must be primary interface of mediaSource.sourceBuffers
+PASS Stringification of mediaSource.sourceBuffers
+PASS SourceBufferList interface: mediaSource.sourceBuffers must inherit property "length" with the proper type
+PASS SourceBufferList interface: mediaSource.sourceBuffers must inherit property "onaddsourcebuffer" with the proper type
+PASS SourceBufferList interface: mediaSource.sourceBuffers must inherit property "onremovesourcebuffer" with the proper type
+PASS AudioTrack interface: attribute sourceBuffer
+PASS VideoTrack interface: attribute sourceBuffer
+FAIL TextTrack interface: attribute sourceBuffer assert_true: The prototype object must have a property "sourceBuffer" expected true got false
+PASS URL interface: operation createObjectURL(MediaSource)
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/mediacapture-fromelement/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/mediacapture-fromelement/idlharness.window-expected.txt
index ef7061c..e2149ce 100644
--- a/third_party/blink/web_tests/external/wpt/mediacapture-fromelement/idlharness.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/mediacapture-fromelement/idlharness.window-expected.txt
@@ -1,8 +1,23 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface HTMLMediaElement: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface HTMLCanvasElement: original interface defined assert_true: Original interface should be defined expected true got false
+PASS idl_test setup
+PASS Partial interface HTMLMediaElement: original interface defined
+PASS Partial interface HTMLCanvasElement: original interface defined
+PASS CanvasCaptureMediaStreamTrack interface: existence and properties of interface object
+PASS CanvasCaptureMediaStreamTrack interface object length
+PASS CanvasCaptureMediaStreamTrack interface object name
+PASS CanvasCaptureMediaStreamTrack interface: existence and properties of interface prototype object
+PASS CanvasCaptureMediaStreamTrack interface: existence and properties of interface prototype object's "constructor" property
+PASS CanvasCaptureMediaStreamTrack interface: existence and properties of interface prototype object's @@unscopables property
+PASS CanvasCaptureMediaStreamTrack interface: attribute canvas
+PASS CanvasCaptureMediaStreamTrack interface: operation requestFrame()
+PASS CanvasCaptureMediaStreamTrack must be primary interface of track
+PASS Stringification of track
+PASS CanvasCaptureMediaStreamTrack interface: track must inherit property "canvas" with the proper type
+PASS CanvasCaptureMediaStreamTrack interface: track must inherit property "requestFrame()" with the proper type
+PASS HTMLMediaElement interface: operation captureStream()
+FAIL HTMLMediaElement interface: media must inherit property "captureStream()" with the proper type assert_inherits: property "captureStream" not found in prototype chain
+PASS HTMLCanvasElement interface: operation captureStream(double)
+PASS HTMLCanvasElement interface: canvas must inherit property "captureStream(double)" with the proper type
+PASS HTMLCanvasElement interface: calling captureStream(double) on canvas with too few arguments must throw TypeError
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/mediacapture-image/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/mediacapture-image/idlharness.window-expected.txt
deleted file mode 100644
index 73dc3c5..0000000
--- a/third_party/blink/web_tests/external/wpt/mediacapture-image/idlharness.window-expected.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS Partial dictionary MediaTrackSupportedConstraints: original dictionary defined
-PASS Partial dictionary MediaTrackCapabilities: original dictionary defined
-PASS Partial dictionary MediaTrackConstraintSet: original dictionary defined
-PASS Partial dictionary MediaTrackSettings: original dictionary defined
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/mediacapture-record/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/mediacapture-record/idlharness.window-expected.txt
index adb6cc43..743e472 100644
--- a/third_party/blink/web_tests/external/wpt/mediacapture-record/idlharness.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/mediacapture-record/idlharness.window-expected.txt
@@ -1,6 +1,71 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+Found 67 tests; 57 PASS, 10 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS MediaRecorder interface: existence and properties of interface object
+PASS MediaRecorder interface object length
+PASS MediaRecorder interface object name
+PASS MediaRecorder interface: existence and properties of interface prototype object
+PASS MediaRecorder interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaRecorder interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaRecorder interface: attribute stream
+PASS MediaRecorder interface: attribute mimeType
+PASS MediaRecorder interface: attribute state
+PASS MediaRecorder interface: attribute onstart
+PASS MediaRecorder interface: attribute onstop
+PASS MediaRecorder interface: attribute ondataavailable
+PASS MediaRecorder interface: attribute onpause
+PASS MediaRecorder interface: attribute onresume
+PASS MediaRecorder interface: attribute onerror
+PASS MediaRecorder interface: attribute videoBitsPerSecond
+PASS MediaRecorder interface: attribute audioBitsPerSecond
+PASS MediaRecorder interface: operation start(unsigned long)
+PASS MediaRecorder interface: operation stop()
+PASS MediaRecorder interface: operation pause()
+PASS MediaRecorder interface: operation resume()
+PASS MediaRecorder interface: operation requestData()
+PASS MediaRecorder interface: operation isTypeSupported(DOMString)
+PASS MediaRecorder must be primary interface of [object MediaRecorder]
+PASS Stringification of [object MediaRecorder]
+PASS MediaRecorder interface: [object MediaRecorder] must inherit property "stream" with the proper type
+PASS MediaRecorder interface: [object MediaRecorder] must inherit property "mimeType" with the proper type
+PASS MediaRecorder interface: [object MediaRecorder] must inherit property "state" with the proper type
+PASS MediaRecorder interface: [object MediaRecorder] must inherit property "onstart" with the proper type
+PASS MediaRecorder interface: [object MediaRecorder] must inherit property "onstop" with the proper type
+PASS MediaRecorder interface: [object MediaRecorder] must inherit property "ondataavailable" with the proper type
+PASS MediaRecorder interface: [object MediaRecorder] must inherit property "onpause" with the proper type
+PASS MediaRecorder interface: [object MediaRecorder] must inherit property "onresume" with the proper type
+PASS MediaRecorder interface: [object MediaRecorder] must inherit property "onerror" with the proper type
+PASS MediaRecorder interface: [object MediaRecorder] must inherit property "videoBitsPerSecond" with the proper type
+PASS MediaRecorder interface: [object MediaRecorder] must inherit property "audioBitsPerSecond" with the proper type
+PASS MediaRecorder interface: [object MediaRecorder] must inherit property "start(unsigned long)" with the proper type
+PASS MediaRecorder interface: calling start(unsigned long) on [object MediaRecorder] with too few arguments must throw TypeError
+PASS MediaRecorder interface: [object MediaRecorder] must inherit property "stop()" with the proper type
+PASS MediaRecorder interface: [object MediaRecorder] must inherit property "pause()" with the proper type
+PASS MediaRecorder interface: [object MediaRecorder] must inherit property "resume()" with the proper type
+PASS MediaRecorder interface: [object MediaRecorder] must inherit property "requestData()" with the proper type
+PASS MediaRecorder interface: [object MediaRecorder] must inherit property "isTypeSupported(DOMString)" with the proper type
+PASS MediaRecorder interface: calling isTypeSupported(DOMString) on [object MediaRecorder] with too few arguments must throw TypeError
+PASS BlobEvent interface: existence and properties of interface object
+PASS BlobEvent interface object length
+PASS BlobEvent interface object name
+PASS BlobEvent interface: existence and properties of interface prototype object
+PASS BlobEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS BlobEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS BlobEvent interface: attribute data
+PASS BlobEvent interface: attribute timecode
+PASS BlobEvent must be primary interface of [object BlobEvent]
+PASS Stringification of [object BlobEvent]
+PASS BlobEvent interface: [object BlobEvent] must inherit property "data" with the proper type
+PASS BlobEvent interface: [object BlobEvent] must inherit property "timecode" with the proper type
+FAIL MediaRecorderErrorEvent interface: existence and properties of interface object assert_own_property: self does not have own property "MediaRecorderErrorEvent" expected property "MediaRecorderErrorEvent" missing
+FAIL MediaRecorderErrorEvent interface object length assert_own_property: self does not have own property "MediaRecorderErrorEvent" expected property "MediaRecorderErrorEvent" missing
+FAIL MediaRecorderErrorEvent interface object name assert_own_property: self does not have own property "MediaRecorderErrorEvent" expected property "MediaRecorderErrorEvent" missing
+FAIL MediaRecorderErrorEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "MediaRecorderErrorEvent" expected property "MediaRecorderErrorEvent" missing
+FAIL MediaRecorderErrorEvent interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "MediaRecorderErrorEvent" expected property "MediaRecorderErrorEvent" missing
+FAIL MediaRecorderErrorEvent interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "MediaRecorderErrorEvent" expected property "MediaRecorderErrorEvent" missing
+FAIL MediaRecorderErrorEvent interface: attribute error assert_own_property: self does not have own property "MediaRecorderErrorEvent" expected property "MediaRecorderErrorEvent" missing
+FAIL MediaRecorderErrorEvent must be primary interface of undefined assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL Stringification of undefined assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL MediaRecorderErrorEvent interface: undefined must inherit property "error" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/mediacapture-streams/MediaStream-removetrack.https-expected.txt b/third_party/blink/web_tests/external/wpt/mediacapture-streams/MediaStream-removetrack.https-expected.txt
index 09d4d66..59a5126 100644
--- a/third_party/blink/web_tests/external/wpt/mediacapture-streams/MediaStream-removetrack.https-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/mediacapture-streams/MediaStream-removetrack.https-expected.txt
@@ -1,7 +1,6 @@
 This is a testharness.js-based test.
-Harness Error. harness_status.status = 1 , harness_status.message = Test named 'Test that removal from a MediaStream fires ended on media elements (video first)' specified 2 'cleanup' functions, and 1 returned a non-thenable value.
 PASS Tests that a removal from a MediaStream works as expected
 FAIL Test that removal from a MediaStream fires ended on media elements (video first) assert_equals: audio element ended because no more audio tracks expected true but got false
-NOTRUN Test that removal from a MediaStream fires ended on media elements (audio first)
+FAIL Test that removal from a MediaStream fires ended on media elements (audio first) assert_equals: audio element ended because no more audio tracks expected true but got false
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/mediacapture-streams/MediaStream-removetrack.https.html b/third_party/blink/web_tests/external/wpt/mediacapture-streams/MediaStream-removetrack.https.html
index b934397..1e9ebbc 100644
--- a/third_party/blink/web_tests/external/wpt/mediacapture-streams/MediaStream-removetrack.https.html
+++ b/third_party/blink/web_tests/external/wpt/mediacapture-streams/MediaStream-removetrack.https.html
@@ -56,10 +56,15 @@
 promise_test(async t => {
   const stream = await navigator.mediaDevices.getUserMedia({video: true, audio: true});
   const tracks = stream.getTracks();
-  t.add_cleanup(() => tracks.forEach(track => track.stop()));
 
   audio.srcObject = video.srcObject = stream;
-  t.add_cleanup(() => audio.srcObject = video.srcObject = null);
+
+  t.add_cleanup(() => {
+    for (const track of tracks) {
+      track.stop();
+    }
+    audio.srcObject = video.srcObject = null;
+  });
 
   await Promise.all([
     new Promise(r => audio.onloadedmetadata = r),
@@ -90,10 +95,15 @@
 promise_test(async t => {
   const stream = await navigator.mediaDevices.getUserMedia({video: true, audio: true});
   const tracks = stream.getTracks();
-  t.add_cleanup(() => tracks.forEach(track => track.stop()));
 
   audio.srcObject = video.srcObject = stream;
-  t.add_cleanup(() => audio.srcObject = video.srcObject = null);
+
+  t.add_cleanup(() => {
+    for (const track of tracks) {
+      track.stop();
+    }
+    audio.srcObject = video.srcObject = null;
+  });
 
   await Promise.all([
     new Promise(r => audio.onloadedmetadata = r),
diff --git a/third_party/blink/web_tests/external/wpt/mediacapture-streams/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/mediacapture-streams/idlharness.https.window-expected.txt
deleted file mode 100644
index 506bdb6..0000000
--- a/third_party/blink/web_tests/external/wpt/mediacapture-streams/idlharness.https.window-expected.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-This is a testharness.js-based test.
-Found 77 tests; 74 PASS, 3 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface Navigator[2]: original interface defined assert_true: Original interface should be defined expected true got false
-PASS Partial interface MediaDevices: original interface defined
-PASS MediaStream interface: existence and properties of interface object
-PASS MediaStream interface object length
-PASS MediaStream interface object name
-PASS MediaStream interface: existence and properties of interface prototype object
-PASS MediaStream interface: existence and properties of interface prototype object's "constructor" property
-PASS MediaStream interface: existence and properties of interface prototype object's @@unscopables property
-PASS MediaStream interface: attribute id
-PASS MediaStream interface: operation getAudioTracks()
-PASS MediaStream interface: operation getVideoTracks()
-PASS MediaStream interface: operation getTracks()
-PASS MediaStream interface: operation getTrackById(DOMString)
-PASS MediaStream interface: operation addTrack(MediaStreamTrack)
-PASS MediaStream interface: operation removeTrack(MediaStreamTrack)
-PASS MediaStream interface: operation clone()
-PASS MediaStream interface: attribute active
-PASS MediaStream interface: attribute onaddtrack
-PASS MediaStream interface: attribute onremovetrack
-PASS MediaStreamTrack interface: existence and properties of interface object
-PASS MediaStreamTrack interface object length
-PASS MediaStreamTrack interface object name
-PASS MediaStreamTrack interface: existence and properties of interface prototype object
-PASS MediaStreamTrack interface: existence and properties of interface prototype object's "constructor" property
-PASS MediaStreamTrack interface: existence and properties of interface prototype object's @@unscopables property
-PASS MediaStreamTrack interface: attribute kind
-PASS MediaStreamTrack interface: attribute id
-PASS MediaStreamTrack interface: attribute label
-PASS MediaStreamTrack interface: attribute enabled
-PASS MediaStreamTrack interface: attribute muted
-PASS MediaStreamTrack interface: attribute onmute
-PASS MediaStreamTrack interface: attribute onunmute
-PASS MediaStreamTrack interface: attribute readyState
-PASS MediaStreamTrack interface: attribute onended
-PASS MediaStreamTrack interface: operation clone()
-PASS MediaStreamTrack interface: operation stop()
-PASS MediaStreamTrack interface: operation getCapabilities()
-PASS MediaStreamTrack interface: operation getConstraints()
-PASS MediaStreamTrack interface: operation getSettings()
-PASS MediaStreamTrack interface: operation applyConstraints(MediaTrackConstraints)
-PASS MediaStreamTrackEvent interface: existence and properties of interface object
-PASS MediaStreamTrackEvent interface object length
-PASS MediaStreamTrackEvent interface object name
-PASS MediaStreamTrackEvent interface: existence and properties of interface prototype object
-PASS MediaStreamTrackEvent interface: existence and properties of interface prototype object's "constructor" property
-PASS MediaStreamTrackEvent interface: existence and properties of interface prototype object's @@unscopables property
-PASS MediaStreamTrackEvent interface: attribute track
-PASS MediaDevices interface: existence and properties of interface object
-PASS MediaDevices interface object length
-PASS MediaDevices interface object name
-PASS MediaDevices interface: existence and properties of interface prototype object
-PASS MediaDevices interface: existence and properties of interface prototype object's "constructor" property
-PASS MediaDevices interface: existence and properties of interface prototype object's @@unscopables property
-PASS MediaDevices interface: attribute ondevicechange
-PASS MediaDevices interface: operation enumerateDevices()
-PASS MediaDevices interface: operation getSupportedConstraints()
-PASS MediaDevices interface: operation getUserMedia(MediaStreamConstraints)
-PASS MediaDeviceInfo interface: existence and properties of interface object
-PASS MediaDeviceInfo interface object length
-PASS MediaDeviceInfo interface object name
-PASS MediaDeviceInfo interface: existence and properties of interface prototype object
-PASS MediaDeviceInfo interface: existence and properties of interface prototype object's "constructor" property
-PASS MediaDeviceInfo interface: existence and properties of interface prototype object's @@unscopables property
-PASS MediaDeviceInfo interface: attribute deviceId
-PASS MediaDeviceInfo interface: attribute kind
-PASS MediaDeviceInfo interface: attribute label
-PASS MediaDeviceInfo interface: attribute groupId
-PASS MediaDeviceInfo interface: operation toJSON()
-PASS InputDeviceInfo interface: existence and properties of interface object
-PASS InputDeviceInfo interface object length
-PASS InputDeviceInfo interface object name
-PASS InputDeviceInfo interface: existence and properties of interface prototype object
-PASS InputDeviceInfo interface: existence and properties of interface prototype object's "constructor" property
-PASS InputDeviceInfo interface: existence and properties of interface prototype object's @@unscopables property
-PASS InputDeviceInfo interface: operation getCapabilities()
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/mediasession/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/mediasession/idlharness.window-expected.txt
index 45298ab..96abe20 100644
--- a/third_party/blink/web_tests/external/wpt/mediasession/idlharness.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/mediasession/idlharness.window-expected.txt
@@ -1,8 +1,7 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
+PASS idl_test setup
+PASS Partial interface Navigator: original interface defined
+PASS Partial interface Navigator: valid exposure set
 PASS MediaSession interface: existence and properties of interface object
 PASS MediaSession interface object length
 PASS MediaSession interface object name
@@ -13,6 +12,14 @@
 PASS MediaSession interface: attribute playbackState
 PASS MediaSession interface: operation setActionHandler(MediaSessionAction, MediaSessionActionHandler)
 FAIL MediaSession interface: operation setPositionState(MediaPositionState) assert_equals: property has wrong .length expected 0 but got 1
+PASS MediaSession must be primary interface of navigator.mediaSession
+PASS Stringification of navigator.mediaSession
+PASS MediaSession interface: navigator.mediaSession must inherit property "metadata" with the proper type
+PASS MediaSession interface: navigator.mediaSession must inherit property "playbackState" with the proper type
+PASS MediaSession interface: navigator.mediaSession must inherit property "setActionHandler(MediaSessionAction, MediaSessionActionHandler)" with the proper type
+PASS MediaSession interface: calling setActionHandler(MediaSessionAction, MediaSessionActionHandler) on navigator.mediaSession with too few arguments must throw TypeError
+PASS MediaSession interface: navigator.mediaSession must inherit property "setPositionState(MediaPositionState)" with the proper type
+PASS MediaSession interface: calling setPositionState(MediaPositionState) on navigator.mediaSession with too few arguments must throw TypeError
 PASS MediaMetadata interface: existence and properties of interface object
 PASS MediaMetadata interface object length
 PASS MediaMetadata interface object name
@@ -23,5 +30,13 @@
 PASS MediaMetadata interface: attribute artist
 PASS MediaMetadata interface: attribute album
 PASS MediaMetadata interface: attribute artwork
+PASS MediaMetadata must be primary interface of new MediaMetadata()
+PASS Stringification of new MediaMetadata()
+PASS MediaMetadata interface: new MediaMetadata() must inherit property "title" with the proper type
+PASS MediaMetadata interface: new MediaMetadata() must inherit property "artist" with the proper type
+PASS MediaMetadata interface: new MediaMetadata() must inherit property "album" with the proper type
+PASS MediaMetadata interface: new MediaMetadata() must inherit property "artwork" with the proper type
+PASS Navigator interface: attribute mediaSession
+PASS Navigator interface: navigator must inherit property "mediaSession" with the proper type
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index cb58cbcd..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: audio-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "audio-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index 815d926..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: audio-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "audio-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index 3a9ba21..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: audio-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "audio-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index 163b1dc..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: audio-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "audio-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index 4dbbc6c4..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: audio-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "audio-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index c3bc943e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: audio-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "audio-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 2c8a8cc..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: audio-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "audio-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index d97aaba..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: audio-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "audio-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index c04597d..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: audio-tag
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "audio-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index 5b0987b3..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: audio-tag
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "audio-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 0253efc8..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: audio-tag
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "audio-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
deleted file mode 100644
index 238565f..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: audio-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "audio-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html
deleted file mode 100644
index 8ddc972..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: audio-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "audio-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
deleted file mode 100644
index 09ffb26b..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: audio-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "audio-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
deleted file mode 100644
index b17073db..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: audio-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "audio-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html
deleted file mode 100644
index 6e86a30..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: audio-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "audio-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
deleted file mode 100644
index 1aae605..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: audio-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "audio-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index b8ef228..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: audio-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "audio-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 5130274..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: audio-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "audio-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 52aef35..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: beacon-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "beacon-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 44fb9c5..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: beacon-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "beacon-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index bd211c00..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: beacon-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "beacon-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index fbb5502..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: beacon-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "beacon-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 3392d1b..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: beacon-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "beacon-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 5ea4cd97..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: beacon-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "beacon-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 2ea1e37..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: beacon-request
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "beacon-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 89d7b82..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: beacon-request
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "beacon-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index ac205269..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: beacon-request
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "beacon-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 9cf67c8..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: beacon-request
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "beacon-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index ce86221..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: beacon-request
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "beacon-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index e331f57..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: beacon-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "beacon-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index bb5d94c..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: beacon-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "beacon-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index f3cddf5..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: beacon-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "beacon-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index ccbaeb9..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: beacon-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "beacon-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 6b0daa2..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: beacon-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "beacon-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index adffe35..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: beacon-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "beacon-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index f0353c39f..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: beacon-request
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "beacon-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 2cfc380..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/beacon-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: beacon-request
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "beacon-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index af17b7e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: classic-data-worker-fetch
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "classic-data-worker-fetch",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 2fff8e8..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: classic-data-worker-fetch
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "classic-data-worker-fetch",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index d654f3b..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: classic-data-worker-fetch
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "classic-data-worker-fetch",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index af004635..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: classic-data-worker-fetch
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "classic-data-worker-fetch",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index bd45fa9..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: classic-data-worker-fetch
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "classic-data-worker-fetch",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 6258bc95..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: classic-data-worker-fetch
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "classic-data-worker-fetch",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index ce000b1..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: classic-data-worker-fetch
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "classic-data-worker-fetch",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 84342c0..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: classic-data-worker-fetch
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "classic-data-worker-fetch",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index d77d386..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: classic-data-worker-fetch
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "classic-data-worker-fetch",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 4334777..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: classic-data-worker-fetch
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "classic-data-worker-fetch",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 1de38b5a..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: classic-data-worker-fetch
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "classic-data-worker-fetch",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 6b811116..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: classic-data-worker-fetch
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "classic-data-worker-fetch",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 35a7e584..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: classic-data-worker-fetch
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "classic-data-worker-fetch",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index e69505d7f..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: classic-data-worker-fetch
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "classic-data-worker-fetch",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index b56a6baa..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: classic-data-worker-fetch
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "classic-data-worker-fetch",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 4ae4cb8..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: classic-data-worker-fetch
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "classic-data-worker-fetch",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 919e992..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: classic-data-worker-fetch
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "classic-data-worker-fetch",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index e56db94..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: classic-data-worker-fetch
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "classic-data-worker-fetch",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index e5110a4..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/classic-data-worker-fetch/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: classic-data-worker-fetch
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "classic-data-worker-fetch",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index a84f29e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: fetch-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "fetch-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 4de2f75..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: fetch-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "fetch-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 3e0fb52..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: fetch-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "fetch-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 542a186..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: fetch-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "fetch-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 39ccde3..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: fetch-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "fetch-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 4c9d38e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: fetch-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "fetch-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index fa4e8f2..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: fetch-request
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "fetch-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index f05c4b9..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: fetch-request
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "fetch-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index a1e69a67..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: fetch-request
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "fetch-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index b9599b2..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: fetch-request
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "fetch-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 256fca63..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: fetch-request
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "fetch-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 1ebe923..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: fetch-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "fetch-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 250bbd4..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: fetch-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "fetch-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 98b12d2..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: fetch-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "fetch-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index a63a7940..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: fetch-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "fetch-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 43a6499..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: fetch-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "fetch-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index b1534c8..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: fetch-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "fetch-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index bbc089ba..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: fetch-request
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "fetch-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 7040421..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: fetch-request
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "fetch-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..1c26f51
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for audio-tag to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "audio-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..19c29c82
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for audio-tag to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "audio-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..0d2ae743
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for audio-tag to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "audio-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..88c8cb3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for audio-tag to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "audio-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-http.keep-scheme.https.html.headers
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
rename to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..6b0d938
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for audio-tag to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "audio-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..2a988a3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for audio-tag to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "audio-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..de8968e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for audio-tag to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "audio-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..2bf8a47
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for audio-tag to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "audio-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/audio-tag/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..f4fb15f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for beacon to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "beacon",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..c16ae8e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for beacon to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "beacon",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..ff0531b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for beacon to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "beacon",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..eb67d663
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for beacon to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "beacon",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-http.no-redirect.https.html
new file mode 100644
index 0000000..406d5a5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for beacon to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "beacon",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..84b8ad9d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for beacon to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "beacon",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..4059540a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for beacon to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "beacon",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-https.no-redirect.https.html
new file mode 100644
index 0000000..6969fa1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for beacon to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "beacon",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/beacon/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..b8e4bd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..1252613
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..a1d642b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..7a9a470
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-http.no-redirect.https.html
new file mode 100644
index 0000000..c2fe5c5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..c86a880
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..2531ded
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for fetch to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-https.no-redirect.https.html
new file mode 100644
index 0000000..1373a58
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for fetch to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/fetch/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..ef9d9f6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for img-tag to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..fe411c0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for img-tag to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..6e6b74b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for img-tag to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..7c486c0cd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for img-tag to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..9380cf26
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for img-tag to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..eb2bc29
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for img-tag to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..7292d2e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for img-tag to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..44d6f7f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for img-tag to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/img-tag/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..4543a05
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-css-tag to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-css-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..b83b676
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-css-tag to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-css-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..e8f3722
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-css-tag to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-css-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..2d18346
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-css-tag to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-css-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..e7148b2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-css-tag to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-css-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..5ee5049a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-css-tag to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-css-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..7e10fce
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for link-css-tag to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-css-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..42ce62a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for link-css-tag to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-css-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-css-tag/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..a54df13
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-prefetch-tag to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-prefetch-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..96c67a6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-prefetch-tag to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-prefetch-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..cdb36d0e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-prefetch-tag to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-prefetch-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..bfb329c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-prefetch-tag to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-prefetch-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..51f424d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-prefetch-tag to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-prefetch-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..7aec4f0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-prefetch-tag to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-prefetch-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..956dfc3d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for link-prefetch-tag to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-prefetch-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..91e7ee61
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for link-prefetch-tag to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-prefetch-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/link-prefetch-tag/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..fe827e53
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for object-tag to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "object-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..d0508e5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for object-tag to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "object-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..e170c92
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for object-tag to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "object-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..c18e678
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for object-tag to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "object-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..de94548
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for object-tag to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "object-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..dd2fb1f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for object-tag to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "object-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..8140072
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for object-tag to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "object-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..9eb97a1e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for object-tag to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "object-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..18b3d985
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for picture-tag to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "picture-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..d8b062f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for picture-tag to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "picture-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..b76c6ce
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for picture-tag to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "picture-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..42c01b37
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for picture-tag to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "picture-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..ea12f43
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for picture-tag to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "picture-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..ebfdb983
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for picture-tag to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "picture-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..a969c40d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for picture-tag to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "picture-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..fade858
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for picture-tag to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "picture-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/picture-tag/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..880beead
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for script-tag to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..0224dc2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for script-tag to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..d0790c1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for script-tag to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..0f703b5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for script-tag to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..9b3f770
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for script-tag to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..0f0aade8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for script-tag to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..ce117946
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for script-tag to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..6d8471a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for script-tag to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/script-tag/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..fa68df2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for video-tag to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "video-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..0f00654
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for video-tag to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "video-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..fc0e298
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for video-tag to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "video-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..63be32ca
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for video-tag to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "video-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..e52afc00
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for video-tag to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "video-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..8182dda
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for video-tag to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "video-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..677eac105
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for video-tag to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "video-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..e8fdae6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for video-tag to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "video-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/cross-ws.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/cross-ws.keep-scheme.https.html
new file mode 100644
index 0000000..277fb17b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/cross-ws.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for websocket to cross-ws origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-ws",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "websocket",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/cross-ws.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/cross-ws.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/cross-ws.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/cross-ws.no-redirect.https.html
new file mode 100644
index 0000000..37367a4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/cross-ws.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for websocket to cross-ws origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-ws",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "websocket",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/cross-ws.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/cross-ws.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/cross-ws.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/cross-ws.swap-scheme.https.html
new file mode 100644
index 0000000..763b7a4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/cross-ws.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for websocket to cross-ws origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-ws",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "websocket",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/cross-ws.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/cross-ws.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-ws.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-ws.keep-scheme.https.html
new file mode 100644
index 0000000..82f8ceac9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-ws.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for websocket to same-ws origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-ws",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "websocket",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-ws.keep-scheme.https.html.headers
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
rename to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-ws.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-ws.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-ws.no-redirect.https.html
new file mode 100644
index 0000000..cadadda
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-ws.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for websocket to same-ws origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-ws",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "websocket",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-ws.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-ws.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-ws.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-ws.swap-scheme.https.html
new file mode 100644
index 0000000..ac48beb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-ws.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for websocket to same-ws origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-ws",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "websocket",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-ws.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-ws.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-wss.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-wss.keep-scheme.https.html
new file mode 100644
index 0000000..89613650
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-wss.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for websocket to same-wss origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-wss",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "websocket",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-wss.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-wss.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-wss.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-wss.no-redirect.https.html
new file mode 100644
index 0000000..f9cab28
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-wss.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for websocket to same-wss origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-wss",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "websocket",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-wss.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/websocket/same-wss.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..9f19e5f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-classic to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..8b1ee70
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-classic to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..df3194a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-classic to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..8006ec2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-classic to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-http.no-redirect.https.html
new file mode 100644
index 0000000..2462b55d6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-classic to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..8e47ea0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-classic to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..5c3c85c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worker-classic to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-https.no-redirect.https.html
new file mode 100644
index 0000000..aebea3a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worker-classic to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-classic/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..789a840
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-import-data to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..18ee67c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-import-data to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..f3e7a468
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-import-data to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..4062257f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-import-data to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-http.no-redirect.https.html
new file mode 100644
index 0000000..f0e55bd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-import-data to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..e585c807
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-import-data to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..e714fee6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worker-import-data to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-https.no-redirect.https.html
new file mode 100644
index 0000000..fe7e30c6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worker-import-data to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-import-data/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..720fa1d0d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-module to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..ae0f798
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-module to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..77ceb91
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-module to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..e5e13eac
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-module to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-http.keep-scheme.https.html.headers
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
rename to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-http.no-redirect.https.html
new file mode 100644
index 0000000..808dbfc4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-module to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..f860cf02e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-module to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/fetch-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..90dd2c9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worker-module to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-https.no-redirect.https.html
new file mode 100644
index 0000000..f8f65417
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worker-module to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worker-module/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..5d3e79e3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation-import-data to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..84c5e8f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation-import-data to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..8165630d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation-import-data to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..99fd1416
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation-import-data to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-http.no-redirect.https.html
new file mode 100644
index 0000000..1f8bc89
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation-import-data to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..65d0a63
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation-import-data to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..6343bd51
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-animation-import-data to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-https.no-redirect.https.html
new file mode 100644
index 0000000..1a1e85f9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-animation-import-data to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..cd37da6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..6b61aaa
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..2904c84
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..23ad7c9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-http.no-redirect.https.html
new file mode 100644
index 0000000..de7b01a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..58fda268
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..5f657ea4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-animation to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-https.no-redirect.https.html
new file mode 100644
index 0000000..831c3f8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-animation to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..f2bedf04
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio-import-data to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..8610bcea
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio-import-data to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..c338054
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio-import-data to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..49fd780
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio-import-data to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-http.no-redirect.https.html
new file mode 100644
index 0000000..458202b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio-import-data to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..58552921
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio-import-data to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..30a88c2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-audio-import-data to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-https.no-redirect.https.html
new file mode 100644
index 0000000..509d5b7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-audio-import-data to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio-import-data/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..d85dbac
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..d11b971
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..c258b28
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..1a04fc11
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-http.no-redirect.https.html
new file mode 100644
index 0000000..654c2ac
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..a411aca
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..2f4baf8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-audio to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-https.no-redirect.https.html
new file mode 100644
index 0000000..99ec3b5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-audio to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-audio/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..789189ce
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout-import-data to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..04a5c5b9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout-import-data to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..c9c753b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout-import-data to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..583b6e9f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout-import-data to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-http.no-redirect.https.html
new file mode 100644
index 0000000..d4e0701c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout-import-data to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..4f6b03fe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout-import-data to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..1f73fa2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-layout-import-data to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-https.no-redirect.https.html
new file mode 100644
index 0000000..16abae6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-layout-import-data to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..2b9c6a4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..ffbe1c5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..7fdf21d8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..28e89c1e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-http.no-redirect.https.html
new file mode 100644
index 0000000..2f311e2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..a51bde6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..43dcbfd7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-layout to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-https.no-redirect.https.html
new file mode 100644
index 0000000..4daed5c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-layout to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..e7f398f8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint-import-data to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..1bd0df34
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint-import-data to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..bb1516fd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint-import-data to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..473ab6a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint-import-data to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-http.no-redirect.https.html
new file mode 100644
index 0000000..1929cb7b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint-import-data to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..fdc59a1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint-import-data to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..9cc12fe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-paint-import-data to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-https.no-redirect.https.html
new file mode 100644
index 0000000..a63225c9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-paint-import-data to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint-import-data/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..e88f6c7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..f78ac6a0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..cafd243
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..577633ff
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-http.no-redirect.https.html
new file mode 100644
index 0000000..3d434f4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..548565f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..2009cabd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-paint to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-https.no-redirect.https.html
new file mode 100644
index 0000000..dcd74fbc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-paint to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-paint/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..49ed805
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for xhr to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..5e5b1f5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for xhr to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..2121a4f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for xhr to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..07b8ca6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for xhr to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-http.no-redirect.https.html
new file mode 100644
index 0000000..321ecc5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for xhr to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..edaefc8b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for xhr to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..b851c701
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for xhr to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-https.no-redirect.https.html
new file mode 100644
index 0000000..3647f6cd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for xhr to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/top.http-rp/opt-in/xhr/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/audio-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/audio-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..a041ea3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/audio-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for audio-tag to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "audio-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/audio-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/audio-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..fe361ea
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/audio-tag/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for audio-tag to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "audio-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/audio-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/audio-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..e6b8764
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/audio-tag/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for audio-tag to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "audio-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/beacon/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/beacon/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..6992cd5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/beacon/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for beacon to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "beacon",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/beacon/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/beacon/same-http.no-redirect.https.html
new file mode 100644
index 0000000..24c1d2e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/beacon/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for beacon to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "beacon",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/beacon/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/beacon/same-https.no-redirect.https.html
new file mode 100644
index 0000000..4746000
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/beacon/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for beacon to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "beacon",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/fetch/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/fetch/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..aef2c40
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/fetch/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/fetch/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/fetch/same-http.no-redirect.https.html
new file mode 100644
index 0000000..543e8c8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/fetch/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/fetch/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/fetch/same-https.no-redirect.https.html
new file mode 100644
index 0000000..305424e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/fetch/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for fetch to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/img-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/img-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..482ff0bb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/img-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for img-tag to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/img-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/img-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..f0faae9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/img-tag/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for img-tag to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/img-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/img-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..8845056
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/img-tag/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for img-tag to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/link-css-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/link-css-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..0e81db7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/link-css-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-css-tag to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-css-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/link-css-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/link-css-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..f637cbe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/link-css-tag/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-css-tag to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-css-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/link-css-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/link-css-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..97ad5f4d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/link-css-tag/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for link-css-tag to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-css-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/link-prefetch-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/link-prefetch-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..a841895a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/link-prefetch-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-prefetch-tag to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-prefetch-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/link-prefetch-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/link-prefetch-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..6502ac39
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/link-prefetch-tag/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-prefetch-tag to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-prefetch-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/link-prefetch-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/link-prefetch-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..b7a96ad5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/link-prefetch-tag/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for link-prefetch-tag to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-prefetch-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/object-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/object-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..e211052
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/object-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for object-tag to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "object-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/object-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/object-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..281ffdf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/object-tag/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for object-tag to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "object-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/object-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/object-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..c5fd222
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/object-tag/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for object-tag to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "object-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/picture-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/picture-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..ab5d0dc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/picture-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for picture-tag to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "picture-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/picture-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/picture-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..7870772a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/picture-tag/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for picture-tag to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "picture-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/picture-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/picture-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..633ee3b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/picture-tag/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for picture-tag to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "picture-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/script-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/script-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..dd94367
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/script-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for script-tag to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/script-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/script-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..d5c40ef
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/script-tag/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for script-tag to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/script-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/script-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..e43ba60
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/script-tag/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for script-tag to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/video-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/video-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..1b70d5c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/video-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for video-tag to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "video-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/video-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/video-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..6f9d659
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/video-tag/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for video-tag to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "video-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/video-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/video-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..7d276a5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/video-tag/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for video-tag to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "video-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/websocket/cross-ws.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/websocket/cross-ws.no-redirect.https.html
new file mode 100644
index 0000000..bdf8b6ad
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/websocket/cross-ws.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for websocket to cross-ws origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-ws",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "websocket",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/websocket/same-ws.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/websocket/same-ws.no-redirect.https.html
new file mode 100644
index 0000000..342d02a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/websocket/same-ws.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for websocket to same-ws origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-ws",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "websocket",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/websocket/same-wss.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/websocket/same-wss.no-redirect.https.html
new file mode 100644
index 0000000..dbdad00c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/websocket/same-wss.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for websocket to same-wss origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-wss",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "websocket",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-classic/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-classic/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..0dfb8b49
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-classic/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-classic to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-classic/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-classic/same-http.no-redirect.https.html
new file mode 100644
index 0000000..3a09cb2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-classic/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-classic to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-classic/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-classic/same-https.no-redirect.https.html
new file mode 100644
index 0000000..bf9c417
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-classic/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worker-classic to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-import-data/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-import-data/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..aa8971a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-import-data/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-import-data to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-import-data/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-import-data/same-http.no-redirect.https.html
new file mode 100644
index 0000000..5e3cf2c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-import-data/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-import-data to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-import-data/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-import-data/same-https.no-redirect.https.html
new file mode 100644
index 0000000..466f348
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-import-data/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worker-import-data to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-module/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-module/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..cd7df4a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-module/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-module to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-module/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-module/same-http.no-redirect.https.html
new file mode 100644
index 0000000..081ff9a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-module/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-module to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-module/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-module/same-https.no-redirect.https.html
new file mode 100644
index 0000000..3b9e52f1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worker-module/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worker-module to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-animation-import-data/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-animation-import-data/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..f6b3c56
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-animation-import-data/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation-import-data to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-animation-import-data/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-animation-import-data/same-http.no-redirect.https.html
new file mode 100644
index 0000000..389a5aeb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-animation-import-data/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation-import-data to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-animation-import-data/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-animation-import-data/same-https.no-redirect.https.html
new file mode 100644
index 0000000..5491d064
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-animation-import-data/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-animation-import-data to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-animation/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-animation/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..d79e04a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-animation/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-animation/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-animation/same-http.no-redirect.https.html
new file mode 100644
index 0000000..44597fc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-animation/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-animation/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-animation/same-https.no-redirect.https.html
new file mode 100644
index 0000000..a944e82
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-animation/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-animation to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-audio-import-data/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-audio-import-data/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..c018bba
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-audio-import-data/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio-import-data to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-audio-import-data/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-audio-import-data/same-http.no-redirect.https.html
new file mode 100644
index 0000000..de7a557
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-audio-import-data/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio-import-data to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-audio-import-data/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-audio-import-data/same-https.no-redirect.https.html
new file mode 100644
index 0000000..565166a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-audio-import-data/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-audio-import-data to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-audio/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-audio/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..087e9f6e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-audio/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-audio/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-audio/same-http.no-redirect.https.html
new file mode 100644
index 0000000..b87c62d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-audio/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-audio/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-audio/same-https.no-redirect.https.html
new file mode 100644
index 0000000..0cac182
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-audio/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-audio to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-layout-import-data/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-layout-import-data/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..7c3a5f5f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-layout-import-data/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout-import-data to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-layout-import-data/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-layout-import-data/same-http.no-redirect.https.html
new file mode 100644
index 0000000..9ba7403
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-layout-import-data/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout-import-data to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-layout-import-data/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-layout-import-data/same-https.no-redirect.https.html
new file mode 100644
index 0000000..44ab46b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-layout-import-data/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-layout-import-data to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-layout/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-layout/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..3b7b61b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-layout/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-layout/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-layout/same-http.no-redirect.https.html
new file mode 100644
index 0000000..3009dc32
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-layout/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-layout/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-layout/same-https.no-redirect.https.html
new file mode 100644
index 0000000..d00259c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-layout/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-layout to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-paint-import-data/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-paint-import-data/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..67b1a50
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-paint-import-data/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint-import-data to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-paint-import-data/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-paint-import-data/same-http.no-redirect.https.html
new file mode 100644
index 0000000..359b1fb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-paint-import-data/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint-import-data to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-paint-import-data/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-paint-import-data/same-https.no-redirect.https.html
new file mode 100644
index 0000000..97a493f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-paint-import-data/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-paint-import-data to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-paint/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-paint/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..f0c9f7b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-paint/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-paint/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-paint/same-http.no-redirect.https.html
new file mode 100644
index 0000000..967294d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-paint/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-paint/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-paint/same-https.no-redirect.https.html
new file mode 100644
index 0000000..0748955
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/worklet-paint/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-paint to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/xhr/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/xhr/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..78b7a6f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/xhr/cross-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for xhr to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/xhr/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/xhr/same-http.no-redirect.https.html
new file mode 100644
index 0000000..6eae7d50
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/xhr/same-http.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for xhr to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/xhr/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/xhr/same-https.no-redirect.https.html
new file mode 100644
index 0000000..b9be76f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/opt-in/xhr/same-https.no-redirect.https.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for xhr to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..a3bdca3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects allowed for audio-tag to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "audio-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..34c1eb8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects allowed for audio-tag to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "audio-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..fd98cf4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects allowed for audio-tag to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "audio-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..a870fc0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects allowed for audio-tag to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "audio-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..511c3045
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects allowed for audio-tag to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "audio-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..bd61f0fb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects allowed for audio-tag to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "audio-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..de8968e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for audio-tag to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "audio-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..2bf8a47
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/audio-tag/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for audio-tag to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "audio-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..f4fb15f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for beacon to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "beacon",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..c16ae8e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for beacon to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "beacon",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..ff0531b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for beacon to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "beacon",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..eb67d663
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for beacon to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "beacon",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/same-http.no-redirect.https.html
new file mode 100644
index 0000000..406d5a5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for beacon to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "beacon",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..84b8ad9d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for beacon to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "beacon",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..4059540a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for beacon to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "beacon",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/same-https.no-redirect.https.html
new file mode 100644
index 0000000..6969fa1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/beacon/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for beacon to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "beacon",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..b8e4bd1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..1252613
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..a1d642b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..7a9a470
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/same-http.no-redirect.https.html
new file mode 100644
index 0000000..c2fe5c5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..c86a880
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..2531ded
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for fetch to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/same-https.no-redirect.https.html
new file mode 100644
index 0000000..1373a58
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/fetch/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for fetch to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..6eea005
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects allowed for img-tag to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..14ce3316
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects allowed for img-tag to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..db54313
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects allowed for img-tag to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..79abf5a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects allowed for img-tag to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..4d996962
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects allowed for img-tag to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..1ef072fa
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects allowed for img-tag to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..7292d2e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for img-tag to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..44d6f7f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/img-tag/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for img-tag to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "img-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..4543a05
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-css-tag to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-css-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..b83b676
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-css-tag to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-css-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..e8f3722
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-css-tag to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-css-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..2d18346
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-css-tag to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-css-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..e7148b2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-css-tag to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-css-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..5ee5049a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-css-tag to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-css-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..7e10fce
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for link-css-tag to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-css-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..42ce62a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-css-tag/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for link-css-tag to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-css-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..a54df13
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-prefetch-tag to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-prefetch-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..96c67a6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-prefetch-tag to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-prefetch-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..cdb36d0e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-prefetch-tag to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-prefetch-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..bfb329c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-prefetch-tag to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-prefetch-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..51f424d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-prefetch-tag to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-prefetch-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..7aec4f0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for link-prefetch-tag to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-prefetch-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..956dfc3d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for link-prefetch-tag to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-prefetch-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..91e7ee61
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/link-prefetch-tag/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for link-prefetch-tag to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "link-prefetch-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..fe827e53
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for object-tag to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "object-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..d0508e5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for object-tag to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "object-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..e170c92
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for object-tag to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "object-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..c18e678
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for object-tag to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "object-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..de94548
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for object-tag to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "object-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..dd2fb1f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for object-tag to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "object-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..8140072
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for object-tag to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "object-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..9eb97a1e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/object-tag/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for object-tag to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "object-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..18b3d985
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for picture-tag to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "picture-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..d8b062f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for picture-tag to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "picture-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..b76c6ce
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for picture-tag to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "picture-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..42c01b37
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for picture-tag to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "picture-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..ea12f43
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for picture-tag to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "picture-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..ebfdb983
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for picture-tag to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "picture-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..a969c40d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for picture-tag to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "picture-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..fade858
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/picture-tag/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for picture-tag to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "picture-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..880beead
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for script-tag to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..0224dc2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for script-tag to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..d0790c1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for script-tag to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..0f703b5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for script-tag to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..9b3f770
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for script-tag to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..0f0aade8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for script-tag to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..ce117946
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for script-tag to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..6d8471a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/script-tag/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for script-tag to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "script-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..7b1d742
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects allowed for video-tag to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "video-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..cca4f39
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects allowed for video-tag to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "video-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..2c01360
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects allowed for video-tag to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "video-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..ed75b86
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects allowed for video-tag to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "video-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/same-http.no-redirect.https.html
new file mode 100644
index 0000000..c556a61
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects allowed for video-tag to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "video-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..15de6ef0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Optionally-blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of optionally-blockable content">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
+    <meta name="assert" content="Mixed-Content: Expects allowed for video-tag to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "video-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..677eac105
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for video-tag to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "video-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/same-https.no-redirect.https.html
new file mode 100644
index 0000000..e8fdae6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/video-tag/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for video-tag to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "video-tag",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/cross-ws.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/cross-ws.keep-scheme.https.html
new file mode 100644
index 0000000..277fb17b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/cross-ws.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for websocket to cross-ws origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-ws",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "websocket",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/cross-ws.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/cross-ws.no-redirect.https.html
new file mode 100644
index 0000000..37367a4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/cross-ws.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for websocket to cross-ws origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-ws",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "websocket",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/cross-ws.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/cross-ws.swap-scheme.https.html
new file mode 100644
index 0000000..763b7a4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/cross-ws.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for websocket to cross-ws origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-ws",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "websocket",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/same-ws.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/same-ws.keep-scheme.https.html
new file mode 100644
index 0000000..82f8ceac9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/same-ws.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for websocket to same-ws origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-ws",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "websocket",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/same-ws.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/same-ws.no-redirect.https.html
new file mode 100644
index 0000000..cadadda
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/same-ws.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for websocket to same-ws origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-ws",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "websocket",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/same-ws.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/same-ws.swap-scheme.https.html
new file mode 100644
index 0000000..ac48beb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/same-ws.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for websocket to same-ws origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-ws",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "websocket",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/same-wss.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/same-wss.keep-scheme.https.html
new file mode 100644
index 0000000..89613650
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/same-wss.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for websocket to same-wss origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-wss",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "websocket",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/same-wss.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/same-wss.no-redirect.https.html
new file mode 100644
index 0000000..f9cab28
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/websocket/same-wss.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for websocket to same-wss origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-wss",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "websocket",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..9f19e5f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-classic to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..8b1ee70
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-classic to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..df3194a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-classic to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..8006ec2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-classic to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/same-http.no-redirect.https.html
new file mode 100644
index 0000000..2462b55d6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-classic to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..8e47ea0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-classic to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..5c3c85c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worker-classic to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/same-https.no-redirect.https.html
new file mode 100644
index 0000000..aebea3a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-classic/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worker-classic to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-classic",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..789a840
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-import-data to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..18ee67c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-import-data to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..f3e7a468
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-import-data to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..4062257f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-import-data to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/same-http.no-redirect.https.html
new file mode 100644
index 0000000..f0e55bd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-import-data to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..e585c807
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-import-data to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..e714fee6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worker-import-data to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/same-https.no-redirect.https.html
new file mode 100644
index 0000000..fe7e30c6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-import-data/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worker-import-data to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..720fa1d0d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-module to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..ae0f798
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-module to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..77ceb91
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-module to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..e5e13eac
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-module to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/same-http.no-redirect.https.html
new file mode 100644
index 0000000..808dbfc4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-module to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..f860cf02e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worker-module to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..90dd2c9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worker-module to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/same-https.no-redirect.https.html
new file mode 100644
index 0000000..f8f65417
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worker-module/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worker-module to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worker-module",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..5d3e79e3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation-import-data to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..84c5e8f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation-import-data to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..8165630d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation-import-data to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..99fd1416
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation-import-data to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/same-http.no-redirect.https.html
new file mode 100644
index 0000000..1f8bc89
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation-import-data to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..65d0a63
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation-import-data to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..6343bd51
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-animation-import-data to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/same-https.no-redirect.https.html
new file mode 100644
index 0000000..1a1e85f9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-animation-import-data to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..cd37da6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..6b61aaa
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..2904c84
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..23ad7c9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/same-http.no-redirect.https.html
new file mode 100644
index 0000000..de7b01a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..58fda268
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-animation to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..5f657ea4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-animation to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/same-https.no-redirect.https.html
new file mode 100644
index 0000000..831c3f8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-animation/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-animation to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-animation",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..f2bedf04
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio-import-data to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..8610bcea
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio-import-data to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..c338054
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio-import-data to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..49fd780
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio-import-data to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/same-http.no-redirect.https.html
new file mode 100644
index 0000000..458202b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio-import-data to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..58552921
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio-import-data to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..30a88c2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-audio-import-data to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/same-https.no-redirect.https.html
new file mode 100644
index 0000000..509d5b7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio-import-data/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-audio-import-data to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..d85dbac
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..d11b971
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..c258b28
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..1a04fc11
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/same-http.no-redirect.https.html
new file mode 100644
index 0000000..654c2ac
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..a411aca
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-audio to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..2f4baf8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-audio to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/same-https.no-redirect.https.html
new file mode 100644
index 0000000..99ec3b5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-audio/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-audio to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-audio",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..789189ce
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout-import-data to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..04a5c5b9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout-import-data to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..c9c753b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout-import-data to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..583b6e9f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout-import-data to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/same-http.no-redirect.https.html
new file mode 100644
index 0000000..d4e0701c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout-import-data to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..4f6b03fe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout-import-data to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..1f73fa2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-layout-import-data to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/same-https.no-redirect.https.html
new file mode 100644
index 0000000..16abae6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-layout-import-data to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..2b9c6a4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..ffbe1c5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..7fdf21d8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..28e89c1e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/same-http.no-redirect.https.html
new file mode 100644
index 0000000..2f311e2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..a51bde6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-layout to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..43dcbfd7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-layout to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/same-https.no-redirect.https.html
new file mode 100644
index 0000000..4daed5c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-layout/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-layout to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-layout",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..e7f398f8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint-import-data to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..1bd0df34
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint-import-data to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..bb1516fd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint-import-data to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..473ab6a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint-import-data to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/same-http.no-redirect.https.html
new file mode 100644
index 0000000..1929cb7b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint-import-data to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..fdc59a1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint-import-data to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..9cc12fe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-paint-import-data to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/same-https.no-redirect.https.html
new file mode 100644
index 0000000..a63225c9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint-import-data/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-paint-import-data to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint-import-data",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..e88f6c7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..f78ac6a0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..cafd243
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..577633ff
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/same-http.no-redirect.https.html
new file mode 100644
index 0000000..3d434f4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..548565f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for worklet-paint to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..2009cabd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-paint to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/same-https.no-redirect.https.html
new file mode 100644
index 0000000..dcd74fbc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/worklet-paint/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for worklet-paint to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "worklet-paint",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..49ed805
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/cross-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for xhr to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..5e5b1f5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/cross-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for xhr to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..2121a4f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/cross-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for xhr to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..07b8ca6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/same-http.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for xhr to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/same-http.no-redirect.https.html
new file mode 100644
index 0000000..321ecc5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/same-http.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for xhr to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..edaefc8b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/same-http.swap-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for xhr to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..b851c701
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/same-https.keep-scheme.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for xhr to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/same-https.no-redirect.https.html
new file mode 100644
index 0000000..3647f6cd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/top.meta/unset/xhr/same-https.no-redirect.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for xhr to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [],
+          "source_scheme": "https",
+          "subresource": "xhr",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..dd14bc1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/cross-http.keep-scheme.https.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [
+            {
+              "policyDeliveries": [],
+              "sourceContextType": "worker-classic-data"
+            }
+          ],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/cross-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/cross-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..75b90ba
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/cross-http.no-redirect.https.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [
+            {
+              "policyDeliveries": [],
+              "sourceContextType": "worker-classic-data"
+            }
+          ],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/cross-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/cross-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..f8c8992
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/cross-http.swap-scheme.https.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [
+            {
+              "policyDeliveries": [],
+              "sourceContextType": "worker-classic-data"
+            }
+          ],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/cross-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/cross-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..8f471a0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-http.keep-scheme.https.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [
+            {
+              "policyDeliveries": [],
+              "sourceContextType": "worker-classic-data"
+            }
+          ],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-http.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-http.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-http.no-redirect.https.html
new file mode 100644
index 0000000..9483cf8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-http.no-redirect.https.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [
+            {
+              "policyDeliveries": [],
+              "sourceContextType": "worker-classic-data"
+            }
+          ],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-http.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-http.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..c526406c0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-http.swap-scheme.https.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [
+            {
+              "policyDeliveries": [],
+              "sourceContextType": "worker-classic-data"
+            }
+          ],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-http.swap-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-http.swap-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..7ed9c10
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-https.keep-scheme.https.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for fetch to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [
+            {
+              "policyDeliveries": [],
+              "sourceContextType": "worker-classic-data"
+            }
+          ],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-https.keep-scheme.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-https.keep-scheme.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-https.no-redirect.https.html
new file mode 100644
index 0000000..2aa18a6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-https.no-redirect.https.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for fetch to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [
+            {
+              "policyDeliveries": [],
+              "sourceContextType": "worker-classic-data"
+            }
+          ],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-https.no-redirect.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
copy to third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.http-rp/opt-in/fetch/same-https.no-redirect.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/opt-in/fetch/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/opt-in/fetch/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..5ae5d46
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/opt-in/fetch/cross-http.no-redirect.https.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to cross-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [
+            {
+              "policyDeliveries": [],
+              "sourceContextType": "worker-classic-data"
+            }
+          ],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/opt-in/fetch/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/opt-in/fetch/same-http.no-redirect.https.html
new file mode 100644
index 0000000..ed6d93f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/opt-in/fetch/same-http.no-redirect.https.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to same-http origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [
+            {
+              "policyDeliveries": [],
+              "sourceContextType": "worker-classic-data"
+            }
+          ],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/opt-in/fetch/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/opt-in/fetch/same-https.no-redirect.https.html
new file mode 100644
index 0000000..ba4fb513
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/opt-in/fetch/same-https.no-redirect.https.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for fetch to same-https origin and no-redirect redirection from https context.">
+    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [
+            {
+              "policyDeliveries": [],
+              "sourceContextType": "worker-classic-data"
+            }
+          ],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/cross-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/cross-http.keep-scheme.https.html
new file mode 100644
index 0000000..dd14bc1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/cross-http.keep-scheme.https.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to cross-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [
+            {
+              "policyDeliveries": [],
+              "sourceContextType": "worker-classic-data"
+            }
+          ],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/cross-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/cross-http.no-redirect.https.html
new file mode 100644
index 0000000..75b90ba
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/cross-http.no-redirect.https.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to cross-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "no-redirect",
+          "source_context_list": [
+            {
+              "policyDeliveries": [],
+              "sourceContextType": "worker-classic-data"
+            }
+          ],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/cross-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/cross-http.swap-scheme.https.html
new file mode 100644
index 0000000..f8c8992
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/cross-http.swap-scheme.https.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to cross-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "cross-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [
+            {
+              "policyDeliveries": [],
+              "sourceContextType": "worker-classic-data"
+            }
+          ],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/same-http.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/same-http.keep-scheme.https.html
new file mode 100644
index 0000000..8f471a0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/same-http.keep-scheme.https.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to same-http origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "keep-scheme",
+          "source_context_list": [
+            {
+              "policyDeliveries": [],
+              "sourceContextType": "worker-classic-data"
+            }
+          ],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/same-http.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/same-http.no-redirect.https.html
new file mode 100644
index 0000000..9483cf8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/same-http.no-redirect.https.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to same-http origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "no-redirect",
+          "source_context_list": [
+            {
+              "policyDeliveries": [],
+              "sourceContextType": "worker-classic-data"
+            }
+          ],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/same-http.swap-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/same-http.swap-scheme.https.html
new file mode 100644
index 0000000..c526406c0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/same-http.swap-scheme.https.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Blockable content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of blockable content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
+    <meta name="assert" content="Mixed-Content: Expects blocked for fetch to same-http origin and swap-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "blocked",
+          "origin": "same-http",
+          "redirection": "swap-scheme",
+          "source_context_list": [
+            {
+              "policyDeliveries": [],
+              "sourceContextType": "worker-classic-data"
+            }
+          ],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/same-https.keep-scheme.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/same-https.keep-scheme.https.html
new file mode 100644
index 0000000..7ed9c10
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/same-https.keep-scheme.https.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for fetch to same-https origin and keep-scheme redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "keep-scheme",
+          "source_context_list": [
+            {
+              "policyDeliveries": [],
+              "sourceContextType": "worker-classic-data"
+            }
+          ],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/same-https.no-redirect.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/same-https.no-redirect.https.html
new file mode 100644
index 0000000..2aa18a6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/gen/worker-classic-data.meta/unset/fetch/same-https.no-redirect.https.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using common/security-features/tools/template/test.release.html.template. -->
+<html>
+  <head>
+    <title>Mixed-Content: Allowed content</title>
+    <meta charset='utf-8'>
+    <meta name="description" content="Test behavior of allowed content.">
+    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
+    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
+    <meta name="assert" content="Mixed-Content: Expects allowed for fetch to same-https origin and no-redirect redirection from https context.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/security-features/resources/common.js"></script>
+    <script src="/mixed-content/generic/test-case.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      TestCase(
+        {
+          "expectation": "allowed",
+          "origin": "same-https",
+          "redirection": "no-redirect",
+          "source_context_list": [
+            {
+              "policyDeliveries": [],
+              "sourceContextType": "worker-classic-data"
+            }
+          ],
+          "source_scheme": "https",
+          "subresource": "fetch",
+          "subresource_policy_deliveries": []
+        },
+        document.querySelector("meta[name=assert]").content,
+        new SanityChecker()
+      ).start();
+      </script>
+    <div id="log"></div>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index 9b3b46ff..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: img-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "img-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index f39f0c69..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: img-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "img-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index 149d0dc..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: img-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "img-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index d37a441..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: img-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "img-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index 49d3813..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: img-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "img-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index 9787e9c..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: img-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "img-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 740e202..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: img-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "img-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index d45384a..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: img-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "img-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index b1e4649..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: img-tag
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "img-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index 3c0bce6b..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: img-tag
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "img-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index cc943fd..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: img-tag
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "img-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
deleted file mode 100644
index 8cc7a82c..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: img-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "img-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html
deleted file mode 100644
index fae9b1e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: img-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "img-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
deleted file mode 100644
index 9273ac43..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: img-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "img-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
deleted file mode 100644
index 030de70..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: img-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "img-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html
deleted file mode 100644
index c9c2081..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: img-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "img-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
deleted file mode 100644
index dddd339..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: img-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "img-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 3e78d29..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: img-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "img-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 5d5e55e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/img-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: img-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "img-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 482accfd..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: link-css-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "link-css-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 4db9717..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: link-css-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "link-css-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 90aa192e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: link-css-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "link-css-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 3a8c8cf..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: link-css-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "link-css-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index a44839fb..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: link-css-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "link-css-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 7a8949053..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: link-css-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "link-css-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 585b54c..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: link-css-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "link-css-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index d6166d0..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: link-css-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "link-css-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 9b6036b..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: link-css-tag
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "link-css-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index dc18ca7..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: link-css-tag
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "link-css-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 5e74a770..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: link-css-tag
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "link-css-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index e6b3dedf..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: link-css-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "link-css-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 88f21d4..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: link-css-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "link-css-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index ebd1747..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: link-css-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "link-css-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 76b18d6..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: link-css-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "link-css-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 4449e58..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: link-css-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "link-css-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 1000359..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: link-css-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "link-css-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index e07e2fa..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: link-css-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "link-css-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index cbbfa07..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-css-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: link-css-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "link-css-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 9f69cae4..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: link-prefetch-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "link-prefetch-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 883cfde5..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: link-prefetch-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "link-prefetch-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 13e9b46c..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: link-prefetch-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "link-prefetch-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index a806be7..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: link-prefetch-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "link-prefetch-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 69cd3b29..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: link-prefetch-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "link-prefetch-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index f337745e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: link-prefetch-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "link-prefetch-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 9e0ab39c5..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: link-prefetch-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "link-prefetch-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 819b543..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: link-prefetch-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "link-prefetch-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index a9e57c1..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: link-prefetch-tag
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "link-prefetch-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index f2025dce..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: link-prefetch-tag
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "link-prefetch-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index b787497c..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: link-prefetch-tag
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "link-prefetch-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 9317d5c7..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: link-prefetch-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "link-prefetch-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 8dc0000..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: link-prefetch-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "link-prefetch-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 6404268..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: link-prefetch-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "link-prefetch-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 1655a2e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: link-prefetch-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "link-prefetch-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index a47869e4..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: link-prefetch-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "link-prefetch-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 1359609..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: link-prefetch-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "link-prefetch-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 853bd27..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: link-prefetch-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "link-prefetch-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index f450941..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/link-prefetch-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: link-prefetch-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "link-prefetch-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 0d0e79c..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: module-data-worker-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "module-data-worker-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 8f09c46..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: module-data-worker-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "module-data-worker-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 77e7aad..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: module-data-worker-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "module-data-worker-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index adb8f07..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: module-data-worker-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "module-data-worker-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 39560f5e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: module-data-worker-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "module-data-worker-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 2a37811..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: module-data-worker-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "module-data-worker-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 5b8b9ef..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: module-data-worker-import
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "module-data-worker-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index ce6e2072..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: module-data-worker-import
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "module-data-worker-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 5055e60..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: module-data-worker-import
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "module-data-worker-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index f2e537b78..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: module-data-worker-import
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "module-data-worker-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index acb39cc..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: module-data-worker-import
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "module-data-worker-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 9adb36a3..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: module-data-worker-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "module-data-worker-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 4124504..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: module-data-worker-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "module-data-worker-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 20133bc..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: module-data-worker-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "module-data-worker-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 29010df..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: module-data-worker-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "module-data-worker-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index fb989ec..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: module-data-worker-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "module-data-worker-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index c4a8417..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: module-data-worker-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "module-data-worker-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 1f734b4..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: module-data-worker-import
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "module-data-worker-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 4c171710..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-data-worker-import/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: module-data-worker-import
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "module-data-worker-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 48bd7e2..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: module-worker-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "module-worker-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 905108ca2..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: module-worker-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "module-worker-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 9992cf9..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: module-worker-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "module-worker-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 895b875..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: module-worker-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "module-worker-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index ed48895..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: module-worker-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "module-worker-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 4dacb3a7..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: module-worker-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "module-worker-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index e7e01df..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: module-worker-top-level
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "module-worker-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 1adac77..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: module-worker-top-level
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "module-worker-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index bff5398..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: module-worker-top-level
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "module-worker-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index ac623c71..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: module-worker-top-level
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "module-worker-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index ff7b496..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: module-worker-top-level
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "module-worker-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index fd30ae9..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: module-worker-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "module-worker-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 2fa81d5..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: module-worker-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "module-worker-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 7a9a845..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: module-worker-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "module-worker-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 4f9e979..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: module-worker-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "module-worker-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 8d83c1f9..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: module-worker-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "module-worker-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 5719538..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: module-worker-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "module-worker-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 16c4d61a..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: module-worker-top-level
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "module-worker-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 91db146..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/module-worker-top-level/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: module-worker-top-level
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "module-worker-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 5e71036..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: object-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "object-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 242569e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: object-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "object-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index d2fe8ea..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: object-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "object-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 4959d445..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: object-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "object-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 45d70e81..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: object-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "object-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 119dda32..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: object-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "object-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 01cc099..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: object-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "object-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 72275f994..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: object-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "object-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 4cba2b5..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: object-tag
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "object-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index ea3e1dc..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: object-tag
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "object-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index d8c0fda..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: object-tag
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "object-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 5ba5744..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: object-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "object-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 414ed3a0..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: object-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "object-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index a9a07e7c..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: object-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "object-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 36ee113..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: object-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "object-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 32bf8286..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: object-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "object-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 57d8e55..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: object-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "object-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 1fc9bd3..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: object-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "object-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 66e4183..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/object-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: object-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "object-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index f4284d2..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: picture-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "picture-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 81c5e31..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: picture-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "picture-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 423d55b..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: picture-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "picture-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 265c22f..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: picture-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "picture-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index e78b35a..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: picture-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "picture-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index e71eca9f..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: picture-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "picture-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 60bb063..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: picture-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "picture-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 082a5d02..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: picture-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "picture-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index d240025..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: picture-tag
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "picture-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 545858e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: picture-tag
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "picture-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 1722e18..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: picture-tag
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "picture-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 07b58b5..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: picture-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "picture-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 7cd7005..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: picture-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "picture-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 5109e5a..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: picture-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "picture-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 1005c62..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: picture-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "picture-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 98bf20f..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: picture-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "picture-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index a5b1bed..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: picture-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "picture-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 76580a4..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: picture-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "picture-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 7e6f59e3..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/picture-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: picture-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "picture-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index a1c58ee..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: script-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "script-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 53729bb..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: script-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "script-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 3f6d7671..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: script-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "script-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index c89c2a5..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: script-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "script-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 84d81d6..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: script-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "script-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 83110755..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: script-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "script-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index e7b7bd4e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: script-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "script-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 1aaa445..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: script-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "script-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index bcb3b05..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: script-tag
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "script-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index c6af6e42..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: script-tag
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "script-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index df5aa522..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: script-tag
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "script-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index d0048db305..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: script-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "script-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index a1519d9..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: script-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "script-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 9e46278..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: script-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "script-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index d92025d3..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: script-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "script-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index d84c70e5..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: script-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "script-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index d4ee795..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: script-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "script-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index d8b2161..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: script-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "script-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 7b4423b..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/script-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: script-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "script-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index 97d76b32..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: video-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "video-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index 6d2d972e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: video-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "video-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index 912f5901..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: video-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "video-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index a0957ec..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: video-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "video-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index a01f53a0..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: video-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "video-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index fb3b6344..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: video-tag
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "video-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 8bd2c9f6..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: video-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "video-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 94a5e8e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: video-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "video-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index 5910d53..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: video-tag
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "video-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
deleted file mode 100644
index 44fb602..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: video-tag
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "video-tag",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 1cd1855..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: video-tag
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "video-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
deleted file mode 100644
index 48687c6..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: video-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "video-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html
deleted file mode 100644
index e39519b..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: video-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "video-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
deleted file mode 100644
index 1075bb4..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: video-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "video-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
deleted file mode 100644
index e97fcd5..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: video-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "video-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html
deleted file mode 100644
index e74ae75..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: video-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "video-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
deleted file mode 100644
index eaaf53b..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Optionally-blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of optionally-blockable content">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: video-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "video-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 399566f..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: video-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "video-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 2b51bd4..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/video-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: video-tag
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "video-tag",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html
deleted file mode 100644
index 4f52562..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-ws
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: websocket-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-ws",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "websocket-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html
deleted file mode 100644
index 20fc9b9..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-ws
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: websocket-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-ws",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "websocket-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html
deleted file mode 100644
index 3a67d12..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-ws
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: websocket-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-ws",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "websocket-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html
deleted file mode 100644
index 0b1702a5..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-ws
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: websocket-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-ws",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "websocket-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html
deleted file mode 100644
index 087f54d..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-ws
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: websocket-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-ws",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "websocket-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html
deleted file mode 100644
index 2491c538..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-ws
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: websocket-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-ws",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "websocket-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html
deleted file mode 100644
index 727cc35..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-wss
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: websocket-request
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-wss",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "websocket-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html
deleted file mode 100644
index 5a10108..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-wss
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: websocket-request
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-wss",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "websocket-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/http-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/meta-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/meta-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html
deleted file mode 100644
index f2e2642..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/meta-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-ws
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: websocket-request
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-ws",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "websocket-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/meta-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/meta-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html
deleted file mode 100644
index e944297..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/meta-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-ws
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: websocket-request
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-ws",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "websocket-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/meta-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/meta-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html
deleted file mode 100644
index 45bf7d3bb..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/meta-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-wss
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: websocket-request
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-wss",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "websocket-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html
deleted file mode 100644
index 049e61b..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-ws
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: websocket-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-ws",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "websocket-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html
deleted file mode 100644
index 2a28208..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-ws
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: websocket-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-ws",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "websocket-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html
deleted file mode 100644
index 099056f..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-ws
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: websocket-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-ws",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "websocket-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html
deleted file mode 100644
index c24e1d7..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-ws
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: websocket-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-ws",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "websocket-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html
deleted file mode 100644
index 8312066..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-ws
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: websocket-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-ws",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "websocket-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html
deleted file mode 100644
index 5fb923f2..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-ws
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: websocket-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-ws",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "websocket-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html
deleted file mode 100644
index 09fd3e42..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-wss
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: websocket-request
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-wss",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "websocket-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html
deleted file mode 100644
index 4e104fb..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/websocket-request/no-opt-in/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-wss
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: websocket-request
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-wss",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "websocket-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 3b1be17..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worker-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worker-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index e5c5a86..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worker-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worker-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index f318d00..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worker-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worker-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 1e133c2..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worker-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worker-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 1d7c1ec..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worker-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worker-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 3e31998..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worker-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worker-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 2fa9e6b..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worker-request
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worker-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index c4651834..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worker-request
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worker-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 140133f..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worker-request
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worker-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index f664dfc3..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worker-request
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worker-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index f639f30e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worker-request
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worker-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 7a8df78..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worker-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worker-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 99162059..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worker-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worker-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 5b69f15..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worker-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worker-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index f6bad6b..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worker-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worker-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index e2f8a28..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worker-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worker-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 54b34e7..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worker-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worker-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index a277471..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worker-request
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worker-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index db091027..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worker-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worker-request
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worker-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 1db0a1e4..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-animation-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-animation-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 30cf903..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-animation-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-animation-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 8840673..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-animation-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-animation-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index fcb3ed1f..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-animation-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-animation-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index e97d9ed9..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-animation-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-animation-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index b9e6af0..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-animation-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-animation-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 79ace77..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-animation-data-import
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-animation-data-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 3a41ecf..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-animation-data-import
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-animation-data-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 9bf5482..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-animation-data-import
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-animation-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index a7d02739..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-animation-data-import
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-animation-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 2e7aa07..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-animation-data-import
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-animation-data-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 4a97df5..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-animation-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-animation-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 0358e5f..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-animation-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-animation-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index d59023de..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-animation-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-animation-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 13e91504..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-animation-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-animation-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 84b53d8..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-animation-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-animation-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 4b6dc464..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-animation-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-animation-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index ad35a45..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-animation-data-import
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-animation-data-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 2ca7129..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-data-import/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-animation-data-import
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-animation-data-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 3ca94248..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-animation-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-animation-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 0ebfe517..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-animation-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-animation-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 85f339a..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-animation-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-animation-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 2ff42bf..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-animation-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-animation-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 3e0fbbc9..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-animation-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-animation-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index b12e3d7f..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-animation-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-animation-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 3877b4a..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-animation-top-level
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-animation-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 1aeee58..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-animation-top-level
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-animation-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index f96210c1..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-animation-top-level
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-animation-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 86e8c0c..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-animation-top-level
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-animation-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index ef94f6d..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-animation-top-level
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-animation-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 557f3f78..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-animation-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-animation-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index f9dd061..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-animation-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-animation-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index f6e6751..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-animation-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-animation-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 2b1b0b2d..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-animation-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-animation-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 159329a..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-animation-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-animation-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 0e045e1..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-animation-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-animation-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 6658abc7..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-animation-top-level
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-animation-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 32ac8f2..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-animation-top-level/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-animation-top-level
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-animation-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 189a25b..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-audio-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-audio-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 3144aba7..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-audio-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-audio-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 6e5dcc59..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-audio-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-audio-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index d78de561..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-audio-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-audio-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index a1f5f72b..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-audio-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-audio-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 85d1a1e9..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-audio-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-audio-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 00b5d6f..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-audio-data-import
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-audio-data-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 9cae068..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-audio-data-import
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-audio-data-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index c4846185..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-audio-data-import
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-audio-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 5f10d56..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-audio-data-import
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-audio-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 502407c..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-audio-data-import
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-audio-data-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index c0f2fc7..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-audio-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-audio-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 7b6e331e2..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-audio-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-audio-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 94cfb96..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-audio-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-audio-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 49b9103..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-audio-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-audio-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 6f8ea01..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-audio-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-audio-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 1b18de0..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-audio-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-audio-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index dfdbae7..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-audio-data-import
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-audio-data-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index c6ce305c..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-data-import/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-audio-data-import
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-audio-data-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index cba9bdc..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-audio-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-audio-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 13eb20d..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-audio-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-audio-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 4df48a8..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-audio-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-audio-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 9c79635..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-audio-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-audio-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 176da0f4..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-audio-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-audio-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 3ba97cc..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-audio-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-audio-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 66857b1..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-audio-top-level
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-audio-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index e0b664b..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-audio-top-level
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-audio-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 6f688d7..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-audio-top-level
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-audio-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 63bb81d1..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-audio-top-level
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-audio-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index e9b1153..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-audio-top-level
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-audio-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 6d72fbe..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-audio-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-audio-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index ddb4146..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-audio-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-audio-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index f2e6058f..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-audio-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-audio-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 970723e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-audio-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-audio-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 4901118..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-audio-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-audio-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index b0ea6b3..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-audio-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-audio-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 4b14527..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-audio-top-level
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-audio-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 4737340..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-audio-top-level/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-audio-top-level
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-audio-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 7e1db35..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-layout-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-layout-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 617237da..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-layout-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-layout-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 3a90c1da..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-layout-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-layout-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 3f2b4aa4..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-layout-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-layout-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index f620172..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-layout-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-layout-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index c96d2d4..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-layout-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-layout-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 685bd1e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-layout-data-import
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-layout-data-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index aaa62a9..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-layout-data-import
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-layout-data-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 37d3c51..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-layout-data-import
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-layout-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 8c1cecce..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-layout-data-import
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-layout-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index c766c5e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-layout-data-import
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-layout-data-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 408d01c..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-layout-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-layout-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index bd5f1b0..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-layout-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-layout-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 006ee9d..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-layout-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-layout-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 905856f..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-layout-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-layout-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index c031756..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-layout-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-layout-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index c8c56c45..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-layout-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-layout-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index a86f3b4..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-layout-data-import
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-layout-data-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index e0a437e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-data-import/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-layout-data-import
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-layout-data-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 89b2402e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-layout-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-layout-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 5b01dbc..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-layout-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-layout-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 55d23f9..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-layout-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-layout-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 64d4588..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-layout-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-layout-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 27bb937..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-layout-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-layout-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 2bd8a10..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-layout-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-layout-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 8fec9a0..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-layout-top-level
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-layout-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 4bd8277..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-layout-top-level
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-layout-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index cc56889..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-layout-top-level
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-layout-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index f50bb18..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-layout-top-level
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-layout-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 785bc579..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-layout-top-level
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-layout-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 2918d12d..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-layout-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-layout-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 63ce10a..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-layout-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-layout-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 333b26e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-layout-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-layout-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 29edc680..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-layout-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-layout-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 12ea7f2..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-layout-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-layout-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index ede2b9e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-layout-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-layout-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index b35999d8..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-layout-top-level
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-layout-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 5ad4fdc..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-layout-top-level/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-layout-top-level
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-layout-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 94dc4fa..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-paint-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-paint-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 1637723..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-paint-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-paint-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index c0df274..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-paint-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-paint-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 2e99652a..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-paint-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-paint-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 202b22c..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-paint-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-paint-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 3e4c570..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-paint-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-paint-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index df15dd9..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-paint-data-import
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-paint-data-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 23668777..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-paint-data-import
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-paint-data-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index a8b19ae..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-paint-data-import
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-paint-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index cfa30e47..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-paint-data-import
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-paint-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 1c8391e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-paint-data-import
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-paint-data-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index d33c792..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-paint-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-paint-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 939f20f9..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-paint-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-paint-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index be7e4ce7c..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-paint-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-paint-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index f69486e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-paint-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-paint-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 806b2ae..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-paint-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-paint-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index f0b30f8..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-paint-data-import
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-paint-data-import",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 9ff4c3c..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-paint-data-import
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-paint-data-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 0edffdf..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-data-import/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-paint-data-import
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-paint-data-import",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index ab3439a..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-paint-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-paint-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 3d17e69c..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-paint-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-paint-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index c060ab3..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-paint-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-paint-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 22760d9..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-paint-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-paint-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 9f3bc48..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-paint-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-paint-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 95ef469..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-paint-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-paint-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 145cb04..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-paint-top-level
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-paint-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 9110517..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-paint-top-level
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-paint-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 82434165..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-paint-top-level
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-paint-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index e8d26e8..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-paint-top-level
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-paint-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 9db55dc..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-paint-top-level
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-paint-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 4412335c..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-paint-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-paint-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 7f7d6b2..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-paint-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-paint-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 97664540..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-paint-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-paint-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 196f60ff..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-paint-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-paint-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index b2bf5c4..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-paint-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-paint-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index b931d339..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: worklet-paint-top-level
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "worklet-paint-top-level",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 0eeba32e2..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: worklet-paint-top-level
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "worklet-paint-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 1da3a84..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/worklet-paint-top-level/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: worklet-paint-top-level
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "worklet-paint-top-level",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index f70e0d7..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: xhr-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "xhr-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index be74d7f..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: xhr-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "xhr-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 39f508c2b..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: xhr-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "xhr-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 703e0af..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: xhr-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "xhr-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index a1323d4..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: xhr-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "xhr-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 0aa1bf3..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: xhr-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "xhr-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 61fe95d..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: xhr-request
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "xhr-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 8a0c5b1..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: http-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: xhr-request
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "http-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "xhr-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
deleted file mode 100644
index 46e2255e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Content-Security-Policy: block-all-mixed-content
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index df3f8cc..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: xhr-request
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "xhr-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
deleted file mode 100644
index 74261daf..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: xhr-request
-                                 expectation: blocked">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "xhr-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index 45cd5ea..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: meta-csp
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: xhr-request
-                                 expectation: allowed">
-    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "meta-csp",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "xhr-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index ed8f550d..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: xhr-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "xhr-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index c14bc41..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: xhr-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "xhr-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 1061f61..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: cross-origin-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: xhr-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "cross-origin-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "xhr-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index 18a5a3e..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: xhr-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "xhr-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index d47797a..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: xhr-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "xhr-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
deleted file mode 100644
index ff17fa2..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Blockable content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of blockable content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-http
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: swap-scheme-redirect
-                                 subresource: xhr-request
-                                 expectation: blocked">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-http",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "swap-scheme-redirect",
-          "subresource": "xhr-request",
-          "expectation": "blocked"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
deleted file mode 100644
index 76d5442..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: keep-scheme-redirect
-                                 subresource: xhr-request
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "keep-scheme-redirect",
-          "subresource": "xhr-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html b/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
deleted file mode 100644
index e6eba571..0000000
--- a/third_party/blink/web_tests/external/wpt/mixed-content/xhr-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Mixed-Content: Allowed content</title>
-    <meta charset='utf-8'>
-    <meta name="description" content="Test behavior of allowed content.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="http://www.w3.org/TR/mixed-content/">
-    <meta name="assert" content="opt_in_method: no-opt-in
-                                 origin: same-host-https
-                                 source_scheme: https
-                                 context_nesting: top-level
-                                 redirection: no-redirect
-                                 subresource: xhr-request
-                                 expectation: allowed">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
-  </head>
-  <body>
-    <script>
-      MixedContentTestCase(
-        {
-          "opt_in_method": "no-opt-in",
-          "origin": "same-host-https",
-          "source_scheme": "https",
-          "context_nesting": "top-level",
-          "redirection": "no-redirect",
-          "subresource": "xhr-request",
-          "expectation": "allowed"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/netinfo/idlharness.any-expected.txt b/third_party/blink/web_tests/external/wpt/netinfo/idlharness.any-expected.txt
deleted file mode 100644
index adb6cc43..0000000
--- a/third_party/blink/web_tests/external/wpt/netinfo/idlharness.any-expected.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/netinfo/idlharness.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/netinfo/idlharness.any.worker-expected.txt
deleted file mode 100644
index adb6cc43..0000000
--- a/third_party/blink/web_tests/external/wpt/netinfo/idlharness.any.worker-expected.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/notifications/idlharness.https.any-expected.txt b/third_party/blink/web_tests/external/wpt/notifications/idlharness.https.any-expected.txt
deleted file mode 100644
index 9882a5f8..0000000
--- a/third_party/blink/web_tests/external/wpt/notifications/idlharness.https.any-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS Partial interface ServiceWorkerRegistration: original interface defined
-PASS Partial interface ServiceWorkerGlobalScope: original interface defined
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/notifications/idlharness.https.any.sharedworker-expected.txt b/third_party/blink/web_tests/external/wpt/notifications/idlharness.https.any.sharedworker-expected.txt
deleted file mode 100644
index 9882a5f8..0000000
--- a/third_party/blink/web_tests/external/wpt/notifications/idlharness.https.any.sharedworker-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS Partial interface ServiceWorkerRegistration: original interface defined
-PASS Partial interface ServiceWorkerGlobalScope: original interface defined
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/notifications/idlharness.https.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/notifications/idlharness.https.any.worker-expected.txt
deleted file mode 100644
index 9882a5f8..0000000
--- a/third_party/blink/web_tests/external/wpt/notifications/idlharness.https.any.worker-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS Partial interface ServiceWorkerRegistration: original interface defined
-PASS Partial interface ServiceWorkerGlobalScope: original interface defined
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/orientation-event/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/orientation-event/idlharness.https.window-expected.txt
deleted file mode 100644
index b177b51b..0000000
--- a/third_party/blink/web_tests/external/wpt/orientation-event/idlharness.https.window-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Window: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface Window[2]: original interface defined assert_true: Original interface should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/page-visibility/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/page-visibility/idlharness.window-expected.txt
deleted file mode 100644
index 2e357951..0000000
--- a/third_party/blink/web_tests/external/wpt/page-visibility/idlharness.window-expected.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS Partial interface Document: original interface defined
-PASS Document interface: attribute hidden
-PASS Document interface: attribute visibilityState
-PASS Document interface: attribute onvisibilitychange
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/payment-handler/idlharness.https.any-expected.txt b/third_party/blink/web_tests/external/wpt/payment-handler/idlharness.https.any-expected.txt
deleted file mode 100644
index c3a62e81..0000000
--- a/third_party/blink/web_tests/external/wpt/payment-handler/idlharness.https.any-expected.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS Partial interface ServiceWorkerRegistration: original interface defined
-PASS Partial interface ServiceWorkerGlobalScope: original interface defined
-PASS Partial interface ServiceWorkerGlobalScope[2]: original interface defined
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/payment-handler/idlharness.https.any.serviceworker-expected.txt b/third_party/blink/web_tests/external/wpt/payment-handler/idlharness.https.any.serviceworker-expected.txt
index c3a62e81..d568ca4c 100644
--- a/third_party/blink/web_tests/external/wpt/payment-handler/idlharness.https.any.serviceworker-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/payment-handler/idlharness.https.any.serviceworker-expected.txt
@@ -1,9 +1,100 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+Found 96 tests; 63 PASS, 33 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
 PASS Partial interface ServiceWorkerRegistration: original interface defined
 PASS Partial interface ServiceWorkerGlobalScope: original interface defined
 PASS Partial interface ServiceWorkerGlobalScope[2]: original interface defined
+FAIL PaymentManager interface: existence and properties of interface object assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface object length assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface object name assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface: existence and properties of interface prototype object assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface: attribute instruments assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface: attribute userHint assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager must be primary interface of paymentManager assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+PASS Stringification of paymentManager
+PASS PaymentManager interface: paymentManager must inherit property "instruments" with the proper type
+PASS PaymentManager interface: paymentManager must inherit property "userHint" with the proper type
+PASS PaymentInstruments interface: existence and properties of interface object
+PASS PaymentInstruments interface object length
+PASS PaymentInstruments interface object name
+PASS PaymentInstruments interface: existence and properties of interface prototype object
+PASS PaymentInstruments interface: existence and properties of interface prototype object's "constructor" property
+PASS PaymentInstruments interface: existence and properties of interface prototype object's @@unscopables property
+PASS PaymentInstruments interface: operation delete(DOMString)
+PASS PaymentInstruments interface: operation get(DOMString)
+PASS PaymentInstruments interface: operation keys()
+PASS PaymentInstruments interface: operation has(DOMString)
+PASS PaymentInstruments interface: operation set(DOMString, PaymentInstrument)
+PASS PaymentInstruments interface: operation clear()
+PASS PaymentInstruments must be primary interface of instruments
+PASS Stringification of instruments
+PASS PaymentInstruments interface: instruments must inherit property "delete(DOMString)" with the proper type
+PASS PaymentInstruments interface: calling delete(DOMString) on instruments with too few arguments must throw TypeError
+PASS PaymentInstruments interface: instruments must inherit property "get(DOMString)" with the proper type
+PASS PaymentInstruments interface: calling get(DOMString) on instruments with too few arguments must throw TypeError
+PASS PaymentInstruments interface: instruments must inherit property "keys()" with the proper type
+PASS PaymentInstruments interface: instruments must inherit property "has(DOMString)" with the proper type
+PASS PaymentInstruments interface: calling has(DOMString) on instruments with too few arguments must throw TypeError
+PASS PaymentInstruments interface: instruments must inherit property "set(DOMString, PaymentInstrument)" with the proper type
+PASS PaymentInstruments interface: calling set(DOMString, PaymentInstrument) on instruments with too few arguments must throw TypeError
+PASS PaymentInstruments interface: instruments must inherit property "clear()" with the proper type
+PASS CanMakePaymentEvent interface: existence and properties of interface object
+PASS CanMakePaymentEvent interface object length
+PASS CanMakePaymentEvent interface object name
+PASS CanMakePaymentEvent interface: existence and properties of interface prototype object
+PASS CanMakePaymentEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS CanMakePaymentEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS CanMakePaymentEvent interface: attribute topOrigin
+PASS CanMakePaymentEvent interface: attribute paymentRequestOrigin
+PASS CanMakePaymentEvent interface: attribute methodData
+PASS CanMakePaymentEvent interface: operation respondWith([object Object])
+FAIL CanMakePaymentEvent must be primary interface of new CanMakePaymentEvent("type") assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'CanMakePaymentEvent': 2 arguments required, but only 1 present."
+FAIL Stringification of new CanMakePaymentEvent("type") assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'CanMakePaymentEvent': 2 arguments required, but only 1 present."
+FAIL CanMakePaymentEvent interface: new CanMakePaymentEvent("type") must inherit property "topOrigin" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'CanMakePaymentEvent': 2 arguments required, but only 1 present."
+FAIL CanMakePaymentEvent interface: new CanMakePaymentEvent("type") must inherit property "paymentRequestOrigin" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'CanMakePaymentEvent': 2 arguments required, but only 1 present."
+FAIL CanMakePaymentEvent interface: new CanMakePaymentEvent("type") must inherit property "methodData" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'CanMakePaymentEvent': 2 arguments required, but only 1 present."
+FAIL CanMakePaymentEvent interface: new CanMakePaymentEvent("type") must inherit property "respondWith([object Object])" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'CanMakePaymentEvent': 2 arguments required, but only 1 present."
+FAIL CanMakePaymentEvent interface: calling respondWith([object Object]) on new CanMakePaymentEvent("type") with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'CanMakePaymentEvent': 2 arguments required, but only 1 present."
+PASS PaymentRequestEvent interface: existence and properties of interface object
+PASS PaymentRequestEvent interface object length
+PASS PaymentRequestEvent interface object name
+PASS PaymentRequestEvent interface: existence and properties of interface prototype object
+PASS PaymentRequestEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS PaymentRequestEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS PaymentRequestEvent interface: attribute topOrigin
+PASS PaymentRequestEvent interface: attribute paymentRequestOrigin
+PASS PaymentRequestEvent interface: attribute paymentRequestId
+PASS PaymentRequestEvent interface: attribute methodData
+PASS PaymentRequestEvent interface: attribute total
+PASS PaymentRequestEvent interface: attribute modifiers
+PASS PaymentRequestEvent interface: attribute instrumentKey
+FAIL PaymentRequestEvent interface: attribute requestBillingAddress assert_true: The prototype object must have a property "requestBillingAddress" expected true got false
+PASS PaymentRequestEvent interface: operation openWindow(USVString)
+PASS PaymentRequestEvent interface: operation changePaymentMethod(DOMString, object)
+PASS PaymentRequestEvent interface: operation respondWith([object Object])
+FAIL PaymentRequestEvent must be primary interface of new PaymentRequestEvent("type") assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'PaymentRequestEvent': 2 arguments required, but only 1 present."
+FAIL Stringification of new PaymentRequestEvent("type") assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'PaymentRequestEvent': 2 arguments required, but only 1 present."
+FAIL PaymentRequestEvent interface: new PaymentRequestEvent("type") must inherit property "topOrigin" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'PaymentRequestEvent': 2 arguments required, but only 1 present."
+FAIL PaymentRequestEvent interface: new PaymentRequestEvent("type") must inherit property "paymentRequestOrigin" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'PaymentRequestEvent': 2 arguments required, but only 1 present."
+FAIL PaymentRequestEvent interface: new PaymentRequestEvent("type") must inherit property "paymentRequestId" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'PaymentRequestEvent': 2 arguments required, but only 1 present."
+FAIL PaymentRequestEvent interface: new PaymentRequestEvent("type") must inherit property "methodData" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'PaymentRequestEvent': 2 arguments required, but only 1 present."
+FAIL PaymentRequestEvent interface: new PaymentRequestEvent("type") must inherit property "total" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'PaymentRequestEvent': 2 arguments required, but only 1 present."
+FAIL PaymentRequestEvent interface: new PaymentRequestEvent("type") must inherit property "modifiers" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'PaymentRequestEvent': 2 arguments required, but only 1 present."
+FAIL PaymentRequestEvent interface: new PaymentRequestEvent("type") must inherit property "instrumentKey" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'PaymentRequestEvent': 2 arguments required, but only 1 present."
+FAIL PaymentRequestEvent interface: new PaymentRequestEvent("type") must inherit property "requestBillingAddress" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'PaymentRequestEvent': 2 arguments required, but only 1 present."
+FAIL PaymentRequestEvent interface: new PaymentRequestEvent("type") must inherit property "openWindow(USVString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'PaymentRequestEvent': 2 arguments required, but only 1 present."
+FAIL PaymentRequestEvent interface: calling openWindow(USVString) on new PaymentRequestEvent("type") with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'PaymentRequestEvent': 2 arguments required, but only 1 present."
+FAIL PaymentRequestEvent interface: new PaymentRequestEvent("type") must inherit property "changePaymentMethod(DOMString, object)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'PaymentRequestEvent': 2 arguments required, but only 1 present."
+FAIL PaymentRequestEvent interface: calling changePaymentMethod(DOMString, object) on new PaymentRequestEvent("type") with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'PaymentRequestEvent': 2 arguments required, but only 1 present."
+FAIL PaymentRequestEvent interface: new PaymentRequestEvent("type") must inherit property "respondWith([object Object])" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'PaymentRequestEvent': 2 arguments required, but only 1 present."
+FAIL PaymentRequestEvent interface: calling respondWith([object Object]) on new PaymentRequestEvent("type") with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'PaymentRequestEvent': 2 arguments required, but only 1 present."
+PASS ServiceWorkerRegistration interface: attribute paymentManager
+PASS ServiceWorkerRegistration interface: registration must inherit property "paymentManager" with the proper type
+PASS ServiceWorkerGlobalScope interface: attribute oncanmakepayment
+PASS ServiceWorkerGlobalScope interface: attribute onpaymentrequest
+PASS ServiceWorkerGlobalScope interface: self must inherit property "oncanmakepayment" with the proper type
+PASS ServiceWorkerGlobalScope interface: self must inherit property "onpaymentrequest" with the proper type
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/payment-handler/idlharness.https.any.sharedworker-expected.txt b/third_party/blink/web_tests/external/wpt/payment-handler/idlharness.https.any.sharedworker-expected.txt
index c3a62e81..9f716c5e 100644
--- a/third_party/blink/web_tests/external/wpt/payment-handler/idlharness.https.any.sharedworker-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/payment-handler/idlharness.https.any.sharedworker-expected.txt
@@ -1,9 +1,32 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+PASS idl_test setup
 PASS Partial interface ServiceWorkerRegistration: original interface defined
 PASS Partial interface ServiceWorkerGlobalScope: original interface defined
 PASS Partial interface ServiceWorkerGlobalScope[2]: original interface defined
+FAIL PaymentManager interface: existence and properties of interface object assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface object length assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface object name assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface: existence and properties of interface prototype object assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface: attribute instruments assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface: attribute userHint assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+PASS PaymentInstruments interface: existence and properties of interface object
+PASS PaymentInstruments interface object length
+PASS PaymentInstruments interface object name
+PASS PaymentInstruments interface: existence and properties of interface prototype object
+PASS PaymentInstruments interface: existence and properties of interface prototype object's "constructor" property
+PASS PaymentInstruments interface: existence and properties of interface prototype object's @@unscopables property
+PASS PaymentInstruments interface: operation delete(DOMString)
+PASS PaymentInstruments interface: operation get(DOMString)
+PASS PaymentInstruments interface: operation keys()
+PASS PaymentInstruments interface: operation has(DOMString)
+PASS PaymentInstruments interface: operation set(DOMString, PaymentInstrument)
+PASS PaymentInstruments interface: operation clear()
+PASS CanMakePaymentEvent interface: existence and properties of interface object
+PASS PaymentRequestEvent interface: existence and properties of interface object
+PASS ServiceWorkerRegistration interface: attribute paymentManager
+PASS ServiceWorkerGlobalScope interface: existence and properties of interface object
+PASS ExtendableEvent interface: existence and properties of interface object
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/payment-handler/idlharness.https.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/payment-handler/idlharness.https.any.worker-expected.txt
index c3a62e81..9f716c5e 100644
--- a/third_party/blink/web_tests/external/wpt/payment-handler/idlharness.https.any.worker-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/payment-handler/idlharness.https.any.worker-expected.txt
@@ -1,9 +1,32 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+PASS idl_test setup
 PASS Partial interface ServiceWorkerRegistration: original interface defined
 PASS Partial interface ServiceWorkerGlobalScope: original interface defined
 PASS Partial interface ServiceWorkerGlobalScope[2]: original interface defined
+FAIL PaymentManager interface: existence and properties of interface object assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface object length assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface object name assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface: existence and properties of interface prototype object assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface: attribute instruments assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+FAIL PaymentManager interface: attribute userHint assert_own_property: self does not have own property "PaymentManager" expected property "PaymentManager" missing
+PASS PaymentInstruments interface: existence and properties of interface object
+PASS PaymentInstruments interface object length
+PASS PaymentInstruments interface object name
+PASS PaymentInstruments interface: existence and properties of interface prototype object
+PASS PaymentInstruments interface: existence and properties of interface prototype object's "constructor" property
+PASS PaymentInstruments interface: existence and properties of interface prototype object's @@unscopables property
+PASS PaymentInstruments interface: operation delete(DOMString)
+PASS PaymentInstruments interface: operation get(DOMString)
+PASS PaymentInstruments interface: operation keys()
+PASS PaymentInstruments interface: operation has(DOMString)
+PASS PaymentInstruments interface: operation set(DOMString, PaymentInstrument)
+PASS PaymentInstruments interface: operation clear()
+PASS CanMakePaymentEvent interface: existence and properties of interface object
+PASS PaymentRequestEvent interface: existence and properties of interface object
+PASS ServiceWorkerRegistration interface: attribute paymentManager
+PASS ServiceWorkerGlobalScope interface: existence and properties of interface object
+PASS ExtendableEvent interface: existence and properties of interface object
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/payment-request/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/payment-request/idlharness.https.window-expected.txt
index b8f707a..62e7edf 100644
--- a/third_party/blink/web_tests/external/wpt/payment-request/idlharness.https.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/payment-request/idlharness.https.window-expected.txt
@@ -1,8 +1,6 @@
 This is a testharness.js-based test.
-Found 78 tests; 76 PASS, 2 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+Found 109 tests; 107 PASS, 2 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
 PASS PaymentRequest interface: existence and properties of interface object
 PASS PaymentRequest interface object length
 PASS PaymentRequest interface object name
@@ -21,6 +19,21 @@
 PASS PaymentRequest interface: attribute onshippingaddresschange
 PASS PaymentRequest interface: attribute onshippingoptionchange
 PASS PaymentRequest interface: attribute onpaymentmethodchange
+PASS PaymentRequest must be primary interface of paymentRequest
+PASS Stringification of paymentRequest
+PASS PaymentRequest interface: paymentRequest must inherit property "show([object Object])" with the proper type
+PASS PaymentRequest interface: calling show([object Object]) on paymentRequest with too few arguments must throw TypeError
+PASS PaymentRequest interface: paymentRequest must inherit property "abort()" with the proper type
+PASS PaymentRequest interface: paymentRequest must inherit property "canMakePayment()" with the proper type
+PASS PaymentRequest interface: paymentRequest must inherit property "hasEnrolledInstrument()" with the proper type
+PASS PaymentRequest interface: paymentRequest must inherit property "id" with the proper type
+PASS PaymentRequest interface: paymentRequest must inherit property "shippingAddress" with the proper type
+PASS PaymentRequest interface: paymentRequest must inherit property "shippingOption" with the proper type
+PASS PaymentRequest interface: paymentRequest must inherit property "shippingType" with the proper type
+FAIL PaymentRequest interface: paymentRequest must inherit property "onmerchantvalidation" with the proper type assert_inherits: property "onmerchantvalidation" not found in prototype chain
+PASS PaymentRequest interface: paymentRequest must inherit property "onshippingaddresschange" with the proper type
+PASS PaymentRequest interface: paymentRequest must inherit property "onshippingoptionchange" with the proper type
+PASS PaymentRequest interface: paymentRequest must inherit property "onpaymentmethodchange" with the proper type
 PASS PaymentAddress interface: existence and properties of interface object
 PASS PaymentAddress interface object length
 PASS PaymentAddress interface object name
@@ -65,6 +78,12 @@
 PASS MerchantValidationEvent interface: attribute methodName
 PASS MerchantValidationEvent interface: attribute validationURL
 PASS MerchantValidationEvent interface: operation complete([object Object])
+PASS MerchantValidationEvent must be primary interface of new MerchantValidationEvent("merchantvalidation")
+PASS Stringification of new MerchantValidationEvent("merchantvalidation")
+PASS MerchantValidationEvent interface: new MerchantValidationEvent("merchantvalidation") must inherit property "methodName" with the proper type
+PASS MerchantValidationEvent interface: new MerchantValidationEvent("merchantvalidation") must inherit property "validationURL" with the proper type
+PASS MerchantValidationEvent interface: new MerchantValidationEvent("merchantvalidation") must inherit property "complete([object Object])" with the proper type
+PASS MerchantValidationEvent interface: calling complete([object Object]) on new MerchantValidationEvent("merchantvalidation") with too few arguments must throw TypeError
 PASS PaymentMethodChangeEvent interface: existence and properties of interface object
 PASS PaymentMethodChangeEvent interface object length
 PASS PaymentMethodChangeEvent interface object name
@@ -73,6 +92,12 @@
 PASS PaymentMethodChangeEvent interface: existence and properties of interface prototype object's @@unscopables property
 PASS PaymentMethodChangeEvent interface: attribute methodName
 PASS PaymentMethodChangeEvent interface: attribute methodDetails
+PASS PaymentMethodChangeEvent must be primary interface of new PaymentMethodChangeEvent("paymentmethodchange")
+PASS Stringification of new PaymentMethodChangeEvent("paymentmethodchange")
+PASS PaymentMethodChangeEvent interface: new PaymentMethodChangeEvent("paymentmethodchange") must inherit property "methodName" with the proper type
+PASS PaymentMethodChangeEvent interface: new PaymentMethodChangeEvent("paymentmethodchange") must inherit property "methodDetails" with the proper type
+PASS PaymentRequestUpdateEvent interface: new PaymentMethodChangeEvent("paymentmethodchange") must inherit property "updateWith([object Object])" with the proper type
+PASS PaymentRequestUpdateEvent interface: calling updateWith([object Object]) on new PaymentMethodChangeEvent("paymentmethodchange") with too few arguments must throw TypeError
 PASS PaymentRequestUpdateEvent interface: existence and properties of interface object
 PASS PaymentRequestUpdateEvent interface object length
 PASS PaymentRequestUpdateEvent interface object name
@@ -80,5 +105,9 @@
 PASS PaymentRequestUpdateEvent interface: existence and properties of interface prototype object's "constructor" property
 PASS PaymentRequestUpdateEvent interface: existence and properties of interface prototype object's @@unscopables property
 PASS PaymentRequestUpdateEvent interface: operation updateWith([object Object])
+PASS PaymentRequestUpdateEvent must be primary interface of new PaymentRequestUpdateEvent("paymentrequestupdate")
+PASS Stringification of new PaymentRequestUpdateEvent("paymentrequestupdate")
+PASS PaymentRequestUpdateEvent interface: new PaymentRequestUpdateEvent("paymentrequestupdate") must inherit property "updateWith([object Object])" with the proper type
+PASS PaymentRequestUpdateEvent interface: calling updateWith([object Object]) on new PaymentRequestUpdateEvent("paymentrequestupdate") with too few arguments must throw TypeError
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/permissions/idlharness.any-expected.txt b/third_party/blink/web_tests/external/wpt/permissions/idlharness.any-expected.txt
deleted file mode 100644
index 11d4d700..0000000
--- a/third_party/blink/web_tests/external/wpt/permissions/idlharness.any-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface WorkerNavigator: original interface defined assert_true: Original interface should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/permissions/idlharness.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/permissions/idlharness.any.worker-expected.txt
deleted file mode 100644
index 11d4d700..0000000
--- a/third_party/blink/web_tests/external/wpt/permissions/idlharness.any.worker-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface WorkerNavigator: original interface defined assert_true: Original interface should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/picture-in-picture/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/picture-in-picture/idlharness.window-expected.txt
deleted file mode 100644
index fc66edd..0000000
--- a/third_party/blink/web_tests/external/wpt/picture-in-picture/idlharness.window-expected.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface HTMLVideoElement: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface Document: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface mixin DocumentOrShadowRoot: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/pointerevents/idlharness.window-expected.txt
index fbd91e36..e0ed9cea 100644
--- a/third_party/blink/web_tests/external/wpt/pointerevents/idlharness.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/pointerevents/idlharness.window-expected.txt
@@ -1,28 +1,7 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+FAIL idl_test setup promise_test: Unhandled rejection with value: "Document includes GlobalEventHandlers, but Document is undefined."
 PASS Partial interface Element: original interface defined
-FAIL Partial interface mixin GlobalEventHandlers: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
-PASS PointerEvent interface: existence and properties of interface object
-PASS PointerEvent interface object length
-PASS PointerEvent interface object name
-PASS PointerEvent interface: existence and properties of interface prototype object
-PASS PointerEvent interface: existence and properties of interface prototype object's "constructor" property
-PASS PointerEvent interface: existence and properties of interface prototype object's @@unscopables property
-PASS PointerEvent interface: attribute pointerId
-PASS PointerEvent interface: attribute width
-PASS PointerEvent interface: attribute height
-PASS PointerEvent interface: attribute pressure
-PASS PointerEvent interface: attribute tangentialPressure
-PASS PointerEvent interface: attribute tiltX
-PASS PointerEvent interface: attribute tiltY
-PASS PointerEvent interface: attribute twist
-PASS PointerEvent interface: attribute pointerType
-PASS PointerEvent interface: attribute isPrimary
-PASS Element interface: operation setPointerCapture(long)
-PASS Element interface: operation releasePointerCapture(long)
-PASS Element interface: operation hasPointerCapture(long)
+PASS Partial interface mixin GlobalEventHandlers: original interface mixin defined
+PASS Partial interface Navigator: original interface defined
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/pointerlock/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/pointerlock/idlharness.window-expected.txt
deleted file mode 100644
index a007606..0000000
--- a/third_party/blink/web_tests/external/wpt/pointerlock/idlharness.window-expected.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Element: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface Document: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface mixin DocumentOrShadowRoot: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
-PASS Partial interface MouseEvent: original interface defined
-PASS Partial dictionary MouseEventInit: original dictionary defined
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/presentation-api/controlling-ua/idlharness.https-expected.txt b/third_party/blink/web_tests/external/wpt/presentation-api/controlling-ua/idlharness.https-expected.txt
deleted file mode 100644
index ab74615..0000000
--- a/third_party/blink/web_tests/external/wpt/presentation-api/controlling-ua/idlharness.https-expected.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This is a testharness.js-based test.
-FAIL Test IDL implementation of Presentation API promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/push-api/idlharness.https.any-expected.txt b/third_party/blink/web_tests/external/wpt/push-api/idlharness.https.any-expected.txt
deleted file mode 100644
index a4772fd..0000000
--- a/third_party/blink/web_tests/external/wpt/push-api/idlharness.https.any-expected.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS Partial interface ServiceWorkerRegistration: original interface defined
-PASS Partial interface ServiceWorkerGlobalScope: original interface defined
-PASS Partial interface ServiceWorkerGlobalScope: valid exposure set
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/push-api/idlharness.https.any.serviceworker-expected.txt b/third_party/blink/web_tests/external/wpt/push-api/idlharness.https.any.serviceworker-expected.txt
deleted file mode 100644
index a4772fd..0000000
--- a/third_party/blink/web_tests/external/wpt/push-api/idlharness.https.any.serviceworker-expected.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS Partial interface ServiceWorkerRegistration: original interface defined
-PASS Partial interface ServiceWorkerGlobalScope: original interface defined
-PASS Partial interface ServiceWorkerGlobalScope: valid exposure set
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/push-api/idlharness.https.any.sharedworker-expected.txt b/third_party/blink/web_tests/external/wpt/push-api/idlharness.https.any.sharedworker-expected.txt
deleted file mode 100644
index a4772fd..0000000
--- a/third_party/blink/web_tests/external/wpt/push-api/idlharness.https.any.sharedworker-expected.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS Partial interface ServiceWorkerRegistration: original interface defined
-PASS Partial interface ServiceWorkerGlobalScope: original interface defined
-PASS Partial interface ServiceWorkerGlobalScope: valid exposure set
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/a-tag/no-redirect/insecure-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/a-tag/no-redirect/insecure-protocol.http.html
deleted file mode 100644
index 14a6eeb2..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/a-tag/no-redirect/insecure-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an http
-                                 sub-resource via a-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is cross-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "no-redirect",
-          "origin": "cross-origin",
-          "source_protocol": "http",
-          "target_protocol": "http",
-          "subresource": "a-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/keep-origin-redirect/insecure-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/keep-origin-redirect/insecure-protocol.http.html
deleted file mode 100644
index 92c65585..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/keep-origin-redirect/insecure-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an http
-                                 sub-resource via iframe-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is cross-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "keep-origin-redirect",
-          "origin": "cross-origin",
-          "source_protocol": "http",
-          "target_protocol": "http",
-          "subresource": "iframe-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/no-redirect/insecure-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/no-redirect/insecure-protocol.http.html
deleted file mode 100644
index ede753c..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/no-redirect/insecure-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an http
-                                 sub-resource via iframe-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is cross-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "no-redirect",
-          "origin": "cross-origin",
-          "source_protocol": "http",
-          "target_protocol": "http",
-          "subresource": "iframe-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/swap-origin-redirect/insecure-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/swap-origin-redirect/insecure-protocol.http.html
deleted file mode 100644
index b1f6e1dc..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/swap-origin-redirect/insecure-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an http
-                                 sub-resource via iframe-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is cross-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "swap-origin-redirect",
-          "origin": "cross-origin",
-          "source_protocol": "http",
-          "target_protocol": "http",
-          "subresource": "iframe-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/keep-origin-redirect/insecure-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/keep-origin-redirect/insecure-protocol.http.html
deleted file mode 100644
index b69090f..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/keep-origin-redirect/insecure-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an http
-                                 sub-resource via img-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is cross-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "keep-origin-redirect",
-          "origin": "cross-origin",
-          "source_protocol": "http",
-          "target_protocol": "http",
-          "subresource": "img-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/no-redirect/insecure-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/no-redirect/insecure-protocol.http.html
deleted file mode 100644
index a5bda07fa..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/no-redirect/insecure-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an http
-                                 sub-resource via img-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is cross-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "no-redirect",
-          "origin": "cross-origin",
-          "source_protocol": "http",
-          "target_protocol": "http",
-          "subresource": "img-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/swap-origin-redirect/insecure-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/swap-origin-redirect/insecure-protocol.http.html
deleted file mode 100644
index c61e9dfe..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/swap-origin-redirect/insecure-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an http
-                                 sub-resource via img-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is cross-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "swap-origin-redirect",
-          "origin": "cross-origin",
-          "source_protocol": "http",
-          "target_protocol": "http",
-          "subresource": "img-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/script-tag/keep-origin-redirect/insecure-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/script-tag/keep-origin-redirect/insecure-protocol.http.html
deleted file mode 100644
index d7a06ea..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/script-tag/keep-origin-redirect/insecure-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is cross-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "keep-origin-redirect",
-          "origin": "cross-origin",
-          "source_protocol": "http",
-          "target_protocol": "http",
-          "subresource": "script-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/script-tag/no-redirect/insecure-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/script-tag/no-redirect/insecure-protocol.http.html
deleted file mode 100644
index bd9d445..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/script-tag/no-redirect/insecure-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is cross-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "no-redirect",
-          "origin": "cross-origin",
-          "source_protocol": "http",
-          "target_protocol": "http",
-          "subresource": "script-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/script-tag/swap-origin-redirect/insecure-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/script-tag/swap-origin-redirect/insecure-protocol.http.html
deleted file mode 100644
index 4bcfe74..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/script-tag/swap-origin-redirect/insecure-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is cross-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "swap-origin-redirect",
-          "origin": "cross-origin",
-          "source_protocol": "http",
-          "target_protocol": "http",
-          "subresource": "script-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/a-tag/no-redirect/upgrade-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/a-tag/no-redirect/upgrade-protocol.http.html
deleted file mode 100644
index 2f55f3f..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/a-tag/no-redirect/upgrade-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an https
-                                 sub-resource via a-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is cross-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "no-redirect",
-          "origin": "cross-origin",
-          "source_protocol": "http",
-          "target_protocol": "https",
-          "subresource": "a-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/keep-origin-redirect/upgrade-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/keep-origin-redirect/upgrade-protocol.http.html
deleted file mode 100644
index fcdb3014..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/keep-origin-redirect/upgrade-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an https
-                                 sub-resource via iframe-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is cross-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "keep-origin-redirect",
-          "origin": "cross-origin",
-          "source_protocol": "http",
-          "target_protocol": "https",
-          "subresource": "iframe-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/no-redirect/upgrade-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/no-redirect/upgrade-protocol.http.html
deleted file mode 100644
index f6fc0dee..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/no-redirect/upgrade-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an https
-                                 sub-resource via iframe-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is cross-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "no-redirect",
-          "origin": "cross-origin",
-          "source_protocol": "http",
-          "target_protocol": "https",
-          "subresource": "iframe-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/swap-origin-redirect/upgrade-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/swap-origin-redirect/upgrade-protocol.http.html
deleted file mode 100644
index 90db32e..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/swap-origin-redirect/upgrade-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an https
-                                 sub-resource via iframe-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is cross-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "swap-origin-redirect",
-          "origin": "cross-origin",
-          "source_protocol": "http",
-          "target_protocol": "https",
-          "subresource": "iframe-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/keep-origin-redirect/upgrade-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/keep-origin-redirect/upgrade-protocol.http.html
deleted file mode 100644
index 2260553..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/keep-origin-redirect/upgrade-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an https
-                                 sub-resource via img-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is cross-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "keep-origin-redirect",
-          "origin": "cross-origin",
-          "source_protocol": "http",
-          "target_protocol": "https",
-          "subresource": "img-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/no-redirect/upgrade-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/no-redirect/upgrade-protocol.http.html
deleted file mode 100644
index 83d3733..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/no-redirect/upgrade-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an https
-                                 sub-resource via img-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is cross-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "no-redirect",
-          "origin": "cross-origin",
-          "source_protocol": "http",
-          "target_protocol": "https",
-          "subresource": "img-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/swap-origin-redirect/upgrade-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/swap-origin-redirect/upgrade-protocol.http.html
deleted file mode 100644
index 269dd5ab..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/swap-origin-redirect/upgrade-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an https
-                                 sub-resource via img-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is cross-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "swap-origin-redirect",
-          "origin": "cross-origin",
-          "source_protocol": "http",
-          "target_protocol": "https",
-          "subresource": "img-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/script-tag/keep-origin-redirect/upgrade-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/script-tag/keep-origin-redirect/upgrade-protocol.http.html
deleted file mode 100644
index 5367d9e8..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/script-tag/keep-origin-redirect/upgrade-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is cross-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "keep-origin-redirect",
-          "origin": "cross-origin",
-          "source_protocol": "http",
-          "target_protocol": "https",
-          "subresource": "script-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/script-tag/no-redirect/upgrade-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/script-tag/no-redirect/upgrade-protocol.http.html
deleted file mode 100644
index 999d68c..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/script-tag/no-redirect/upgrade-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is cross-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "no-redirect",
-          "origin": "cross-origin",
-          "source_protocol": "http",
-          "target_protocol": "https",
-          "subresource": "script-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/script-tag/swap-origin-redirect/upgrade-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/script-tag/swap-origin-redirect/upgrade-protocol.http.html
deleted file mode 100644
index 6e57d20..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/script-tag/swap-origin-redirect/upgrade-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is cross-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "swap-origin-redirect",
-          "origin": "cross-origin",
-          "source_protocol": "http",
-          "target_protocol": "https",
-          "subresource": "script-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/a-tag/no-redirect/insecure-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/a-tag/no-redirect/insecure-protocol.http.html
deleted file mode 100644
index b5e3d6c..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/a-tag/no-redirect/insecure-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an http
-                                 sub-resource via a-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is same-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "no-redirect",
-          "origin": "same-origin",
-          "source_protocol": "http",
-          "target_protocol": "http",
-          "subresource": "a-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/keep-origin-redirect/insecure-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/keep-origin-redirect/insecure-protocol.http.html
deleted file mode 100644
index 35dc6568..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/keep-origin-redirect/insecure-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an http
-                                 sub-resource via iframe-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is same-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "keep-origin-redirect",
-          "origin": "same-origin",
-          "source_protocol": "http",
-          "target_protocol": "http",
-          "subresource": "iframe-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/no-redirect/insecure-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/no-redirect/insecure-protocol.http.html
deleted file mode 100644
index cc38b182..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/no-redirect/insecure-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an http
-                                 sub-resource via iframe-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is same-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "no-redirect",
-          "origin": "same-origin",
-          "source_protocol": "http",
-          "target_protocol": "http",
-          "subresource": "iframe-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/swap-origin-redirect/insecure-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/swap-origin-redirect/insecure-protocol.http.html
deleted file mode 100644
index dc3f4cf..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/swap-origin-redirect/insecure-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an http
-                                 sub-resource via iframe-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is same-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "swap-origin-redirect",
-          "origin": "same-origin",
-          "source_protocol": "http",
-          "target_protocol": "http",
-          "subresource": "iframe-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/keep-origin-redirect/insecure-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/keep-origin-redirect/insecure-protocol.http.html
deleted file mode 100644
index e5c1855..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/keep-origin-redirect/insecure-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an http
-                                 sub-resource via img-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is same-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "keep-origin-redirect",
-          "origin": "same-origin",
-          "source_protocol": "http",
-          "target_protocol": "http",
-          "subresource": "img-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/no-redirect/insecure-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/no-redirect/insecure-protocol.http.html
deleted file mode 100644
index 4724f67..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/no-redirect/insecure-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an http
-                                 sub-resource via img-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is same-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "no-redirect",
-          "origin": "same-origin",
-          "source_protocol": "http",
-          "target_protocol": "http",
-          "subresource": "img-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/swap-origin-redirect/insecure-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/swap-origin-redirect/insecure-protocol.http.html
deleted file mode 100644
index 74f9f0e8..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/swap-origin-redirect/insecure-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an http
-                                 sub-resource via img-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is same-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "swap-origin-redirect",
-          "origin": "same-origin",
-          "source_protocol": "http",
-          "target_protocol": "http",
-          "subresource": "img-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/script-tag/keep-origin-redirect/insecure-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/script-tag/keep-origin-redirect/insecure-protocol.http.html
deleted file mode 100644
index 15a6abb..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/script-tag/keep-origin-redirect/insecure-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is same-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "keep-origin-redirect",
-          "origin": "same-origin",
-          "source_protocol": "http",
-          "target_protocol": "http",
-          "subresource": "script-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/script-tag/no-redirect/insecure-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/script-tag/no-redirect/insecure-protocol.http.html
deleted file mode 100644
index d8f487a..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/script-tag/no-redirect/insecure-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is same-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "no-redirect",
-          "origin": "same-origin",
-          "source_protocol": "http",
-          "target_protocol": "http",
-          "subresource": "script-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/script-tag/swap-origin-redirect/insecure-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/script-tag/swap-origin-redirect/insecure-protocol.http.html
deleted file mode 100644
index 14d4f5fb0..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/script-tag/swap-origin-redirect/insecure-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is same-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "swap-origin-redirect",
-          "origin": "same-origin",
-          "source_protocol": "http",
-          "target_protocol": "http",
-          "subresource": "script-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/a-tag/no-redirect/upgrade-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/a-tag/no-redirect/upgrade-protocol.http.html
deleted file mode 100644
index 3e02f034..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/a-tag/no-redirect/upgrade-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an https
-                                 sub-resource via a-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is same-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "no-redirect",
-          "origin": "same-origin",
-          "source_protocol": "http",
-          "target_protocol": "https",
-          "subresource": "a-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/keep-origin-redirect/upgrade-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/keep-origin-redirect/upgrade-protocol.http.html
deleted file mode 100644
index 3f20abb..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/keep-origin-redirect/upgrade-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an https
-                                 sub-resource via iframe-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is same-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "keep-origin-redirect",
-          "origin": "same-origin",
-          "source_protocol": "http",
-          "target_protocol": "https",
-          "subresource": "iframe-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/no-redirect/upgrade-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/no-redirect/upgrade-protocol.http.html
deleted file mode 100644
index e594604..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/no-redirect/upgrade-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an https
-                                 sub-resource via iframe-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is same-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "no-redirect",
-          "origin": "same-origin",
-          "source_protocol": "http",
-          "target_protocol": "https",
-          "subresource": "iframe-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/swap-origin-redirect/upgrade-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/swap-origin-redirect/upgrade-protocol.http.html
deleted file mode 100644
index 3e0dcd4..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/swap-origin-redirect/upgrade-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an https
-                                 sub-resource via iframe-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is same-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "swap-origin-redirect",
-          "origin": "same-origin",
-          "source_protocol": "http",
-          "target_protocol": "https",
-          "subresource": "iframe-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/keep-origin-redirect/upgrade-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/keep-origin-redirect/upgrade-protocol.http.html
deleted file mode 100644
index ef5a7e6..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/keep-origin-redirect/upgrade-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an https
-                                 sub-resource via img-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is same-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "keep-origin-redirect",
-          "origin": "same-origin",
-          "source_protocol": "http",
-          "target_protocol": "https",
-          "subresource": "img-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/no-redirect/upgrade-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/no-redirect/upgrade-protocol.http.html
deleted file mode 100644
index a50da9c..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/no-redirect/upgrade-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an https
-                                 sub-resource via img-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is same-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "no-redirect",
-          "origin": "same-origin",
-          "source_protocol": "http",
-          "target_protocol": "https",
-          "subresource": "img-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/swap-origin-redirect/upgrade-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/swap-origin-redirect/upgrade-protocol.http.html
deleted file mode 100644
index 4a01a41..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/swap-origin-redirect/upgrade-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an https
-                                 sub-resource via img-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is same-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "swap-origin-redirect",
-          "origin": "same-origin",
-          "source_protocol": "http",
-          "target_protocol": "https",
-          "subresource": "img-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/script-tag/keep-origin-redirect/upgrade-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/script-tag/keep-origin-redirect/upgrade-protocol.http.html
deleted file mode 100644
index 0a66eea4..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/script-tag/keep-origin-redirect/upgrade-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is same-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "keep-origin-redirect",
-          "origin": "same-origin",
-          "source_protocol": "http",
-          "target_protocol": "https",
-          "subresource": "script-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/script-tag/no-redirect/upgrade-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/script-tag/no-redirect/upgrade-protocol.http.html
deleted file mode 100644
index 5984794..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/script-tag/no-redirect/upgrade-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is same-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "no-redirect",
-          "origin": "same-origin",
-          "source_protocol": "http",
-          "target_protocol": "https",
-          "subresource": "script-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/script-tag/swap-origin-redirect/upgrade-protocol.http.html b/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/script-tag/swap-origin-redirect/upgrade-protocol.http.html
deleted file mode 100644
index 0c02a2e..0000000
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/script-tag/swap-origin-redirect/upgrade-protocol.http.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! Generated by referrer-policy/generic/tools/generate.py using referrer-policy/generic/template/test.release.html.template. -->
-<html>
-  <head>
-    <title>Referrer-Policy: Referrer Policy is not explicitly defined</title>
-    <meta name="description" content="Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.">
-    <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
-    <link rel="help" href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policies">
-    <meta name="assert" content="The referrer URL is stripped-referrer when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is same-origin.">
-    <script src="/resources/testharness.js"></script>
-    <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/security-features/resources/common.js"></script>
-    <script src="/referrer-policy/generic/referrer-policy-test-case.sub.js"></script>
-  </head>
-  <body>
-    <script>
-      ReferrerPolicyTestCase(
-        {
-          "referrer_policy": null,
-          "delivery_method": "attr-referrer",
-          "redirection": "swap-origin-redirect",
-          "origin": "same-origin",
-          "source_protocol": "http",
-          "target_protocol": "https",
-          "subresource": "script-tag",
-          "referrer_url": "stripped-referrer"
-        },
-        document.querySelector("meta[name=assert]").content,
-        new SanityChecker()
-      ).start();
-      </script>
-    <div id="log"></div>
-  </body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/remote-playback/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/remote-playback/idlharness.window-expected.txt
deleted file mode 100644
index e4b69030..0000000
--- a/third_party/blink/web_tests/external/wpt/remote-playback/idlharness.window-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface HTMLMediaElement: original interface defined assert_true: Original interface should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/requestidlecallback/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/requestidlecallback/idlharness.window-expected.txt
deleted file mode 100644
index f53fe32..0000000
--- a/third_party/blink/web_tests/external/wpt/requestidlecallback/idlharness.window-expected.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Window: original interface defined assert_true: Original interface should be defined expected true got false
-PASS IdleDeadline interface: existence and properties of interface object
-PASS IdleDeadline interface object length
-PASS IdleDeadline interface object name
-PASS IdleDeadline interface: existence and properties of interface prototype object
-PASS IdleDeadline interface: existence and properties of interface prototype object's "constructor" property
-PASS IdleDeadline interface: existence and properties of interface prototype object's @@unscopables property
-PASS IdleDeadline interface: operation timeRemaining()
-PASS IdleDeadline interface: attribute didTimeout
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/resource-timing/idlharness.any-expected.txt b/third_party/blink/web_tests/external/wpt/resource-timing/idlharness.any-expected.txt
deleted file mode 100644
index eda8abd6..0000000
--- a/third_party/blink/web_tests/external/wpt/resource-timing/idlharness.any-expected.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS Partial interface Performance: original interface defined
-PASS PerformanceResourceTiming interface: existence and properties of interface object
-PASS PerformanceResourceTiming interface object length
-PASS PerformanceResourceTiming interface object name
-PASS PerformanceResourceTiming interface: existence and properties of interface prototype object
-PASS PerformanceResourceTiming interface: existence and properties of interface prototype object's "constructor" property
-PASS PerformanceResourceTiming interface: existence and properties of interface prototype object's @@unscopables property
-PASS PerformanceResourceTiming interface: attribute initiatorType
-PASS PerformanceResourceTiming interface: attribute nextHopProtocol
-PASS PerformanceResourceTiming interface: attribute workerStart
-PASS PerformanceResourceTiming interface: attribute redirectStart
-PASS PerformanceResourceTiming interface: attribute redirectEnd
-PASS PerformanceResourceTiming interface: attribute fetchStart
-PASS PerformanceResourceTiming interface: attribute domainLookupStart
-PASS PerformanceResourceTiming interface: attribute domainLookupEnd
-PASS PerformanceResourceTiming interface: attribute connectStart
-PASS PerformanceResourceTiming interface: attribute connectEnd
-PASS PerformanceResourceTiming interface: attribute secureConnectionStart
-PASS PerformanceResourceTiming interface: attribute requestStart
-PASS PerformanceResourceTiming interface: attribute responseStart
-PASS PerformanceResourceTiming interface: attribute responseEnd
-PASS PerformanceResourceTiming interface: attribute transferSize
-PASS PerformanceResourceTiming interface: attribute encodedBodySize
-PASS PerformanceResourceTiming interface: attribute decodedBodySize
-PASS PerformanceResourceTiming interface: operation toJSON()
-PASS Performance interface: operation clearResourceTimings()
-PASS Performance interface: operation setResourceTimingBufferSize(unsigned long)
-PASS Performance interface: attribute onresourcetimingbufferfull
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/resource-timing/idlharness.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/resource-timing/idlharness.any.worker-expected.txt
deleted file mode 100644
index eda8abd6..0000000
--- a/third_party/blink/web_tests/external/wpt/resource-timing/idlharness.any.worker-expected.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS Partial interface Performance: original interface defined
-PASS PerformanceResourceTiming interface: existence and properties of interface object
-PASS PerformanceResourceTiming interface object length
-PASS PerformanceResourceTiming interface object name
-PASS PerformanceResourceTiming interface: existence and properties of interface prototype object
-PASS PerformanceResourceTiming interface: existence and properties of interface prototype object's "constructor" property
-PASS PerformanceResourceTiming interface: existence and properties of interface prototype object's @@unscopables property
-PASS PerformanceResourceTiming interface: attribute initiatorType
-PASS PerformanceResourceTiming interface: attribute nextHopProtocol
-PASS PerformanceResourceTiming interface: attribute workerStart
-PASS PerformanceResourceTiming interface: attribute redirectStart
-PASS PerformanceResourceTiming interface: attribute redirectEnd
-PASS PerformanceResourceTiming interface: attribute fetchStart
-PASS PerformanceResourceTiming interface: attribute domainLookupStart
-PASS PerformanceResourceTiming interface: attribute domainLookupEnd
-PASS PerformanceResourceTiming interface: attribute connectStart
-PASS PerformanceResourceTiming interface: attribute connectEnd
-PASS PerformanceResourceTiming interface: attribute secureConnectionStart
-PASS PerformanceResourceTiming interface: attribute requestStart
-PASS PerformanceResourceTiming interface: attribute responseStart
-PASS PerformanceResourceTiming interface: attribute responseEnd
-PASS PerformanceResourceTiming interface: attribute transferSize
-PASS PerformanceResourceTiming interface: attribute encodedBodySize
-PASS PerformanceResourceTiming interface: attribute decodedBodySize
-PASS PerformanceResourceTiming interface: operation toJSON()
-PASS Performance interface: operation clearResourceTimings()
-PASS Performance interface: operation setResourceTimingBufferSize(unsigned long)
-PASS Performance interface: attribute onresourcetimingbufferfull
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/resources/chromium/webxr-test.js b/third_party/blink/web_tests/external/wpt/resources/chromium/webxr-test.js
index b52ee3b..73dda09 100644
--- a/third_party/blink/web_tests/external/wpt/resources/chromium/webxr-test.js
+++ b/third_party/blink/web_tests/external/wpt/resources/chromium/webxr-test.js
@@ -45,6 +45,15 @@
           m14, m24, m34, 1];
 }
 
+function getGFXTransformFromPosition(x, y, z) {
+  let transform = new gfx.mojom.Transform();
+  transform.matrix = getMatrixFromTransform({
+    position: [x, y, z],
+    orientation: [0, 0, 0, 1]
+  });
+  return transform;
+}
+
 class ChromeXRTest {
   constructor() {
     this.mockVRService_ = new MockVRService(mojo.frameInterfaces);
@@ -369,7 +378,7 @@
           leftDegrees: 50.899,
           rightDegrees: 35.197
         },
-        offset: { x: -0.032, y: 0, z: 0 },
+        headFromEye: getGFXTransformFromPosition(-0.032, 0, 0),
         renderWidth: 20,
         renderHeight: 20
       },
@@ -380,7 +389,7 @@
           leftDegrees: 50.899,
           rightDegrees: 35.197
         },
-        offset: { x: 0.032, y: 0, z: 0 },
+        headFromEye: getGFXTransformFromPosition(0.032, 0, 0),
         renderWidth: 20,
         renderHeight: 20
       },
@@ -415,7 +424,7 @@
         leftDegrees: toDegrees(leftTan),
         rightDegrees: toDegrees(rightTan)
       },
-      offset: { x: offset[0], y: offset[1], z: offset[2] },
+      headFromEye: getGFXTransformFromPosition(offset[0], offset[1], offset[2]),
       renderWidth: fakeXRViewInit.resolution.width,
       renderHeight: fakeXRViewInit.resolution.height
     };
diff --git a/third_party/blink/web_tests/external/wpt/resources/webidl2/lib/webidl2.js b/third_party/blink/web_tests/external/wpt/resources/webidl2/lib/webidl2.js
index 98216ab7..c60a456 100644
--- a/third_party/blink/web_tests/external/wpt/resources/webidl2/lib/webidl2.js
+++ b/third_party/blink/web_tests/external/wpt/resources/webidl2/lib/webidl2.js
@@ -122,9 +122,9 @@
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parse", function() { return parse; });
 /* harmony import */ var _tokeniser_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
-/* harmony import */ var _productions_enum_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
+/* harmony import */ var _productions_enum_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15);
 /* harmony import */ var _productions_includes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16);
-/* harmony import */ var _productions_extended_attributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(11);
+/* harmony import */ var _productions_extended_attributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);
 /* harmony import */ var _productions_typedef_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(17);
 /* harmony import */ var _productions_callback_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(18);
 /* harmony import */ var _productions_interface_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(19);
@@ -243,6 +243,8 @@
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "argumentNameKeywords", function() { return argumentNameKeywords; });
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Tokeniser", function() { return Tokeniser; });
 /* harmony import */ var _error_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
+/* harmony import */ var _productions_helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
+
 
 
 // These regular expressions use the sticky flag so they will only match at
@@ -270,6 +272,7 @@
   "attribute",
   "callback",
   "const",
+  "constructor",
   "deleter",
   "dictionary",
   "enum",
@@ -335,6 +338,13 @@
   "}"
 ];
 
+const reserved = [
+  // "constructor" is now a keyword
+  "_constructor",
+  "toString",
+  "_toString",
+];
+
 /**
  * @param {string} str
  */
@@ -366,9 +376,15 @@
       }
       if (result === -1) {
         result = attemptTokenMatch("identifier");
-        const token = tokens[tokens.length - 1];
-        if (result !== -1 && nonRegexTerminals.includes(token.value)) {
-          token.type = token.value;
+        const lastIndex = tokens.length - 1;
+        const token = tokens[lastIndex];
+        if (result !== -1) {
+          if (reserved.includes(token.value)) {
+            const message = `${Object(_productions_helpers_js__WEBPACK_IMPORTED_MODULE_1__["unescape"])(token.value)} is a reserved identifier and must not be used.`;
+            throw new WebIDLParseError(Object(_error_js__WEBPACK_IMPORTED_MODULE_0__["syntaxError"])(tokens, lastIndex, null, message));
+          } else if (nonRegexTerminals.includes(token.value)) {
+            token.type = token.value;
+          }
         }
       }
     } else if (nextChar === '"') {
@@ -586,77 +602,6 @@
 
 "use strict";
 __webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Enum", function() { return Enum; });
-/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);
-/* harmony import */ var _token_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
-/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
-
-
-
-
-class EnumValue extends _token_js__WEBPACK_IMPORTED_MODULE_1__["Token"] {
-  /**
-   * @param {import("../tokeniser").Tokeniser} tokeniser
-   */
-  static parse(tokeniser) {
-    const value = tokeniser.consume("string");
-    if (value) {
-      return new EnumValue({ source: tokeniser.source, tokens: { value } });
-    }
-  }
-
-  get type() {
-    return "enum-value";
-  }
-  get value() {
-    return super.value.slice(1, -1);
-  }
-}
-
-class Enum extends _base_js__WEBPACK_IMPORTED_MODULE_2__["Base"] {
-  /**
-   * @param {import("../tokeniser").Tokeniser} tokeniser
-   */
-  static parse(tokeniser) {
-    const tokens = {};
-    tokens.base = tokeniser.consume("enum");
-    if (!tokens.base) {
-      return;
-    }
-    tokens.name = tokeniser.consume("identifier") || tokeniser.error("No name for enum");
-    const ret = tokeniser.current = new Enum({ source: tokeniser.source, tokens });
-    tokens.open = tokeniser.consume("{") || tokeniser.error("Bodyless enum");
-    ret.values = Object(_helpers_js__WEBPACK_IMPORTED_MODULE_0__["list"])(tokeniser, {
-      parser: EnumValue.parse,
-      allowDangler: true,
-      listName: "enumeration"
-    });
-    if (tokeniser.probe("string")) {
-      tokeniser.error("No comma between enum values");
-    }
-    tokens.close = tokeniser.consume("}") || tokeniser.error("Unexpected value in enum");
-    if (!ret.values.length) {
-      tokeniser.error("No value in enum");
-    }
-    tokens.termination = tokeniser.consume(";") || tokeniser.error("No semicolon after enum");
-    return ret;
-  }
-
-  get type() {
-    return "enum";
-  }
-  get name() {
-    return Object(_helpers_js__WEBPACK_IMPORTED_MODULE_0__["unescape"])(this.tokens.name.value);
-  }
-}
-
-
-/***/ }),
-/* 5 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unescape", function() { return unescape; });
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "list", function() { return list; });
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "const_value", function() { return const_value; });
@@ -668,12 +613,12 @@
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "return_type", function() { return return_type; });
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "stringifier", function() { return stringifier; });
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "autofixAddExposedWindow", function() { return autofixAddExposedWindow; });
-/* harmony import */ var _type_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
-/* harmony import */ var _argument_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
-/* harmony import */ var _token_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);
-/* harmony import */ var _extended_attributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(11);
-/* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14);
-/* harmony import */ var _attribute_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(15);
+/* harmony import */ var _type_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);
+/* harmony import */ var _argument_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);
+/* harmony import */ var _token_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
+/* harmony import */ var _extended_attributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);
+/* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(13);
+/* harmony import */ var _attribute_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(14);
 /* harmony import */ var _tokeniser_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(2);
 
 
@@ -869,17 +814,17 @@
 
 
 /***/ }),
-/* 6 */
+/* 5 */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Type", function() { return Type; });
-/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
-/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
+/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
+/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
 /* harmony import */ var _tokeniser_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2);
 /* harmony import */ var _error_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
-/* harmony import */ var _validators_helpers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(8);
+/* harmony import */ var _validators_helpers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
 
 
 
@@ -1057,7 +1002,7 @@
 
 
 /***/ }),
-/* 7 */
+/* 6 */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
@@ -1089,7 +1034,7 @@
 
 
 /***/ }),
-/* 8 */
+/* 7 */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
@@ -1139,19 +1084,19 @@
 
 
 /***/ }),
-/* 9 */
+/* 8 */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Argument", function() { return Argument; });
-/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
-/* harmony import */ var _default_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
-/* harmony import */ var _extended_attributes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11);
-/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5);
+/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
+/* harmony import */ var _default_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
+/* harmony import */ var _extended_attributes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10);
+/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4);
 /* harmony import */ var _tokeniser_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2);
 /* harmony import */ var _error_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3);
-/* harmony import */ var _validators_helpers_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(8);
+/* harmony import */ var _validators_helpers_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7);
 
 
 
@@ -1225,14 +1170,14 @@
 
 
 /***/ }),
-/* 10 */
+/* 9 */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Default", function() { return Default; });
-/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
-/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
+/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
+/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
 
 
 
@@ -1275,16 +1220,16 @@
 
 
 /***/ }),
-/* 11 */
+/* 10 */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SimpleExtendedAttribute", function() { return SimpleExtendedAttribute; });
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExtendedAttributes", function() { return ExtendedAttributes; });
-/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
-/* harmony import */ var _array_base_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
-/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
+/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
+/* harmony import */ var _array_base_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11);
+/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4);
 /* harmony import */ var _error_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
 
 
@@ -1412,7 +1357,7 @@
 
 
 /***/ }),
-/* 12 */
+/* 11 */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
@@ -1430,13 +1375,13 @@
 
 
 /***/ }),
-/* 13 */
+/* 12 */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Token", function() { return Token; });
-/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
+/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
 
 
 class Token extends _base_js__WEBPACK_IMPORTED_MODULE_0__["Base"] {
@@ -1460,14 +1405,16 @@
 
 
 /***/ }),
-/* 14 */
+/* 13 */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Operation", function() { return Operation; });
-/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
-/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
+/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
+/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
+/* harmony import */ var _error_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
+
 
 
 
@@ -1515,6 +1462,10 @@
   }
 
   *validate(defs) {
+    if (!this.name && ["", "static"].includes(this.special)) {
+      const message = `Regular or static operations must have both a return type and an identifier.`;
+      yield Object(_error_js__WEBPACK_IMPORTED_MODULE_2__["validationError"])(this.source, this.tokens.open, this, message);
+    }
     if (this.idlType) {
       yield* this.idlType.validate(defs);
     }
@@ -1526,14 +1477,14 @@
 
 
 /***/ }),
-/* 15 */
+/* 14 */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Attribute", function() { return Attribute; });
-/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
-/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
+/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
+/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
 
 
 
@@ -1593,14 +1544,85 @@
 
 
 /***/ }),
+/* 15 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Enum", function() { return Enum; });
+/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
+/* harmony import */ var _token_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
+/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6);
+
+
+
+
+class EnumValue extends _token_js__WEBPACK_IMPORTED_MODULE_1__["Token"] {
+  /**
+   * @param {import("../tokeniser").Tokeniser} tokeniser
+   */
+  static parse(tokeniser) {
+    const value = tokeniser.consume("string");
+    if (value) {
+      return new EnumValue({ source: tokeniser.source, tokens: { value } });
+    }
+  }
+
+  get type() {
+    return "enum-value";
+  }
+  get value() {
+    return super.value.slice(1, -1);
+  }
+}
+
+class Enum extends _base_js__WEBPACK_IMPORTED_MODULE_2__["Base"] {
+  /**
+   * @param {import("../tokeniser").Tokeniser} tokeniser
+   */
+  static parse(tokeniser) {
+    const tokens = {};
+    tokens.base = tokeniser.consume("enum");
+    if (!tokens.base) {
+      return;
+    }
+    tokens.name = tokeniser.consume("identifier") || tokeniser.error("No name for enum");
+    const ret = tokeniser.current = new Enum({ source: tokeniser.source, tokens });
+    tokens.open = tokeniser.consume("{") || tokeniser.error("Bodyless enum");
+    ret.values = Object(_helpers_js__WEBPACK_IMPORTED_MODULE_0__["list"])(tokeniser, {
+      parser: EnumValue.parse,
+      allowDangler: true,
+      listName: "enumeration"
+    });
+    if (tokeniser.probe("string")) {
+      tokeniser.error("No comma between enum values");
+    }
+    tokens.close = tokeniser.consume("}") || tokeniser.error("Unexpected value in enum");
+    if (!ret.values.length) {
+      tokeniser.error("No value in enum");
+    }
+    tokens.termination = tokeniser.consume(";") || tokeniser.error("No semicolon after enum");
+    return ret;
+  }
+
+  get type() {
+    return "enum";
+  }
+  get name() {
+    return Object(_helpers_js__WEBPACK_IMPORTED_MODULE_0__["unescape"])(this.tokens.name.value);
+  }
+}
+
+
+/***/ }),
 /* 16 */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Includes", function() { return Includes; });
-/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
-/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
+/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
+/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
 
 
 
@@ -1643,8 +1665,8 @@
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Typedef", function() { return Typedef; });
-/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
-/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
+/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
+/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
 
 
 
@@ -1686,8 +1708,8 @@
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CallbackFunction", function() { return CallbackFunction; });
-/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
-/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
+/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
+/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
 
 
 
@@ -1730,11 +1752,11 @@
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Interface", function() { return Interface; });
 /* harmony import */ var _container_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
-/* harmony import */ var _attribute_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15);
-/* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
+/* harmony import */ var _attribute_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14);
+/* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);
 /* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21);
 /* harmony import */ var _iterable_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(22);
-/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5);
+/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4);
 /* harmony import */ var _error_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(3);
 /* harmony import */ var _validators_interface_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(23);
 /* harmony import */ var _constructor_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(24);
@@ -1817,9 +1839,9 @@
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Container", function() { return Container; });
-/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
-/* harmony import */ var _extended_attributes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11);
-/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
+/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
+/* harmony import */ var _extended_attributes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
+/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4);
 
 
 
@@ -1903,9 +1925,9 @@
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Constant", function() { return Constant; });
-/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
-/* harmony import */ var _type_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6);
-/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
+/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
+/* harmony import */ var _type_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
+/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4);
 
 
 
@@ -1957,8 +1979,8 @@
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "IterableLike", function() { return IterableLike; });
-/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
-/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
+/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
+/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
 
 
 
@@ -2063,8 +2085,8 @@
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Constructor", function() { return Constructor; });
-/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
-/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
+/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
+/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
 
 
 
@@ -2102,9 +2124,9 @@
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Mixin", function() { return Mixin; });
 /* harmony import */ var _container_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
 /* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21);
-/* harmony import */ var _attribute_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
-/* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(14);
-/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5);
+/* harmony import */ var _attribute_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
+/* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13);
+/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4);
 
 
 
@@ -2182,10 +2204,10 @@
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Field", function() { return Field; });
-/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
-/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
-/* harmony import */ var _extended_attributes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11);
-/* harmony import */ var _default_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);
+/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
+/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
+/* harmony import */ var _extended_attributes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10);
+/* harmony import */ var _default_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9);
 
 
 
@@ -2232,10 +2254,10 @@
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Namespace", function() { return Namespace; });
 /* harmony import */ var _container_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
-/* harmony import */ var _attribute_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15);
-/* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
+/* harmony import */ var _attribute_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14);
+/* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);
 /* harmony import */ var _error_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
-/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5);
+/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4);
 
 
 
@@ -2289,7 +2311,7 @@
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CallbackInterface", function() { return CallbackInterface; });
 /* harmony import */ var _container_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
-/* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14);
+/* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
 /* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21);
 
 
@@ -2342,6 +2364,7 @@
   reference: noop,
   type: noop,
   generic: noop,
+  nameless: noop,
   inheritance: noop,
   definition: noop,
   extendedAttribute: noop,
@@ -2466,7 +2489,7 @@
     ] : [];
     return ts.definition(ts.wrap([
       extended_attributes(it.extAttrs),
-      token(it.tokens.special),
+      it.tokens.name ? token(it.tokens.special) : token(it.tokens.special, ts.nameless, { data: it, parent }),
       ...body,
       token(it.tokens.termination)
     ]), { data: it, parent });
@@ -2487,7 +2510,7 @@
   function constructor(it, parent) {
     return ts.definition(ts.wrap([
       extended_attributes(it.extAttrs),
-      token(it.tokens.base),
+      token(it.tokens.base, ts.nameless, { data: it, parent }),
       token(it.tokens.open),
       ts.wrap(it.arguments.map(argument)),
       token(it.tokens.close),
diff --git a/third_party/blink/web_tests/external/wpt/screen-capture/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/screen-capture/idlharness.https.window-expected.txt
deleted file mode 100644
index e75bd5f..0000000
--- a/third_party/blink/web_tests/external/wpt/screen-capture/idlharness.https.window-expected.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS Partial interface MediaDevices: original interface defined
-PASS Partial dictionary MediaTrackSupportedConstraints: original dictionary defined
-PASS Partial dictionary MediaTrackConstraintSet: original dictionary defined
-PASS Partial dictionary MediaTrackSettings: original dictionary defined
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/screen-orientation/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/screen-orientation/idlharness.window-expected.txt
deleted file mode 100644
index 5d4d3494..0000000
--- a/third_party/blink/web_tests/external/wpt/screen-orientation/idlharness.window-expected.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS Partial interface Screen: original interface defined
-PASS ScreenOrientation interface: existence and properties of interface object
-PASS ScreenOrientation interface object length
-PASS ScreenOrientation interface object name
-PASS ScreenOrientation interface: existence and properties of interface prototype object
-PASS ScreenOrientation interface: existence and properties of interface prototype object's "constructor" property
-PASS ScreenOrientation interface: existence and properties of interface prototype object's @@unscopables property
-PASS ScreenOrientation interface: operation lock(OrientationLockType)
-PASS ScreenOrientation interface: operation unlock()
-PASS ScreenOrientation interface: attribute type
-PASS ScreenOrientation interface: attribute angle
-PASS ScreenOrientation interface: attribute onchange
-PASS Screen interface: attribute orientation
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/secure-contexts/idlharness.any-expected.txt b/third_party/blink/web_tests/external/wpt/secure-contexts/idlharness.any-expected.txt
deleted file mode 100644
index c717e8b..0000000
--- a/third_party/blink/web_tests/external/wpt/secure-contexts/idlharness.any-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/secure-contexts/idlharness.any.serviceworker-expected.txt b/third_party/blink/web_tests/external/wpt/secure-contexts/idlharness.any.serviceworker-expected.txt
deleted file mode 100644
index c717e8b..0000000
--- a/third_party/blink/web_tests/external/wpt/secure-contexts/idlharness.any.serviceworker-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/secure-contexts/idlharness.any.sharedworker-expected.txt b/third_party/blink/web_tests/external/wpt/secure-contexts/idlharness.any.sharedworker-expected.txt
deleted file mode 100644
index c717e8b..0000000
--- a/third_party/blink/web_tests/external/wpt/secure-contexts/idlharness.any.sharedworker-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/secure-contexts/idlharness.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/secure-contexts/idlharness.any.worker-expected.txt
deleted file mode 100644
index c717e8b..0000000
--- a/third_party/blink/web_tests/external/wpt/secure-contexts/idlharness.any.worker-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/selection/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/selection/idlharness.window-expected.txt
deleted file mode 100644
index 7a270e0..0000000
--- a/third_party/blink/web_tests/external/wpt/selection/idlharness.window-expected.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Document: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface Window: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface mixin GlobalEventHandlers: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
-PASS Selection interface: existence and properties of interface object
-PASS Selection interface object length
-PASS Selection interface object name
-PASS Selection interface: existence and properties of interface prototype object
-PASS Selection interface: existence and properties of interface prototype object's "constructor" property
-PASS Selection interface: existence and properties of interface prototype object's @@unscopables property
-PASS Selection interface: attribute anchorNode
-PASS Selection interface: attribute anchorOffset
-PASS Selection interface: attribute focusNode
-PASS Selection interface: attribute focusOffset
-PASS Selection interface: attribute isCollapsed
-PASS Selection interface: attribute rangeCount
-PASS Selection interface: attribute type
-PASS Selection interface: operation getRangeAt(unsigned long)
-PASS Selection interface: operation addRange(Range)
-PASS Selection interface: operation removeRange(Range)
-PASS Selection interface: operation removeAllRanges()
-PASS Selection interface: operation empty()
-PASS Selection interface: operation collapse(Node, unsigned long)
-PASS Selection interface: operation setPosition(Node, unsigned long)
-PASS Selection interface: operation collapseToStart()
-PASS Selection interface: operation collapseToEnd()
-PASS Selection interface: operation extend(Node, unsigned long)
-PASS Selection interface: operation setBaseAndExtent(Node, unsigned long, Node, unsigned long)
-PASS Selection interface: operation selectAllChildren(Node)
-PASS Selection interface: operation deleteFromDocument()
-PASS Selection interface: operation containsNode(Node, boolean)
-PASS Selection interface: stringifier
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/service-workers/service-worker/activation.https.html b/third_party/blink/web_tests/external/wpt/service-workers/service-worker/activation.https.html
index 5755758e..007ecaad 100644
--- a/third_party/blink/web_tests/external/wpt/service-workers/service-worker/activation.https.html
+++ b/third_party/blink/web_tests/external/wpt/service-workers/service-worker/activation.https.html
@@ -113,10 +113,12 @@
     var scope = 'resources/skip-waiting';
     var worker_url = 'resources/mint-new-worker.py?skip-waiting';
     var registration;
+    var iframe;
     var new_worker;
     return setup_activation_test(t, scope, worker_url)
       .then(result => {
           registration = result.registration;
+          iframe = result.iframe;
           // Finish the request. The iframe does not need to be removed because
           // skipWaiting() was called.
           new_worker = registration.waiting;
@@ -126,6 +128,8 @@
         })
       .then(() => {
           assert_equals(registration.active, new_worker);
+          // Remove the iframe.
+          iframe.remove();
         });
   }, 'skipWaiting bypasses no controllee requirement');
 
diff --git a/third_party/blink/web_tests/external/wpt/service-workers/service-worker/detached-context.https.html b/third_party/blink/web_tests/external/wpt/service-workers/service-worker/detached-context.https.html
index 5ae4de8c..f96370d 100644
--- a/third_party/blink/web_tests/external/wpt/service-workers/service-worker/detached-context.https.html
+++ b/third_party/blink/web_tests/external/wpt/service-workers/service-worker/detached-context.https.html
@@ -59,6 +59,7 @@
       .then(() => {
           assert_equals(resolvedCount, 0,
                         'methods called on a detached registration should not resolve');
+          frame.remove();
         })
   }, 'accessing a ServiceWorkerRegistration from a removed iframe');
 
@@ -102,6 +103,7 @@
         assert_equals(
             get_navigator().serviceWorker,
             iframe.contentWindow.navigator.serviceWorker);
+        iframe.remove();
       });
   }, 'accessing navigator.serviceWorker on a detached iframe');
 
diff --git a/third_party/blink/web_tests/external/wpt/service-workers/service-worker/interfaces-sw.https-expected.txt b/third_party/blink/web_tests/external/wpt/service-workers/service-worker/interfaces-sw.https-expected.txt
index 401cb4a8..ea3fd1a 100644
--- a/third_party/blink/web_tests/external/wpt/service-workers/service-worker/interfaces-sw.https-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/service-workers/service-worker/interfaces-sw.https-expected.txt
@@ -1,10 +1,187 @@
 This is a testharness.js-based test.
+Found 183 tests; 177 PASS, 6 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Interfaces and attributes in ServiceWorkerGlobalScope
-FAIL test setup (cache creation) promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+PASS test setup (cache creation)
 FAIL Event constructors assert_equals: FetchEvent.isReload should not exist expected (undefined) undefined but got (boolean) false
 PASS xhr is not exposed
 PASS URL.createObjectURL is not exposed
+PASS ServiceWorker interface: existence and properties of interface object
+PASS ServiceWorker interface object length
+PASS ServiceWorker interface object name
+PASS ServiceWorker interface: existence and properties of interface prototype object
+PASS ServiceWorker interface: existence and properties of interface prototype object's "constructor" property
+PASS ServiceWorker interface: existence and properties of interface prototype object's @@unscopables property
+PASS ServiceWorker interface: attribute scriptURL
+PASS ServiceWorker interface: attribute state
+PASS ServiceWorker interface: operation postMessage(any, [object Object])
+PASS ServiceWorker interface: operation postMessage(any, PostMessageOptions)
+PASS ServiceWorker interface: attribute onstatechange
+PASS ServiceWorkerRegistration interface: existence and properties of interface object
+PASS ServiceWorkerRegistration interface object length
+PASS ServiceWorkerRegistration interface object name
+PASS ServiceWorkerRegistration interface: existence and properties of interface prototype object
+PASS ServiceWorkerRegistration interface: existence and properties of interface prototype object's "constructor" property
+PASS ServiceWorkerRegistration interface: existence and properties of interface prototype object's @@unscopables property
+PASS ServiceWorkerRegistration interface: attribute installing
+PASS ServiceWorkerRegistration interface: attribute waiting
+PASS ServiceWorkerRegistration interface: attribute active
+PASS ServiceWorkerRegistration interface: attribute navigationPreload
+PASS ServiceWorkerRegistration interface: attribute scope
+PASS ServiceWorkerRegistration interface: attribute updateViaCache
+PASS ServiceWorkerRegistration interface: operation update()
+PASS ServiceWorkerRegistration interface: operation unregister()
+PASS ServiceWorkerRegistration interface: attribute onupdatefound
+PASS ServiceWorkerRegistration must be primary interface of self.registration
+PASS Stringification of self.registration
+PASS ServiceWorkerRegistration interface: self.registration must inherit property "installing" with the proper type
+PASS ServiceWorkerRegistration interface: self.registration must inherit property "waiting" with the proper type
+PASS ServiceWorkerRegistration interface: self.registration must inherit property "active" with the proper type
+PASS ServiceWorkerRegistration interface: self.registration must inherit property "navigationPreload" with the proper type
+PASS ServiceWorkerRegistration interface: self.registration must inherit property "scope" with the proper type
+PASS ServiceWorkerRegistration interface: self.registration must inherit property "updateViaCache" with the proper type
+PASS ServiceWorkerRegistration interface: self.registration must inherit property "update()" with the proper type
+PASS ServiceWorkerRegistration interface: self.registration must inherit property "unregister()" with the proper type
+PASS ServiceWorkerRegistration interface: self.registration must inherit property "onupdatefound" with the proper type
+PASS NavigationPreloadManager interface: existence and properties of interface object
+PASS NavigationPreloadManager interface object length
+PASS NavigationPreloadManager interface object name
+PASS NavigationPreloadManager interface: existence and properties of interface prototype object
+PASS NavigationPreloadManager interface: existence and properties of interface prototype object's "constructor" property
+PASS NavigationPreloadManager interface: existence and properties of interface prototype object's @@unscopables property
+PASS NavigationPreloadManager interface: operation enable()
+PASS NavigationPreloadManager interface: operation disable()
+PASS NavigationPreloadManager interface: operation setHeaderValue(ByteString)
+PASS NavigationPreloadManager interface: operation getState()
+PASS ServiceWorkerGlobalScope interface: existence and properties of interface object
+PASS ServiceWorkerGlobalScope interface object length
+PASS ServiceWorkerGlobalScope interface object name
+PASS ServiceWorkerGlobalScope interface: existence and properties of interface prototype object
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to a new value via Object.setPrototypeOf should throw a TypeError
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to a new value via __proto__ should throw a TypeError
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to a new value via Reflect.setPrototypeOf should return false
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to its original value via Object.setPrototypeOf should not throw
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to its original value via __proto__ should not throw
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to its original value via Reflect.setPrototypeOf should return true
+PASS ServiceWorkerGlobalScope interface: existence and properties of interface prototype object's "constructor" property
+PASS ServiceWorkerGlobalScope interface: existence and properties of interface prototype object's @@unscopables property
+PASS ServiceWorkerGlobalScope interface: attribute clients
+PASS ServiceWorkerGlobalScope interface: attribute registration
+FAIL ServiceWorkerGlobalScope interface: attribute serviceWorker assert_own_property: The global object must have a property "serviceWorker" expected property "serviceWorker" missing
+PASS ServiceWorkerGlobalScope interface: operation skipWaiting()
+PASS ServiceWorkerGlobalScope interface: attribute oninstall
+PASS ServiceWorkerGlobalScope interface: attribute onactivate
+PASS ServiceWorkerGlobalScope interface: attribute onfetch
+PASS ServiceWorkerGlobalScope interface: attribute onmessage
+FAIL ServiceWorkerGlobalScope interface: attribute onmessageerror assert_own_property: The global object must have a property "onmessageerror" expected property "onmessageerror" missing
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via Object.setPrototypeOf should throw a TypeError
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via __proto__ should throw a TypeError
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via Reflect.setPrototypeOf should return false
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via Object.setPrototypeOf should not throw
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via __proto__ should not throw
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via Reflect.setPrototypeOf should return true
+PASS ServiceWorkerGlobalScope must be primary interface of self
+PASS Stringification of self
+PASS ServiceWorkerGlobalScope interface: self must inherit property "clients" with the proper type
+PASS ServiceWorkerGlobalScope interface: self must inherit property "registration" with the proper type
+FAIL ServiceWorkerGlobalScope interface: self must inherit property "serviceWorker" with the proper type assert_own_property: expected property "serviceWorker" missing
+PASS ServiceWorkerGlobalScope interface: self must inherit property "skipWaiting()" with the proper type
+PASS ServiceWorkerGlobalScope interface: self must inherit property "oninstall" with the proper type
+PASS ServiceWorkerGlobalScope interface: self must inherit property "onactivate" with the proper type
+PASS ServiceWorkerGlobalScope interface: self must inherit property "onfetch" with the proper type
+PASS ServiceWorkerGlobalScope interface: self must inherit property "onmessage" with the proper type
+FAIL ServiceWorkerGlobalScope interface: self must inherit property "onmessageerror" with the proper type assert_own_property: expected property "onmessageerror" missing
+PASS Client interface: existence and properties of interface object
+PASS Client interface object length
+PASS Client interface object name
+PASS Client interface: existence and properties of interface prototype object
+PASS Client interface: existence and properties of interface prototype object's "constructor" property
+PASS Client interface: existence and properties of interface prototype object's @@unscopables property
+PASS Client interface: attribute url
+PASS Client interface: attribute frameType
+PASS Client interface: attribute id
+PASS Client interface: attribute type
+PASS Client interface: operation postMessage(any, [object Object])
+PASS Client interface: operation postMessage(any, PostMessageOptions)
+PASS WindowClient interface: existence and properties of interface object
+PASS WindowClient interface object length
+PASS WindowClient interface object name
+PASS WindowClient interface: existence and properties of interface prototype object
+PASS WindowClient interface: existence and properties of interface prototype object's "constructor" property
+PASS WindowClient interface: existence and properties of interface prototype object's @@unscopables property
+PASS WindowClient interface: attribute visibilityState
+PASS WindowClient interface: attribute focused
+FAIL WindowClient interface: attribute ancestorOrigins assert_true: The prototype object must have a property "ancestorOrigins" expected true got false
+PASS WindowClient interface: operation focus()
+PASS WindowClient interface: operation navigate(USVString)
+PASS Clients interface: existence and properties of interface object
+PASS Clients interface object length
+PASS Clients interface object name
+PASS Clients interface: existence and properties of interface prototype object
+PASS Clients interface: existence and properties of interface prototype object's "constructor" property
+PASS Clients interface: existence and properties of interface prototype object's @@unscopables property
+PASS Clients interface: operation get(DOMString)
+PASS Clients interface: operation matchAll(ClientQueryOptions)
+PASS Clients interface: operation openWindow(USVString)
+PASS Clients interface: operation claim()
+PASS Clients must be primary interface of self.clients
+PASS Stringification of self.clients
+PASS Clients interface: self.clients must inherit property "get(DOMString)" with the proper type
+PASS Clients interface: calling get(DOMString) on self.clients with too few arguments must throw TypeError
+PASS Clients interface: self.clients must inherit property "matchAll(ClientQueryOptions)" with the proper type
+PASS Clients interface: calling matchAll(ClientQueryOptions) on self.clients with too few arguments must throw TypeError
+PASS Clients interface: self.clients must inherit property "openWindow(USVString)" with the proper type
+PASS Clients interface: calling openWindow(USVString) on self.clients with too few arguments must throw TypeError
+PASS Clients interface: self.clients must inherit property "claim()" with the proper type
+PASS Cache interface: existence and properties of interface object
+PASS Cache interface object length
+PASS Cache interface object name
+PASS Cache interface: existence and properties of interface prototype object
+PASS Cache interface: existence and properties of interface prototype object's "constructor" property
+PASS Cache interface: existence and properties of interface prototype object's @@unscopables property
+PASS Cache interface: operation match(RequestInfo, CacheQueryOptions)
+PASS Cache interface: operation matchAll(RequestInfo, CacheQueryOptions)
+PASS Cache interface: operation add(RequestInfo)
+PASS Cache interface: operation addAll([object Object])
+PASS Cache interface: operation put(RequestInfo, Response)
+PASS Cache interface: operation delete(RequestInfo, CacheQueryOptions)
+PASS Cache interface: operation keys(RequestInfo, CacheQueryOptions)
+PASS Cache must be primary interface of self.cacheInstance
+PASS Stringification of self.cacheInstance
+PASS Cache interface: self.cacheInstance must inherit property "match(RequestInfo, CacheQueryOptions)" with the proper type
+PASS Cache interface: calling match(RequestInfo, CacheQueryOptions) on self.cacheInstance with too few arguments must throw TypeError
+PASS Cache interface: self.cacheInstance must inherit property "matchAll(RequestInfo, CacheQueryOptions)" with the proper type
+PASS Cache interface: calling matchAll(RequestInfo, CacheQueryOptions) on self.cacheInstance with too few arguments must throw TypeError
+PASS Cache interface: self.cacheInstance must inherit property "add(RequestInfo)" with the proper type
+PASS Cache interface: calling add(RequestInfo) on self.cacheInstance with too few arguments must throw TypeError
+PASS Cache interface: self.cacheInstance must inherit property "addAll([object Object])" with the proper type
+PASS Cache interface: calling addAll([object Object]) on self.cacheInstance with too few arguments must throw TypeError
+PASS Cache interface: self.cacheInstance must inherit property "put(RequestInfo, Response)" with the proper type
+PASS Cache interface: calling put(RequestInfo, Response) on self.cacheInstance with too few arguments must throw TypeError
+PASS Cache interface: self.cacheInstance must inherit property "delete(RequestInfo, CacheQueryOptions)" with the proper type
+PASS Cache interface: calling delete(RequestInfo, CacheQueryOptions) on self.cacheInstance with too few arguments must throw TypeError
+PASS Cache interface: self.cacheInstance must inherit property "keys(RequestInfo, CacheQueryOptions)" with the proper type
+PASS Cache interface: calling keys(RequestInfo, CacheQueryOptions) on self.cacheInstance with too few arguments must throw TypeError
+PASS CacheStorage interface: existence and properties of interface object
+PASS CacheStorage interface object length
+PASS CacheStorage interface object name
+PASS CacheStorage interface: existence and properties of interface prototype object
+PASS CacheStorage interface: existence and properties of interface prototype object's "constructor" property
+PASS CacheStorage interface: existence and properties of interface prototype object's @@unscopables property
+PASS CacheStorage interface: operation match(RequestInfo, MultiCacheQueryOptions)
+PASS CacheStorage interface: operation has(DOMString)
+PASS CacheStorage interface: operation open(DOMString)
+PASS CacheStorage interface: operation delete(DOMString)
+PASS CacheStorage interface: operation keys()
+PASS CacheStorage must be primary interface of self.caches
+PASS Stringification of self.caches
+PASS CacheStorage interface: self.caches must inherit property "match(RequestInfo, MultiCacheQueryOptions)" with the proper type
+PASS CacheStorage interface: calling match(RequestInfo, MultiCacheQueryOptions) on self.caches with too few arguments must throw TypeError
+PASS CacheStorage interface: self.caches must inherit property "has(DOMString)" with the proper type
+PASS CacheStorage interface: calling has(DOMString) on self.caches with too few arguments must throw TypeError
+PASS CacheStorage interface: self.caches must inherit property "open(DOMString)" with the proper type
+PASS CacheStorage interface: calling open(DOMString) on self.caches with too few arguments must throw TypeError
+PASS CacheStorage interface: self.caches must inherit property "delete(DOMString)" with the proper type
+PASS CacheStorage interface: calling delete(DOMString) on self.caches with too few arguments must throw TypeError
+PASS CacheStorage interface: self.caches must inherit property "keys()" with the proper type
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/service-workers/service-worker/interfaces-window.https-expected.txt b/third_party/blink/web_tests/external/wpt/service-workers/service-worker/interfaces-window.https-expected.txt
deleted file mode 100644
index 9d94267..0000000
--- a/third_party/blink/web_tests/external/wpt/service-workers/service-worker/interfaces-window.https-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a testharness.js-based test.
-FAIL test setup (worker registration) promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS navigator.serviceWorker is not available in a data: iframe
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/sms/idlharness.https.any-expected.txt b/third_party/blink/web_tests/external/wpt/sms/idlharness.https.any-expected.txt
deleted file mode 100644
index df3b871..0000000
--- a/third_party/blink/web_tests/external/wpt/sms/idlharness.https.any-expected.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This is a testharness.js-based test.
-FAIL Test IDL implementation of the SMS Receiver API promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/sms/idlharness.https.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/sms/idlharness.https.any.worker-expected.txt
deleted file mode 100644
index df3b871..0000000
--- a/third_party/blink/web_tests/external/wpt/sms/idlharness.https.any.worker-expected.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This is a testharness.js-based test.
-FAIL Test IDL implementation of the SMS Receiver API promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/storage/idlharness.https.any-expected.txt b/third_party/blink/web_tests/external/wpt/storage/idlharness.https.any-expected.txt
deleted file mode 100644
index adb6cc43..0000000
--- a/third_party/blink/web_tests/external/wpt/storage/idlharness.https.any-expected.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/storage/idlharness.https.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/storage/idlharness.https.any.worker-expected.txt
deleted file mode 100644
index adb6cc43..0000000
--- a/third_party/blink/web_tests/external/wpt/storage/idlharness.https.any.worker-expected.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/subresource-integrity/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/subresource-integrity/idlharness.window-expected.txt
deleted file mode 100644
index 66572ce..0000000
--- a/third_party/blink/web_tests/external/wpt/subresource-integrity/idlharness.window-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface HTMLLinkElement: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface HTMLScriptElement: original interface defined assert_true: Original interface should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/svg/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/svg/idlharness.window-expected.txt
index 5b85a02..85b399ff 100644
--- a/third_party/blink/web_tests/external/wpt/svg/idlharness.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/svg/idlharness.window-expected.txt
@@ -1,7 +1,1576 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Document: original interface defined assert_true: Original interface should be defined expected true got false
+Found 1572 tests; 1452 PASS, 120 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface Document: original interface defined
+PASS SVGElement interface: existence and properties of interface object
+PASS SVGElement interface object length
+PASS SVGElement interface object name
+PASS SVGElement interface: existence and properties of interface prototype object
+PASS SVGElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGElement interface: attribute className
+PASS SVGElement interface: attribute ownerSVGElement
+PASS SVGElement interface: attribute viewportElement
+FAIL SVGElement interface: attribute correspondingElement assert_true: The prototype object must have a property "correspondingElement" expected true got false
+FAIL SVGElement interface: attribute correspondingUseElement assert_true: The prototype object must have a property "correspondingUseElement" expected true got false
+PASS SVGGraphicsElement interface: existence and properties of interface object
+PASS SVGGraphicsElement interface object length
+PASS SVGGraphicsElement interface object name
+PASS SVGGraphicsElement interface: existence and properties of interface prototype object
+PASS SVGGraphicsElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGGraphicsElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGGraphicsElement interface: attribute transform
+PASS SVGGraphicsElement interface: operation getBBox(SVGBoundingBoxOptions)
+PASS SVGGraphicsElement interface: operation getCTM()
+PASS SVGGraphicsElement interface: operation getScreenCTM()
+PASS SVGGraphicsElement interface: attribute requiredExtensions
+PASS SVGGraphicsElement interface: attribute systemLanguage
+PASS SVGGeometryElement interface: existence and properties of interface object
+PASS SVGGeometryElement interface object length
+PASS SVGGeometryElement interface object name
+PASS SVGGeometryElement interface: existence and properties of interface prototype object
+PASS SVGGeometryElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGGeometryElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGGeometryElement interface: attribute pathLength
+FAIL SVGGeometryElement interface: operation isPointInFill(DOMPointInit) assert_equals: property has wrong .length expected 0 but got 1
+FAIL SVGGeometryElement interface: operation isPointInStroke(DOMPointInit) assert_equals: property has wrong .length expected 0 but got 1
+PASS SVGGeometryElement interface: operation getTotalLength()
+PASS SVGGeometryElement interface: operation getPointAtLength(float)
+PASS SVGNumber interface: existence and properties of interface object
+PASS SVGNumber interface object length
+PASS SVGNumber interface object name
+PASS SVGNumber interface: existence and properties of interface prototype object
+PASS SVGNumber interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGNumber interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGNumber interface: attribute value
+PASS SVGNumber must be primary interface of objects.svg.createSVGNumber()
+PASS Stringification of objects.svg.createSVGNumber()
+PASS SVGNumber interface: objects.svg.createSVGNumber() must inherit property "value" with the proper type
+PASS SVGLength interface: existence and properties of interface object
+PASS SVGLength interface object length
+PASS SVGLength interface object name
+PASS SVGLength interface: existence and properties of interface prototype object
+PASS SVGLength interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGLength interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGLength interface: constant SVG_LENGTHTYPE_UNKNOWN on interface object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_UNKNOWN on interface prototype object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_NUMBER on interface object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_NUMBER on interface prototype object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_PERCENTAGE on interface object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_PERCENTAGE on interface prototype object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_EMS on interface object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_EMS on interface prototype object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_EXS on interface object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_EXS on interface prototype object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_PX on interface object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_PX on interface prototype object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_CM on interface object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_CM on interface prototype object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_MM on interface object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_MM on interface prototype object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_IN on interface object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_IN on interface prototype object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_PT on interface object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_PT on interface prototype object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_PC on interface object
+PASS SVGLength interface: constant SVG_LENGTHTYPE_PC on interface prototype object
+PASS SVGLength interface: attribute unitType
+PASS SVGLength interface: attribute value
+PASS SVGLength interface: attribute valueInSpecifiedUnits
+PASS SVGLength interface: attribute valueAsString
+PASS SVGLength interface: operation newValueSpecifiedUnits(unsigned short, float)
+PASS SVGLength interface: operation convertToSpecifiedUnits(unsigned short)
+PASS SVGLength must be primary interface of objects.svg.createSVGLength()
+PASS Stringification of objects.svg.createSVGLength()
+PASS SVGLength interface: objects.svg.createSVGLength() must inherit property "SVG_LENGTHTYPE_UNKNOWN" with the proper type
+PASS SVGLength interface: objects.svg.createSVGLength() must inherit property "SVG_LENGTHTYPE_NUMBER" with the proper type
+PASS SVGLength interface: objects.svg.createSVGLength() must inherit property "SVG_LENGTHTYPE_PERCENTAGE" with the proper type
+PASS SVGLength interface: objects.svg.createSVGLength() must inherit property "SVG_LENGTHTYPE_EMS" with the proper type
+PASS SVGLength interface: objects.svg.createSVGLength() must inherit property "SVG_LENGTHTYPE_EXS" with the proper type
+PASS SVGLength interface: objects.svg.createSVGLength() must inherit property "SVG_LENGTHTYPE_PX" with the proper type
+PASS SVGLength interface: objects.svg.createSVGLength() must inherit property "SVG_LENGTHTYPE_CM" with the proper type
+PASS SVGLength interface: objects.svg.createSVGLength() must inherit property "SVG_LENGTHTYPE_MM" with the proper type
+PASS SVGLength interface: objects.svg.createSVGLength() must inherit property "SVG_LENGTHTYPE_IN" with the proper type
+PASS SVGLength interface: objects.svg.createSVGLength() must inherit property "SVG_LENGTHTYPE_PT" with the proper type
+PASS SVGLength interface: objects.svg.createSVGLength() must inherit property "SVG_LENGTHTYPE_PC" with the proper type
+PASS SVGLength interface: objects.svg.createSVGLength() must inherit property "unitType" with the proper type
+PASS SVGLength interface: objects.svg.createSVGLength() must inherit property "value" with the proper type
+PASS SVGLength interface: objects.svg.createSVGLength() must inherit property "valueInSpecifiedUnits" with the proper type
+PASS SVGLength interface: objects.svg.createSVGLength() must inherit property "valueAsString" with the proper type
+PASS SVGLength interface: objects.svg.createSVGLength() must inherit property "newValueSpecifiedUnits(unsigned short, float)" with the proper type
+PASS SVGLength interface: calling newValueSpecifiedUnits(unsigned short, float) on objects.svg.createSVGLength() with too few arguments must throw TypeError
+PASS SVGLength interface: objects.svg.createSVGLength() must inherit property "convertToSpecifiedUnits(unsigned short)" with the proper type
+PASS SVGLength interface: calling convertToSpecifiedUnits(unsigned short) on objects.svg.createSVGLength() with too few arguments must throw TypeError
+PASS SVGAngle interface: existence and properties of interface object
+PASS SVGAngle interface object length
+PASS SVGAngle interface object name
+PASS SVGAngle interface: existence and properties of interface prototype object
+PASS SVGAngle interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGAngle interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGAngle interface: constant SVG_ANGLETYPE_UNKNOWN on interface object
+PASS SVGAngle interface: constant SVG_ANGLETYPE_UNKNOWN on interface prototype object
+PASS SVGAngle interface: constant SVG_ANGLETYPE_UNSPECIFIED on interface object
+PASS SVGAngle interface: constant SVG_ANGLETYPE_UNSPECIFIED on interface prototype object
+PASS SVGAngle interface: constant SVG_ANGLETYPE_DEG on interface object
+PASS SVGAngle interface: constant SVG_ANGLETYPE_DEG on interface prototype object
+PASS SVGAngle interface: constant SVG_ANGLETYPE_RAD on interface object
+PASS SVGAngle interface: constant SVG_ANGLETYPE_RAD on interface prototype object
+PASS SVGAngle interface: constant SVG_ANGLETYPE_GRAD on interface object
+PASS SVGAngle interface: constant SVG_ANGLETYPE_GRAD on interface prototype object
+PASS SVGAngle interface: attribute unitType
+PASS SVGAngle interface: attribute value
+PASS SVGAngle interface: attribute valueInSpecifiedUnits
+PASS SVGAngle interface: attribute valueAsString
+PASS SVGAngle interface: operation newValueSpecifiedUnits(unsigned short, float)
+PASS SVGAngle interface: operation convertToSpecifiedUnits(unsigned short)
+PASS SVGAngle must be primary interface of objects.svg.createSVGAngle()
+PASS Stringification of objects.svg.createSVGAngle()
+PASS SVGAngle interface: objects.svg.createSVGAngle() must inherit property "SVG_ANGLETYPE_UNKNOWN" with the proper type
+PASS SVGAngle interface: objects.svg.createSVGAngle() must inherit property "SVG_ANGLETYPE_UNSPECIFIED" with the proper type
+PASS SVGAngle interface: objects.svg.createSVGAngle() must inherit property "SVG_ANGLETYPE_DEG" with the proper type
+PASS SVGAngle interface: objects.svg.createSVGAngle() must inherit property "SVG_ANGLETYPE_RAD" with the proper type
+PASS SVGAngle interface: objects.svg.createSVGAngle() must inherit property "SVG_ANGLETYPE_GRAD" with the proper type
+PASS SVGAngle interface: objects.svg.createSVGAngle() must inherit property "unitType" with the proper type
+PASS SVGAngle interface: objects.svg.createSVGAngle() must inherit property "value" with the proper type
+PASS SVGAngle interface: objects.svg.createSVGAngle() must inherit property "valueInSpecifiedUnits" with the proper type
+PASS SVGAngle interface: objects.svg.createSVGAngle() must inherit property "valueAsString" with the proper type
+PASS SVGAngle interface: objects.svg.createSVGAngle() must inherit property "newValueSpecifiedUnits(unsigned short, float)" with the proper type
+PASS SVGAngle interface: calling newValueSpecifiedUnits(unsigned short, float) on objects.svg.createSVGAngle() with too few arguments must throw TypeError
+PASS SVGAngle interface: objects.svg.createSVGAngle() must inherit property "convertToSpecifiedUnits(unsigned short)" with the proper type
+PASS SVGAngle interface: calling convertToSpecifiedUnits(unsigned short) on objects.svg.createSVGAngle() with too few arguments must throw TypeError
+PASS SVGNumberList interface: existence and properties of interface object
+PASS SVGNumberList interface object length
+PASS SVGNumberList interface object name
+PASS SVGNumberList interface: existence and properties of interface prototype object
+PASS SVGNumberList interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGNumberList interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGNumberList interface: attribute length
+PASS SVGNumberList interface: attribute numberOfItems
+PASS SVGNumberList interface: operation clear()
+PASS SVGNumberList interface: operation initialize(SVGNumber)
+PASS SVGNumberList interface: operation getItem(unsigned long)
+PASS SVGNumberList interface: operation insertItemBefore(SVGNumber, unsigned long)
+PASS SVGNumberList interface: operation replaceItem(SVGNumber, unsigned long)
+PASS SVGNumberList interface: operation removeItem(unsigned long)
+PASS SVGNumberList interface: operation appendItem(SVGNumber)
+PASS SVGNumberList must be primary interface of objects.text.rotate.baseVal
+PASS Stringification of objects.text.rotate.baseVal
+PASS SVGNumberList interface: objects.text.rotate.baseVal must inherit property "length" with the proper type
+PASS SVGNumberList interface: objects.text.rotate.baseVal must inherit property "numberOfItems" with the proper type
+PASS SVGNumberList interface: objects.text.rotate.baseVal must inherit property "clear()" with the proper type
+PASS SVGNumberList interface: objects.text.rotate.baseVal must inherit property "initialize(SVGNumber)" with the proper type
+PASS SVGNumberList interface: calling initialize(SVGNumber) on objects.text.rotate.baseVal with too few arguments must throw TypeError
+PASS SVGNumberList interface: objects.text.rotate.baseVal must inherit property "getItem(unsigned long)" with the proper type
+PASS SVGNumberList interface: calling getItem(unsigned long) on objects.text.rotate.baseVal with too few arguments must throw TypeError
+PASS SVGNumberList interface: objects.text.rotate.baseVal must inherit property "insertItemBefore(SVGNumber, unsigned long)" with the proper type
+PASS SVGNumberList interface: calling insertItemBefore(SVGNumber, unsigned long) on objects.text.rotate.baseVal with too few arguments must throw TypeError
+PASS SVGNumberList interface: objects.text.rotate.baseVal must inherit property "replaceItem(SVGNumber, unsigned long)" with the proper type
+PASS SVGNumberList interface: calling replaceItem(SVGNumber, unsigned long) on objects.text.rotate.baseVal with too few arguments must throw TypeError
+PASS SVGNumberList interface: objects.text.rotate.baseVal must inherit property "removeItem(unsigned long)" with the proper type
+PASS SVGNumberList interface: calling removeItem(unsigned long) on objects.text.rotate.baseVal with too few arguments must throw TypeError
+PASS SVGNumberList interface: objects.text.rotate.baseVal must inherit property "appendItem(SVGNumber)" with the proper type
+PASS SVGNumberList interface: calling appendItem(SVGNumber) on objects.text.rotate.baseVal with too few arguments must throw TypeError
+PASS SVGLengthList interface: existence and properties of interface object
+PASS SVGLengthList interface object length
+PASS SVGLengthList interface object name
+PASS SVGLengthList interface: existence and properties of interface prototype object
+PASS SVGLengthList interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGLengthList interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGLengthList interface: attribute length
+PASS SVGLengthList interface: attribute numberOfItems
+PASS SVGLengthList interface: operation clear()
+PASS SVGLengthList interface: operation initialize(SVGLength)
+PASS SVGLengthList interface: operation getItem(unsigned long)
+PASS SVGLengthList interface: operation insertItemBefore(SVGLength, unsigned long)
+PASS SVGLengthList interface: operation replaceItem(SVGLength, unsigned long)
+PASS SVGLengthList interface: operation removeItem(unsigned long)
+PASS SVGLengthList interface: operation appendItem(SVGLength)
+PASS SVGStringList interface: existence and properties of interface object
+PASS SVGStringList interface object length
+PASS SVGStringList interface object name
+PASS SVGStringList interface: existence and properties of interface prototype object
+PASS SVGStringList interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGStringList interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGStringList interface: attribute length
+PASS SVGStringList interface: attribute numberOfItems
+PASS SVGStringList interface: operation clear()
+PASS SVGStringList interface: operation initialize(DOMString)
+PASS SVGStringList interface: operation getItem(unsigned long)
+PASS SVGStringList interface: operation insertItemBefore(DOMString, unsigned long)
+PASS SVGStringList interface: operation replaceItem(DOMString, unsigned long)
+PASS SVGStringList interface: operation removeItem(unsigned long)
+PASS SVGStringList interface: operation appendItem(DOMString)
+PASS SVGStringList must be primary interface of objects.a.requiredExtensions
+PASS Stringification of objects.a.requiredExtensions
+PASS SVGStringList interface: objects.a.requiredExtensions must inherit property "length" with the proper type
+PASS SVGStringList interface: objects.a.requiredExtensions must inherit property "numberOfItems" with the proper type
+PASS SVGStringList interface: objects.a.requiredExtensions must inherit property "clear()" with the proper type
+PASS SVGStringList interface: objects.a.requiredExtensions must inherit property "initialize(DOMString)" with the proper type
+PASS SVGStringList interface: calling initialize(DOMString) on objects.a.requiredExtensions with too few arguments must throw TypeError
+PASS SVGStringList interface: objects.a.requiredExtensions must inherit property "getItem(unsigned long)" with the proper type
+PASS SVGStringList interface: calling getItem(unsigned long) on objects.a.requiredExtensions with too few arguments must throw TypeError
+PASS SVGStringList interface: objects.a.requiredExtensions must inherit property "insertItemBefore(DOMString, unsigned long)" with the proper type
+PASS SVGStringList interface: calling insertItemBefore(DOMString, unsigned long) on objects.a.requiredExtensions with too few arguments must throw TypeError
+PASS SVGStringList interface: objects.a.requiredExtensions must inherit property "replaceItem(DOMString, unsigned long)" with the proper type
+PASS SVGStringList interface: calling replaceItem(DOMString, unsigned long) on objects.a.requiredExtensions with too few arguments must throw TypeError
+PASS SVGStringList interface: objects.a.requiredExtensions must inherit property "removeItem(unsigned long)" with the proper type
+PASS SVGStringList interface: calling removeItem(unsigned long) on objects.a.requiredExtensions with too few arguments must throw TypeError
+PASS SVGStringList interface: objects.a.requiredExtensions must inherit property "appendItem(DOMString)" with the proper type
+PASS SVGStringList interface: calling appendItem(DOMString) on objects.a.requiredExtensions with too few arguments must throw TypeError
+PASS SVGAnimatedBoolean interface: existence and properties of interface object
+PASS SVGAnimatedBoolean interface object length
+PASS SVGAnimatedBoolean interface object name
+PASS SVGAnimatedBoolean interface: existence and properties of interface prototype object
+PASS SVGAnimatedBoolean interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGAnimatedBoolean interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGAnimatedBoolean interface: attribute baseVal
+PASS SVGAnimatedBoolean interface: attribute animVal
+PASS SVGAnimatedBoolean must be primary interface of objects.feConvolveMatrix.preserveAlpha
+PASS Stringification of objects.feConvolveMatrix.preserveAlpha
+PASS SVGAnimatedBoolean interface: objects.feConvolveMatrix.preserveAlpha must inherit property "baseVal" with the proper type
+PASS SVGAnimatedBoolean interface: objects.feConvolveMatrix.preserveAlpha must inherit property "animVal" with the proper type
+PASS SVGAnimatedEnumeration interface: existence and properties of interface object
+PASS SVGAnimatedEnumeration interface object length
+PASS SVGAnimatedEnumeration interface object name
+PASS SVGAnimatedEnumeration interface: existence and properties of interface prototype object
+PASS SVGAnimatedEnumeration interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGAnimatedEnumeration interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGAnimatedEnumeration interface: attribute baseVal
+PASS SVGAnimatedEnumeration interface: attribute animVal
+PASS SVGAnimatedEnumeration must be primary interface of objects.text.lengthAdjust
+PASS Stringification of objects.text.lengthAdjust
+PASS SVGAnimatedEnumeration interface: objects.text.lengthAdjust must inherit property "baseVal" with the proper type
+PASS SVGAnimatedEnumeration interface: objects.text.lengthAdjust must inherit property "animVal" with the proper type
+PASS SVGAnimatedInteger interface: existence and properties of interface object
+PASS SVGAnimatedInteger interface object length
+PASS SVGAnimatedInteger interface object name
+PASS SVGAnimatedInteger interface: existence and properties of interface prototype object
+PASS SVGAnimatedInteger interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGAnimatedInteger interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGAnimatedInteger interface: attribute baseVal
+PASS SVGAnimatedInteger interface: attribute animVal
+PASS SVGAnimatedInteger must be primary interface of objects.feConvolveMatrix.orderX
+PASS Stringification of objects.feConvolveMatrix.orderX
+PASS SVGAnimatedInteger interface: objects.feConvolveMatrix.orderX must inherit property "baseVal" with the proper type
+PASS SVGAnimatedInteger interface: objects.feConvolveMatrix.orderX must inherit property "animVal" with the proper type
+PASS SVGAnimatedNumber interface: existence and properties of interface object
+PASS SVGAnimatedNumber interface object length
+PASS SVGAnimatedNumber interface object name
+PASS SVGAnimatedNumber interface: existence and properties of interface prototype object
+PASS SVGAnimatedNumber interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGAnimatedNumber interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGAnimatedNumber interface: attribute baseVal
+PASS SVGAnimatedNumber interface: attribute animVal
+PASS SVGAnimatedNumber must be primary interface of objects.stop.offset
+PASS Stringification of objects.stop.offset
+PASS SVGAnimatedNumber interface: objects.stop.offset must inherit property "baseVal" with the proper type
+PASS SVGAnimatedNumber interface: objects.stop.offset must inherit property "animVal" with the proper type
+PASS SVGAnimatedLength interface: existence and properties of interface object
+PASS SVGAnimatedLength interface object length
+PASS SVGAnimatedLength interface object name
+PASS SVGAnimatedLength interface: existence and properties of interface prototype object
+PASS SVGAnimatedLength interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGAnimatedLength interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGAnimatedLength interface: attribute baseVal
+PASS SVGAnimatedLength interface: attribute animVal
+PASS SVGAnimatedLength must be primary interface of objects.svg.x
+PASS Stringification of objects.svg.x
+PASS SVGAnimatedLength interface: objects.svg.x must inherit property "baseVal" with the proper type
+PASS SVGAnimatedLength interface: objects.svg.x must inherit property "animVal" with the proper type
+PASS SVGAnimatedAngle interface: existence and properties of interface object
+PASS SVGAnimatedAngle interface object length
+PASS SVGAnimatedAngle interface object name
+PASS SVGAnimatedAngle interface: existence and properties of interface prototype object
+PASS SVGAnimatedAngle interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGAnimatedAngle interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGAnimatedAngle interface: attribute baseVal
+PASS SVGAnimatedAngle interface: attribute animVal
+PASS SVGAnimatedAngle must be primary interface of objects.marker.orientAngle
+PASS Stringification of objects.marker.orientAngle
+PASS SVGAnimatedAngle interface: objects.marker.orientAngle must inherit property "baseVal" with the proper type
+PASS SVGAnimatedAngle interface: objects.marker.orientAngle must inherit property "animVal" with the proper type
+PASS SVGAnimatedString interface: existence and properties of interface object
+PASS SVGAnimatedString interface object length
+PASS SVGAnimatedString interface object name
+PASS SVGAnimatedString interface: existence and properties of interface prototype object
+PASS SVGAnimatedString interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGAnimatedString interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGAnimatedString interface: attribute baseVal
+PASS SVGAnimatedString interface: attribute animVal
+PASS SVGAnimatedString must be primary interface of objects.a.target
+PASS Stringification of objects.a.target
+PASS SVGAnimatedString interface: objects.a.target must inherit property "baseVal" with the proper type
+PASS SVGAnimatedString interface: objects.a.target must inherit property "animVal" with the proper type
+PASS SVGAnimatedRect interface: existence and properties of interface object
+PASS SVGAnimatedRect interface object length
+PASS SVGAnimatedRect interface object name
+PASS SVGAnimatedRect interface: existence and properties of interface prototype object
+PASS SVGAnimatedRect interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGAnimatedRect interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGAnimatedRect interface: attribute baseVal
+PASS SVGAnimatedRect interface: attribute animVal
+PASS SVGAnimatedRect must be primary interface of objects.svg.viewBox
+PASS Stringification of objects.svg.viewBox
+FAIL SVGAnimatedRect interface: objects.svg.viewBox must inherit property "baseVal" with the proper type Unrecognized type DOMRect
+FAIL SVGAnimatedRect interface: objects.svg.viewBox must inherit property "animVal" with the proper type Unrecognized type DOMRectReadOnly
+PASS SVGAnimatedNumberList interface: existence and properties of interface object
+PASS SVGAnimatedNumberList interface object length
+PASS SVGAnimatedNumberList interface object name
+PASS SVGAnimatedNumberList interface: existence and properties of interface prototype object
+PASS SVGAnimatedNumberList interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGAnimatedNumberList interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGAnimatedNumberList interface: attribute baseVal
+PASS SVGAnimatedNumberList interface: attribute animVal
+PASS SVGAnimatedNumberList must be primary interface of objects.text.rotate
+PASS Stringification of objects.text.rotate
+PASS SVGAnimatedNumberList interface: objects.text.rotate must inherit property "baseVal" with the proper type
+PASS SVGAnimatedNumberList interface: objects.text.rotate must inherit property "animVal" with the proper type
+PASS SVGAnimatedLengthList interface: existence and properties of interface object
+PASS SVGAnimatedLengthList interface object length
+PASS SVGAnimatedLengthList interface object name
+PASS SVGAnimatedLengthList interface: existence and properties of interface prototype object
+PASS SVGAnimatedLengthList interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGAnimatedLengthList interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGAnimatedLengthList interface: attribute baseVal
+PASS SVGAnimatedLengthList interface: attribute animVal
+PASS SVGAnimatedLengthList must be primary interface of objects.text.x
+PASS Stringification of objects.text.x
+PASS SVGAnimatedLengthList interface: objects.text.x must inherit property "baseVal" with the proper type
+PASS SVGAnimatedLengthList interface: objects.text.x must inherit property "animVal" with the proper type
+PASS SVGUnitTypes interface: existence and properties of interface object
+PASS SVGUnitTypes interface object length
+PASS SVGUnitTypes interface object name
+PASS SVGUnitTypes interface: existence and properties of interface prototype object
+PASS SVGUnitTypes interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGUnitTypes interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGUnitTypes interface: constant SVG_UNIT_TYPE_UNKNOWN on interface object
+PASS SVGUnitTypes interface: constant SVG_UNIT_TYPE_UNKNOWN on interface prototype object
+PASS SVGUnitTypes interface: constant SVG_UNIT_TYPE_USERSPACEONUSE on interface object
+PASS SVGUnitTypes interface: constant SVG_UNIT_TYPE_USERSPACEONUSE on interface prototype object
+PASS SVGUnitTypes interface: constant SVG_UNIT_TYPE_OBJECTBOUNDINGBOX on interface object
+PASS SVGUnitTypes interface: constant SVG_UNIT_TYPE_OBJECTBOUNDINGBOX on interface prototype object
+PASS SVGSVGElement interface: existence and properties of interface object
+PASS SVGSVGElement interface object length
+PASS SVGSVGElement interface object name
+PASS SVGSVGElement interface: existence and properties of interface prototype object
+PASS SVGSVGElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGSVGElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGSVGElement interface: attribute x
+PASS SVGSVGElement interface: attribute y
+PASS SVGSVGElement interface: attribute width
+PASS SVGSVGElement interface: attribute height
+PASS SVGSVGElement interface: attribute currentScale
+PASS SVGSVGElement interface: attribute currentTranslate
+PASS SVGSVGElement interface: operation getIntersectionList(DOMRectReadOnly, SVGElement)
+PASS SVGSVGElement interface: operation getEnclosureList(DOMRectReadOnly, SVGElement)
+PASS SVGSVGElement interface: operation checkIntersection(SVGElement, DOMRectReadOnly)
+PASS SVGSVGElement interface: operation checkEnclosure(SVGElement, DOMRectReadOnly)
+PASS SVGSVGElement interface: operation deselectAll()
+PASS SVGSVGElement interface: operation createSVGNumber()
+PASS SVGSVGElement interface: operation createSVGLength()
+PASS SVGSVGElement interface: operation createSVGAngle()
+PASS SVGSVGElement interface: operation createSVGPoint()
+PASS SVGSVGElement interface: operation createSVGMatrix()
+PASS SVGSVGElement interface: operation createSVGRect()
+PASS SVGSVGElement interface: operation createSVGTransform()
+FAIL SVGSVGElement interface: operation createSVGTransformFromMatrix(DOMMatrix2DInit) assert_equals: property has wrong .length expected 0 but got 1
+PASS SVGSVGElement interface: operation getElementById(DOMString)
+PASS SVGSVGElement interface: operation suspendRedraw(unsigned long)
+PASS SVGSVGElement interface: operation unsuspendRedraw(unsigned long)
+PASS SVGSVGElement interface: operation unsuspendRedrawAll()
+PASS SVGSVGElement interface: operation forceRedraw()
+PASS SVGSVGElement interface: attribute viewBox
+PASS SVGSVGElement interface: attribute preserveAspectRatio
+PASS SVGSVGElement must be primary interface of objects.svg
+PASS Stringification of objects.svg
+PASS SVGSVGElement interface: objects.svg must inherit property "x" with the proper type
+PASS SVGSVGElement interface: objects.svg must inherit property "y" with the proper type
+PASS SVGSVGElement interface: objects.svg must inherit property "width" with the proper type
+PASS SVGSVGElement interface: objects.svg must inherit property "height" with the proper type
+PASS SVGSVGElement interface: objects.svg must inherit property "currentScale" with the proper type
+FAIL SVGSVGElement interface: objects.svg must inherit property "currentTranslate" with the proper type Unrecognized type DOMPointReadOnly
+PASS SVGSVGElement interface: objects.svg must inherit property "getIntersectionList(DOMRectReadOnly, SVGElement)" with the proper type
+PASS SVGSVGElement interface: calling getIntersectionList(DOMRectReadOnly, SVGElement) on objects.svg with too few arguments must throw TypeError
+PASS SVGSVGElement interface: objects.svg must inherit property "getEnclosureList(DOMRectReadOnly, SVGElement)" with the proper type
+PASS SVGSVGElement interface: calling getEnclosureList(DOMRectReadOnly, SVGElement) on objects.svg with too few arguments must throw TypeError
+PASS SVGSVGElement interface: objects.svg must inherit property "checkIntersection(SVGElement, DOMRectReadOnly)" with the proper type
+PASS SVGSVGElement interface: calling checkIntersection(SVGElement, DOMRectReadOnly) on objects.svg with too few arguments must throw TypeError
+PASS SVGSVGElement interface: objects.svg must inherit property "checkEnclosure(SVGElement, DOMRectReadOnly)" with the proper type
+PASS SVGSVGElement interface: calling checkEnclosure(SVGElement, DOMRectReadOnly) on objects.svg with too few arguments must throw TypeError
+PASS SVGSVGElement interface: objects.svg must inherit property "deselectAll()" with the proper type
+PASS SVGSVGElement interface: objects.svg must inherit property "createSVGNumber()" with the proper type
+PASS SVGSVGElement interface: objects.svg must inherit property "createSVGLength()" with the proper type
+PASS SVGSVGElement interface: objects.svg must inherit property "createSVGAngle()" with the proper type
+PASS SVGSVGElement interface: objects.svg must inherit property "createSVGPoint()" with the proper type
+PASS SVGSVGElement interface: objects.svg must inherit property "createSVGMatrix()" with the proper type
+PASS SVGSVGElement interface: objects.svg must inherit property "createSVGRect()" with the proper type
+PASS SVGSVGElement interface: objects.svg must inherit property "createSVGTransform()" with the proper type
+PASS SVGSVGElement interface: objects.svg must inherit property "createSVGTransformFromMatrix(DOMMatrix2DInit)" with the proper type
+PASS SVGSVGElement interface: calling createSVGTransformFromMatrix(DOMMatrix2DInit) on objects.svg with too few arguments must throw TypeError
+PASS SVGSVGElement interface: objects.svg must inherit property "getElementById(DOMString)" with the proper type
+PASS SVGSVGElement interface: calling getElementById(DOMString) on objects.svg with too few arguments must throw TypeError
+PASS SVGSVGElement interface: objects.svg must inherit property "suspendRedraw(unsigned long)" with the proper type
+PASS SVGSVGElement interface: calling suspendRedraw(unsigned long) on objects.svg with too few arguments must throw TypeError
+PASS SVGSVGElement interface: objects.svg must inherit property "unsuspendRedraw(unsigned long)" with the proper type
+PASS SVGSVGElement interface: calling unsuspendRedraw(unsigned long) on objects.svg with too few arguments must throw TypeError
+PASS SVGSVGElement interface: objects.svg must inherit property "unsuspendRedrawAll()" with the proper type
+PASS SVGSVGElement interface: objects.svg must inherit property "forceRedraw()" with the proper type
+PASS SVGSVGElement interface: objects.svg must inherit property "viewBox" with the proper type
+PASS SVGSVGElement interface: objects.svg must inherit property "preserveAspectRatio" with the proper type
+PASS SVGGraphicsElement interface: objects.svg must inherit property "transform" with the proper type
+PASS SVGGraphicsElement interface: objects.svg must inherit property "getBBox(SVGBoundingBoxOptions)" with the proper type
+PASS SVGGraphicsElement interface: calling getBBox(SVGBoundingBoxOptions) on objects.svg with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.svg must inherit property "getCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.svg must inherit property "getScreenCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.svg must inherit property "requiredExtensions" with the proper type
+PASS SVGGraphicsElement interface: objects.svg must inherit property "systemLanguage" with the proper type
+PASS SVGElement interface: objects.svg must inherit property "className" with the proper type
+PASS SVGElement interface: objects.svg must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.svg must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.svg must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.svg must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGGElement interface: existence and properties of interface object
+PASS SVGGElement interface object length
+PASS SVGGElement interface object name
+PASS SVGGElement interface: existence and properties of interface prototype object
+PASS SVGGElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGGElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGGElement must be primary interface of objects.g
+PASS Stringification of objects.g
+PASS SVGGraphicsElement interface: objects.g must inherit property "transform" with the proper type
+PASS SVGGraphicsElement interface: objects.g must inherit property "getBBox(SVGBoundingBoxOptions)" with the proper type
+PASS SVGGraphicsElement interface: calling getBBox(SVGBoundingBoxOptions) on objects.g with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.g must inherit property "getCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.g must inherit property "getScreenCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.g must inherit property "requiredExtensions" with the proper type
+PASS SVGGraphicsElement interface: objects.g must inherit property "systemLanguage" with the proper type
+PASS SVGElement interface: objects.g must inherit property "className" with the proper type
+PASS SVGElement interface: objects.g must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.g must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.g must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.g must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGDefsElement interface: existence and properties of interface object
+PASS SVGDefsElement interface object length
+PASS SVGDefsElement interface object name
+PASS SVGDefsElement interface: existence and properties of interface prototype object
+PASS SVGDefsElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGDefsElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGDefsElement must be primary interface of objects.defs
+PASS Stringification of objects.defs
+PASS SVGGraphicsElement interface: objects.defs must inherit property "transform" with the proper type
+PASS SVGGraphicsElement interface: objects.defs must inherit property "getBBox(SVGBoundingBoxOptions)" with the proper type
+PASS SVGGraphicsElement interface: calling getBBox(SVGBoundingBoxOptions) on objects.defs with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.defs must inherit property "getCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.defs must inherit property "getScreenCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.defs must inherit property "requiredExtensions" with the proper type
+PASS SVGGraphicsElement interface: objects.defs must inherit property "systemLanguage" with the proper type
+PASS SVGElement interface: objects.defs must inherit property "className" with the proper type
+PASS SVGElement interface: objects.defs must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.defs must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.defs must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.defs must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGDescElement interface: existence and properties of interface object
+PASS SVGDescElement interface object length
+PASS SVGDescElement interface object name
+PASS SVGDescElement interface: existence and properties of interface prototype object
+PASS SVGDescElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGDescElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGDescElement must be primary interface of objects.desc
+PASS Stringification of objects.desc
+PASS SVGElement interface: objects.desc must inherit property "className" with the proper type
+PASS SVGElement interface: objects.desc must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.desc must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.desc must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.desc must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGMetadataElement interface: existence and properties of interface object
+PASS SVGMetadataElement interface object length
+PASS SVGMetadataElement interface object name
+PASS SVGMetadataElement interface: existence and properties of interface prototype object
+PASS SVGMetadataElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGMetadataElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGMetadataElement must be primary interface of objects.metadata
+PASS Stringification of objects.metadata
+PASS SVGElement interface: objects.metadata must inherit property "className" with the proper type
+PASS SVGElement interface: objects.metadata must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.metadata must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.metadata must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.metadata must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGTitleElement interface: existence and properties of interface object
+PASS SVGTitleElement interface object length
+PASS SVGTitleElement interface object name
+PASS SVGTitleElement interface: existence and properties of interface prototype object
+PASS SVGTitleElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGTitleElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGTitleElement must be primary interface of objects.title
+PASS Stringification of objects.title
+PASS SVGElement interface: objects.title must inherit property "className" with the proper type
+PASS SVGElement interface: objects.title must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.title must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.title must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.title must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+FAIL SVGSymbolElement interface: existence and properties of interface object assert_equals: prototype of SVGSymbolElement is not SVGGraphicsElement expected function "function SVGGraphicsElement() { [native code] }" but got function "function SVGElement() { [native code] }"
+PASS SVGSymbolElement interface object length
+PASS SVGSymbolElement interface object name
+FAIL SVGSymbolElement interface: existence and properties of interface prototype object assert_equals: prototype of SVGSymbolElement.prototype is not SVGGraphicsElement.prototype expected object "[object SVGGraphicsElement]" but got object "[object SVGElement]"
+PASS SVGSymbolElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGSymbolElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGSymbolElement interface: attribute viewBox
+PASS SVGSymbolElement interface: attribute preserveAspectRatio
+PASS SVGSymbolElement must be primary interface of objects.symbol
+PASS Stringification of objects.symbol
+PASS SVGSymbolElement interface: objects.symbol must inherit property "viewBox" with the proper type
+PASS SVGSymbolElement interface: objects.symbol must inherit property "preserveAspectRatio" with the proper type
+FAIL SVGGraphicsElement interface: objects.symbol must inherit property "transform" with the proper type assert_inherits: property "transform" not found in prototype chain
+FAIL SVGGraphicsElement interface: objects.symbol must inherit property "getBBox(SVGBoundingBoxOptions)" with the proper type assert_inherits: property "getBBox" not found in prototype chain
+FAIL SVGGraphicsElement interface: calling getBBox(SVGBoundingBoxOptions) on objects.symbol with too few arguments must throw TypeError assert_inherits: property "getBBox" not found in prototype chain
+FAIL SVGGraphicsElement interface: objects.symbol must inherit property "getCTM()" with the proper type assert_inherits: property "getCTM" not found in prototype chain
+FAIL SVGGraphicsElement interface: objects.symbol must inherit property "getScreenCTM()" with the proper type assert_inherits: property "getScreenCTM" not found in prototype chain
+FAIL SVGGraphicsElement interface: objects.symbol must inherit property "requiredExtensions" with the proper type assert_inherits: property "requiredExtensions" not found in prototype chain
+FAIL SVGGraphicsElement interface: objects.symbol must inherit property "systemLanguage" with the proper type assert_inherits: property "systemLanguage" not found in prototype chain
+PASS SVGElement interface: objects.symbol must inherit property "className" with the proper type
+PASS SVGElement interface: objects.symbol must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.symbol must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.symbol must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.symbol must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGUseElement interface: existence and properties of interface object
+PASS SVGUseElement interface object length
+PASS SVGUseElement interface object name
+PASS SVGUseElement interface: existence and properties of interface prototype object
+PASS SVGUseElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGUseElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGUseElement interface: attribute x
+PASS SVGUseElement interface: attribute y
+PASS SVGUseElement interface: attribute width
+PASS SVGUseElement interface: attribute height
+FAIL SVGUseElement interface: attribute instanceRoot assert_true: The prototype object must have a property "instanceRoot" expected true got false
+FAIL SVGUseElement interface: attribute animatedInstanceRoot assert_true: The prototype object must have a property "animatedInstanceRoot" expected true got false
+PASS SVGUseElement interface: attribute href
+PASS SVGUseElement must be primary interface of objects.use
+PASS Stringification of objects.use
+PASS SVGUseElement interface: objects.use must inherit property "x" with the proper type
+PASS SVGUseElement interface: objects.use must inherit property "y" with the proper type
+PASS SVGUseElement interface: objects.use must inherit property "width" with the proper type
+PASS SVGUseElement interface: objects.use must inherit property "height" with the proper type
+FAIL SVGUseElement interface: objects.use must inherit property "instanceRoot" with the proper type assert_inherits: property "instanceRoot" not found in prototype chain
+FAIL SVGUseElement interface: objects.use must inherit property "animatedInstanceRoot" with the proper type assert_inherits: property "animatedInstanceRoot" not found in prototype chain
+PASS SVGUseElement interface: objects.use must inherit property "href" with the proper type
+PASS SVGGraphicsElement interface: objects.use must inherit property "transform" with the proper type
+PASS SVGGraphicsElement interface: objects.use must inherit property "getBBox(SVGBoundingBoxOptions)" with the proper type
+PASS SVGGraphicsElement interface: calling getBBox(SVGBoundingBoxOptions) on objects.use with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.use must inherit property "getCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.use must inherit property "getScreenCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.use must inherit property "requiredExtensions" with the proper type
+PASS SVGGraphicsElement interface: objects.use must inherit property "systemLanguage" with the proper type
+PASS SVGElement interface: objects.use must inherit property "className" with the proper type
+PASS SVGElement interface: objects.use must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.use must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.use must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.use must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+FAIL SVGUseElementShadowRoot interface: existence and properties of interface object assert_own_property: self does not have own property "SVGUseElementShadowRoot" expected property "SVGUseElementShadowRoot" missing
+FAIL SVGUseElementShadowRoot interface object length assert_own_property: self does not have own property "SVGUseElementShadowRoot" expected property "SVGUseElementShadowRoot" missing
+FAIL SVGUseElementShadowRoot interface object name assert_own_property: self does not have own property "SVGUseElementShadowRoot" expected property "SVGUseElementShadowRoot" missing
+FAIL SVGUseElementShadowRoot interface: existence and properties of interface prototype object assert_own_property: self does not have own property "SVGUseElementShadowRoot" expected property "SVGUseElementShadowRoot" missing
+FAIL SVGUseElementShadowRoot interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "SVGUseElementShadowRoot" expected property "SVGUseElementShadowRoot" missing
+FAIL SVGUseElementShadowRoot interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "SVGUseElementShadowRoot" expected property "SVGUseElementShadowRoot" missing
+FAIL ShadowAnimation interface: existence and properties of interface object assert_own_property: self does not have own property "ShadowAnimation" expected property "ShadowAnimation" missing
+FAIL ShadowAnimation interface object length assert_own_property: self does not have own property "ShadowAnimation" expected property "ShadowAnimation" missing
+FAIL ShadowAnimation interface object name assert_own_property: self does not have own property "ShadowAnimation" expected property "ShadowAnimation" missing
+FAIL ShadowAnimation interface: existence and properties of interface prototype object assert_own_property: self does not have own property "ShadowAnimation" expected property "ShadowAnimation" missing
+FAIL ShadowAnimation interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "ShadowAnimation" expected property "ShadowAnimation" missing
+FAIL ShadowAnimation interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "ShadowAnimation" expected property "ShadowAnimation" missing
+FAIL ShadowAnimation interface: attribute sourceAnimation assert_own_property: self does not have own property "ShadowAnimation" expected property "ShadowAnimation" missing
+PASS SVGSwitchElement interface: existence and properties of interface object
+PASS SVGSwitchElement interface object length
+PASS SVGSwitchElement interface object name
+PASS SVGSwitchElement interface: existence and properties of interface prototype object
+PASS SVGSwitchElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGSwitchElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGSwitchElement must be primary interface of objects.switch
+PASS Stringification of objects.switch
+PASS SVGGraphicsElement interface: objects.switch must inherit property "transform" with the proper type
+PASS SVGGraphicsElement interface: objects.switch must inherit property "getBBox(SVGBoundingBoxOptions)" with the proper type
+PASS SVGGraphicsElement interface: calling getBBox(SVGBoundingBoxOptions) on objects.switch with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.switch must inherit property "getCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.switch must inherit property "getScreenCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.switch must inherit property "requiredExtensions" with the proper type
+PASS SVGGraphicsElement interface: objects.switch must inherit property "systemLanguage" with the proper type
+PASS SVGElement interface: objects.switch must inherit property "className" with the proper type
+PASS SVGElement interface: objects.switch must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.switch must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.switch must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.switch must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGStyleElement interface: existence and properties of interface object
+PASS SVGStyleElement interface object length
+PASS SVGStyleElement interface object name
+PASS SVGStyleElement interface: existence and properties of interface prototype object
+PASS SVGStyleElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGStyleElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGStyleElement interface: attribute type
+PASS SVGStyleElement interface: attribute media
+PASS SVGStyleElement interface: attribute title
+PASS SVGStyleElement must be primary interface of objects.style
+PASS Stringification of objects.style
+PASS SVGStyleElement interface: objects.style must inherit property "type" with the proper type
+PASS SVGStyleElement interface: objects.style must inherit property "media" with the proper type
+PASS SVGStyleElement interface: objects.style must inherit property "title" with the proper type
+PASS SVGElement interface: objects.style must inherit property "className" with the proper type
+PASS SVGElement interface: objects.style must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.style must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.style must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.style must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGTransform interface: existence and properties of interface object
+PASS SVGTransform interface object length
+PASS SVGTransform interface object name
+PASS SVGTransform interface: existence and properties of interface prototype object
+PASS SVGTransform interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGTransform interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGTransform interface: constant SVG_TRANSFORM_UNKNOWN on interface object
+PASS SVGTransform interface: constant SVG_TRANSFORM_UNKNOWN on interface prototype object
+PASS SVGTransform interface: constant SVG_TRANSFORM_MATRIX on interface object
+PASS SVGTransform interface: constant SVG_TRANSFORM_MATRIX on interface prototype object
+PASS SVGTransform interface: constant SVG_TRANSFORM_TRANSLATE on interface object
+PASS SVGTransform interface: constant SVG_TRANSFORM_TRANSLATE on interface prototype object
+PASS SVGTransform interface: constant SVG_TRANSFORM_SCALE on interface object
+PASS SVGTransform interface: constant SVG_TRANSFORM_SCALE on interface prototype object
+PASS SVGTransform interface: constant SVG_TRANSFORM_ROTATE on interface object
+PASS SVGTransform interface: constant SVG_TRANSFORM_ROTATE on interface prototype object
+PASS SVGTransform interface: constant SVG_TRANSFORM_SKEWX on interface object
+PASS SVGTransform interface: constant SVG_TRANSFORM_SKEWX on interface prototype object
+PASS SVGTransform interface: constant SVG_TRANSFORM_SKEWY on interface object
+PASS SVGTransform interface: constant SVG_TRANSFORM_SKEWY on interface prototype object
+PASS SVGTransform interface: attribute type
+PASS SVGTransform interface: attribute matrix
+PASS SVGTransform interface: attribute angle
+FAIL SVGTransform interface: operation setMatrix(DOMMatrix2DInit) assert_equals: property has wrong .length expected 0 but got 1
+PASS SVGTransform interface: operation setTranslate(float, float)
+PASS SVGTransform interface: operation setScale(float, float)
+PASS SVGTransform interface: operation setRotate(float, float, float)
+PASS SVGTransform interface: operation setSkewX(float)
+PASS SVGTransform interface: operation setSkewY(float)
+PASS SVGTransform must be primary interface of objects.svg.createSVGTransform()
+PASS Stringification of objects.svg.createSVGTransform()
+PASS SVGTransform interface: objects.svg.createSVGTransform() must inherit property "SVG_TRANSFORM_UNKNOWN" with the proper type
+PASS SVGTransform interface: objects.svg.createSVGTransform() must inherit property "SVG_TRANSFORM_MATRIX" with the proper type
+PASS SVGTransform interface: objects.svg.createSVGTransform() must inherit property "SVG_TRANSFORM_TRANSLATE" with the proper type
+PASS SVGTransform interface: objects.svg.createSVGTransform() must inherit property "SVG_TRANSFORM_SCALE" with the proper type
+PASS SVGTransform interface: objects.svg.createSVGTransform() must inherit property "SVG_TRANSFORM_ROTATE" with the proper type
+PASS SVGTransform interface: objects.svg.createSVGTransform() must inherit property "SVG_TRANSFORM_SKEWX" with the proper type
+PASS SVGTransform interface: objects.svg.createSVGTransform() must inherit property "SVG_TRANSFORM_SKEWY" with the proper type
+PASS SVGTransform interface: objects.svg.createSVGTransform() must inherit property "type" with the proper type
+FAIL SVGTransform interface: objects.svg.createSVGTransform() must inherit property "matrix" with the proper type Unrecognized type DOMMatrix
+PASS SVGTransform interface: objects.svg.createSVGTransform() must inherit property "angle" with the proper type
+PASS SVGTransform interface: objects.svg.createSVGTransform() must inherit property "setMatrix(DOMMatrix2DInit)" with the proper type
+PASS SVGTransform interface: calling setMatrix(DOMMatrix2DInit) on objects.svg.createSVGTransform() with too few arguments must throw TypeError
+PASS SVGTransform interface: objects.svg.createSVGTransform() must inherit property "setTranslate(float, float)" with the proper type
+PASS SVGTransform interface: calling setTranslate(float, float) on objects.svg.createSVGTransform() with too few arguments must throw TypeError
+PASS SVGTransform interface: objects.svg.createSVGTransform() must inherit property "setScale(float, float)" with the proper type
+PASS SVGTransform interface: calling setScale(float, float) on objects.svg.createSVGTransform() with too few arguments must throw TypeError
+PASS SVGTransform interface: objects.svg.createSVGTransform() must inherit property "setRotate(float, float, float)" with the proper type
+PASS SVGTransform interface: calling setRotate(float, float, float) on objects.svg.createSVGTransform() with too few arguments must throw TypeError
+PASS SVGTransform interface: objects.svg.createSVGTransform() must inherit property "setSkewX(float)" with the proper type
+PASS SVGTransform interface: calling setSkewX(float) on objects.svg.createSVGTransform() with too few arguments must throw TypeError
+PASS SVGTransform interface: objects.svg.createSVGTransform() must inherit property "setSkewY(float)" with the proper type
+PASS SVGTransform interface: calling setSkewY(float) on objects.svg.createSVGTransform() with too few arguments must throw TypeError
+PASS SVGTransformList interface: existence and properties of interface object
+PASS SVGTransformList interface object length
+PASS SVGTransformList interface object name
+PASS SVGTransformList interface: existence and properties of interface prototype object
+PASS SVGTransformList interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGTransformList interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGTransformList interface: attribute length
+PASS SVGTransformList interface: attribute numberOfItems
+PASS SVGTransformList interface: operation clear()
+PASS SVGTransformList interface: operation initialize(SVGTransform)
+PASS SVGTransformList interface: operation getItem(unsigned long)
+PASS SVGTransformList interface: operation insertItemBefore(SVGTransform, unsigned long)
+PASS SVGTransformList interface: operation replaceItem(SVGTransform, unsigned long)
+PASS SVGTransformList interface: operation removeItem(unsigned long)
+PASS SVGTransformList interface: operation appendItem(SVGTransform)
+FAIL SVGTransformList interface: operation createSVGTransformFromMatrix(DOMMatrix2DInit) assert_equals: property has wrong .length expected 0 but got 1
+PASS SVGTransformList interface: operation consolidate()
+PASS SVGTransformList must be primary interface of objects.pattern.patternTransform.baseVal
+PASS Stringification of objects.pattern.patternTransform.baseVal
+PASS SVGTransformList interface: objects.pattern.patternTransform.baseVal must inherit property "length" with the proper type
+PASS SVGTransformList interface: objects.pattern.patternTransform.baseVal must inherit property "numberOfItems" with the proper type
+PASS SVGTransformList interface: objects.pattern.patternTransform.baseVal must inherit property "clear()" with the proper type
+PASS SVGTransformList interface: objects.pattern.patternTransform.baseVal must inherit property "initialize(SVGTransform)" with the proper type
+PASS SVGTransformList interface: calling initialize(SVGTransform) on objects.pattern.patternTransform.baseVal with too few arguments must throw TypeError
+PASS SVGTransformList interface: objects.pattern.patternTransform.baseVal must inherit property "getItem(unsigned long)" with the proper type
+PASS SVGTransformList interface: calling getItem(unsigned long) on objects.pattern.patternTransform.baseVal with too few arguments must throw TypeError
+PASS SVGTransformList interface: objects.pattern.patternTransform.baseVal must inherit property "insertItemBefore(SVGTransform, unsigned long)" with the proper type
+PASS SVGTransformList interface: calling insertItemBefore(SVGTransform, unsigned long) on objects.pattern.patternTransform.baseVal with too few arguments must throw TypeError
+PASS SVGTransformList interface: objects.pattern.patternTransform.baseVal must inherit property "replaceItem(SVGTransform, unsigned long)" with the proper type
+PASS SVGTransformList interface: calling replaceItem(SVGTransform, unsigned long) on objects.pattern.patternTransform.baseVal with too few arguments must throw TypeError
+PASS SVGTransformList interface: objects.pattern.patternTransform.baseVal must inherit property "removeItem(unsigned long)" with the proper type
+PASS SVGTransformList interface: calling removeItem(unsigned long) on objects.pattern.patternTransform.baseVal with too few arguments must throw TypeError
+PASS SVGTransformList interface: objects.pattern.patternTransform.baseVal must inherit property "appendItem(SVGTransform)" with the proper type
+PASS SVGTransformList interface: calling appendItem(SVGTransform) on objects.pattern.patternTransform.baseVal with too few arguments must throw TypeError
+PASS SVGTransformList interface: objects.pattern.patternTransform.baseVal must inherit property "createSVGTransformFromMatrix(DOMMatrix2DInit)" with the proper type
+PASS SVGTransformList interface: calling createSVGTransformFromMatrix(DOMMatrix2DInit) on objects.pattern.patternTransform.baseVal with too few arguments must throw TypeError
+PASS SVGTransformList interface: objects.pattern.patternTransform.baseVal must inherit property "consolidate()" with the proper type
+PASS SVGAnimatedTransformList interface: existence and properties of interface object
+PASS SVGAnimatedTransformList interface object length
+PASS SVGAnimatedTransformList interface object name
+PASS SVGAnimatedTransformList interface: existence and properties of interface prototype object
+PASS SVGAnimatedTransformList interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGAnimatedTransformList interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGAnimatedTransformList interface: attribute baseVal
+PASS SVGAnimatedTransformList interface: attribute animVal
+PASS SVGAnimatedTransformList must be primary interface of objects.pattern.patternTransform
+PASS Stringification of objects.pattern.patternTransform
+PASS SVGAnimatedTransformList interface: objects.pattern.patternTransform must inherit property "baseVal" with the proper type
+PASS SVGAnimatedTransformList interface: objects.pattern.patternTransform must inherit property "animVal" with the proper type
+PASS SVGPreserveAspectRatio interface: existence and properties of interface object
+PASS SVGPreserveAspectRatio interface object length
+PASS SVGPreserveAspectRatio interface object name
+PASS SVGPreserveAspectRatio interface: existence and properties of interface prototype object
+PASS SVGPreserveAspectRatio interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGPreserveAspectRatio interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_UNKNOWN on interface object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_UNKNOWN on interface prototype object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_NONE on interface object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_NONE on interface prototype object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_XMINYMIN on interface object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_XMINYMIN on interface prototype object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_XMIDYMIN on interface object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_XMIDYMIN on interface prototype object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_XMAXYMIN on interface object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_XMAXYMIN on interface prototype object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_XMINYMID on interface object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_XMINYMID on interface prototype object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_XMIDYMID on interface object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_XMIDYMID on interface prototype object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_XMAXYMID on interface object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_XMAXYMID on interface prototype object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_XMINYMAX on interface object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_XMINYMAX on interface prototype object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_XMIDYMAX on interface object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_XMIDYMAX on interface prototype object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_XMAXYMAX on interface object
+PASS SVGPreserveAspectRatio interface: constant SVG_PRESERVEASPECTRATIO_XMAXYMAX on interface prototype object
+PASS SVGPreserveAspectRatio interface: constant SVG_MEETORSLICE_UNKNOWN on interface object
+PASS SVGPreserveAspectRatio interface: constant SVG_MEETORSLICE_UNKNOWN on interface prototype object
+PASS SVGPreserveAspectRatio interface: constant SVG_MEETORSLICE_MEET on interface object
+PASS SVGPreserveAspectRatio interface: constant SVG_MEETORSLICE_MEET on interface prototype object
+PASS SVGPreserveAspectRatio interface: constant SVG_MEETORSLICE_SLICE on interface object
+PASS SVGPreserveAspectRatio interface: constant SVG_MEETORSLICE_SLICE on interface prototype object
+PASS SVGPreserveAspectRatio interface: attribute align
+PASS SVGPreserveAspectRatio interface: attribute meetOrSlice
+PASS SVGPreserveAspectRatio must be primary interface of objects.image.preserveAspectRatio.baseVal
+PASS Stringification of objects.image.preserveAspectRatio.baseVal
+PASS SVGPreserveAspectRatio interface: objects.image.preserveAspectRatio.baseVal must inherit property "SVG_PRESERVEASPECTRATIO_UNKNOWN" with the proper type
+PASS SVGPreserveAspectRatio interface: objects.image.preserveAspectRatio.baseVal must inherit property "SVG_PRESERVEASPECTRATIO_NONE" with the proper type
+PASS SVGPreserveAspectRatio interface: objects.image.preserveAspectRatio.baseVal must inherit property "SVG_PRESERVEASPECTRATIO_XMINYMIN" with the proper type
+PASS SVGPreserveAspectRatio interface: objects.image.preserveAspectRatio.baseVal must inherit property "SVG_PRESERVEASPECTRATIO_XMIDYMIN" with the proper type
+PASS SVGPreserveAspectRatio interface: objects.image.preserveAspectRatio.baseVal must inherit property "SVG_PRESERVEASPECTRATIO_XMAXYMIN" with the proper type
+PASS SVGPreserveAspectRatio interface: objects.image.preserveAspectRatio.baseVal must inherit property "SVG_PRESERVEASPECTRATIO_XMINYMID" with the proper type
+PASS SVGPreserveAspectRatio interface: objects.image.preserveAspectRatio.baseVal must inherit property "SVG_PRESERVEASPECTRATIO_XMIDYMID" with the proper type
+PASS SVGPreserveAspectRatio interface: objects.image.preserveAspectRatio.baseVal must inherit property "SVG_PRESERVEASPECTRATIO_XMAXYMID" with the proper type
+PASS SVGPreserveAspectRatio interface: objects.image.preserveAspectRatio.baseVal must inherit property "SVG_PRESERVEASPECTRATIO_XMINYMAX" with the proper type
+PASS SVGPreserveAspectRatio interface: objects.image.preserveAspectRatio.baseVal must inherit property "SVG_PRESERVEASPECTRATIO_XMIDYMAX" with the proper type
+PASS SVGPreserveAspectRatio interface: objects.image.preserveAspectRatio.baseVal must inherit property "SVG_PRESERVEASPECTRATIO_XMAXYMAX" with the proper type
+PASS SVGPreserveAspectRatio interface: objects.image.preserveAspectRatio.baseVal must inherit property "SVG_MEETORSLICE_UNKNOWN" with the proper type
+PASS SVGPreserveAspectRatio interface: objects.image.preserveAspectRatio.baseVal must inherit property "SVG_MEETORSLICE_MEET" with the proper type
+PASS SVGPreserveAspectRatio interface: objects.image.preserveAspectRatio.baseVal must inherit property "SVG_MEETORSLICE_SLICE" with the proper type
+PASS SVGPreserveAspectRatio interface: objects.image.preserveAspectRatio.baseVal must inherit property "align" with the proper type
+PASS SVGPreserveAspectRatio interface: objects.image.preserveAspectRatio.baseVal must inherit property "meetOrSlice" with the proper type
+PASS SVGAnimatedPreserveAspectRatio interface: existence and properties of interface object
+PASS SVGAnimatedPreserveAspectRatio interface object length
+PASS SVGAnimatedPreserveAspectRatio interface object name
+PASS SVGAnimatedPreserveAspectRatio interface: existence and properties of interface prototype object
+PASS SVGAnimatedPreserveAspectRatio interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGAnimatedPreserveAspectRatio interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGAnimatedPreserveAspectRatio interface: attribute baseVal
+PASS SVGAnimatedPreserveAspectRatio interface: attribute animVal
+PASS SVGAnimatedPreserveAspectRatio must be primary interface of objects.image.preserveAspectRatio
+PASS Stringification of objects.image.preserveAspectRatio
+PASS SVGAnimatedPreserveAspectRatio interface: objects.image.preserveAspectRatio must inherit property "baseVal" with the proper type
+PASS SVGAnimatedPreserveAspectRatio interface: objects.image.preserveAspectRatio must inherit property "animVal" with the proper type
+PASS SVGPathElement interface: existence and properties of interface object
+PASS SVGPathElement interface object length
+PASS SVGPathElement interface object name
+PASS SVGPathElement interface: existence and properties of interface prototype object
+PASS SVGPathElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGPathElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGPathElement must be primary interface of objects.path
+PASS Stringification of objects.path
+PASS SVGGeometryElement interface: objects.path must inherit property "pathLength" with the proper type
+PASS SVGGeometryElement interface: objects.path must inherit property "isPointInFill(DOMPointInit)" with the proper type
+PASS SVGGeometryElement interface: calling isPointInFill(DOMPointInit) on objects.path with too few arguments must throw TypeError
+PASS SVGGeometryElement interface: objects.path must inherit property "isPointInStroke(DOMPointInit)" with the proper type
+PASS SVGGeometryElement interface: calling isPointInStroke(DOMPointInit) on objects.path with too few arguments must throw TypeError
+PASS SVGGeometryElement interface: objects.path must inherit property "getTotalLength()" with the proper type
+PASS SVGGeometryElement interface: objects.path must inherit property "getPointAtLength(float)" with the proper type
+PASS SVGGeometryElement interface: calling getPointAtLength(float) on objects.path with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.path must inherit property "transform" with the proper type
+PASS SVGGraphicsElement interface: objects.path must inherit property "getBBox(SVGBoundingBoxOptions)" with the proper type
+PASS SVGGraphicsElement interface: calling getBBox(SVGBoundingBoxOptions) on objects.path with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.path must inherit property "getCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.path must inherit property "getScreenCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.path must inherit property "requiredExtensions" with the proper type
+PASS SVGGraphicsElement interface: objects.path must inherit property "systemLanguage" with the proper type
+PASS SVGElement interface: objects.path must inherit property "className" with the proper type
+PASS SVGElement interface: objects.path must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.path must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.path must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.path must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGRectElement interface: existence and properties of interface object
+PASS SVGRectElement interface object length
+PASS SVGRectElement interface object name
+PASS SVGRectElement interface: existence and properties of interface prototype object
+PASS SVGRectElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGRectElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGRectElement interface: attribute x
+PASS SVGRectElement interface: attribute y
+PASS SVGRectElement interface: attribute width
+PASS SVGRectElement interface: attribute height
+PASS SVGRectElement interface: attribute rx
+PASS SVGRectElement interface: attribute ry
+PASS SVGRectElement must be primary interface of objects.rect
+PASS Stringification of objects.rect
+PASS SVGRectElement interface: objects.rect must inherit property "x" with the proper type
+PASS SVGRectElement interface: objects.rect must inherit property "y" with the proper type
+PASS SVGRectElement interface: objects.rect must inherit property "width" with the proper type
+PASS SVGRectElement interface: objects.rect must inherit property "height" with the proper type
+PASS SVGRectElement interface: objects.rect must inherit property "rx" with the proper type
+PASS SVGRectElement interface: objects.rect must inherit property "ry" with the proper type
+PASS SVGGeometryElement interface: objects.rect must inherit property "pathLength" with the proper type
+PASS SVGGeometryElement interface: objects.rect must inherit property "isPointInFill(DOMPointInit)" with the proper type
+PASS SVGGeometryElement interface: calling isPointInFill(DOMPointInit) on objects.rect with too few arguments must throw TypeError
+PASS SVGGeometryElement interface: objects.rect must inherit property "isPointInStroke(DOMPointInit)" with the proper type
+PASS SVGGeometryElement interface: calling isPointInStroke(DOMPointInit) on objects.rect with too few arguments must throw TypeError
+PASS SVGGeometryElement interface: objects.rect must inherit property "getTotalLength()" with the proper type
+PASS SVGGeometryElement interface: objects.rect must inherit property "getPointAtLength(float)" with the proper type
+PASS SVGGeometryElement interface: calling getPointAtLength(float) on objects.rect with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.rect must inherit property "transform" with the proper type
+PASS SVGGraphicsElement interface: objects.rect must inherit property "getBBox(SVGBoundingBoxOptions)" with the proper type
+PASS SVGGraphicsElement interface: calling getBBox(SVGBoundingBoxOptions) on objects.rect with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.rect must inherit property "getCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.rect must inherit property "getScreenCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.rect must inherit property "requiredExtensions" with the proper type
+PASS SVGGraphicsElement interface: objects.rect must inherit property "systemLanguage" with the proper type
+PASS SVGElement interface: objects.rect must inherit property "className" with the proper type
+PASS SVGElement interface: objects.rect must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.rect must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.rect must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.rect must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGCircleElement interface: existence and properties of interface object
+PASS SVGCircleElement interface object length
+PASS SVGCircleElement interface object name
+PASS SVGCircleElement interface: existence and properties of interface prototype object
+PASS SVGCircleElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGCircleElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGCircleElement interface: attribute cx
+PASS SVGCircleElement interface: attribute cy
+PASS SVGCircleElement interface: attribute r
+PASS SVGCircleElement must be primary interface of objects.circle
+PASS Stringification of objects.circle
+PASS SVGCircleElement interface: objects.circle must inherit property "cx" with the proper type
+PASS SVGCircleElement interface: objects.circle must inherit property "cy" with the proper type
+PASS SVGCircleElement interface: objects.circle must inherit property "r" with the proper type
+PASS SVGGeometryElement interface: objects.circle must inherit property "pathLength" with the proper type
+PASS SVGGeometryElement interface: objects.circle must inherit property "isPointInFill(DOMPointInit)" with the proper type
+PASS SVGGeometryElement interface: calling isPointInFill(DOMPointInit) on objects.circle with too few arguments must throw TypeError
+PASS SVGGeometryElement interface: objects.circle must inherit property "isPointInStroke(DOMPointInit)" with the proper type
+PASS SVGGeometryElement interface: calling isPointInStroke(DOMPointInit) on objects.circle with too few arguments must throw TypeError
+PASS SVGGeometryElement interface: objects.circle must inherit property "getTotalLength()" with the proper type
+PASS SVGGeometryElement interface: objects.circle must inherit property "getPointAtLength(float)" with the proper type
+PASS SVGGeometryElement interface: calling getPointAtLength(float) on objects.circle with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.circle must inherit property "transform" with the proper type
+PASS SVGGraphicsElement interface: objects.circle must inherit property "getBBox(SVGBoundingBoxOptions)" with the proper type
+PASS SVGGraphicsElement interface: calling getBBox(SVGBoundingBoxOptions) on objects.circle with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.circle must inherit property "getCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.circle must inherit property "getScreenCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.circle must inherit property "requiredExtensions" with the proper type
+PASS SVGGraphicsElement interface: objects.circle must inherit property "systemLanguage" with the proper type
+PASS SVGElement interface: objects.circle must inherit property "className" with the proper type
+PASS SVGElement interface: objects.circle must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.circle must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.circle must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.circle must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGEllipseElement interface: existence and properties of interface object
+PASS SVGEllipseElement interface object length
+PASS SVGEllipseElement interface object name
+PASS SVGEllipseElement interface: existence and properties of interface prototype object
+PASS SVGEllipseElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGEllipseElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGEllipseElement interface: attribute cx
+PASS SVGEllipseElement interface: attribute cy
+PASS SVGEllipseElement interface: attribute rx
+PASS SVGEllipseElement interface: attribute ry
+PASS SVGEllipseElement must be primary interface of objects.ellipse
+PASS Stringification of objects.ellipse
+PASS SVGEllipseElement interface: objects.ellipse must inherit property "cx" with the proper type
+PASS SVGEllipseElement interface: objects.ellipse must inherit property "cy" with the proper type
+PASS SVGEllipseElement interface: objects.ellipse must inherit property "rx" with the proper type
+PASS SVGEllipseElement interface: objects.ellipse must inherit property "ry" with the proper type
+PASS SVGGeometryElement interface: objects.ellipse must inherit property "pathLength" with the proper type
+PASS SVGGeometryElement interface: objects.ellipse must inherit property "isPointInFill(DOMPointInit)" with the proper type
+PASS SVGGeometryElement interface: calling isPointInFill(DOMPointInit) on objects.ellipse with too few arguments must throw TypeError
+PASS SVGGeometryElement interface: objects.ellipse must inherit property "isPointInStroke(DOMPointInit)" with the proper type
+PASS SVGGeometryElement interface: calling isPointInStroke(DOMPointInit) on objects.ellipse with too few arguments must throw TypeError
+PASS SVGGeometryElement interface: objects.ellipse must inherit property "getTotalLength()" with the proper type
+PASS SVGGeometryElement interface: objects.ellipse must inherit property "getPointAtLength(float)" with the proper type
+PASS SVGGeometryElement interface: calling getPointAtLength(float) on objects.ellipse with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.ellipse must inherit property "transform" with the proper type
+PASS SVGGraphicsElement interface: objects.ellipse must inherit property "getBBox(SVGBoundingBoxOptions)" with the proper type
+PASS SVGGraphicsElement interface: calling getBBox(SVGBoundingBoxOptions) on objects.ellipse with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.ellipse must inherit property "getCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.ellipse must inherit property "getScreenCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.ellipse must inherit property "requiredExtensions" with the proper type
+PASS SVGGraphicsElement interface: objects.ellipse must inherit property "systemLanguage" with the proper type
+PASS SVGElement interface: objects.ellipse must inherit property "className" with the proper type
+PASS SVGElement interface: objects.ellipse must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.ellipse must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.ellipse must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.ellipse must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGLineElement interface: existence and properties of interface object
+PASS SVGLineElement interface object length
+PASS SVGLineElement interface object name
+PASS SVGLineElement interface: existence and properties of interface prototype object
+PASS SVGLineElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGLineElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGLineElement interface: attribute x1
+PASS SVGLineElement interface: attribute y1
+PASS SVGLineElement interface: attribute x2
+PASS SVGLineElement interface: attribute y2
+PASS SVGLineElement must be primary interface of objects.line
+PASS Stringification of objects.line
+PASS SVGLineElement interface: objects.line must inherit property "x1" with the proper type
+PASS SVGLineElement interface: objects.line must inherit property "y1" with the proper type
+PASS SVGLineElement interface: objects.line must inherit property "x2" with the proper type
+PASS SVGLineElement interface: objects.line must inherit property "y2" with the proper type
+PASS SVGGeometryElement interface: objects.line must inherit property "pathLength" with the proper type
+PASS SVGGeometryElement interface: objects.line must inherit property "isPointInFill(DOMPointInit)" with the proper type
+PASS SVGGeometryElement interface: calling isPointInFill(DOMPointInit) on objects.line with too few arguments must throw TypeError
+PASS SVGGeometryElement interface: objects.line must inherit property "isPointInStroke(DOMPointInit)" with the proper type
+PASS SVGGeometryElement interface: calling isPointInStroke(DOMPointInit) on objects.line with too few arguments must throw TypeError
+PASS SVGGeometryElement interface: objects.line must inherit property "getTotalLength()" with the proper type
+PASS SVGGeometryElement interface: objects.line must inherit property "getPointAtLength(float)" with the proper type
+PASS SVGGeometryElement interface: calling getPointAtLength(float) on objects.line with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.line must inherit property "transform" with the proper type
+PASS SVGGraphicsElement interface: objects.line must inherit property "getBBox(SVGBoundingBoxOptions)" with the proper type
+PASS SVGGraphicsElement interface: calling getBBox(SVGBoundingBoxOptions) on objects.line with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.line must inherit property "getCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.line must inherit property "getScreenCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.line must inherit property "requiredExtensions" with the proper type
+PASS SVGGraphicsElement interface: objects.line must inherit property "systemLanguage" with the proper type
+PASS SVGElement interface: objects.line must inherit property "className" with the proper type
+PASS SVGElement interface: objects.line must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.line must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.line must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.line must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGPointList interface: existence and properties of interface object
+PASS SVGPointList interface object length
+PASS SVGPointList interface object name
+PASS SVGPointList interface: existence and properties of interface prototype object
+PASS SVGPointList interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGPointList interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGPointList interface: attribute length
+PASS SVGPointList interface: attribute numberOfItems
+PASS SVGPointList interface: operation clear()
+PASS SVGPointList interface: operation initialize(DOMPoint)
+PASS SVGPointList interface: operation getItem(unsigned long)
+PASS SVGPointList interface: operation insertItemBefore(DOMPoint, unsigned long)
+PASS SVGPointList interface: operation replaceItem(DOMPoint, unsigned long)
+PASS SVGPointList interface: operation removeItem(unsigned long)
+PASS SVGPointList interface: operation appendItem(DOMPoint)
+PASS SVGPointList must be primary interface of objects.polygon.points
+PASS Stringification of objects.polygon.points
+PASS SVGPointList interface: objects.polygon.points must inherit property "length" with the proper type
+PASS SVGPointList interface: objects.polygon.points must inherit property "numberOfItems" with the proper type
+PASS SVGPointList interface: objects.polygon.points must inherit property "clear()" with the proper type
+PASS SVGPointList interface: objects.polygon.points must inherit property "initialize(DOMPoint)" with the proper type
+PASS SVGPointList interface: calling initialize(DOMPoint) on objects.polygon.points with too few arguments must throw TypeError
+PASS SVGPointList interface: objects.polygon.points must inherit property "getItem(unsigned long)" with the proper type
+PASS SVGPointList interface: calling getItem(unsigned long) on objects.polygon.points with too few arguments must throw TypeError
+PASS SVGPointList interface: objects.polygon.points must inherit property "insertItemBefore(DOMPoint, unsigned long)" with the proper type
+PASS SVGPointList interface: calling insertItemBefore(DOMPoint, unsigned long) on objects.polygon.points with too few arguments must throw TypeError
+PASS SVGPointList interface: objects.polygon.points must inherit property "replaceItem(DOMPoint, unsigned long)" with the proper type
+PASS SVGPointList interface: calling replaceItem(DOMPoint, unsigned long) on objects.polygon.points with too few arguments must throw TypeError
+PASS SVGPointList interface: objects.polygon.points must inherit property "removeItem(unsigned long)" with the proper type
+PASS SVGPointList interface: calling removeItem(unsigned long) on objects.polygon.points with too few arguments must throw TypeError
+PASS SVGPointList interface: objects.polygon.points must inherit property "appendItem(DOMPoint)" with the proper type
+PASS SVGPointList interface: calling appendItem(DOMPoint) on objects.polygon.points with too few arguments must throw TypeError
+PASS SVGPolylineElement interface: existence and properties of interface object
+PASS SVGPolylineElement interface object length
+PASS SVGPolylineElement interface object name
+PASS SVGPolylineElement interface: existence and properties of interface prototype object
+PASS SVGPolylineElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGPolylineElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGPolylineElement interface: attribute points
+PASS SVGPolylineElement interface: attribute animatedPoints
+PASS SVGPolylineElement must be primary interface of objects.polyline
+PASS Stringification of objects.polyline
+PASS SVGPolylineElement interface: objects.polyline must inherit property "points" with the proper type
+PASS SVGPolylineElement interface: objects.polyline must inherit property "animatedPoints" with the proper type
+PASS SVGGeometryElement interface: objects.polyline must inherit property "pathLength" with the proper type
+PASS SVGGeometryElement interface: objects.polyline must inherit property "isPointInFill(DOMPointInit)" with the proper type
+PASS SVGGeometryElement interface: calling isPointInFill(DOMPointInit) on objects.polyline with too few arguments must throw TypeError
+PASS SVGGeometryElement interface: objects.polyline must inherit property "isPointInStroke(DOMPointInit)" with the proper type
+PASS SVGGeometryElement interface: calling isPointInStroke(DOMPointInit) on objects.polyline with too few arguments must throw TypeError
+PASS SVGGeometryElement interface: objects.polyline must inherit property "getTotalLength()" with the proper type
+PASS SVGGeometryElement interface: objects.polyline must inherit property "getPointAtLength(float)" with the proper type
+PASS SVGGeometryElement interface: calling getPointAtLength(float) on objects.polyline with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.polyline must inherit property "transform" with the proper type
+PASS SVGGraphicsElement interface: objects.polyline must inherit property "getBBox(SVGBoundingBoxOptions)" with the proper type
+PASS SVGGraphicsElement interface: calling getBBox(SVGBoundingBoxOptions) on objects.polyline with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.polyline must inherit property "getCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.polyline must inherit property "getScreenCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.polyline must inherit property "requiredExtensions" with the proper type
+PASS SVGGraphicsElement interface: objects.polyline must inherit property "systemLanguage" with the proper type
+PASS SVGElement interface: objects.polyline must inherit property "className" with the proper type
+PASS SVGElement interface: objects.polyline must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.polyline must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.polyline must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.polyline must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGPolygonElement interface: existence and properties of interface object
+PASS SVGPolygonElement interface object length
+PASS SVGPolygonElement interface object name
+PASS SVGPolygonElement interface: existence and properties of interface prototype object
+PASS SVGPolygonElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGPolygonElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGPolygonElement interface: attribute points
+PASS SVGPolygonElement interface: attribute animatedPoints
+PASS SVGPolygonElement must be primary interface of objects.polygon
+PASS Stringification of objects.polygon
+PASS SVGPolygonElement interface: objects.polygon must inherit property "points" with the proper type
+PASS SVGPolygonElement interface: objects.polygon must inherit property "animatedPoints" with the proper type
+PASS SVGGeometryElement interface: objects.polygon must inherit property "pathLength" with the proper type
+PASS SVGGeometryElement interface: objects.polygon must inherit property "isPointInFill(DOMPointInit)" with the proper type
+PASS SVGGeometryElement interface: calling isPointInFill(DOMPointInit) on objects.polygon with too few arguments must throw TypeError
+PASS SVGGeometryElement interface: objects.polygon must inherit property "isPointInStroke(DOMPointInit)" with the proper type
+PASS SVGGeometryElement interface: calling isPointInStroke(DOMPointInit) on objects.polygon with too few arguments must throw TypeError
+PASS SVGGeometryElement interface: objects.polygon must inherit property "getTotalLength()" with the proper type
+PASS SVGGeometryElement interface: objects.polygon must inherit property "getPointAtLength(float)" with the proper type
+PASS SVGGeometryElement interface: calling getPointAtLength(float) on objects.polygon with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.polygon must inherit property "transform" with the proper type
+PASS SVGGraphicsElement interface: objects.polygon must inherit property "getBBox(SVGBoundingBoxOptions)" with the proper type
+PASS SVGGraphicsElement interface: calling getBBox(SVGBoundingBoxOptions) on objects.polygon with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.polygon must inherit property "getCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.polygon must inherit property "getScreenCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.polygon must inherit property "requiredExtensions" with the proper type
+PASS SVGGraphicsElement interface: objects.polygon must inherit property "systemLanguage" with the proper type
+PASS SVGElement interface: objects.polygon must inherit property "className" with the proper type
+PASS SVGElement interface: objects.polygon must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.polygon must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.polygon must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.polygon must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGTextContentElement interface: existence and properties of interface object
+PASS SVGTextContentElement interface object length
+PASS SVGTextContentElement interface object name
+PASS SVGTextContentElement interface: existence and properties of interface prototype object
+PASS SVGTextContentElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGTextContentElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGTextContentElement interface: constant LENGTHADJUST_UNKNOWN on interface object
+PASS SVGTextContentElement interface: constant LENGTHADJUST_UNKNOWN on interface prototype object
+PASS SVGTextContentElement interface: constant LENGTHADJUST_SPACING on interface object
+PASS SVGTextContentElement interface: constant LENGTHADJUST_SPACING on interface prototype object
+PASS SVGTextContentElement interface: constant LENGTHADJUST_SPACINGANDGLYPHS on interface object
+PASS SVGTextContentElement interface: constant LENGTHADJUST_SPACINGANDGLYPHS on interface prototype object
+PASS SVGTextContentElement interface: attribute textLength
+PASS SVGTextContentElement interface: attribute lengthAdjust
+PASS SVGTextContentElement interface: operation getNumberOfChars()
+PASS SVGTextContentElement interface: operation getComputedTextLength()
+PASS SVGTextContentElement interface: operation getSubStringLength(unsigned long, unsigned long)
+PASS SVGTextContentElement interface: operation getStartPositionOfChar(unsigned long)
+PASS SVGTextContentElement interface: operation getEndPositionOfChar(unsigned long)
+PASS SVGTextContentElement interface: operation getExtentOfChar(unsigned long)
+PASS SVGTextContentElement interface: operation getRotationOfChar(unsigned long)
+FAIL SVGTextContentElement interface: operation getCharNumAtPosition(DOMPointInit) assert_equals: property has wrong .length expected 0 but got 1
+PASS SVGTextContentElement interface: operation selectSubString(unsigned long, unsigned long)
+PASS SVGTextPositioningElement interface: existence and properties of interface object
+PASS SVGTextPositioningElement interface object length
+PASS SVGTextPositioningElement interface object name
+PASS SVGTextPositioningElement interface: existence and properties of interface prototype object
+PASS SVGTextPositioningElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGTextPositioningElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGTextPositioningElement interface: attribute x
+PASS SVGTextPositioningElement interface: attribute y
+PASS SVGTextPositioningElement interface: attribute dx
+PASS SVGTextPositioningElement interface: attribute dy
+PASS SVGTextPositioningElement interface: attribute rotate
+PASS SVGTextElement interface: existence and properties of interface object
+PASS SVGTextElement interface object length
+PASS SVGTextElement interface object name
+PASS SVGTextElement interface: existence and properties of interface prototype object
+PASS SVGTextElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGTextElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGTextElement must be primary interface of objects.text
+PASS Stringification of objects.text
+PASS SVGTextPositioningElement interface: objects.text must inherit property "x" with the proper type
+PASS SVGTextPositioningElement interface: objects.text must inherit property "y" with the proper type
+PASS SVGTextPositioningElement interface: objects.text must inherit property "dx" with the proper type
+PASS SVGTextPositioningElement interface: objects.text must inherit property "dy" with the proper type
+PASS SVGTextPositioningElement interface: objects.text must inherit property "rotate" with the proper type
+PASS SVGTextContentElement interface: objects.text must inherit property "LENGTHADJUST_UNKNOWN" with the proper type
+PASS SVGTextContentElement interface: objects.text must inherit property "LENGTHADJUST_SPACING" with the proper type
+PASS SVGTextContentElement interface: objects.text must inherit property "LENGTHADJUST_SPACINGANDGLYPHS" with the proper type
+PASS SVGTextContentElement interface: objects.text must inherit property "textLength" with the proper type
+PASS SVGTextContentElement interface: objects.text must inherit property "lengthAdjust" with the proper type
+PASS SVGTextContentElement interface: objects.text must inherit property "getNumberOfChars()" with the proper type
+PASS SVGTextContentElement interface: objects.text must inherit property "getComputedTextLength()" with the proper type
+PASS SVGTextContentElement interface: objects.text must inherit property "getSubStringLength(unsigned long, unsigned long)" with the proper type
+PASS SVGTextContentElement interface: calling getSubStringLength(unsigned long, unsigned long) on objects.text with too few arguments must throw TypeError
+PASS SVGTextContentElement interface: objects.text must inherit property "getStartPositionOfChar(unsigned long)" with the proper type
+PASS SVGTextContentElement interface: calling getStartPositionOfChar(unsigned long) on objects.text with too few arguments must throw TypeError
+PASS SVGTextContentElement interface: objects.text must inherit property "getEndPositionOfChar(unsigned long)" with the proper type
+PASS SVGTextContentElement interface: calling getEndPositionOfChar(unsigned long) on objects.text with too few arguments must throw TypeError
+PASS SVGTextContentElement interface: objects.text must inherit property "getExtentOfChar(unsigned long)" with the proper type
+PASS SVGTextContentElement interface: calling getExtentOfChar(unsigned long) on objects.text with too few arguments must throw TypeError
+PASS SVGTextContentElement interface: objects.text must inherit property "getRotationOfChar(unsigned long)" with the proper type
+PASS SVGTextContentElement interface: calling getRotationOfChar(unsigned long) on objects.text with too few arguments must throw TypeError
+PASS SVGTextContentElement interface: objects.text must inherit property "getCharNumAtPosition(DOMPointInit)" with the proper type
+PASS SVGTextContentElement interface: calling getCharNumAtPosition(DOMPointInit) on objects.text with too few arguments must throw TypeError
+PASS SVGTextContentElement interface: objects.text must inherit property "selectSubString(unsigned long, unsigned long)" with the proper type
+PASS SVGTextContentElement interface: calling selectSubString(unsigned long, unsigned long) on objects.text with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.text must inherit property "transform" with the proper type
+PASS SVGGraphicsElement interface: objects.text must inherit property "getBBox(SVGBoundingBoxOptions)" with the proper type
+PASS SVGGraphicsElement interface: calling getBBox(SVGBoundingBoxOptions) on objects.text with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.text must inherit property "getCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.text must inherit property "getScreenCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.text must inherit property "requiredExtensions" with the proper type
+PASS SVGGraphicsElement interface: objects.text must inherit property "systemLanguage" with the proper type
+PASS SVGElement interface: objects.text must inherit property "className" with the proper type
+PASS SVGElement interface: objects.text must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.text must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.text must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.text must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGTSpanElement interface: existence and properties of interface object
+PASS SVGTSpanElement interface object length
+PASS SVGTSpanElement interface object name
+PASS SVGTSpanElement interface: existence and properties of interface prototype object
+PASS SVGTSpanElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGTSpanElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGTSpanElement must be primary interface of objects.tspan
+PASS Stringification of objects.tspan
+PASS SVGTextPositioningElement interface: objects.tspan must inherit property "x" with the proper type
+PASS SVGTextPositioningElement interface: objects.tspan must inherit property "y" with the proper type
+PASS SVGTextPositioningElement interface: objects.tspan must inherit property "dx" with the proper type
+PASS SVGTextPositioningElement interface: objects.tspan must inherit property "dy" with the proper type
+PASS SVGTextPositioningElement interface: objects.tspan must inherit property "rotate" with the proper type
+PASS SVGTextContentElement interface: objects.tspan must inherit property "LENGTHADJUST_UNKNOWN" with the proper type
+PASS SVGTextContentElement interface: objects.tspan must inherit property "LENGTHADJUST_SPACING" with the proper type
+PASS SVGTextContentElement interface: objects.tspan must inherit property "LENGTHADJUST_SPACINGANDGLYPHS" with the proper type
+PASS SVGTextContentElement interface: objects.tspan must inherit property "textLength" with the proper type
+PASS SVGTextContentElement interface: objects.tspan must inherit property "lengthAdjust" with the proper type
+PASS SVGTextContentElement interface: objects.tspan must inherit property "getNumberOfChars()" with the proper type
+PASS SVGTextContentElement interface: objects.tspan must inherit property "getComputedTextLength()" with the proper type
+PASS SVGTextContentElement interface: objects.tspan must inherit property "getSubStringLength(unsigned long, unsigned long)" with the proper type
+PASS SVGTextContentElement interface: calling getSubStringLength(unsigned long, unsigned long) on objects.tspan with too few arguments must throw TypeError
+PASS SVGTextContentElement interface: objects.tspan must inherit property "getStartPositionOfChar(unsigned long)" with the proper type
+PASS SVGTextContentElement interface: calling getStartPositionOfChar(unsigned long) on objects.tspan with too few arguments must throw TypeError
+PASS SVGTextContentElement interface: objects.tspan must inherit property "getEndPositionOfChar(unsigned long)" with the proper type
+PASS SVGTextContentElement interface: calling getEndPositionOfChar(unsigned long) on objects.tspan with too few arguments must throw TypeError
+PASS SVGTextContentElement interface: objects.tspan must inherit property "getExtentOfChar(unsigned long)" with the proper type
+PASS SVGTextContentElement interface: calling getExtentOfChar(unsigned long) on objects.tspan with too few arguments must throw TypeError
+PASS SVGTextContentElement interface: objects.tspan must inherit property "getRotationOfChar(unsigned long)" with the proper type
+PASS SVGTextContentElement interface: calling getRotationOfChar(unsigned long) on objects.tspan with too few arguments must throw TypeError
+PASS SVGTextContentElement interface: objects.tspan must inherit property "getCharNumAtPosition(DOMPointInit)" with the proper type
+PASS SVGTextContentElement interface: calling getCharNumAtPosition(DOMPointInit) on objects.tspan with too few arguments must throw TypeError
+PASS SVGTextContentElement interface: objects.tspan must inherit property "selectSubString(unsigned long, unsigned long)" with the proper type
+PASS SVGTextContentElement interface: calling selectSubString(unsigned long, unsigned long) on objects.tspan with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.tspan must inherit property "transform" with the proper type
+PASS SVGGraphicsElement interface: objects.tspan must inherit property "getBBox(SVGBoundingBoxOptions)" with the proper type
+PASS SVGGraphicsElement interface: calling getBBox(SVGBoundingBoxOptions) on objects.tspan with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.tspan must inherit property "getCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.tspan must inherit property "getScreenCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.tspan must inherit property "requiredExtensions" with the proper type
+PASS SVGGraphicsElement interface: objects.tspan must inherit property "systemLanguage" with the proper type
+PASS SVGElement interface: objects.tspan must inherit property "className" with the proper type
+PASS SVGElement interface: objects.tspan must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.tspan must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.tspan must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.tspan must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGTextPathElement interface: existence and properties of interface object
+PASS SVGTextPathElement interface object length
+PASS SVGTextPathElement interface object name
+PASS SVGTextPathElement interface: existence and properties of interface prototype object
+PASS SVGTextPathElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGTextPathElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGTextPathElement interface: constant TEXTPATH_METHODTYPE_UNKNOWN on interface object
+PASS SVGTextPathElement interface: constant TEXTPATH_METHODTYPE_UNKNOWN on interface prototype object
+PASS SVGTextPathElement interface: constant TEXTPATH_METHODTYPE_ALIGN on interface object
+PASS SVGTextPathElement interface: constant TEXTPATH_METHODTYPE_ALIGN on interface prototype object
+PASS SVGTextPathElement interface: constant TEXTPATH_METHODTYPE_STRETCH on interface object
+PASS SVGTextPathElement interface: constant TEXTPATH_METHODTYPE_STRETCH on interface prototype object
+PASS SVGTextPathElement interface: constant TEXTPATH_SPACINGTYPE_UNKNOWN on interface object
+PASS SVGTextPathElement interface: constant TEXTPATH_SPACINGTYPE_UNKNOWN on interface prototype object
+PASS SVGTextPathElement interface: constant TEXTPATH_SPACINGTYPE_AUTO on interface object
+PASS SVGTextPathElement interface: constant TEXTPATH_SPACINGTYPE_AUTO on interface prototype object
+PASS SVGTextPathElement interface: constant TEXTPATH_SPACINGTYPE_EXACT on interface object
+PASS SVGTextPathElement interface: constant TEXTPATH_SPACINGTYPE_EXACT on interface prototype object
+PASS SVGTextPathElement interface: attribute startOffset
+PASS SVGTextPathElement interface: attribute method
+PASS SVGTextPathElement interface: attribute spacing
+PASS SVGTextPathElement interface: attribute href
+PASS SVGTextPathElement must be primary interface of objects.textPath
+PASS Stringification of objects.textPath
+PASS SVGTextPathElement interface: objects.textPath must inherit property "TEXTPATH_METHODTYPE_UNKNOWN" with the proper type
+PASS SVGTextPathElement interface: objects.textPath must inherit property "TEXTPATH_METHODTYPE_ALIGN" with the proper type
+PASS SVGTextPathElement interface: objects.textPath must inherit property "TEXTPATH_METHODTYPE_STRETCH" with the proper type
+PASS SVGTextPathElement interface: objects.textPath must inherit property "TEXTPATH_SPACINGTYPE_UNKNOWN" with the proper type
+PASS SVGTextPathElement interface: objects.textPath must inherit property "TEXTPATH_SPACINGTYPE_AUTO" with the proper type
+PASS SVGTextPathElement interface: objects.textPath must inherit property "TEXTPATH_SPACINGTYPE_EXACT" with the proper type
+PASS SVGTextPathElement interface: objects.textPath must inherit property "startOffset" with the proper type
+PASS SVGTextPathElement interface: objects.textPath must inherit property "method" with the proper type
+PASS SVGTextPathElement interface: objects.textPath must inherit property "spacing" with the proper type
+PASS SVGTextPathElement interface: objects.textPath must inherit property "href" with the proper type
+PASS SVGTextContentElement interface: objects.textPath must inherit property "LENGTHADJUST_UNKNOWN" with the proper type
+PASS SVGTextContentElement interface: objects.textPath must inherit property "LENGTHADJUST_SPACING" with the proper type
+PASS SVGTextContentElement interface: objects.textPath must inherit property "LENGTHADJUST_SPACINGANDGLYPHS" with the proper type
+PASS SVGTextContentElement interface: objects.textPath must inherit property "textLength" with the proper type
+PASS SVGTextContentElement interface: objects.textPath must inherit property "lengthAdjust" with the proper type
+PASS SVGTextContentElement interface: objects.textPath must inherit property "getNumberOfChars()" with the proper type
+PASS SVGTextContentElement interface: objects.textPath must inherit property "getComputedTextLength()" with the proper type
+PASS SVGTextContentElement interface: objects.textPath must inherit property "getSubStringLength(unsigned long, unsigned long)" with the proper type
+PASS SVGTextContentElement interface: calling getSubStringLength(unsigned long, unsigned long) on objects.textPath with too few arguments must throw TypeError
+PASS SVGTextContentElement interface: objects.textPath must inherit property "getStartPositionOfChar(unsigned long)" with the proper type
+PASS SVGTextContentElement interface: calling getStartPositionOfChar(unsigned long) on objects.textPath with too few arguments must throw TypeError
+PASS SVGTextContentElement interface: objects.textPath must inherit property "getEndPositionOfChar(unsigned long)" with the proper type
+PASS SVGTextContentElement interface: calling getEndPositionOfChar(unsigned long) on objects.textPath with too few arguments must throw TypeError
+PASS SVGTextContentElement interface: objects.textPath must inherit property "getExtentOfChar(unsigned long)" with the proper type
+PASS SVGTextContentElement interface: calling getExtentOfChar(unsigned long) on objects.textPath with too few arguments must throw TypeError
+PASS SVGTextContentElement interface: objects.textPath must inherit property "getRotationOfChar(unsigned long)" with the proper type
+PASS SVGTextContentElement interface: calling getRotationOfChar(unsigned long) on objects.textPath with too few arguments must throw TypeError
+PASS SVGTextContentElement interface: objects.textPath must inherit property "getCharNumAtPosition(DOMPointInit)" with the proper type
+PASS SVGTextContentElement interface: calling getCharNumAtPosition(DOMPointInit) on objects.textPath with too few arguments must throw TypeError
+PASS SVGTextContentElement interface: objects.textPath must inherit property "selectSubString(unsigned long, unsigned long)" with the proper type
+PASS SVGTextContentElement interface: calling selectSubString(unsigned long, unsigned long) on objects.textPath with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.textPath must inherit property "transform" with the proper type
+PASS SVGGraphicsElement interface: objects.textPath must inherit property "getBBox(SVGBoundingBoxOptions)" with the proper type
+PASS SVGGraphicsElement interface: calling getBBox(SVGBoundingBoxOptions) on objects.textPath with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.textPath must inherit property "getCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.textPath must inherit property "getScreenCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.textPath must inherit property "requiredExtensions" with the proper type
+PASS SVGGraphicsElement interface: objects.textPath must inherit property "systemLanguage" with the proper type
+PASS SVGElement interface: objects.textPath must inherit property "className" with the proper type
+PASS SVGElement interface: objects.textPath must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.textPath must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.textPath must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.textPath must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGImageElement interface: existence and properties of interface object
+PASS SVGImageElement interface object length
+PASS SVGImageElement interface object name
+PASS SVGImageElement interface: existence and properties of interface prototype object
+PASS SVGImageElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGImageElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGImageElement interface: attribute x
+PASS SVGImageElement interface: attribute y
+PASS SVGImageElement interface: attribute width
+PASS SVGImageElement interface: attribute height
+PASS SVGImageElement interface: attribute preserveAspectRatio
+FAIL SVGImageElement interface: attribute crossOrigin assert_true: The prototype object must have a property "crossOrigin" expected true got false
+PASS SVGImageElement interface: attribute href
+PASS SVGImageElement must be primary interface of objects.image
+PASS Stringification of objects.image
+PASS SVGImageElement interface: objects.image must inherit property "x" with the proper type
+PASS SVGImageElement interface: objects.image must inherit property "y" with the proper type
+PASS SVGImageElement interface: objects.image must inherit property "width" with the proper type
+PASS SVGImageElement interface: objects.image must inherit property "height" with the proper type
+PASS SVGImageElement interface: objects.image must inherit property "preserveAspectRatio" with the proper type
+FAIL SVGImageElement interface: objects.image must inherit property "crossOrigin" with the proper type assert_inherits: property "crossOrigin" not found in prototype chain
+PASS SVGImageElement interface: objects.image must inherit property "href" with the proper type
+PASS SVGGraphicsElement interface: objects.image must inherit property "transform" with the proper type
+PASS SVGGraphicsElement interface: objects.image must inherit property "getBBox(SVGBoundingBoxOptions)" with the proper type
+PASS SVGGraphicsElement interface: calling getBBox(SVGBoundingBoxOptions) on objects.image with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.image must inherit property "getCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.image must inherit property "getScreenCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.image must inherit property "requiredExtensions" with the proper type
+PASS SVGGraphicsElement interface: objects.image must inherit property "systemLanguage" with the proper type
+PASS SVGElement interface: objects.image must inherit property "className" with the proper type
+PASS SVGElement interface: objects.image must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.image must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.image must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.image must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGForeignObjectElement interface: existence and properties of interface object
+PASS SVGForeignObjectElement interface object length
+PASS SVGForeignObjectElement interface object name
+PASS SVGForeignObjectElement interface: existence and properties of interface prototype object
+PASS SVGForeignObjectElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGForeignObjectElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGForeignObjectElement interface: attribute x
+PASS SVGForeignObjectElement interface: attribute y
+PASS SVGForeignObjectElement interface: attribute width
+PASS SVGForeignObjectElement interface: attribute height
+PASS SVGForeignObjectElement must be primary interface of objects.foreignObject
+PASS Stringification of objects.foreignObject
+PASS SVGForeignObjectElement interface: objects.foreignObject must inherit property "x" with the proper type
+PASS SVGForeignObjectElement interface: objects.foreignObject must inherit property "y" with the proper type
+PASS SVGForeignObjectElement interface: objects.foreignObject must inherit property "width" with the proper type
+PASS SVGForeignObjectElement interface: objects.foreignObject must inherit property "height" with the proper type
+PASS SVGGraphicsElement interface: objects.foreignObject must inherit property "transform" with the proper type
+PASS SVGGraphicsElement interface: objects.foreignObject must inherit property "getBBox(SVGBoundingBoxOptions)" with the proper type
+PASS SVGGraphicsElement interface: calling getBBox(SVGBoundingBoxOptions) on objects.foreignObject with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.foreignObject must inherit property "getCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.foreignObject must inherit property "getScreenCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.foreignObject must inherit property "requiredExtensions" with the proper type
+PASS SVGGraphicsElement interface: objects.foreignObject must inherit property "systemLanguage" with the proper type
+PASS SVGElement interface: objects.foreignObject must inherit property "className" with the proper type
+PASS SVGElement interface: objects.foreignObject must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.foreignObject must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.foreignObject must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.foreignObject must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGMarkerElement interface: existence and properties of interface object
+PASS SVGMarkerElement interface object length
+PASS SVGMarkerElement interface object name
+PASS SVGMarkerElement interface: existence and properties of interface prototype object
+PASS SVGMarkerElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGMarkerElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGMarkerElement interface: constant SVG_MARKERUNITS_UNKNOWN on interface object
+PASS SVGMarkerElement interface: constant SVG_MARKERUNITS_UNKNOWN on interface prototype object
+PASS SVGMarkerElement interface: constant SVG_MARKERUNITS_USERSPACEONUSE on interface object
+PASS SVGMarkerElement interface: constant SVG_MARKERUNITS_USERSPACEONUSE on interface prototype object
+PASS SVGMarkerElement interface: constant SVG_MARKERUNITS_STROKEWIDTH on interface object
+PASS SVGMarkerElement interface: constant SVG_MARKERUNITS_STROKEWIDTH on interface prototype object
+PASS SVGMarkerElement interface: constant SVG_MARKER_ORIENT_UNKNOWN on interface object
+PASS SVGMarkerElement interface: constant SVG_MARKER_ORIENT_UNKNOWN on interface prototype object
+PASS SVGMarkerElement interface: constant SVG_MARKER_ORIENT_AUTO on interface object
+PASS SVGMarkerElement interface: constant SVG_MARKER_ORIENT_AUTO on interface prototype object
+PASS SVGMarkerElement interface: constant SVG_MARKER_ORIENT_ANGLE on interface object
+PASS SVGMarkerElement interface: constant SVG_MARKER_ORIENT_ANGLE on interface prototype object
+PASS SVGMarkerElement interface: attribute refX
+PASS SVGMarkerElement interface: attribute refY
+PASS SVGMarkerElement interface: attribute markerUnits
+PASS SVGMarkerElement interface: attribute markerWidth
+PASS SVGMarkerElement interface: attribute markerHeight
+PASS SVGMarkerElement interface: attribute orientType
+PASS SVGMarkerElement interface: attribute orientAngle
+FAIL SVGMarkerElement interface: attribute orient assert_true: The prototype object must have a property "orient" expected true got false
+PASS SVGMarkerElement interface: operation setOrientToAuto()
+PASS SVGMarkerElement interface: operation setOrientToAngle(SVGAngle)
+PASS SVGMarkerElement interface: attribute viewBox
+PASS SVGMarkerElement interface: attribute preserveAspectRatio
+PASS SVGMarkerElement must be primary interface of objects.marker
+PASS Stringification of objects.marker
+PASS SVGMarkerElement interface: objects.marker must inherit property "SVG_MARKERUNITS_UNKNOWN" with the proper type
+PASS SVGMarkerElement interface: objects.marker must inherit property "SVG_MARKERUNITS_USERSPACEONUSE" with the proper type
+PASS SVGMarkerElement interface: objects.marker must inherit property "SVG_MARKERUNITS_STROKEWIDTH" with the proper type
+PASS SVGMarkerElement interface: objects.marker must inherit property "SVG_MARKER_ORIENT_UNKNOWN" with the proper type
+PASS SVGMarkerElement interface: objects.marker must inherit property "SVG_MARKER_ORIENT_AUTO" with the proper type
+PASS SVGMarkerElement interface: objects.marker must inherit property "SVG_MARKER_ORIENT_ANGLE" with the proper type
+PASS SVGMarkerElement interface: objects.marker must inherit property "refX" with the proper type
+PASS SVGMarkerElement interface: objects.marker must inherit property "refY" with the proper type
+PASS SVGMarkerElement interface: objects.marker must inherit property "markerUnits" with the proper type
+PASS SVGMarkerElement interface: objects.marker must inherit property "markerWidth" with the proper type
+PASS SVGMarkerElement interface: objects.marker must inherit property "markerHeight" with the proper type
+PASS SVGMarkerElement interface: objects.marker must inherit property "orientType" with the proper type
+PASS SVGMarkerElement interface: objects.marker must inherit property "orientAngle" with the proper type
+FAIL SVGMarkerElement interface: objects.marker must inherit property "orient" with the proper type assert_inherits: property "orient" not found in prototype chain
+PASS SVGMarkerElement interface: objects.marker must inherit property "setOrientToAuto()" with the proper type
+PASS SVGMarkerElement interface: objects.marker must inherit property "setOrientToAngle(SVGAngle)" with the proper type
+PASS SVGMarkerElement interface: calling setOrientToAngle(SVGAngle) on objects.marker with too few arguments must throw TypeError
+PASS SVGMarkerElement interface: objects.marker must inherit property "viewBox" with the proper type
+PASS SVGMarkerElement interface: objects.marker must inherit property "preserveAspectRatio" with the proper type
+PASS SVGElement interface: objects.marker must inherit property "className" with the proper type
+PASS SVGElement interface: objects.marker must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.marker must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.marker must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.marker must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGGradientElement interface: existence and properties of interface object
+PASS SVGGradientElement interface object length
+PASS SVGGradientElement interface object name
+PASS SVGGradientElement interface: existence and properties of interface prototype object
+PASS SVGGradientElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGGradientElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGGradientElement interface: constant SVG_SPREADMETHOD_UNKNOWN on interface object
+PASS SVGGradientElement interface: constant SVG_SPREADMETHOD_UNKNOWN on interface prototype object
+PASS SVGGradientElement interface: constant SVG_SPREADMETHOD_PAD on interface object
+PASS SVGGradientElement interface: constant SVG_SPREADMETHOD_PAD on interface prototype object
+PASS SVGGradientElement interface: constant SVG_SPREADMETHOD_REFLECT on interface object
+PASS SVGGradientElement interface: constant SVG_SPREADMETHOD_REFLECT on interface prototype object
+PASS SVGGradientElement interface: constant SVG_SPREADMETHOD_REPEAT on interface object
+PASS SVGGradientElement interface: constant SVG_SPREADMETHOD_REPEAT on interface prototype object
+PASS SVGGradientElement interface: attribute gradientUnits
+PASS SVGGradientElement interface: attribute gradientTransform
+PASS SVGGradientElement interface: attribute spreadMethod
+PASS SVGGradientElement interface: attribute href
+PASS SVGLinearGradientElement interface: existence and properties of interface object
+PASS SVGLinearGradientElement interface object length
+PASS SVGLinearGradientElement interface object name
+PASS SVGLinearGradientElement interface: existence and properties of interface prototype object
+PASS SVGLinearGradientElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGLinearGradientElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGLinearGradientElement interface: attribute x1
+PASS SVGLinearGradientElement interface: attribute y1
+PASS SVGLinearGradientElement interface: attribute x2
+PASS SVGLinearGradientElement interface: attribute y2
+PASS SVGLinearGradientElement must be primary interface of objects.linearGradient
+PASS Stringification of objects.linearGradient
+PASS SVGLinearGradientElement interface: objects.linearGradient must inherit property "x1" with the proper type
+PASS SVGLinearGradientElement interface: objects.linearGradient must inherit property "y1" with the proper type
+PASS SVGLinearGradientElement interface: objects.linearGradient must inherit property "x2" with the proper type
+PASS SVGLinearGradientElement interface: objects.linearGradient must inherit property "y2" with the proper type
+PASS SVGGradientElement interface: objects.linearGradient must inherit property "SVG_SPREADMETHOD_UNKNOWN" with the proper type
+PASS SVGGradientElement interface: objects.linearGradient must inherit property "SVG_SPREADMETHOD_PAD" with the proper type
+PASS SVGGradientElement interface: objects.linearGradient must inherit property "SVG_SPREADMETHOD_REFLECT" with the proper type
+PASS SVGGradientElement interface: objects.linearGradient must inherit property "SVG_SPREADMETHOD_REPEAT" with the proper type
+PASS SVGGradientElement interface: objects.linearGradient must inherit property "gradientUnits" with the proper type
+PASS SVGGradientElement interface: objects.linearGradient must inherit property "gradientTransform" with the proper type
+PASS SVGGradientElement interface: objects.linearGradient must inherit property "spreadMethod" with the proper type
+PASS SVGGradientElement interface: objects.linearGradient must inherit property "href" with the proper type
+PASS SVGElement interface: objects.linearGradient must inherit property "className" with the proper type
+PASS SVGElement interface: objects.linearGradient must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.linearGradient must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.linearGradient must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.linearGradient must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGRadialGradientElement interface: existence and properties of interface object
+PASS SVGRadialGradientElement interface object length
+PASS SVGRadialGradientElement interface object name
+PASS SVGRadialGradientElement interface: existence and properties of interface prototype object
+PASS SVGRadialGradientElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGRadialGradientElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGRadialGradientElement interface: attribute cx
+PASS SVGRadialGradientElement interface: attribute cy
+PASS SVGRadialGradientElement interface: attribute r
+PASS SVGRadialGradientElement interface: attribute fx
+PASS SVGRadialGradientElement interface: attribute fy
+PASS SVGRadialGradientElement interface: attribute fr
+PASS SVGRadialGradientElement must be primary interface of objects.radialGradient
+PASS Stringification of objects.radialGradient
+PASS SVGRadialGradientElement interface: objects.radialGradient must inherit property "cx" with the proper type
+PASS SVGRadialGradientElement interface: objects.radialGradient must inherit property "cy" with the proper type
+PASS SVGRadialGradientElement interface: objects.radialGradient must inherit property "r" with the proper type
+PASS SVGRadialGradientElement interface: objects.radialGradient must inherit property "fx" with the proper type
+PASS SVGRadialGradientElement interface: objects.radialGradient must inherit property "fy" with the proper type
+PASS SVGRadialGradientElement interface: objects.radialGradient must inherit property "fr" with the proper type
+PASS SVGGradientElement interface: objects.radialGradient must inherit property "SVG_SPREADMETHOD_UNKNOWN" with the proper type
+PASS SVGGradientElement interface: objects.radialGradient must inherit property "SVG_SPREADMETHOD_PAD" with the proper type
+PASS SVGGradientElement interface: objects.radialGradient must inherit property "SVG_SPREADMETHOD_REFLECT" with the proper type
+PASS SVGGradientElement interface: objects.radialGradient must inherit property "SVG_SPREADMETHOD_REPEAT" with the proper type
+PASS SVGGradientElement interface: objects.radialGradient must inherit property "gradientUnits" with the proper type
+PASS SVGGradientElement interface: objects.radialGradient must inherit property "gradientTransform" with the proper type
+PASS SVGGradientElement interface: objects.radialGradient must inherit property "spreadMethod" with the proper type
+PASS SVGGradientElement interface: objects.radialGradient must inherit property "href" with the proper type
+PASS SVGElement interface: objects.radialGradient must inherit property "className" with the proper type
+PASS SVGElement interface: objects.radialGradient must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.radialGradient must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.radialGradient must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.radialGradient must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGStopElement interface: existence and properties of interface object
+PASS SVGStopElement interface object length
+PASS SVGStopElement interface object name
+PASS SVGStopElement interface: existence and properties of interface prototype object
+PASS SVGStopElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGStopElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGStopElement interface: attribute offset
+PASS SVGStopElement must be primary interface of objects.stop
+PASS Stringification of objects.stop
+PASS SVGStopElement interface: objects.stop must inherit property "offset" with the proper type
+PASS SVGElement interface: objects.stop must inherit property "className" with the proper type
+PASS SVGElement interface: objects.stop must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.stop must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.stop must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.stop must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGPatternElement interface: existence and properties of interface object
+PASS SVGPatternElement interface object length
+PASS SVGPatternElement interface object name
+PASS SVGPatternElement interface: existence and properties of interface prototype object
+PASS SVGPatternElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGPatternElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGPatternElement interface: attribute patternUnits
+PASS SVGPatternElement interface: attribute patternContentUnits
+PASS SVGPatternElement interface: attribute patternTransform
+PASS SVGPatternElement interface: attribute x
+PASS SVGPatternElement interface: attribute y
+PASS SVGPatternElement interface: attribute width
+PASS SVGPatternElement interface: attribute height
+PASS SVGPatternElement interface: attribute viewBox
+PASS SVGPatternElement interface: attribute preserveAspectRatio
+PASS SVGPatternElement interface: attribute href
+PASS SVGPatternElement must be primary interface of objects.pattern
+PASS Stringification of objects.pattern
+PASS SVGPatternElement interface: objects.pattern must inherit property "patternUnits" with the proper type
+PASS SVGPatternElement interface: objects.pattern must inherit property "patternContentUnits" with the proper type
+PASS SVGPatternElement interface: objects.pattern must inherit property "patternTransform" with the proper type
+PASS SVGPatternElement interface: objects.pattern must inherit property "x" with the proper type
+PASS SVGPatternElement interface: objects.pattern must inherit property "y" with the proper type
+PASS SVGPatternElement interface: objects.pattern must inherit property "width" with the proper type
+PASS SVGPatternElement interface: objects.pattern must inherit property "height" with the proper type
+PASS SVGPatternElement interface: objects.pattern must inherit property "viewBox" with the proper type
+PASS SVGPatternElement interface: objects.pattern must inherit property "preserveAspectRatio" with the proper type
+PASS SVGPatternElement interface: objects.pattern must inherit property "href" with the proper type
+PASS SVGElement interface: objects.pattern must inherit property "className" with the proper type
+PASS SVGElement interface: objects.pattern must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.pattern must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.pattern must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.pattern must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGScriptElement interface: existence and properties of interface object
+PASS SVGScriptElement interface object length
+PASS SVGScriptElement interface object name
+PASS SVGScriptElement interface: existence and properties of interface prototype object
+PASS SVGScriptElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGScriptElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGScriptElement interface: attribute type
+FAIL SVGScriptElement interface: attribute crossOrigin assert_true: The prototype object must have a property "crossOrigin" expected true got false
+PASS SVGScriptElement interface: attribute href
+PASS SVGScriptElement must be primary interface of objects.script
+PASS Stringification of objects.script
+PASS SVGScriptElement interface: objects.script must inherit property "type" with the proper type
+FAIL SVGScriptElement interface: objects.script must inherit property "crossOrigin" with the proper type assert_inherits: property "crossOrigin" not found in prototype chain
+PASS SVGScriptElement interface: objects.script must inherit property "href" with the proper type
+PASS SVGElement interface: objects.script must inherit property "className" with the proper type
+PASS SVGElement interface: objects.script must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.script must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.script must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.script must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGAElement interface: existence and properties of interface object
+PASS SVGAElement interface object length
+PASS SVGAElement interface object name
+PASS SVGAElement interface: existence and properties of interface prototype object
+PASS SVGAElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGAElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGAElement interface: attribute target
+FAIL SVGAElement interface: attribute download assert_true: The prototype object must have a property "download" expected true got false
+FAIL SVGAElement interface: attribute ping assert_true: The prototype object must have a property "ping" expected true got false
+FAIL SVGAElement interface: attribute rel assert_true: The prototype object must have a property "rel" expected true got false
+FAIL SVGAElement interface: attribute relList assert_true: The prototype object must have a property "relList" expected true got false
+FAIL SVGAElement interface: attribute hreflang assert_true: The prototype object must have a property "hreflang" expected true got false
+FAIL SVGAElement interface: attribute type assert_true: The prototype object must have a property "type" expected true got false
+FAIL SVGAElement interface: attribute text assert_true: The prototype object must have a property "text" expected true got false
+FAIL SVGAElement interface: attribute referrerPolicy assert_true: The prototype object must have a property "referrerPolicy" expected true got false
+PASS SVGAElement interface: attribute href
+PASS SVGAElement must be primary interface of objects.a
+PASS Stringification of objects.a
+PASS SVGAElement interface: objects.a must inherit property "target" with the proper type
+FAIL SVGAElement interface: objects.a must inherit property "download" with the proper type assert_inherits: property "download" not found in prototype chain
+FAIL SVGAElement interface: objects.a must inherit property "ping" with the proper type assert_inherits: property "ping" not found in prototype chain
+FAIL SVGAElement interface: objects.a must inherit property "rel" with the proper type assert_inherits: property "rel" not found in prototype chain
+FAIL SVGAElement interface: objects.a must inherit property "relList" with the proper type assert_inherits: property "relList" not found in prototype chain
+FAIL SVGAElement interface: objects.a must inherit property "hreflang" with the proper type assert_inherits: property "hreflang" not found in prototype chain
+FAIL SVGAElement interface: objects.a must inherit property "type" with the proper type assert_inherits: property "type" not found in prototype chain
+FAIL SVGAElement interface: objects.a must inherit property "text" with the proper type assert_inherits: property "text" not found in prototype chain
+FAIL SVGAElement interface: objects.a must inherit property "referrerPolicy" with the proper type assert_inherits: property "referrerPolicy" not found in prototype chain
+PASS SVGAElement interface: objects.a must inherit property "href" with the proper type
+PASS SVGGraphicsElement interface: objects.a must inherit property "transform" with the proper type
+PASS SVGGraphicsElement interface: objects.a must inherit property "getBBox(SVGBoundingBoxOptions)" with the proper type
+PASS SVGGraphicsElement interface: calling getBBox(SVGBoundingBoxOptions) on objects.a with too few arguments must throw TypeError
+PASS SVGGraphicsElement interface: objects.a must inherit property "getCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.a must inherit property "getScreenCTM()" with the proper type
+PASS SVGGraphicsElement interface: objects.a must inherit property "requiredExtensions" with the proper type
+PASS SVGGraphicsElement interface: objects.a must inherit property "systemLanguage" with the proper type
+PASS SVGElement interface: objects.a must inherit property "className" with the proper type
+PASS SVGElement interface: objects.a must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.a must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.a must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.a must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS SVGViewElement interface: existence and properties of interface object
+PASS SVGViewElement interface object length
+PASS SVGViewElement interface object name
+PASS SVGViewElement interface: existence and properties of interface prototype object
+PASS SVGViewElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGViewElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGViewElement interface: attribute viewBox
+PASS SVGViewElement interface: attribute preserveAspectRatio
+PASS SVGViewElement must be primary interface of objects.view
+PASS Stringification of objects.view
+PASS SVGViewElement interface: objects.view must inherit property "viewBox" with the proper type
+PASS SVGViewElement interface: objects.view must inherit property "preserveAspectRatio" with the proper type
+PASS SVGElement interface: objects.view must inherit property "className" with the proper type
+PASS SVGElement interface: objects.view must inherit property "ownerSVGElement" with the proper type
+PASS SVGElement interface: objects.view must inherit property "viewportElement" with the proper type
+FAIL SVGElement interface: objects.view must inherit property "correspondingElement" with the proper type assert_inherits: property "correspondingElement" not found in prototype chain
+FAIL SVGElement interface: objects.view must inherit property "correspondingUseElement" with the proper type assert_inherits: property "correspondingUseElement" not found in prototype chain
+PASS Document interface: attribute rootElement
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/svg/struct/scripted/autofocus-attribute-expected.txt b/third_party/blink/web_tests/external/wpt/svg/struct/scripted/autofocus-attribute-expected.txt
new file mode 100644
index 0000000..653e39d71
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/svg/struct/scripted/autofocus-attribute-expected.txt
@@ -0,0 +1,6 @@
+This is a testharness.js-based test.
+FAIL <a> should support autofocus assert_equals: expected Element node <a href="#" autofocus="autofocus"></a> but got null
+FAIL Renderable element with tabindex should support autofocus assert_equals: expected Element node <path d="M0,0h8v8z" tabindex="0" autofocus="autofocus"></... but got null
+FAIL Never-rendered element with tabindex should not support autofocus promise_test: Unhandled rejection with value: object "TypeError: Cannot read property 'tagName' of null"
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/svg/struct/scripted/autofocus-attribute.svg b/third_party/blink/web_tests/external/wpt/svg/struct/scripted/autofocus-attribute.svg
new file mode 100644
index 0000000..d8f2574
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/svg/struct/scripted/autofocus-attribute.svg
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+     xmlns:h="http://www.w3.org/1999/xhtml">
+    <title>Autofocus attribute</title>
+    <metadata>
+        <h:link rel="help" href="https://svgwg.org/svg2-draft/struct.html#autofocusattribute"/>
+    </metadata>
+    <h:script src="/resources/testharness.js"/>
+    <h:script src="/resources/testharnessreport.js"/>
+    <h:script src="/html/semantics/forms/autofocus/resources/utils.js"/>
+    <script><![CDATA[
+const SVG_NS = 'http://www.w3.org/2000/svg';
+
+promise_test(async t => {
+  let w = window.open('blank.svg');
+  await waitForLoad(w);
+  t.add_cleanup(() => { w.close(); });
+  const svgA = w.document.createElementNS(SVG_NS, 'a');
+  svgA.setAttribute('href', '#');
+  svgA.setAttribute('autofocus', 'autofocus');
+  w.document.documentElement.appendChild(svgA);
+  await waitUntilStableAutofocusState(w);
+  assert_equals(w.document.activeElement, svgA);
+}, '<a> should support autofocus');
+
+promise_test(async t => {
+  let w = window.open('blank.svg');
+  await waitForLoad(w);
+  t.add_cleanup(() => { w.close(); });
+  const path = w.document.createElementNS(SVG_NS, 'path');
+  path.setAttribute('d', 'M0,0h8v8z');
+  path.setAttribute('tabindex', '0');
+  path.setAttribute('autofocus', 'autofocus');
+  w.document.documentElement.appendChild(path);
+  await waitUntilStableAutofocusState(w);
+  assert_equals(w.document.activeElement, path);
+}, 'Renderable element with tabindex should support autofocus');
+
+promise_test(async t => {
+  let w = window.open('blank.svg');
+  await waitForLoad(w);
+  t.add_cleanup(() => { w.close(); });
+  let element = w.document.createElementNS(SVG_NS, 'metadata');
+  element.setAttribute('tabindex', '0');
+  element.setAttribute('autofocus', 'autofocus');
+  w.document.documentElement.appendChild(element);
+  await waitUntilStableAutofocusState(w);
+  // https://html.spec.whatwg.org/C/#dom-documentorshadowroot-activeelement
+  // 6. If candidate's document element is non-null, then return that document
+  //    element.
+  assert_equals(w.document.activeElement.tagName, 'svg');
+}, 'Never-rendered element with tabindex should not support autofocus');
+]]></script>
+</svg>
diff --git a/third_party/blink/web_tests/external/wpt/svg/struct/scripted/blank.svg b/third_party/blink/web_tests/external/wpt/svg/struct/scripted/blank.svg
new file mode 100644
index 0000000..9e560bd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/svg/struct/scripted/blank.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"></svg>
diff --git a/third_party/blink/web_tests/external/wpt/touch-events/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/touch-events/idlharness.window-expected.txt
index c498dc5..10ad290 100644
--- a/third_party/blink/web_tests/external/wpt/touch-events/idlharness.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/touch-events/idlharness.window-expected.txt
@@ -1,49 +1,5 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface mixin GlobalEventHandlers: original interface mixin defined assert_true: Original interface mixin should be defined expected true got false
-PASS Touch interface: existence and properties of interface object
-PASS Touch interface object length
-PASS Touch interface object name
-PASS Touch interface: existence and properties of interface prototype object
-PASS Touch interface: existence and properties of interface prototype object's "constructor" property
-PASS Touch interface: existence and properties of interface prototype object's @@unscopables property
-PASS Touch interface: attribute identifier
-PASS Touch interface: attribute target
-PASS Touch interface: attribute screenX
-PASS Touch interface: attribute screenY
-PASS Touch interface: attribute clientX
-PASS Touch interface: attribute clientY
-PASS Touch interface: attribute pageX
-PASS Touch interface: attribute pageY
-PASS Touch interface: attribute radiusX
-PASS Touch interface: attribute radiusY
-PASS Touch interface: attribute rotationAngle
-PASS Touch interface: attribute force
-FAIL Touch interface: attribute altitudeAngle assert_true: The prototype object must have a property "altitudeAngle" expected true got false
-FAIL Touch interface: attribute azimuthAngle assert_true: The prototype object must have a property "azimuthAngle" expected true got false
-FAIL Touch interface: attribute touchType assert_true: The prototype object must have a property "touchType" expected true got false
-PASS TouchList interface: existence and properties of interface object
-PASS TouchList interface object length
-PASS TouchList interface object name
-PASS TouchList interface: existence and properties of interface prototype object
-PASS TouchList interface: existence and properties of interface prototype object's "constructor" property
-PASS TouchList interface: existence and properties of interface prototype object's @@unscopables property
-PASS TouchList interface: attribute length
-PASS TouchList interface: operation item(unsigned long)
-PASS TouchEvent interface: existence and properties of interface object
-PASS TouchEvent interface object length
-PASS TouchEvent interface object name
-PASS TouchEvent interface: existence and properties of interface prototype object
-PASS TouchEvent interface: existence and properties of interface prototype object's "constructor" property
-PASS TouchEvent interface: existence and properties of interface prototype object's @@unscopables property
-PASS TouchEvent interface: attribute touches
-PASS TouchEvent interface: attribute targetTouches
-PASS TouchEvent interface: attribute changedTouches
-PASS TouchEvent interface: attribute altKey
-PASS TouchEvent interface: attribute metaKey
-PASS TouchEvent interface: attribute ctrlKey
-PASS TouchEvent interface: attribute shiftKey
+FAIL idl_test setup promise_test: Unhandled rejection with value: "Document includes GlobalEventHandlers, but Document is undefined."
+PASS Partial interface mixin GlobalEventHandlers: original interface mixin defined
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/trusted-types/idlharness.window-expected.txt
deleted file mode 100644
index f306478..0000000
--- a/third_party/blink/web_tests/external/wpt/trusted-types/idlharness.window-expected.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS TrustedHTML interface: existence and properties of interface object
-PASS TrustedHTML interface object length
-PASS TrustedHTML interface object name
-PASS TrustedHTML interface: existence and properties of interface prototype object
-PASS TrustedHTML interface: existence and properties of interface prototype object's "constructor" property
-PASS TrustedHTML interface: existence and properties of interface prototype object's @@unscopables property
-PASS TrustedHTML interface: stringifier
-PASS TrustedScript interface: existence and properties of interface object
-PASS TrustedScript interface object length
-PASS TrustedScript interface object name
-PASS TrustedScript interface: existence and properties of interface prototype object
-PASS TrustedScript interface: existence and properties of interface prototype object's "constructor" property
-PASS TrustedScript interface: existence and properties of interface prototype object's @@unscopables property
-PASS TrustedScript interface: stringifier
-PASS TrustedScriptURL interface: existence and properties of interface object
-PASS TrustedScriptURL interface object length
-PASS TrustedScriptURL interface object name
-PASS TrustedScriptURL interface: existence and properties of interface prototype object
-PASS TrustedScriptURL interface: existence and properties of interface prototype object's "constructor" property
-PASS TrustedScriptURL interface: existence and properties of interface prototype object's @@unscopables property
-PASS TrustedScriptURL interface: stringifier
-PASS TrustedURL interface: existence and properties of interface object
-PASS TrustedURL interface object length
-PASS TrustedURL interface object name
-PASS TrustedURL interface: existence and properties of interface prototype object
-PASS TrustedURL interface: existence and properties of interface prototype object's "constructor" property
-PASS TrustedURL interface: existence and properties of interface prototype object's @@unscopables property
-PASS TrustedURL interface: stringifier
-PASS TrustedTypePolicyFactory interface: existence and properties of interface object
-PASS TrustedTypePolicyFactory interface object length
-PASS TrustedTypePolicyFactory interface object name
-PASS TrustedTypePolicyFactory interface: existence and properties of interface prototype object
-PASS TrustedTypePolicyFactory interface: existence and properties of interface prototype object's "constructor" property
-PASS TrustedTypePolicyFactory interface: existence and properties of interface prototype object's @@unscopables property
-PASS TrustedTypePolicy interface: existence and properties of interface object
-PASS TrustedTypePolicy interface object length
-PASS TrustedTypePolicy interface object name
-PASS TrustedTypePolicy interface: existence and properties of interface prototype object
-PASS TrustedTypePolicy interface: existence and properties of interface prototype object's "constructor" property
-PASS TrustedTypePolicy interface: existence and properties of interface prototype object's @@unscopables property
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/vibration/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/vibration/idlharness.window-expected.txt
deleted file mode 100644
index 23bf13b5..0000000
--- a/third_party/blink/web_tests/external/wpt/vibration/idlharness.window-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/wake-lock/idlharness.https.any-expected.txt b/third_party/blink/web_tests/external/wpt/wake-lock/idlharness.https.any-expected.txt
deleted file mode 100644
index adb6cc43..0000000
--- a/third_party/blink/web_tests/external/wpt/wake-lock/idlharness.https.any-expected.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/wake-lock/idlharness.https.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/wake-lock/idlharness.https.any.worker-expected.txt
deleted file mode 100644
index adb6cc43..0000000
--- a/third_party/blink/web_tests/external/wpt/wake-lock/idlharness.https.any.worker-expected.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animation/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animation/idlharness.window-expected.txt
index 91e59de..75523c9 100644
--- a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animation/idlharness.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animation/idlharness.window-expected.txt
@@ -1,6 +1,58 @@
 This is a testharness.js-based test.
-FAIL Animation interface. promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+Found 54 tests; 45 PASS, 9 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Animation interface.
+PASS Animation interface: existence and properties of interface object
+PASS Animation interface object length
+PASS Animation interface object name
+PASS Animation interface: existence and properties of interface prototype object
+PASS Animation interface: existence and properties of interface prototype object's "constructor" property
+PASS Animation interface: existence and properties of interface prototype object's @@unscopables property
+PASS Animation interface: attribute id
+PASS Animation interface: attribute effect
+FAIL Animation interface: attribute timeline assert_equals: setter must be function for PutForwards, Replaceable, or non-readonly attributes expected "function" but got "undefined"
+PASS Animation interface: attribute startTime
+PASS Animation interface: attribute currentTime
+PASS Animation interface: attribute playbackRate
+PASS Animation interface: attribute playState
+FAIL Animation interface: attribute replaceState assert_true: The prototype object must have a property "replaceState" expected true got false
+PASS Animation interface: attribute pending
+PASS Animation interface: attribute ready
+PASS Animation interface: attribute finished
+PASS Animation interface: attribute onfinish
+PASS Animation interface: attribute oncancel
+FAIL Animation interface: attribute onremove assert_true: The prototype object must have a property "onremove" expected true got false
+PASS Animation interface: operation cancel()
+PASS Animation interface: operation finish()
+PASS Animation interface: operation play()
+PASS Animation interface: operation pause()
+PASS Animation interface: operation updatePlaybackRate(double)
+PASS Animation interface: operation reverse()
+FAIL Animation interface: operation persist() assert_own_property: interface prototype object missing non-static operation expected property "persist" missing
+FAIL Animation interface: operation commitStyles() assert_own_property: interface prototype object missing non-static operation expected property "commitStyles" missing
+PASS Animation must be primary interface of new Animation()
+PASS Stringification of new Animation()
+PASS Animation interface: new Animation() must inherit property "id" with the proper type
+PASS Animation interface: new Animation() must inherit property "effect" with the proper type
+PASS Animation interface: new Animation() must inherit property "timeline" with the proper type
+PASS Animation interface: new Animation() must inherit property "startTime" with the proper type
+PASS Animation interface: new Animation() must inherit property "currentTime" with the proper type
+PASS Animation interface: new Animation() must inherit property "playbackRate" with the proper type
+PASS Animation interface: new Animation() must inherit property "playState" with the proper type
+FAIL Animation interface: new Animation() must inherit property "replaceState" with the proper type assert_inherits: property "replaceState" not found in prototype chain
+PASS Animation interface: new Animation() must inherit property "pending" with the proper type
+PASS Animation interface: new Animation() must inherit property "ready" with the proper type
+PASS Animation interface: new Animation() must inherit property "finished" with the proper type
+PASS Animation interface: new Animation() must inherit property "onfinish" with the proper type
+PASS Animation interface: new Animation() must inherit property "oncancel" with the proper type
+FAIL Animation interface: new Animation() must inherit property "onremove" with the proper type assert_inherits: property "onremove" not found in prototype chain
+PASS Animation interface: new Animation() must inherit property "cancel()" with the proper type
+PASS Animation interface: new Animation() must inherit property "finish()" with the proper type
+PASS Animation interface: new Animation() must inherit property "play()" with the proper type
+PASS Animation interface: new Animation() must inherit property "pause()" with the proper type
+PASS Animation interface: new Animation() must inherit property "updatePlaybackRate(double)" with the proper type
+PASS Animation interface: calling updatePlaybackRate(double) on new Animation() with too few arguments must throw TypeError
+PASS Animation interface: new Animation() must inherit property "reverse()" with the proper type
+FAIL Animation interface: new Animation() must inherit property "persist()" with the proper type assert_inherits: property "persist" not found in prototype chain
+FAIL Animation interface: new Animation() must inherit property "commitStyles()" with the proper type assert_inherits: property "commitStyles" not found in prototype chain
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/KeyframeEffect/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/web-animations/interfaces/KeyframeEffect/idlharness.window-expected.txt
index 66fc2d2..8c8f9cb 100644
--- a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/KeyframeEffect/idlharness.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/web-animations/interfaces/KeyframeEffect/idlharness.window-expected.txt
@@ -1,6 +1,23 @@
 This is a testharness.js-based test.
-FAIL KeyframeEffect interface. promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+PASS KeyframeEffect interface.
+PASS KeyframeEffect interface: existence and properties of interface object
+PASS KeyframeEffect interface object length
+PASS KeyframeEffect interface object name
+PASS KeyframeEffect interface: existence and properties of interface prototype object
+PASS KeyframeEffect interface: existence and properties of interface prototype object's "constructor" property
+PASS KeyframeEffect interface: existence and properties of interface prototype object's @@unscopables property
+PASS KeyframeEffect interface: attribute target
+FAIL KeyframeEffect interface: attribute iterationComposite assert_true: The prototype object must have a property "iterationComposite" expected true got false
+PASS KeyframeEffect interface: attribute composite
+PASS KeyframeEffect interface: operation getKeyframes()
+PASS KeyframeEffect interface: operation setKeyframes(object)
+PASS KeyframeEffect must be primary interface of new KeyframeEffect(null, null)
+PASS Stringification of new KeyframeEffect(null, null)
+FAIL KeyframeEffect interface: new KeyframeEffect(null, null) must inherit property "target" with the proper type Unrecognized type Element
+FAIL KeyframeEffect interface: new KeyframeEffect(null, null) must inherit property "iterationComposite" with the proper type assert_inherits: property "iterationComposite" not found in prototype chain
+PASS KeyframeEffect interface: new KeyframeEffect(null, null) must inherit property "composite" with the proper type
+PASS KeyframeEffect interface: new KeyframeEffect(null, null) must inherit property "getKeyframes()" with the proper type
+PASS KeyframeEffect interface: new KeyframeEffect(null, null) must inherit property "setKeyframes(object)" with the proper type
+PASS KeyframeEffect interface: calling setKeyframes(object) on new KeyframeEffect(null, null) with too few arguments must throw TypeError
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/web-locks/idlharness.tentative.https.any-expected.txt b/third_party/blink/web_tests/external/wpt/web-locks/idlharness.tentative.https.any-expected.txt
deleted file mode 100644
index 3bb4ac901..0000000
--- a/third_party/blink/web_tests/external/wpt/web-locks/idlharness.tentative.https.any-expected.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This is a testharness.js-based test.
-FAIL idlharness promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/web-locks/idlharness.tentative.https.any.serviceworker-expected.txt b/third_party/blink/web_tests/external/wpt/web-locks/idlharness.tentative.https.any.serviceworker-expected.txt
deleted file mode 100644
index 3bb4ac901..0000000
--- a/third_party/blink/web_tests/external/wpt/web-locks/idlharness.tentative.https.any.serviceworker-expected.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This is a testharness.js-based test.
-FAIL idlharness promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/web-locks/idlharness.tentative.https.any.sharedworker-expected.txt b/third_party/blink/web_tests/external/wpt/web-locks/idlharness.tentative.https.any.sharedworker-expected.txt
deleted file mode 100644
index 3bb4ac901..0000000
--- a/third_party/blink/web_tests/external/wpt/web-locks/idlharness.tentative.https.any.sharedworker-expected.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This is a testharness.js-based test.
-FAIL idlharness promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/web-locks/idlharness.tentative.https.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/web-locks/idlharness.tentative.https.any.worker-expected.txt
deleted file mode 100644
index 3bb4ac901..0000000
--- a/third_party/blink/web_tests/external/wpt/web-locks/idlharness.tentative.https.any.worker-expected.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This is a testharness.js-based test.
-FAIL idlharness promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/web-nfc/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/web-nfc/idlharness.https.window-expected.txt
index adb6cc43..4abf6fc 100644
--- a/third_party/blink/web_tests/external/wpt/web-nfc/idlharness.https.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/web-nfc/idlharness.https.window-expected.txt
@@ -1,6 +1,74 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+Found 70 tests; 68 PASS, 2 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS NDEFMessage interface: existence and properties of interface object
+PASS NDEFMessage interface object length
+PASS NDEFMessage interface object name
+PASS NDEFMessage interface: existence and properties of interface prototype object
+PASS NDEFMessage interface: existence and properties of interface prototype object's "constructor" property
+PASS NDEFMessage interface: existence and properties of interface prototype object's @@unscopables property
+PASS NDEFMessage interface: attribute url
+PASS NDEFMessage interface: attribute records
+PASS NDEFRecord interface: existence and properties of interface object
+PASS NDEFRecord interface object length
+PASS NDEFRecord interface object name
+PASS NDEFRecord interface: existence and properties of interface prototype object
+PASS NDEFRecord interface: existence and properties of interface prototype object's "constructor" property
+PASS NDEFRecord interface: existence and properties of interface prototype object's @@unscopables property
+PASS NDEFRecord interface: attribute recordType
+PASS NDEFRecord interface: attribute mediaType
+FAIL NDEFRecord interface: attribute id assert_true: The prototype object must have a property "id" expected true got false
+PASS NDEFRecord interface: operation toText()
+PASS NDEFRecord interface: operation toArrayBuffer()
+PASS NDEFRecord interface: operation toJSON()
+FAIL NDEFRecord interface: operation toRecords() assert_own_property: interface prototype object missing non-static operation expected property "toRecords" missing
+PASS NFCWriter interface: existence and properties of interface object
+PASS NFCWriter interface object length
+PASS NFCWriter interface object name
+PASS NFCWriter interface: existence and properties of interface prototype object
+PASS NFCWriter interface: existence and properties of interface prototype object's "constructor" property
+PASS NFCWriter interface: existence and properties of interface prototype object's @@unscopables property
+PASS NFCWriter interface: operation push(NDEFMessageSource, NFCPushOptions)
+PASS NFCWriter must be primary interface of new NFCWriter();
+PASS Stringification of new NFCWriter();
+PASS NFCWriter interface: new NFCWriter(); must inherit property "push(NDEFMessageSource, NFCPushOptions)" with the proper type
+PASS NFCWriter interface: calling push(NDEFMessageSource, NFCPushOptions) on new NFCWriter(); with too few arguments must throw TypeError
+PASS NFCReader interface: existence and properties of interface object
+PASS NFCReader interface object length
+PASS NFCReader interface object name
+PASS NFCReader interface: existence and properties of interface prototype object
+PASS NFCReader interface: existence and properties of interface prototype object's "constructor" property
+PASS NFCReader interface: existence and properties of interface prototype object's @@unscopables property
+PASS NFCReader interface: attribute onreading
+PASS NFCReader interface: attribute onerror
+PASS NFCReader interface: operation scan(NFCScanOptions)
+PASS NFCReader must be primary interface of new NFCReader();
+PASS Stringification of new NFCReader();
+PASS NFCReader interface: new NFCReader(); must inherit property "onreading" with the proper type
+PASS NFCReader interface: new NFCReader(); must inherit property "onerror" with the proper type
+PASS NFCReader interface: new NFCReader(); must inherit property "scan(NFCScanOptions)" with the proper type
+PASS NFCReader interface: calling scan(NFCScanOptions) on new NFCReader(); with too few arguments must throw TypeError
+PASS NFCReadingEvent interface: existence and properties of interface object
+PASS NFCReadingEvent interface object length
+PASS NFCReadingEvent interface object name
+PASS NFCReadingEvent interface: existence and properties of interface prototype object
+PASS NFCReadingEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS NFCReadingEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS NFCReadingEvent interface: attribute serialNumber
+PASS NFCReadingEvent interface: attribute message
+PASS NFCReadingEvent must be primary interface of new NFCReadingEvent("reading", { message: {"url":"/custom/path","records":[{"recordType":"text","data":"Hello World"}]} })
+PASS Stringification of new NFCReadingEvent("reading", { message: {"url":"/custom/path","records":[{"recordType":"text","data":"Hello World"}]} })
+PASS NFCReadingEvent interface: new NFCReadingEvent("reading", { message: {"url":"/custom/path","records":[{"recordType":"text","data":"Hello World"}]} }) must inherit property "serialNumber" with the proper type
+PASS NFCReadingEvent interface: new NFCReadingEvent("reading", { message: {"url":"/custom/path","records":[{"recordType":"text","data":"Hello World"}]} }) must inherit property "message" with the proper type
+PASS NFCErrorEvent interface: existence and properties of interface object
+PASS NFCErrorEvent interface object length
+PASS NFCErrorEvent interface object name
+PASS NFCErrorEvent interface: existence and properties of interface prototype object
+PASS NFCErrorEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS NFCErrorEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS NFCErrorEvent interface: attribute error
+PASS NFCErrorEvent must be primary interface of new NFCErrorEvent("error", { error: new DOMException() });
+PASS Stringification of new NFCErrorEvent("error", { error: new DOMException() });
+PASS NFCErrorEvent interface: new NFCErrorEvent("error", { error: new DOMException() }); must inherit property "error" with the proper type
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/web-share/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/web-share/idlharness.https.window-expected.txt
deleted file mode 100644
index 23bf13b5..0000000
--- a/third_party/blink/web_tests/external/wpt/web-share/idlharness.https.window-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/webaudio/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/webaudio/idlharness.https.window-expected.txt
index adb6cc43..29a7407 100644
--- a/third_party/blink/web_tests/external/wpt/webaudio/idlharness.https.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/webaudio/idlharness.https.window-expected.txt
@@ -1,6 +1,1129 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+Found 1115 tests; 1104 PASS, 11 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS BaseAudioContext interface: existence and properties of interface object
+PASS BaseAudioContext interface object length
+PASS BaseAudioContext interface object name
+PASS BaseAudioContext interface: existence and properties of interface prototype object
+PASS BaseAudioContext interface: existence and properties of interface prototype object's "constructor" property
+PASS BaseAudioContext interface: existence and properties of interface prototype object's @@unscopables property
+PASS BaseAudioContext interface: attribute destination
+PASS BaseAudioContext interface: attribute sampleRate
+PASS BaseAudioContext interface: attribute currentTime
+PASS BaseAudioContext interface: attribute listener
+PASS BaseAudioContext interface: attribute state
+PASS BaseAudioContext interface: attribute audioWorklet
+PASS BaseAudioContext interface: attribute onstatechange
+PASS BaseAudioContext interface: operation createAnalyser()
+PASS BaseAudioContext interface: operation createBiquadFilter()
+PASS BaseAudioContext interface: operation createBuffer(unsigned long, unsigned long, float)
+PASS BaseAudioContext interface: operation createBufferSource()
+PASS BaseAudioContext interface: operation createChannelMerger(unsigned long)
+PASS BaseAudioContext interface: operation createChannelSplitter(unsigned long)
+PASS BaseAudioContext interface: operation createConstantSource()
+PASS BaseAudioContext interface: operation createConvolver()
+PASS BaseAudioContext interface: operation createDelay(double)
+PASS BaseAudioContext interface: operation createDynamicsCompressor()
+PASS BaseAudioContext interface: operation createGain()
+PASS BaseAudioContext interface: operation createIIRFilter([object Object], [object Object])
+PASS BaseAudioContext interface: operation createOscillator()
+PASS BaseAudioContext interface: operation createPanner()
+PASS BaseAudioContext interface: operation createPeriodicWave([object Object], [object Object], PeriodicWaveConstraints)
+PASS BaseAudioContext interface: operation createScriptProcessor(unsigned long, unsigned long, unsigned long)
+PASS BaseAudioContext interface: operation createStereoPanner()
+PASS BaseAudioContext interface: operation createWaveShaper()
+PASS BaseAudioContext interface: operation decodeAudioData(ArrayBuffer, DecodeSuccessCallback, DecodeErrorCallback)
+PASS AudioContext interface: existence and properties of interface object
+PASS AudioContext interface object length
+PASS AudioContext interface object name
+PASS AudioContext interface: existence and properties of interface prototype object
+PASS AudioContext interface: existence and properties of interface prototype object's "constructor" property
+PASS AudioContext interface: existence and properties of interface prototype object's @@unscopables property
+PASS AudioContext interface: attribute baseLatency
+FAIL AudioContext interface: attribute outputLatency assert_true: The prototype object must have a property "outputLatency" expected true got false
+PASS AudioContext interface: operation getOutputTimestamp()
+PASS AudioContext interface: operation resume()
+PASS AudioContext interface: operation suspend()
+PASS AudioContext interface: operation close()
+PASS AudioContext interface: operation createMediaElementSource(HTMLMediaElement)
+PASS AudioContext interface: operation createMediaStreamSource(MediaStream)
+FAIL AudioContext interface: operation createMediaStreamTrackSource(MediaStreamTrack) assert_own_property: interface prototype object missing non-static operation expected property "createMediaStreamTrackSource" missing
+PASS AudioContext interface: operation createMediaStreamDestination()
+PASS AudioContext must be primary interface of context
+PASS Stringification of context
+PASS AudioContext interface: context must inherit property "baseLatency" with the proper type
+FAIL AudioContext interface: context must inherit property "outputLatency" with the proper type assert_inherits: property "outputLatency" not found in prototype chain
+PASS AudioContext interface: context must inherit property "getOutputTimestamp()" with the proper type
+PASS AudioContext interface: context must inherit property "resume()" with the proper type
+PASS AudioContext interface: context must inherit property "suspend()" with the proper type
+PASS AudioContext interface: context must inherit property "close()" with the proper type
+PASS AudioContext interface: context must inherit property "createMediaElementSource(HTMLMediaElement)" with the proper type
+PASS AudioContext interface: calling createMediaElementSource(HTMLMediaElement) on context with too few arguments must throw TypeError
+PASS AudioContext interface: context must inherit property "createMediaStreamSource(MediaStream)" with the proper type
+PASS AudioContext interface: calling createMediaStreamSource(MediaStream) on context with too few arguments must throw TypeError
+FAIL AudioContext interface: context must inherit property "createMediaStreamTrackSource(MediaStreamTrack)" with the proper type assert_inherits: property "createMediaStreamTrackSource" not found in prototype chain
+FAIL AudioContext interface: calling createMediaStreamTrackSource(MediaStreamTrack) on context with too few arguments must throw TypeError assert_inherits: property "createMediaStreamTrackSource" not found in prototype chain
+PASS AudioContext interface: context must inherit property "createMediaStreamDestination()" with the proper type
+PASS BaseAudioContext interface: context must inherit property "destination" with the proper type
+PASS BaseAudioContext interface: context must inherit property "sampleRate" with the proper type
+PASS BaseAudioContext interface: context must inherit property "currentTime" with the proper type
+PASS BaseAudioContext interface: context must inherit property "listener" with the proper type
+PASS BaseAudioContext interface: context must inherit property "state" with the proper type
+PASS BaseAudioContext interface: context must inherit property "audioWorklet" with the proper type
+PASS BaseAudioContext interface: context must inherit property "onstatechange" with the proper type
+PASS BaseAudioContext interface: context must inherit property "createAnalyser()" with the proper type
+PASS BaseAudioContext interface: context must inherit property "createBiquadFilter()" with the proper type
+PASS BaseAudioContext interface: context must inherit property "createBuffer(unsigned long, unsigned long, float)" with the proper type
+PASS BaseAudioContext interface: calling createBuffer(unsigned long, unsigned long, float) on context with too few arguments must throw TypeError
+PASS BaseAudioContext interface: context must inherit property "createBufferSource()" with the proper type
+PASS BaseAudioContext interface: context must inherit property "createChannelMerger(unsigned long)" with the proper type
+PASS BaseAudioContext interface: calling createChannelMerger(unsigned long) on context with too few arguments must throw TypeError
+PASS BaseAudioContext interface: context must inherit property "createChannelSplitter(unsigned long)" with the proper type
+PASS BaseAudioContext interface: calling createChannelSplitter(unsigned long) on context with too few arguments must throw TypeError
+PASS BaseAudioContext interface: context must inherit property "createConstantSource()" with the proper type
+PASS BaseAudioContext interface: context must inherit property "createConvolver()" with the proper type
+PASS BaseAudioContext interface: context must inherit property "createDelay(double)" with the proper type
+PASS BaseAudioContext interface: calling createDelay(double) on context with too few arguments must throw TypeError
+PASS BaseAudioContext interface: context must inherit property "createDynamicsCompressor()" with the proper type
+PASS BaseAudioContext interface: context must inherit property "createGain()" with the proper type
+PASS BaseAudioContext interface: context must inherit property "createIIRFilter([object Object], [object Object])" with the proper type
+PASS BaseAudioContext interface: calling createIIRFilter([object Object], [object Object]) on context with too few arguments must throw TypeError
+PASS BaseAudioContext interface: context must inherit property "createOscillator()" with the proper type
+PASS BaseAudioContext interface: context must inherit property "createPanner()" with the proper type
+PASS BaseAudioContext interface: context must inherit property "createPeriodicWave([object Object], [object Object], PeriodicWaveConstraints)" with the proper type
+PASS BaseAudioContext interface: calling createPeriodicWave([object Object], [object Object], PeriodicWaveConstraints) on context with too few arguments must throw TypeError
+PASS BaseAudioContext interface: context must inherit property "createScriptProcessor(unsigned long, unsigned long, unsigned long)" with the proper type
+PASS BaseAudioContext interface: calling createScriptProcessor(unsigned long, unsigned long, unsigned long) on context with too few arguments must throw TypeError
+PASS BaseAudioContext interface: context must inherit property "createStereoPanner()" with the proper type
+PASS BaseAudioContext interface: context must inherit property "createWaveShaper()" with the proper type
+PASS BaseAudioContext interface: context must inherit property "decodeAudioData(ArrayBuffer, DecodeSuccessCallback, DecodeErrorCallback)" with the proper type
+PASS BaseAudioContext interface: calling decodeAudioData(ArrayBuffer, DecodeSuccessCallback, DecodeErrorCallback) on context with too few arguments must throw TypeError
+PASS OfflineAudioContext interface: existence and properties of interface object
+PASS OfflineAudioContext interface object length
+PASS OfflineAudioContext interface object name
+PASS OfflineAudioContext interface: existence and properties of interface prototype object
+PASS OfflineAudioContext interface: existence and properties of interface prototype object's "constructor" property
+PASS OfflineAudioContext interface: existence and properties of interface prototype object's @@unscopables property
+PASS OfflineAudioContext interface: operation startRendering()
+PASS OfflineAudioContext interface: operation resume()
+PASS OfflineAudioContext interface: operation suspend(double)
+PASS OfflineAudioContext interface: attribute length
+PASS OfflineAudioContext interface: attribute oncomplete
+PASS OfflineAudioContext must be primary interface of new OfflineAudioContext(1, 1, sample_rate)
+PASS Stringification of new OfflineAudioContext(1, 1, sample_rate)
+PASS OfflineAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "startRendering()" with the proper type
+PASS OfflineAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "resume()" with the proper type
+PASS OfflineAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "suspend(double)" with the proper type
+PASS OfflineAudioContext interface: calling suspend(double) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError
+PASS OfflineAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "length" with the proper type
+PASS OfflineAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "oncomplete" with the proper type
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "destination" with the proper type
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "sampleRate" with the proper type
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "currentTime" with the proper type
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "listener" with the proper type
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "state" with the proper type
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "audioWorklet" with the proper type
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "onstatechange" with the proper type
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createAnalyser()" with the proper type
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createBiquadFilter()" with the proper type
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createBuffer(unsigned long, unsigned long, float)" with the proper type
+PASS BaseAudioContext interface: calling createBuffer(unsigned long, unsigned long, float) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createBufferSource()" with the proper type
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createChannelMerger(unsigned long)" with the proper type
+PASS BaseAudioContext interface: calling createChannelMerger(unsigned long) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createChannelSplitter(unsigned long)" with the proper type
+PASS BaseAudioContext interface: calling createChannelSplitter(unsigned long) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createConstantSource()" with the proper type
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createConvolver()" with the proper type
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createDelay(double)" with the proper type
+PASS BaseAudioContext interface: calling createDelay(double) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createDynamicsCompressor()" with the proper type
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createGain()" with the proper type
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createIIRFilter([object Object], [object Object])" with the proper type
+PASS BaseAudioContext interface: calling createIIRFilter([object Object], [object Object]) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createOscillator()" with the proper type
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createPanner()" with the proper type
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createPeriodicWave([object Object], [object Object], PeriodicWaveConstraints)" with the proper type
+PASS BaseAudioContext interface: calling createPeriodicWave([object Object], [object Object], PeriodicWaveConstraints) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createScriptProcessor(unsigned long, unsigned long, unsigned long)" with the proper type
+PASS BaseAudioContext interface: calling createScriptProcessor(unsigned long, unsigned long, unsigned long) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createStereoPanner()" with the proper type
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createWaveShaper()" with the proper type
+PASS BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "decodeAudioData(ArrayBuffer, DecodeSuccessCallback, DecodeErrorCallback)" with the proper type
+PASS BaseAudioContext interface: calling decodeAudioData(ArrayBuffer, DecodeSuccessCallback, DecodeErrorCallback) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError
+PASS OfflineAudioCompletionEvent interface: existence and properties of interface object
+PASS OfflineAudioCompletionEvent interface object length
+PASS OfflineAudioCompletionEvent interface object name
+PASS OfflineAudioCompletionEvent interface: existence and properties of interface prototype object
+PASS OfflineAudioCompletionEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS OfflineAudioCompletionEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS OfflineAudioCompletionEvent interface: attribute renderedBuffer
+PASS OfflineAudioCompletionEvent must be primary interface of new OfflineAudioCompletionEvent("", {renderedBuffer: buffer})
+PASS Stringification of new OfflineAudioCompletionEvent("", {renderedBuffer: buffer})
+PASS OfflineAudioCompletionEvent interface: new OfflineAudioCompletionEvent("", {renderedBuffer: buffer}) must inherit property "renderedBuffer" with the proper type
+PASS AudioBuffer interface: existence and properties of interface object
+PASS AudioBuffer interface object length
+PASS AudioBuffer interface object name
+PASS AudioBuffer interface: existence and properties of interface prototype object
+PASS AudioBuffer interface: existence and properties of interface prototype object's "constructor" property
+PASS AudioBuffer interface: existence and properties of interface prototype object's @@unscopables property
+PASS AudioBuffer interface: attribute sampleRate
+PASS AudioBuffer interface: attribute length
+PASS AudioBuffer interface: attribute duration
+PASS AudioBuffer interface: attribute numberOfChannels
+PASS AudioBuffer interface: operation getChannelData(unsigned long)
+PASS AudioBuffer interface: operation copyFromChannel(Float32Array, unsigned long, unsigned long)
+PASS AudioBuffer interface: operation copyToChannel(Float32Array, unsigned long, unsigned long)
+PASS AudioBuffer must be primary interface of buffer
+PASS Stringification of buffer
+PASS AudioBuffer interface: buffer must inherit property "sampleRate" with the proper type
+PASS AudioBuffer interface: buffer must inherit property "length" with the proper type
+PASS AudioBuffer interface: buffer must inherit property "duration" with the proper type
+PASS AudioBuffer interface: buffer must inherit property "numberOfChannels" with the proper type
+PASS AudioBuffer interface: buffer must inherit property "getChannelData(unsigned long)" with the proper type
+PASS AudioBuffer interface: calling getChannelData(unsigned long) on buffer with too few arguments must throw TypeError
+PASS AudioBuffer interface: buffer must inherit property "copyFromChannel(Float32Array, unsigned long, unsigned long)" with the proper type
+PASS AudioBuffer interface: calling copyFromChannel(Float32Array, unsigned long, unsigned long) on buffer with too few arguments must throw TypeError
+PASS AudioBuffer interface: buffer must inherit property "copyToChannel(Float32Array, unsigned long, unsigned long)" with the proper type
+PASS AudioBuffer interface: calling copyToChannel(Float32Array, unsigned long, unsigned long) on buffer with too few arguments must throw TypeError
+PASS AudioNode interface: existence and properties of interface object
+PASS AudioNode interface object length
+PASS AudioNode interface object name
+PASS AudioNode interface: existence and properties of interface prototype object
+PASS AudioNode interface: existence and properties of interface prototype object's "constructor" property
+PASS AudioNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS AudioNode interface: operation connect(AudioNode, unsigned long, unsigned long)
+PASS AudioNode interface: operation connect(AudioParam, unsigned long)
+PASS AudioNode interface: operation disconnect()
+PASS AudioNode interface: operation disconnect(unsigned long)
+PASS AudioNode interface: operation disconnect(AudioNode)
+PASS AudioNode interface: operation disconnect(AudioNode, unsigned long)
+PASS AudioNode interface: operation disconnect(AudioNode, unsigned long, unsigned long)
+PASS AudioNode interface: operation disconnect(AudioParam)
+PASS AudioNode interface: operation disconnect(AudioParam, unsigned long)
+PASS AudioNode interface: attribute context
+PASS AudioNode interface: attribute numberOfInputs
+PASS AudioNode interface: attribute numberOfOutputs
+PASS AudioNode interface: attribute channelCount
+PASS AudioNode interface: attribute channelCountMode
+PASS AudioNode interface: attribute channelInterpretation
+PASS AudioParam interface: existence and properties of interface object
+PASS AudioParam interface object length
+PASS AudioParam interface object name
+PASS AudioParam interface: existence and properties of interface prototype object
+PASS AudioParam interface: existence and properties of interface prototype object's "constructor" property
+PASS AudioParam interface: existence and properties of interface prototype object's @@unscopables property
+PASS AudioParam interface: attribute value
+PASS AudioParam interface: attribute automationRate
+PASS AudioParam interface: attribute defaultValue
+PASS AudioParam interface: attribute minValue
+PASS AudioParam interface: attribute maxValue
+PASS AudioParam interface: operation setValueAtTime(float, double)
+PASS AudioParam interface: operation linearRampToValueAtTime(float, double)
+PASS AudioParam interface: operation exponentialRampToValueAtTime(float, double)
+PASS AudioParam interface: operation setTargetAtTime(float, double, float)
+PASS AudioParam interface: operation setValueCurveAtTime([object Object], double, double)
+PASS AudioParam interface: operation cancelScheduledValues(double)
+PASS AudioParam interface: operation cancelAndHoldAtTime(double)
+PASS AudioParam must be primary interface of new AudioBufferSourceNode(context).playbackRate
+PASS Stringification of new AudioBufferSourceNode(context).playbackRate
+PASS AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "value" with the proper type
+PASS AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "automationRate" with the proper type
+PASS AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "defaultValue" with the proper type
+PASS AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "minValue" with the proper type
+PASS AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "maxValue" with the proper type
+PASS AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "setValueAtTime(float, double)" with the proper type
+PASS AudioParam interface: calling setValueAtTime(float, double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError
+PASS AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "linearRampToValueAtTime(float, double)" with the proper type
+PASS AudioParam interface: calling linearRampToValueAtTime(float, double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError
+PASS AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "exponentialRampToValueAtTime(float, double)" with the proper type
+PASS AudioParam interface: calling exponentialRampToValueAtTime(float, double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError
+PASS AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "setTargetAtTime(float, double, float)" with the proper type
+PASS AudioParam interface: calling setTargetAtTime(float, double, float) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError
+PASS AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "setValueCurveAtTime([object Object], double, double)" with the proper type
+PASS AudioParam interface: calling setValueCurveAtTime([object Object], double, double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError
+PASS AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "cancelScheduledValues(double)" with the proper type
+PASS AudioParam interface: calling cancelScheduledValues(double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError
+PASS AudioParam interface: new AudioBufferSourceNode(context).playbackRate must inherit property "cancelAndHoldAtTime(double)" with the proper type
+PASS AudioParam interface: calling cancelAndHoldAtTime(double) on new AudioBufferSourceNode(context).playbackRate with too few arguments must throw TypeError
+PASS AudioScheduledSourceNode interface: existence and properties of interface object
+PASS AudioScheduledSourceNode interface object length
+PASS AudioScheduledSourceNode interface object name
+PASS AudioScheduledSourceNode interface: existence and properties of interface prototype object
+PASS AudioScheduledSourceNode interface: existence and properties of interface prototype object's "constructor" property
+PASS AudioScheduledSourceNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS AudioScheduledSourceNode interface: attribute onended
+PASS AudioScheduledSourceNode interface: operation start(double)
+PASS AudioScheduledSourceNode interface: operation stop(double)
+PASS AnalyserNode interface: existence and properties of interface object
+PASS AnalyserNode interface object length
+PASS AnalyserNode interface object name
+PASS AnalyserNode interface: existence and properties of interface prototype object
+PASS AnalyserNode interface: existence and properties of interface prototype object's "constructor" property
+PASS AnalyserNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS AnalyserNode interface: operation getFloatFrequencyData(Float32Array)
+PASS AnalyserNode interface: operation getByteFrequencyData(Uint8Array)
+PASS AnalyserNode interface: operation getFloatTimeDomainData(Float32Array)
+PASS AnalyserNode interface: operation getByteTimeDomainData(Uint8Array)
+PASS AnalyserNode interface: attribute fftSize
+PASS AnalyserNode interface: attribute frequencyBinCount
+PASS AnalyserNode interface: attribute minDecibels
+PASS AnalyserNode interface: attribute maxDecibels
+PASS AnalyserNode interface: attribute smoothingTimeConstant
+PASS AnalyserNode must be primary interface of new AnalyserNode(context)
+PASS Stringification of new AnalyserNode(context)
+PASS AnalyserNode interface: new AnalyserNode(context) must inherit property "getFloatFrequencyData(Float32Array)" with the proper type
+PASS AnalyserNode interface: calling getFloatFrequencyData(Float32Array) on new AnalyserNode(context) with too few arguments must throw TypeError
+PASS AnalyserNode interface: new AnalyserNode(context) must inherit property "getByteFrequencyData(Uint8Array)" with the proper type
+PASS AnalyserNode interface: calling getByteFrequencyData(Uint8Array) on new AnalyserNode(context) with too few arguments must throw TypeError
+PASS AnalyserNode interface: new AnalyserNode(context) must inherit property "getFloatTimeDomainData(Float32Array)" with the proper type
+PASS AnalyserNode interface: calling getFloatTimeDomainData(Float32Array) on new AnalyserNode(context) with too few arguments must throw TypeError
+PASS AnalyserNode interface: new AnalyserNode(context) must inherit property "getByteTimeDomainData(Uint8Array)" with the proper type
+PASS AnalyserNode interface: calling getByteTimeDomainData(Uint8Array) on new AnalyserNode(context) with too few arguments must throw TypeError
+PASS AnalyserNode interface: new AnalyserNode(context) must inherit property "fftSize" with the proper type
+PASS AnalyserNode interface: new AnalyserNode(context) must inherit property "frequencyBinCount" with the proper type
+PASS AnalyserNode interface: new AnalyserNode(context) must inherit property "minDecibels" with the proper type
+PASS AnalyserNode interface: new AnalyserNode(context) must inherit property "maxDecibels" with the proper type
+PASS AnalyserNode interface: new AnalyserNode(context) must inherit property "smoothingTimeConstant" with the proper type
+PASS AudioNode interface: new AnalyserNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new AnalyserNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioParam, unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new AnalyserNode(context) must inherit property "disconnect()" with the proper type
+PASS AudioNode interface: new AnalyserNode(context) must inherit property "disconnect(unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new AnalyserNode(context) must inherit property "disconnect(AudioNode)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode) on new AnalyserNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new AnalyserNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new AnalyserNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new AnalyserNode(context) must inherit property "disconnect(AudioParam)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam) on new AnalyserNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new AnalyserNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam, unsigned long) on new AnalyserNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new AnalyserNode(context) must inherit property "context" with the proper type
+PASS AudioNode interface: new AnalyserNode(context) must inherit property "numberOfInputs" with the proper type
+PASS AudioNode interface: new AnalyserNode(context) must inherit property "numberOfOutputs" with the proper type
+PASS AudioNode interface: new AnalyserNode(context) must inherit property "channelCount" with the proper type
+PASS AudioNode interface: new AnalyserNode(context) must inherit property "channelCountMode" with the proper type
+PASS AudioNode interface: new AnalyserNode(context) must inherit property "channelInterpretation" with the proper type
+PASS AudioBufferSourceNode interface: existence and properties of interface object
+PASS AudioBufferSourceNode interface object length
+PASS AudioBufferSourceNode interface object name
+PASS AudioBufferSourceNode interface: existence and properties of interface prototype object
+PASS AudioBufferSourceNode interface: existence and properties of interface prototype object's "constructor" property
+PASS AudioBufferSourceNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS AudioBufferSourceNode interface: attribute buffer
+PASS AudioBufferSourceNode interface: attribute playbackRate
+PASS AudioBufferSourceNode interface: attribute detune
+PASS AudioBufferSourceNode interface: attribute loop
+PASS AudioBufferSourceNode interface: attribute loopStart
+PASS AudioBufferSourceNode interface: attribute loopEnd
+PASS AudioBufferSourceNode interface: operation start(double, double, double)
+PASS AudioBufferSourceNode must be primary interface of new AudioBufferSourceNode(context)
+PASS Stringification of new AudioBufferSourceNode(context)
+PASS AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "buffer" with the proper type
+PASS AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "playbackRate" with the proper type
+PASS AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "detune" with the proper type
+PASS AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "loop" with the proper type
+PASS AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "loopStart" with the proper type
+PASS AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "loopEnd" with the proper type
+PASS AudioBufferSourceNode interface: new AudioBufferSourceNode(context) must inherit property "start(double, double, double)" with the proper type
+PASS AudioBufferSourceNode interface: calling start(double, double, double) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError
+PASS AudioScheduledSourceNode interface: new AudioBufferSourceNode(context) must inherit property "onended" with the proper type
+PASS AudioScheduledSourceNode interface: new AudioBufferSourceNode(context) must inherit property "start(double)" with the proper type
+PASS AudioScheduledSourceNode interface: calling start(double) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError
+PASS AudioScheduledSourceNode interface: new AudioBufferSourceNode(context) must inherit property "stop(double)" with the proper type
+PASS AudioScheduledSourceNode interface: calling stop(double) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new AudioBufferSourceNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new AudioBufferSourceNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioParam, unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect()" with the proper type
+PASS AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect(unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect(AudioNode)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect(AudioParam)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new AudioBufferSourceNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam, unsigned long) on new AudioBufferSourceNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new AudioBufferSourceNode(context) must inherit property "context" with the proper type
+PASS AudioNode interface: new AudioBufferSourceNode(context) must inherit property "numberOfInputs" with the proper type
+PASS AudioNode interface: new AudioBufferSourceNode(context) must inherit property "numberOfOutputs" with the proper type
+PASS AudioNode interface: new AudioBufferSourceNode(context) must inherit property "channelCount" with the proper type
+PASS AudioNode interface: new AudioBufferSourceNode(context) must inherit property "channelCountMode" with the proper type
+PASS AudioNode interface: new AudioBufferSourceNode(context) must inherit property "channelInterpretation" with the proper type
+PASS AudioDestinationNode interface: existence and properties of interface object
+PASS AudioDestinationNode interface object length
+PASS AudioDestinationNode interface object name
+PASS AudioDestinationNode interface: existence and properties of interface prototype object
+PASS AudioDestinationNode interface: existence and properties of interface prototype object's "constructor" property
+PASS AudioDestinationNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS AudioDestinationNode interface: attribute maxChannelCount
+PASS AudioDestinationNode must be primary interface of context.destination
+PASS Stringification of context.destination
+PASS AudioDestinationNode interface: context.destination must inherit property "maxChannelCount" with the proper type
+PASS AudioNode interface: context.destination must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on context.destination with too few arguments must throw TypeError
+PASS AudioNode interface: context.destination must inherit property "connect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioParam, unsigned long) on context.destination with too few arguments must throw TypeError
+PASS AudioNode interface: context.destination must inherit property "disconnect()" with the proper type
+PASS AudioNode interface: context.destination must inherit property "disconnect(unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(unsigned long) on context.destination with too few arguments must throw TypeError
+PASS AudioNode interface: context.destination must inherit property "disconnect(AudioNode)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode) on context.destination with too few arguments must throw TypeError
+PASS AudioNode interface: context.destination must inherit property "disconnect(AudioNode, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long) on context.destination with too few arguments must throw TypeError
+PASS AudioNode interface: context.destination must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on context.destination with too few arguments must throw TypeError
+PASS AudioNode interface: context.destination must inherit property "disconnect(AudioParam)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam) on context.destination with too few arguments must throw TypeError
+PASS AudioNode interface: context.destination must inherit property "disconnect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam, unsigned long) on context.destination with too few arguments must throw TypeError
+PASS AudioNode interface: context.destination must inherit property "context" with the proper type
+PASS AudioNode interface: context.destination must inherit property "numberOfInputs" with the proper type
+PASS AudioNode interface: context.destination must inherit property "numberOfOutputs" with the proper type
+PASS AudioNode interface: context.destination must inherit property "channelCount" with the proper type
+PASS AudioNode interface: context.destination must inherit property "channelCountMode" with the proper type
+PASS AudioNode interface: context.destination must inherit property "channelInterpretation" with the proper type
+PASS AudioListener interface: existence and properties of interface object
+PASS AudioListener interface object length
+PASS AudioListener interface object name
+PASS AudioListener interface: existence and properties of interface prototype object
+PASS AudioListener interface: existence and properties of interface prototype object's "constructor" property
+PASS AudioListener interface: existence and properties of interface prototype object's @@unscopables property
+PASS AudioListener interface: attribute positionX
+PASS AudioListener interface: attribute positionY
+PASS AudioListener interface: attribute positionZ
+PASS AudioListener interface: attribute forwardX
+PASS AudioListener interface: attribute forwardY
+PASS AudioListener interface: attribute forwardZ
+PASS AudioListener interface: attribute upX
+PASS AudioListener interface: attribute upY
+PASS AudioListener interface: attribute upZ
+PASS AudioListener interface: operation setPosition(float, float, float)
+PASS AudioListener interface: operation setOrientation(float, float, float, float, float, float)
+PASS AudioListener must be primary interface of context.listener
+PASS Stringification of context.listener
+PASS AudioListener interface: context.listener must inherit property "positionX" with the proper type
+PASS AudioListener interface: context.listener must inherit property "positionY" with the proper type
+PASS AudioListener interface: context.listener must inherit property "positionZ" with the proper type
+PASS AudioListener interface: context.listener must inherit property "forwardX" with the proper type
+PASS AudioListener interface: context.listener must inherit property "forwardY" with the proper type
+PASS AudioListener interface: context.listener must inherit property "forwardZ" with the proper type
+PASS AudioListener interface: context.listener must inherit property "upX" with the proper type
+PASS AudioListener interface: context.listener must inherit property "upY" with the proper type
+PASS AudioListener interface: context.listener must inherit property "upZ" with the proper type
+PASS AudioListener interface: context.listener must inherit property "setPosition(float, float, float)" with the proper type
+PASS AudioListener interface: calling setPosition(float, float, float) on context.listener with too few arguments must throw TypeError
+PASS AudioListener interface: context.listener must inherit property "setOrientation(float, float, float, float, float, float)" with the proper type
+PASS AudioListener interface: calling setOrientation(float, float, float, float, float, float) on context.listener with too few arguments must throw TypeError
+PASS AudioProcessingEvent interface: existence and properties of interface object
+PASS AudioProcessingEvent interface object length
+PASS AudioProcessingEvent interface object name
+PASS AudioProcessingEvent interface: existence and properties of interface prototype object
+PASS AudioProcessingEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS AudioProcessingEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS AudioProcessingEvent interface: attribute playbackTime
+PASS AudioProcessingEvent interface: attribute inputBuffer
+PASS AudioProcessingEvent interface: attribute outputBuffer
+PASS AudioProcessingEvent must be primary interface of new AudioProcessingEvent('', {
+        playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer
+      })
+PASS Stringification of new AudioProcessingEvent('', {
+        playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer
+      })
+PASS AudioProcessingEvent interface: new AudioProcessingEvent('', {
+        playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer
+      }) must inherit property "playbackTime" with the proper type
+PASS AudioProcessingEvent interface: new AudioProcessingEvent('', {
+        playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer
+      }) must inherit property "inputBuffer" with the proper type
+PASS AudioProcessingEvent interface: new AudioProcessingEvent('', {
+        playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer
+      }) must inherit property "outputBuffer" with the proper type
+PASS BiquadFilterNode interface: existence and properties of interface object
+PASS BiquadFilterNode interface object length
+PASS BiquadFilterNode interface object name
+PASS BiquadFilterNode interface: existence and properties of interface prototype object
+PASS BiquadFilterNode interface: existence and properties of interface prototype object's "constructor" property
+PASS BiquadFilterNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS BiquadFilterNode interface: attribute type
+PASS BiquadFilterNode interface: attribute frequency
+PASS BiquadFilterNode interface: attribute detune
+PASS BiquadFilterNode interface: attribute Q
+PASS BiquadFilterNode interface: attribute gain
+PASS BiquadFilterNode interface: operation getFrequencyResponse(Float32Array, Float32Array, Float32Array)
+PASS BiquadFilterNode must be primary interface of new BiquadFilterNode(context)
+PASS Stringification of new BiquadFilterNode(context)
+PASS BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "type" with the proper type
+PASS BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "frequency" with the proper type
+PASS BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "detune" with the proper type
+PASS BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "Q" with the proper type
+PASS BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "gain" with the proper type
+PASS BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "getFrequencyResponse(Float32Array, Float32Array, Float32Array)" with the proper type
+PASS BiquadFilterNode interface: calling getFrequencyResponse(Float32Array, Float32Array, Float32Array) on new BiquadFilterNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new BiquadFilterNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new BiquadFilterNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioParam, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect()" with the proper type
+PASS AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(AudioNode)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode) on new BiquadFilterNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(AudioParam)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam) on new BiquadFilterNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new BiquadFilterNode(context) must inherit property "context" with the proper type
+PASS AudioNode interface: new BiquadFilterNode(context) must inherit property "numberOfInputs" with the proper type
+PASS AudioNode interface: new BiquadFilterNode(context) must inherit property "numberOfOutputs" with the proper type
+PASS AudioNode interface: new BiquadFilterNode(context) must inherit property "channelCount" with the proper type
+PASS AudioNode interface: new BiquadFilterNode(context) must inherit property "channelCountMode" with the proper type
+PASS AudioNode interface: new BiquadFilterNode(context) must inherit property "channelInterpretation" with the proper type
+PASS ChannelMergerNode interface: existence and properties of interface object
+PASS ChannelMergerNode interface object length
+PASS ChannelMergerNode interface object name
+PASS ChannelMergerNode interface: existence and properties of interface prototype object
+PASS ChannelMergerNode interface: existence and properties of interface prototype object's "constructor" property
+PASS ChannelMergerNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS ChannelMergerNode must be primary interface of new ChannelMergerNode(context)
+PASS Stringification of new ChannelMergerNode(context)
+PASS AudioNode interface: new ChannelMergerNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ChannelMergerNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioParam, unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect()" with the proper type
+PASS AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect(unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect(AudioNode)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode) on new ChannelMergerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect(AudioParam)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam) on new ChannelMergerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ChannelMergerNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam, unsigned long) on new ChannelMergerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ChannelMergerNode(context) must inherit property "context" with the proper type
+PASS AudioNode interface: new ChannelMergerNode(context) must inherit property "numberOfInputs" with the proper type
+PASS AudioNode interface: new ChannelMergerNode(context) must inherit property "numberOfOutputs" with the proper type
+PASS AudioNode interface: new ChannelMergerNode(context) must inherit property "channelCount" with the proper type
+PASS AudioNode interface: new ChannelMergerNode(context) must inherit property "channelCountMode" with the proper type
+PASS AudioNode interface: new ChannelMergerNode(context) must inherit property "channelInterpretation" with the proper type
+PASS ChannelSplitterNode interface: existence and properties of interface object
+PASS ChannelSplitterNode interface object length
+PASS ChannelSplitterNode interface object name
+PASS ChannelSplitterNode interface: existence and properties of interface prototype object
+PASS ChannelSplitterNode interface: existence and properties of interface prototype object's "constructor" property
+PASS ChannelSplitterNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS ChannelSplitterNode must be primary interface of new ChannelSplitterNode(context)
+PASS Stringification of new ChannelSplitterNode(context)
+PASS AudioNode interface: new ChannelSplitterNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ChannelSplitterNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioParam, unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect()" with the proper type
+PASS AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect(unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect(AudioNode)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode) on new ChannelSplitterNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect(AudioParam)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam) on new ChannelSplitterNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ChannelSplitterNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam, unsigned long) on new ChannelSplitterNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ChannelSplitterNode(context) must inherit property "context" with the proper type
+PASS AudioNode interface: new ChannelSplitterNode(context) must inherit property "numberOfInputs" with the proper type
+PASS AudioNode interface: new ChannelSplitterNode(context) must inherit property "numberOfOutputs" with the proper type
+PASS AudioNode interface: new ChannelSplitterNode(context) must inherit property "channelCount" with the proper type
+PASS AudioNode interface: new ChannelSplitterNode(context) must inherit property "channelCountMode" with the proper type
+PASS AudioNode interface: new ChannelSplitterNode(context) must inherit property "channelInterpretation" with the proper type
+PASS ConstantSourceNode interface: existence and properties of interface object
+PASS ConstantSourceNode interface object length
+PASS ConstantSourceNode interface object name
+PASS ConstantSourceNode interface: existence and properties of interface prototype object
+PASS ConstantSourceNode interface: existence and properties of interface prototype object's "constructor" property
+PASS ConstantSourceNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS ConstantSourceNode interface: attribute offset
+PASS ConstantSourceNode must be primary interface of new ConstantSourceNode(context)
+PASS Stringification of new ConstantSourceNode(context)
+PASS ConstantSourceNode interface: new ConstantSourceNode(context) must inherit property "offset" with the proper type
+PASS AudioScheduledSourceNode interface: new ConstantSourceNode(context) must inherit property "onended" with the proper type
+PASS AudioScheduledSourceNode interface: new ConstantSourceNode(context) must inherit property "start(double)" with the proper type
+PASS AudioScheduledSourceNode interface: calling start(double) on new ConstantSourceNode(context) with too few arguments must throw TypeError
+PASS AudioScheduledSourceNode interface: new ConstantSourceNode(context) must inherit property "stop(double)" with the proper type
+PASS AudioScheduledSourceNode interface: calling stop(double) on new ConstantSourceNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ConstantSourceNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ConstantSourceNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioParam, unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect()" with the proper type
+PASS AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect(unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect(AudioNode)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode) on new ConstantSourceNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect(AudioParam)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam) on new ConstantSourceNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ConstantSourceNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam, unsigned long) on new ConstantSourceNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ConstantSourceNode(context) must inherit property "context" with the proper type
+PASS AudioNode interface: new ConstantSourceNode(context) must inherit property "numberOfInputs" with the proper type
+PASS AudioNode interface: new ConstantSourceNode(context) must inherit property "numberOfOutputs" with the proper type
+PASS AudioNode interface: new ConstantSourceNode(context) must inherit property "channelCount" with the proper type
+PASS AudioNode interface: new ConstantSourceNode(context) must inherit property "channelCountMode" with the proper type
+PASS AudioNode interface: new ConstantSourceNode(context) must inherit property "channelInterpretation" with the proper type
+PASS ConvolverNode interface: existence and properties of interface object
+PASS ConvolverNode interface object length
+PASS ConvolverNode interface object name
+PASS ConvolverNode interface: existence and properties of interface prototype object
+PASS ConvolverNode interface: existence and properties of interface prototype object's "constructor" property
+PASS ConvolverNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS ConvolverNode interface: attribute buffer
+PASS ConvolverNode interface: attribute normalize
+PASS ConvolverNode must be primary interface of new ConvolverNode(context)
+PASS Stringification of new ConvolverNode(context)
+PASS ConvolverNode interface: new ConvolverNode(context) must inherit property "buffer" with the proper type
+PASS ConvolverNode interface: new ConvolverNode(context) must inherit property "normalize" with the proper type
+PASS AudioNode interface: new ConvolverNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ConvolverNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioParam, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ConvolverNode(context) must inherit property "disconnect()" with the proper type
+PASS AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(AudioNode)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode) on new ConvolverNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(AudioParam)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam) on new ConvolverNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ConvolverNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam, unsigned long) on new ConvolverNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new ConvolverNode(context) must inherit property "context" with the proper type
+PASS AudioNode interface: new ConvolverNode(context) must inherit property "numberOfInputs" with the proper type
+PASS AudioNode interface: new ConvolverNode(context) must inherit property "numberOfOutputs" with the proper type
+PASS AudioNode interface: new ConvolverNode(context) must inherit property "channelCount" with the proper type
+PASS AudioNode interface: new ConvolverNode(context) must inherit property "channelCountMode" with the proper type
+PASS AudioNode interface: new ConvolverNode(context) must inherit property "channelInterpretation" with the proper type
+PASS DelayNode interface: existence and properties of interface object
+PASS DelayNode interface object length
+PASS DelayNode interface object name
+PASS DelayNode interface: existence and properties of interface prototype object
+PASS DelayNode interface: existence and properties of interface prototype object's "constructor" property
+PASS DelayNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS DelayNode interface: attribute delayTime
+PASS DelayNode must be primary interface of new DelayNode(context)
+PASS Stringification of new DelayNode(context)
+PASS DelayNode interface: new DelayNode(context) must inherit property "delayTime" with the proper type
+PASS AudioNode interface: new DelayNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new DelayNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioParam, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new DelayNode(context) must inherit property "disconnect()" with the proper type
+PASS AudioNode interface: new DelayNode(context) must inherit property "disconnect(unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(unsigned long) on new DelayNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new DelayNode(context) must inherit property "disconnect(AudioNode)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode) on new DelayNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new DelayNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new DelayNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new DelayNode(context) must inherit property "disconnect(AudioParam)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam) on new DelayNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new DelayNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam, unsigned long) on new DelayNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new DelayNode(context) must inherit property "context" with the proper type
+PASS AudioNode interface: new DelayNode(context) must inherit property "numberOfInputs" with the proper type
+PASS AudioNode interface: new DelayNode(context) must inherit property "numberOfOutputs" with the proper type
+PASS AudioNode interface: new DelayNode(context) must inherit property "channelCount" with the proper type
+PASS AudioNode interface: new DelayNode(context) must inherit property "channelCountMode" with the proper type
+PASS AudioNode interface: new DelayNode(context) must inherit property "channelInterpretation" with the proper type
+PASS DynamicsCompressorNode interface: existence and properties of interface object
+PASS DynamicsCompressorNode interface object length
+PASS DynamicsCompressorNode interface object name
+PASS DynamicsCompressorNode interface: existence and properties of interface prototype object
+PASS DynamicsCompressorNode interface: existence and properties of interface prototype object's "constructor" property
+PASS DynamicsCompressorNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS DynamicsCompressorNode interface: attribute threshold
+PASS DynamicsCompressorNode interface: attribute knee
+PASS DynamicsCompressorNode interface: attribute ratio
+PASS DynamicsCompressorNode interface: attribute reduction
+PASS DynamicsCompressorNode interface: attribute attack
+PASS DynamicsCompressorNode interface: attribute release
+PASS DynamicsCompressorNode must be primary interface of new DynamicsCompressorNode(context)
+PASS Stringification of new DynamicsCompressorNode(context)
+PASS DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "threshold" with the proper type
+PASS DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "knee" with the proper type
+PASS DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "ratio" with the proper type
+PASS DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "reduction" with the proper type
+PASS DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "attack" with the proper type
+PASS DynamicsCompressorNode interface: new DynamicsCompressorNode(context) must inherit property "release" with the proper type
+PASS AudioNode interface: new DynamicsCompressorNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new DynamicsCompressorNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioParam, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect()" with the proper type
+PASS AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect(unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect(AudioNode)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect(AudioParam)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new DynamicsCompressorNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam, unsigned long) on new DynamicsCompressorNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new DynamicsCompressorNode(context) must inherit property "context" with the proper type
+PASS AudioNode interface: new DynamicsCompressorNode(context) must inherit property "numberOfInputs" with the proper type
+PASS AudioNode interface: new DynamicsCompressorNode(context) must inherit property "numberOfOutputs" with the proper type
+PASS AudioNode interface: new DynamicsCompressorNode(context) must inherit property "channelCount" with the proper type
+PASS AudioNode interface: new DynamicsCompressorNode(context) must inherit property "channelCountMode" with the proper type
+PASS AudioNode interface: new DynamicsCompressorNode(context) must inherit property "channelInterpretation" with the proper type
+PASS GainNode interface: existence and properties of interface object
+PASS GainNode interface object length
+PASS GainNode interface object name
+PASS GainNode interface: existence and properties of interface prototype object
+PASS GainNode interface: existence and properties of interface prototype object's "constructor" property
+PASS GainNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS GainNode interface: attribute gain
+PASS GainNode must be primary interface of new GainNode(context)
+PASS Stringification of new GainNode(context)
+PASS GainNode interface: new GainNode(context) must inherit property "gain" with the proper type
+PASS AudioNode interface: new GainNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new GainNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new GainNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioParam, unsigned long) on new GainNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new GainNode(context) must inherit property "disconnect()" with the proper type
+PASS AudioNode interface: new GainNode(context) must inherit property "disconnect(unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(unsigned long) on new GainNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new GainNode(context) must inherit property "disconnect(AudioNode)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode) on new GainNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new GainNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long) on new GainNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new GainNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new GainNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new GainNode(context) must inherit property "disconnect(AudioParam)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam) on new GainNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new GainNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam, unsigned long) on new GainNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new GainNode(context) must inherit property "context" with the proper type
+PASS AudioNode interface: new GainNode(context) must inherit property "numberOfInputs" with the proper type
+PASS AudioNode interface: new GainNode(context) must inherit property "numberOfOutputs" with the proper type
+PASS AudioNode interface: new GainNode(context) must inherit property "channelCount" with the proper type
+PASS AudioNode interface: new GainNode(context) must inherit property "channelCountMode" with the proper type
+PASS AudioNode interface: new GainNode(context) must inherit property "channelInterpretation" with the proper type
+PASS IIRFilterNode interface: existence and properties of interface object
+PASS IIRFilterNode interface object length
+PASS IIRFilterNode interface object name
+PASS IIRFilterNode interface: existence and properties of interface prototype object
+PASS IIRFilterNode interface: existence and properties of interface prototype object's "constructor" property
+PASS IIRFilterNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS IIRFilterNode interface: operation getFrequencyResponse(Float32Array, Float32Array, Float32Array)
+PASS IIRFilterNode must be primary interface of new IIRFilterNode(context, {feedforward: [1], feedback: [1]})
+PASS Stringification of new IIRFilterNode(context, {feedforward: [1], feedback: [1]})
+PASS IIRFilterNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "getFrequencyResponse(Float32Array, Float32Array, Float32Array)" with the proper type
+PASS IIRFilterNode interface: calling getFrequencyResponse(Float32Array, Float32Array, Float32Array) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError
+PASS AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError
+PASS AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "connect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioParam, unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError
+PASS AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect()" with the proper type
+PASS AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect(unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError
+PASS AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect(AudioNode)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError
+PASS AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError
+PASS AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError
+PASS AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect(AudioParam)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError
+PASS AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam, unsigned long) on new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) with too few arguments must throw TypeError
+PASS AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "context" with the proper type
+PASS AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "numberOfInputs" with the proper type
+PASS AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "numberOfOutputs" with the proper type
+PASS AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "channelCount" with the proper type
+PASS AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "channelCountMode" with the proper type
+PASS AudioNode interface: new IIRFilterNode(context, {feedforward: [1], feedback: [1]}) must inherit property "channelInterpretation" with the proper type
+PASS MediaElementAudioSourceNode interface: existence and properties of interface object
+PASS MediaElementAudioSourceNode interface object length
+PASS MediaElementAudioSourceNode interface object name
+PASS MediaElementAudioSourceNode interface: existence and properties of interface prototype object
+PASS MediaElementAudioSourceNode interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaElementAudioSourceNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaElementAudioSourceNode interface: attribute mediaElement
+PASS MediaElementAudioSourceNode must be primary interface of new MediaElementAudioSourceNode(context, {mediaElement: new Audio})
+PASS Stringification of new MediaElementAudioSourceNode(context, {mediaElement: new Audio})
+PASS MediaElementAudioSourceNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "mediaElement" with the proper type
+PASS AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError
+PASS AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "connect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioParam, unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError
+PASS AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect()" with the proper type
+PASS AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect(unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError
+PASS AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect(AudioNode)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError
+PASS AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError
+PASS AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError
+PASS AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect(AudioParam)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError
+PASS AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam, unsigned long) on new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) with too few arguments must throw TypeError
+PASS AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "context" with the proper type
+PASS AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "numberOfInputs" with the proper type
+PASS AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "numberOfOutputs" with the proper type
+PASS AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "channelCount" with the proper type
+PASS AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "channelCountMode" with the proper type
+PASS AudioNode interface: new MediaElementAudioSourceNode(context, {mediaElement: new Audio}) must inherit property "channelInterpretation" with the proper type
+PASS MediaStreamAudioDestinationNode interface: existence and properties of interface object
+PASS MediaStreamAudioDestinationNode interface object length
+PASS MediaStreamAudioDestinationNode interface object name
+PASS MediaStreamAudioDestinationNode interface: existence and properties of interface prototype object
+PASS MediaStreamAudioDestinationNode interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaStreamAudioDestinationNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaStreamAudioDestinationNode interface: attribute stream
+PASS MediaStreamAudioDestinationNode must be primary interface of new MediaStreamAudioDestinationNode(context)
+PASS Stringification of new MediaStreamAudioDestinationNode(context)
+PASS MediaStreamAudioDestinationNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "stream" with the proper type
+PASS AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioParam, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect()" with the proper type
+PASS AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioNode)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioParam)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam, unsigned long) on new MediaStreamAudioDestinationNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "context" with the proper type
+PASS AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "numberOfInputs" with the proper type
+PASS AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "numberOfOutputs" with the proper type
+PASS AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "channelCount" with the proper type
+PASS AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "channelCountMode" with the proper type
+PASS AudioNode interface: new MediaStreamAudioDestinationNode(context) must inherit property "channelInterpretation" with the proper type
+PASS MediaStreamAudioSourceNode interface: existence and properties of interface object
+PASS MediaStreamAudioSourceNode interface object length
+PASS MediaStreamAudioSourceNode interface object name
+PASS MediaStreamAudioSourceNode interface: existence and properties of interface prototype object
+PASS MediaStreamAudioSourceNode interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaStreamAudioSourceNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaStreamAudioSourceNode interface: attribute mediaStream
+FAIL MediaStreamTrackAudioSourceNode interface: existence and properties of interface object assert_own_property: self does not have own property "MediaStreamTrackAudioSourceNode" expected property "MediaStreamTrackAudioSourceNode" missing
+FAIL MediaStreamTrackAudioSourceNode interface object length assert_own_property: self does not have own property "MediaStreamTrackAudioSourceNode" expected property "MediaStreamTrackAudioSourceNode" missing
+FAIL MediaStreamTrackAudioSourceNode interface object name assert_own_property: self does not have own property "MediaStreamTrackAudioSourceNode" expected property "MediaStreamTrackAudioSourceNode" missing
+FAIL MediaStreamTrackAudioSourceNode interface: existence and properties of interface prototype object assert_own_property: self does not have own property "MediaStreamTrackAudioSourceNode" expected property "MediaStreamTrackAudioSourceNode" missing
+FAIL MediaStreamTrackAudioSourceNode interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "MediaStreamTrackAudioSourceNode" expected property "MediaStreamTrackAudioSourceNode" missing
+FAIL MediaStreamTrackAudioSourceNode interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "MediaStreamTrackAudioSourceNode" expected property "MediaStreamTrackAudioSourceNode" missing
+PASS OscillatorNode interface: existence and properties of interface object
+PASS OscillatorNode interface object length
+PASS OscillatorNode interface object name
+PASS OscillatorNode interface: existence and properties of interface prototype object
+PASS OscillatorNode interface: existence and properties of interface prototype object's "constructor" property
+PASS OscillatorNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS OscillatorNode interface: attribute type
+PASS OscillatorNode interface: attribute frequency
+PASS OscillatorNode interface: attribute detune
+PASS OscillatorNode interface: operation setPeriodicWave(PeriodicWave)
+PASS OscillatorNode must be primary interface of new OscillatorNode(context)
+PASS Stringification of new OscillatorNode(context)
+PASS OscillatorNode interface: new OscillatorNode(context) must inherit property "type" with the proper type
+PASS OscillatorNode interface: new OscillatorNode(context) must inherit property "frequency" with the proper type
+PASS OscillatorNode interface: new OscillatorNode(context) must inherit property "detune" with the proper type
+PASS OscillatorNode interface: new OscillatorNode(context) must inherit property "setPeriodicWave(PeriodicWave)" with the proper type
+PASS OscillatorNode interface: calling setPeriodicWave(PeriodicWave) on new OscillatorNode(context) with too few arguments must throw TypeError
+PASS AudioScheduledSourceNode interface: new OscillatorNode(context) must inherit property "onended" with the proper type
+PASS AudioScheduledSourceNode interface: new OscillatorNode(context) must inherit property "start(double)" with the proper type
+PASS AudioScheduledSourceNode interface: calling start(double) on new OscillatorNode(context) with too few arguments must throw TypeError
+PASS AudioScheduledSourceNode interface: new OscillatorNode(context) must inherit property "stop(double)" with the proper type
+PASS AudioScheduledSourceNode interface: calling stop(double) on new OscillatorNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new OscillatorNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new OscillatorNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioParam, unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new OscillatorNode(context) must inherit property "disconnect()" with the proper type
+PASS AudioNode interface: new OscillatorNode(context) must inherit property "disconnect(unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new OscillatorNode(context) must inherit property "disconnect(AudioNode)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode) on new OscillatorNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new OscillatorNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new OscillatorNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new OscillatorNode(context) must inherit property "disconnect(AudioParam)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam) on new OscillatorNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new OscillatorNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam, unsigned long) on new OscillatorNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new OscillatorNode(context) must inherit property "context" with the proper type
+PASS AudioNode interface: new OscillatorNode(context) must inherit property "numberOfInputs" with the proper type
+PASS AudioNode interface: new OscillatorNode(context) must inherit property "numberOfOutputs" with the proper type
+PASS AudioNode interface: new OscillatorNode(context) must inherit property "channelCount" with the proper type
+PASS AudioNode interface: new OscillatorNode(context) must inherit property "channelCountMode" with the proper type
+PASS AudioNode interface: new OscillatorNode(context) must inherit property "channelInterpretation" with the proper type
+PASS PannerNode interface: existence and properties of interface object
+PASS PannerNode interface object length
+PASS PannerNode interface object name
+PASS PannerNode interface: existence and properties of interface prototype object
+PASS PannerNode interface: existence and properties of interface prototype object's "constructor" property
+PASS PannerNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS PannerNode interface: attribute panningModel
+PASS PannerNode interface: attribute positionX
+PASS PannerNode interface: attribute positionY
+PASS PannerNode interface: attribute positionZ
+PASS PannerNode interface: attribute orientationX
+PASS PannerNode interface: attribute orientationY
+PASS PannerNode interface: attribute orientationZ
+PASS PannerNode interface: attribute distanceModel
+PASS PannerNode interface: attribute refDistance
+PASS PannerNode interface: attribute maxDistance
+PASS PannerNode interface: attribute rolloffFactor
+PASS PannerNode interface: attribute coneInnerAngle
+PASS PannerNode interface: attribute coneOuterAngle
+PASS PannerNode interface: attribute coneOuterGain
+PASS PannerNode interface: operation setPosition(float, float, float)
+PASS PannerNode interface: operation setOrientation(float, float, float)
+PASS PannerNode must be primary interface of new PannerNode(context)
+PASS Stringification of new PannerNode(context)
+PASS PannerNode interface: new PannerNode(context) must inherit property "panningModel" with the proper type
+PASS PannerNode interface: new PannerNode(context) must inherit property "positionX" with the proper type
+PASS PannerNode interface: new PannerNode(context) must inherit property "positionY" with the proper type
+PASS PannerNode interface: new PannerNode(context) must inherit property "positionZ" with the proper type
+PASS PannerNode interface: new PannerNode(context) must inherit property "orientationX" with the proper type
+PASS PannerNode interface: new PannerNode(context) must inherit property "orientationY" with the proper type
+PASS PannerNode interface: new PannerNode(context) must inherit property "orientationZ" with the proper type
+PASS PannerNode interface: new PannerNode(context) must inherit property "distanceModel" with the proper type
+PASS PannerNode interface: new PannerNode(context) must inherit property "refDistance" with the proper type
+PASS PannerNode interface: new PannerNode(context) must inherit property "maxDistance" with the proper type
+PASS PannerNode interface: new PannerNode(context) must inherit property "rolloffFactor" with the proper type
+PASS PannerNode interface: new PannerNode(context) must inherit property "coneInnerAngle" with the proper type
+PASS PannerNode interface: new PannerNode(context) must inherit property "coneOuterAngle" with the proper type
+PASS PannerNode interface: new PannerNode(context) must inherit property "coneOuterGain" with the proper type
+PASS PannerNode interface: new PannerNode(context) must inherit property "setPosition(float, float, float)" with the proper type
+PASS PannerNode interface: calling setPosition(float, float, float) on new PannerNode(context) with too few arguments must throw TypeError
+PASS PannerNode interface: new PannerNode(context) must inherit property "setOrientation(float, float, float)" with the proper type
+PASS PannerNode interface: calling setOrientation(float, float, float) on new PannerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new PannerNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new PannerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new PannerNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioParam, unsigned long) on new PannerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new PannerNode(context) must inherit property "disconnect()" with the proper type
+PASS AudioNode interface: new PannerNode(context) must inherit property "disconnect(unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(unsigned long) on new PannerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new PannerNode(context) must inherit property "disconnect(AudioNode)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode) on new PannerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new PannerNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long) on new PannerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new PannerNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new PannerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new PannerNode(context) must inherit property "disconnect(AudioParam)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam) on new PannerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new PannerNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam, unsigned long) on new PannerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new PannerNode(context) must inherit property "context" with the proper type
+PASS AudioNode interface: new PannerNode(context) must inherit property "numberOfInputs" with the proper type
+PASS AudioNode interface: new PannerNode(context) must inherit property "numberOfOutputs" with the proper type
+PASS AudioNode interface: new PannerNode(context) must inherit property "channelCount" with the proper type
+PASS AudioNode interface: new PannerNode(context) must inherit property "channelCountMode" with the proper type
+PASS AudioNode interface: new PannerNode(context) must inherit property "channelInterpretation" with the proper type
+PASS PeriodicWave interface: existence and properties of interface object
+PASS PeriodicWave interface object length
+PASS PeriodicWave interface object name
+PASS PeriodicWave interface: existence and properties of interface prototype object
+PASS PeriodicWave interface: existence and properties of interface prototype object's "constructor" property
+PASS PeriodicWave interface: existence and properties of interface prototype object's @@unscopables property
+PASS PeriodicWave must be primary interface of new PeriodicWave(context)
+PASS Stringification of new PeriodicWave(context)
+PASS ScriptProcessorNode interface: existence and properties of interface object
+PASS ScriptProcessorNode interface object length
+PASS ScriptProcessorNode interface object name
+PASS ScriptProcessorNode interface: existence and properties of interface prototype object
+PASS ScriptProcessorNode interface: existence and properties of interface prototype object's "constructor" property
+PASS ScriptProcessorNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS ScriptProcessorNode interface: attribute onaudioprocess
+PASS ScriptProcessorNode interface: attribute bufferSize
+PASS ScriptProcessorNode must be primary interface of context.createScriptProcessor()
+PASS Stringification of context.createScriptProcessor()
+PASS ScriptProcessorNode interface: context.createScriptProcessor() must inherit property "onaudioprocess" with the proper type
+PASS ScriptProcessorNode interface: context.createScriptProcessor() must inherit property "bufferSize" with the proper type
+PASS AudioNode interface: context.createScriptProcessor() must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError
+PASS AudioNode interface: context.createScriptProcessor() must inherit property "connect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioParam, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError
+PASS AudioNode interface: context.createScriptProcessor() must inherit property "disconnect()" with the proper type
+PASS AudioNode interface: context.createScriptProcessor() must inherit property "disconnect(unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError
+PASS AudioNode interface: context.createScriptProcessor() must inherit property "disconnect(AudioNode)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode) on context.createScriptProcessor() with too few arguments must throw TypeError
+PASS AudioNode interface: context.createScriptProcessor() must inherit property "disconnect(AudioNode, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError
+PASS AudioNode interface: context.createScriptProcessor() must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError
+PASS AudioNode interface: context.createScriptProcessor() must inherit property "disconnect(AudioParam)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam) on context.createScriptProcessor() with too few arguments must throw TypeError
+PASS AudioNode interface: context.createScriptProcessor() must inherit property "disconnect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam, unsigned long) on context.createScriptProcessor() with too few arguments must throw TypeError
+PASS AudioNode interface: context.createScriptProcessor() must inherit property "context" with the proper type
+PASS AudioNode interface: context.createScriptProcessor() must inherit property "numberOfInputs" with the proper type
+PASS AudioNode interface: context.createScriptProcessor() must inherit property "numberOfOutputs" with the proper type
+PASS AudioNode interface: context.createScriptProcessor() must inherit property "channelCount" with the proper type
+PASS AudioNode interface: context.createScriptProcessor() must inherit property "channelCountMode" with the proper type
+PASS AudioNode interface: context.createScriptProcessor() must inherit property "channelInterpretation" with the proper type
+PASS StereoPannerNode interface: existence and properties of interface object
+PASS StereoPannerNode interface object length
+PASS StereoPannerNode interface object name
+PASS StereoPannerNode interface: existence and properties of interface prototype object
+PASS StereoPannerNode interface: existence and properties of interface prototype object's "constructor" property
+PASS StereoPannerNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS StereoPannerNode interface: attribute pan
+PASS StereoPannerNode must be primary interface of new StereoPannerNode(context)
+PASS Stringification of new StereoPannerNode(context)
+PASS StereoPannerNode interface: new StereoPannerNode(context) must inherit property "pan" with the proper type
+PASS AudioNode interface: new StereoPannerNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new StereoPannerNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioParam, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect()" with the proper type
+PASS AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(AudioNode)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode) on new StereoPannerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(AudioParam)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam) on new StereoPannerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new StereoPannerNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam, unsigned long) on new StereoPannerNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new StereoPannerNode(context) must inherit property "context" with the proper type
+PASS AudioNode interface: new StereoPannerNode(context) must inherit property "numberOfInputs" with the proper type
+PASS AudioNode interface: new StereoPannerNode(context) must inherit property "numberOfOutputs" with the proper type
+PASS AudioNode interface: new StereoPannerNode(context) must inherit property "channelCount" with the proper type
+PASS AudioNode interface: new StereoPannerNode(context) must inherit property "channelCountMode" with the proper type
+PASS AudioNode interface: new StereoPannerNode(context) must inherit property "channelInterpretation" with the proper type
+PASS WaveShaperNode interface: existence and properties of interface object
+PASS WaveShaperNode interface object length
+PASS WaveShaperNode interface object name
+PASS WaveShaperNode interface: existence and properties of interface prototype object
+PASS WaveShaperNode interface: existence and properties of interface prototype object's "constructor" property
+PASS WaveShaperNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS WaveShaperNode interface: attribute curve
+PASS WaveShaperNode interface: attribute oversample
+PASS WaveShaperNode must be primary interface of new WaveShaperNode(context)
+PASS Stringification of new WaveShaperNode(context)
+PASS WaveShaperNode interface: new WaveShaperNode(context) must inherit property "curve" with the proper type
+PASS WaveShaperNode interface: new WaveShaperNode(context) must inherit property "oversample" with the proper type
+PASS AudioNode interface: new WaveShaperNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new WaveShaperNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioParam, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect()" with the proper type
+PASS AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect(unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect(AudioNode)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode) on new WaveShaperNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect(AudioParam)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam) on new WaveShaperNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new WaveShaperNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam, unsigned long) on new WaveShaperNode(context) with too few arguments must throw TypeError
+PASS AudioNode interface: new WaveShaperNode(context) must inherit property "context" with the proper type
+PASS AudioNode interface: new WaveShaperNode(context) must inherit property "numberOfInputs" with the proper type
+PASS AudioNode interface: new WaveShaperNode(context) must inherit property "numberOfOutputs" with the proper type
+PASS AudioNode interface: new WaveShaperNode(context) must inherit property "channelCount" with the proper type
+PASS AudioNode interface: new WaveShaperNode(context) must inherit property "channelCountMode" with the proper type
+PASS AudioNode interface: new WaveShaperNode(context) must inherit property "channelInterpretation" with the proper type
+PASS AudioWorklet interface: existence and properties of interface object
+PASS AudioWorklet interface object length
+PASS AudioWorklet interface object name
+PASS AudioWorklet interface: existence and properties of interface prototype object
+PASS AudioWorklet interface: existence and properties of interface prototype object's "constructor" property
+PASS AudioWorklet interface: existence and properties of interface prototype object's @@unscopables property
+PASS AudioWorklet must be primary interface of context.audioWorklet
+PASS Stringification of context.audioWorklet
+PASS AudioWorkletGlobalScope interface: existence and properties of interface object
+PASS AudioParamMap interface: existence and properties of interface object
+PASS AudioParamMap interface object length
+PASS AudioParamMap interface object name
+PASS AudioParamMap interface: existence and properties of interface prototype object
+PASS AudioParamMap interface: existence and properties of interface prototype object's "constructor" property
+PASS AudioParamMap interface: existence and properties of interface prototype object's @@unscopables property
+PASS AudioParamMap must be primary interface of worklet_node.parameters
+PASS Stringification of worklet_node.parameters
+PASS AudioWorkletNode interface: existence and properties of interface object
+PASS AudioWorkletNode interface object length
+PASS AudioWorkletNode interface object name
+PASS AudioWorkletNode interface: existence and properties of interface prototype object
+PASS AudioWorkletNode interface: existence and properties of interface prototype object's "constructor" property
+PASS AudioWorkletNode interface: existence and properties of interface prototype object's @@unscopables property
+PASS AudioWorkletNode interface: attribute parameters
+PASS AudioWorkletNode interface: attribute port
+PASS AudioWorkletNode interface: attribute onprocessorerror
+PASS AudioWorkletNode must be primary interface of worklet_node
+PASS Stringification of worklet_node
+PASS AudioWorkletNode interface: worklet_node must inherit property "parameters" with the proper type
+PASS AudioWorkletNode interface: worklet_node must inherit property "port" with the proper type
+PASS AudioWorkletNode interface: worklet_node must inherit property "onprocessorerror" with the proper type
+PASS AudioNode interface: worklet_node must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on worklet_node with too few arguments must throw TypeError
+PASS AudioNode interface: worklet_node must inherit property "connect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling connect(AudioParam, unsigned long) on worklet_node with too few arguments must throw TypeError
+PASS AudioNode interface: worklet_node must inherit property "disconnect()" with the proper type
+PASS AudioNode interface: worklet_node must inherit property "disconnect(unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(unsigned long) on worklet_node with too few arguments must throw TypeError
+PASS AudioNode interface: worklet_node must inherit property "disconnect(AudioNode)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode) on worklet_node with too few arguments must throw TypeError
+PASS AudioNode interface: worklet_node must inherit property "disconnect(AudioNode, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long) on worklet_node with too few arguments must throw TypeError
+PASS AudioNode interface: worklet_node must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on worklet_node with too few arguments must throw TypeError
+PASS AudioNode interface: worklet_node must inherit property "disconnect(AudioParam)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam) on worklet_node with too few arguments must throw TypeError
+PASS AudioNode interface: worklet_node must inherit property "disconnect(AudioParam, unsigned long)" with the proper type
+PASS AudioNode interface: calling disconnect(AudioParam, unsigned long) on worklet_node with too few arguments must throw TypeError
+PASS AudioNode interface: worklet_node must inherit property "context" with the proper type
+PASS AudioNode interface: worklet_node must inherit property "numberOfInputs" with the proper type
+PASS AudioNode interface: worklet_node must inherit property "numberOfOutputs" with the proper type
+PASS AudioNode interface: worklet_node must inherit property "channelCount" with the proper type
+PASS AudioNode interface: worklet_node must inherit property "channelCountMode" with the proper type
+PASS AudioNode interface: worklet_node must inherit property "channelInterpretation" with the proper type
+PASS AudioWorkletProcessor interface: existence and properties of interface object
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html
index 935ceeb7..97684b2 100644
--- a/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html
+++ b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html
@@ -75,6 +75,19 @@
 
         task.done();
       });
+      audit.define('illegal sample-rate', (task, should) => {
+        let node;
+        let options = {buffer: context.createBuffer(1, 1, context.sampleRate / 2)};
+
+        should(
+            () => {
+              node = new ConvolverNode(context, options);
+            },
+            'node1 = new ConvolverNode(c, ' + JSON.stringify(options))
+            .throw(DOMException, 'NotSupportedError');
+
+        task.done();
+      });
 
       audit.define('construct with options', (task, should) => {
         let buf = context.createBuffer(1, 1, context.sampleRate);
diff --git a/third_party/blink/web_tests/external/wpt/webmidi/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/webmidi/idlharness.https.window-expected.txt
index 23bf13b5..5cc4ad6 100644
--- a/third_party/blink/web_tests/external/wpt/webmidi/idlharness.https.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/webmidi/idlharness.https.window-expected.txt
@@ -1,7 +1,87 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
+Found 83 tests; 71 PASS, 12 FAIL, 0 TIMEOUT, 0 NOTRUN.
+FAIL idl_test setup promise_test: Unhandled rejection with value: object "SecurityError: An attempt was made to break through the security policy of the user agent."
+PASS Partial interface Navigator: original interface defined
+PASS MIDIInputMap interface: existence and properties of interface object
+PASS MIDIInputMap interface object length
+PASS MIDIInputMap interface object name
+PASS MIDIInputMap interface: existence and properties of interface prototype object
+PASS MIDIInputMap interface: existence and properties of interface prototype object's "constructor" property
+PASS MIDIInputMap interface: existence and properties of interface prototype object's @@unscopables property
+FAIL MIDIInputMap must be primary interface of inputs assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: inputs is not defined"
+FAIL Stringification of inputs assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: inputs is not defined"
+PASS MIDIOutputMap interface: existence and properties of interface object
+PASS MIDIOutputMap interface object length
+PASS MIDIOutputMap interface object name
+PASS MIDIOutputMap interface: existence and properties of interface prototype object
+PASS MIDIOutputMap interface: existence and properties of interface prototype object's "constructor" property
+PASS MIDIOutputMap interface: existence and properties of interface prototype object's @@unscopables property
+FAIL MIDIOutputMap must be primary interface of outputs assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: outputs is not defined"
+FAIL Stringification of outputs assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: outputs is not defined"
+PASS MIDIAccess interface: existence and properties of interface object
+PASS MIDIAccess interface object length
+PASS MIDIAccess interface object name
+PASS MIDIAccess interface: existence and properties of interface prototype object
+PASS MIDIAccess interface: existence and properties of interface prototype object's "constructor" property
+PASS MIDIAccess interface: existence and properties of interface prototype object's @@unscopables property
+PASS MIDIAccess interface: attribute inputs
+PASS MIDIAccess interface: attribute outputs
+PASS MIDIAccess interface: attribute onstatechange
+PASS MIDIAccess interface: attribute sysexEnabled
+FAIL MIDIAccess must be primary interface of access assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: access is not defined"
+FAIL Stringification of access assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: access is not defined"
+FAIL MIDIAccess interface: access must inherit property "inputs" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: access is not defined"
+FAIL MIDIAccess interface: access must inherit property "outputs" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: access is not defined"
+FAIL MIDIAccess interface: access must inherit property "onstatechange" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: access is not defined"
+FAIL MIDIAccess interface: access must inherit property "sysexEnabled" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: access is not defined"
+PASS MIDIPort interface: existence and properties of interface object
+PASS MIDIPort interface object length
+PASS MIDIPort interface object name
+PASS MIDIPort interface: existence and properties of interface prototype object
+PASS MIDIPort interface: existence and properties of interface prototype object's "constructor" property
+PASS MIDIPort interface: existence and properties of interface prototype object's @@unscopables property
+PASS MIDIPort interface: attribute id
+PASS MIDIPort interface: attribute manufacturer
+PASS MIDIPort interface: attribute name
+PASS MIDIPort interface: attribute type
+PASS MIDIPort interface: attribute version
+PASS MIDIPort interface: attribute state
+PASS MIDIPort interface: attribute connection
+PASS MIDIPort interface: attribute onstatechange
+PASS MIDIPort interface: operation open()
+PASS MIDIPort interface: operation close()
+PASS MIDIInput interface: existence and properties of interface object
+PASS MIDIInput interface object length
+PASS MIDIInput interface object name
+PASS MIDIInput interface: existence and properties of interface prototype object
+PASS MIDIInput interface: existence and properties of interface prototype object's "constructor" property
+PASS MIDIInput interface: existence and properties of interface prototype object's @@unscopables property
+PASS MIDIInput interface: attribute onmidimessage
+PASS MIDIOutput interface: existence and properties of interface object
+PASS MIDIOutput interface object length
+PASS MIDIOutput interface object name
+PASS MIDIOutput interface: existence and properties of interface prototype object
+PASS MIDIOutput interface: existence and properties of interface prototype object's "constructor" property
+PASS MIDIOutput interface: existence and properties of interface prototype object's @@unscopables property
+PASS MIDIOutput interface: operation send([object Object], DOMHighResTimeStamp)
+FAIL MIDIOutput interface: operation clear() assert_own_property: interface prototype object missing non-static operation expected property "clear" missing
+PASS MIDIMessageEvent interface: existence and properties of interface object
+PASS MIDIMessageEvent interface object length
+PASS MIDIMessageEvent interface object name
+PASS MIDIMessageEvent interface: existence and properties of interface prototype object
+PASS MIDIMessageEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS MIDIMessageEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS MIDIMessageEvent interface: attribute data
+PASS MIDIConnectionEvent interface: existence and properties of interface object
+PASS MIDIConnectionEvent interface object length
+PASS MIDIConnectionEvent interface object name
+PASS MIDIConnectionEvent interface: existence and properties of interface prototype object
+PASS MIDIConnectionEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS MIDIConnectionEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS MIDIConnectionEvent interface: attribute port
+PASS MIDIConnectionEvent must be primary interface of new MIDIConnectionEvent("type")
+PASS Stringification of new MIDIConnectionEvent("type")
+PASS MIDIConnectionEvent interface: new MIDIConnectionEvent("type") must inherit property "port" with the proper type
+PASS Navigator interface: operation requestMIDIAccess(MIDIOptions)
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-iceConnectionState.https.html b/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-iceConnectionState.https.html
index c0ce25e..8e853e4 100644
--- a/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-iceConnectionState.https.html
+++ b/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-iceConnectionState.https.html
@@ -359,6 +359,7 @@
   pc1.candidateBuffer.forEach(c => pc1.addIceCandidate(c));
   delete pc1.candidateBuffer;
   await listenToIceConnected(pc1);
+  await listenToIceConnected(pc2);
   assert_array_equals(pc1.iceStates, ['new', 'checking', 'connected']);
   assert_array_equals(pc2.iceStates, ['new', 'checking', 'connected']);
 }, 'Responder ICE connection state behaves as expected');
diff --git a/third_party/blink/web_tests/external/wpt/webrtc/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/webrtc/idlharness.https.window-expected.txt
index ff203f9..e6a1d72 100644
--- a/third_party/blink/web_tests/external/wpt/webrtc/idlharness.https.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/webrtc/idlharness.https.window-expected.txt
@@ -1,8 +1,9 @@
 This is a testharness.js-based test.
-Found 295 tests; 268 PASS, 27 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+Found 508 tests; 469 PASS, 39 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Test driver for asyncInitCertificate
+PASS Test driver for asyncInitTransports
+PASS Test driver for asyncInitMediaStreamTrack
 PASS Partial interface RTCPeerConnection: original interface defined
 PASS Partial dictionary RTCOfferOptions: original dictionary defined
 PASS Partial interface RTCPeerConnection[2]: original interface defined
@@ -62,6 +63,71 @@
 PASS RTCPeerConnection interface: attribute ondatachannel
 PASS RTCPeerConnection interface: operation getStats(MediaStreamTrack)
 FAIL RTCPeerConnection interface: attribute onstatsended assert_true: The prototype object must have a property "onstatsended" expected true got false
+PASS RTCPeerConnection must be primary interface of new RTCPeerConnection()
+PASS Stringification of new RTCPeerConnection()
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createOffer(RTCOfferOptions)" with the proper type
+PASS RTCPeerConnection interface: calling createOffer(RTCOfferOptions) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createAnswer(RTCAnswerOptions)" with the proper type
+PASS RTCPeerConnection interface: calling createAnswer(RTCAnswerOptions) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setLocalDescription(RTCSessionDescriptionInit)" with the proper type
+PASS RTCPeerConnection interface: calling setLocalDescription(RTCSessionDescriptionInit) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "localDescription" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "currentLocalDescription" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "pendingLocalDescription" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setRemoteDescription(RTCSessionDescriptionInit)" with the proper type
+PASS RTCPeerConnection interface: calling setRemoteDescription(RTCSessionDescriptionInit) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "remoteDescription" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "currentRemoteDescription" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "pendingRemoteDescription" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "addIceCandidate(RTCIceCandidateInit)" with the proper type
+PASS RTCPeerConnection interface: calling addIceCandidate(RTCIceCandidateInit) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "signalingState" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "iceGatheringState" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "iceConnectionState" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "connectionState" with the proper type
+FAIL RTCPeerConnection interface: new RTCPeerConnection() must inherit property "canTrickleIceCandidates" with the proper type assert_inherits: property "canTrickleIceCandidates" not found in prototype chain
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "restartIce()" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getDefaultIceServers()" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getConfiguration()" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setConfiguration(RTCConfiguration)" with the proper type
+PASS RTCPeerConnection interface: calling setConfiguration(RTCConfiguration) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "close()" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onnegotiationneeded" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicecandidate" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicecandidateerror" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onsignalingstatechange" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "oniceconnectionstatechange" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicegatheringstatechange" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onconnectionstatechange" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createOffer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback, RTCOfferOptions)" with the proper type
+PASS RTCPeerConnection interface: calling createOffer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback, RTCOfferOptions) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setLocalDescription(RTCSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback)" with the proper type
+PASS RTCPeerConnection interface: calling setLocalDescription(RTCSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createAnswer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback)" with the proper type
+PASS RTCPeerConnection interface: calling createAnswer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setRemoteDescription(RTCSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback)" with the proper type
+PASS RTCPeerConnection interface: calling setRemoteDescription(RTCSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "addIceCandidate(RTCIceCandidateInit, VoidFunction, RTCPeerConnectionErrorCallback)" with the proper type
+PASS RTCPeerConnection interface: calling addIceCandidate(RTCIceCandidateInit, VoidFunction, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "generateCertificate(AlgorithmIdentifier)" with the proper type
+PASS RTCPeerConnection interface: calling generateCertificate(AlgorithmIdentifier) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getSenders()" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getReceivers()" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getTransceivers()" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "addTrack(MediaStreamTrack, MediaStream)" with the proper type
+PASS RTCPeerConnection interface: calling addTrack(MediaStreamTrack, MediaStream) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "removeTrack(RTCRtpSender)" with the proper type
+PASS RTCPeerConnection interface: calling removeTrack(RTCRtpSender) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "addTransceiver([object Object],[object Object], RTCRtpTransceiverInit)" with the proper type
+PASS RTCPeerConnection interface: calling addTransceiver([object Object],[object Object], RTCRtpTransceiverInit) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "ontrack" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "sctp" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createDataChannel(USVString, RTCDataChannelInit)" with the proper type
+PASS RTCPeerConnection interface: calling createDataChannel(USVString, RTCDataChannelInit) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "ondatachannel" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getStats(MediaStreamTrack)" with the proper type
+PASS RTCPeerConnection interface: calling getStats(MediaStreamTrack) on new RTCPeerConnection() with too few arguments must throw TypeError
+FAIL RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onstatsended" with the proper type assert_inherits: property "onstatsended" not found in prototype chain
 PASS RTCSessionDescription interface: existence and properties of interface object
 PASS RTCSessionDescription interface object length
 PASS RTCSessionDescription interface object name
@@ -71,6 +137,12 @@
 FAIL RTCSessionDescription interface: attribute type assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function set type() { [native code] }"
 FAIL RTCSessionDescription interface: attribute sdp assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function set sdp() { [native code] }"
 PASS RTCSessionDescription interface: operation toJSON()
+PASS RTCSessionDescription must be primary interface of new RTCSessionDescription({ type: 'offer' })
+PASS Stringification of new RTCSessionDescription({ type: 'offer' })
+PASS RTCSessionDescription interface: new RTCSessionDescription({ type: 'offer' }) must inherit property "type" with the proper type
+FAIL RTCSessionDescription interface: new RTCSessionDescription({ type: 'offer' }) must inherit property "sdp" with the proper type assert_equals: expected "string" but got "object"
+PASS RTCSessionDescription interface: new RTCSessionDescription({ type: 'offer' }) must inherit property "toJSON()" with the proper type
+FAIL RTCSessionDescription interface: default toJSON operation on new RTCSessionDescription({ type: 'offer' }) assert_equals: expected "string" but got "object"
 PASS RTCIceCandidate interface: existence and properties of interface object
 PASS RTCIceCandidate interface object length
 PASS RTCIceCandidate interface object name
@@ -92,6 +164,24 @@
 PASS RTCIceCandidate interface: attribute relatedPort
 PASS RTCIceCandidate interface: attribute usernameFragment
 PASS RTCIceCandidate interface: operation toJSON()
+PASS RTCIceCandidate must be primary interface of new RTCIceCandidate({ sdpMid: 1 })
+PASS Stringification of new RTCIceCandidate({ sdpMid: 1 })
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "candidate" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "sdpMid" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "sdpMLineIndex" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "foundation" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "component" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "priority" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "address" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "protocol" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "port" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "type" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "tcpType" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "relatedAddress" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "relatedPort" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "usernameFragment" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "toJSON()" with the proper type
+PASS RTCIceCandidate interface: toJSON operation on new RTCIceCandidate({ sdpMid: 1 })
 PASS RTCPeerConnectionIceEvent interface: existence and properties of interface object
 PASS RTCPeerConnectionIceEvent interface object length
 PASS RTCPeerConnectionIceEvent interface object name
@@ -100,6 +190,10 @@
 PASS RTCPeerConnectionIceEvent interface: existence and properties of interface prototype object's @@unscopables property
 PASS RTCPeerConnectionIceEvent interface: attribute candidate
 FAIL RTCPeerConnectionIceEvent interface: attribute url assert_true: The prototype object must have a property "url" expected true got false
+PASS RTCPeerConnectionIceEvent must be primary interface of new RTCPeerConnectionIceEvent('ice')
+PASS Stringification of new RTCPeerConnectionIceEvent('ice')
+PASS RTCPeerConnectionIceEvent interface: new RTCPeerConnectionIceEvent('ice') must inherit property "candidate" with the proper type
+FAIL RTCPeerConnectionIceEvent interface: new RTCPeerConnectionIceEvent('ice') must inherit property "url" with the proper type assert_inherits: property "url" not found in prototype chain
 PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface object
 PASS RTCPeerConnectionIceErrorEvent interface object length
 PASS RTCPeerConnectionIceErrorEvent interface object name
@@ -110,6 +204,12 @@
 PASS RTCPeerConnectionIceErrorEvent interface: attribute url
 PASS RTCPeerConnectionIceErrorEvent interface: attribute errorCode
 PASS RTCPeerConnectionIceErrorEvent interface: attribute errorText
+PASS RTCPeerConnectionIceErrorEvent must be primary interface of new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 });
+PASS Stringification of new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 });
+PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "hostCandidate" with the proper type
+PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "url" with the proper type
+PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "errorCode" with the proper type
+PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "errorText" with the proper type
 PASS RTCCertificate interface: existence and properties of interface object
 PASS RTCCertificate interface object length
 PASS RTCCertificate interface object name
@@ -119,6 +219,11 @@
 PASS RTCCertificate interface: attribute expires
 FAIL RTCCertificate interface: operation getSupportedAlgorithms() assert_own_property: interface object missing static operation expected property "getSupportedAlgorithms" missing
 PASS RTCCertificate interface: operation getFingerprints()
+PASS RTCCertificate must be primary interface of idlTestObjects.certificate
+PASS Stringification of idlTestObjects.certificate
+PASS RTCCertificate interface: idlTestObjects.certificate must inherit property "expires" with the proper type
+PASS RTCCertificate interface: idlTestObjects.certificate must inherit property "getSupportedAlgorithms()" with the proper type
+PASS RTCCertificate interface: idlTestObjects.certificate must inherit property "getFingerprints()" with the proper type
 PASS RTCRtpSender interface: existence and properties of interface object
 PASS RTCRtpSender interface object length
 PASS RTCRtpSender interface object name
@@ -135,6 +240,22 @@
 PASS RTCRtpSender interface: operation setStreams(MediaStream)
 PASS RTCRtpSender interface: operation getStats()
 PASS RTCRtpSender interface: attribute dtmf
+PASS RTCRtpSender must be primary interface of new RTCPeerConnection().addTransceiver('audio').sender
+PASS Stringification of new RTCPeerConnection().addTransceiver('audio').sender
+PASS RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "track" with the proper type
+PASS RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "transport" with the proper type
+PASS RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "rtcpTransport" with the proper type
+PASS RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "getCapabilities(DOMString)" with the proper type
+PASS RTCRtpSender interface: calling getCapabilities(DOMString) on new RTCPeerConnection().addTransceiver('audio').sender with too few arguments must throw TypeError
+PASS RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "setParameters(RTCRtpSendParameters)" with the proper type
+PASS RTCRtpSender interface: calling setParameters(RTCRtpSendParameters) on new RTCPeerConnection().addTransceiver('audio').sender with too few arguments must throw TypeError
+PASS RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "getParameters()" with the proper type
+PASS RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "replaceTrack(MediaStreamTrack)" with the proper type
+PASS RTCRtpSender interface: calling replaceTrack(MediaStreamTrack) on new RTCPeerConnection().addTransceiver('audio').sender with too few arguments must throw TypeError
+PASS RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "setStreams(MediaStream)" with the proper type
+PASS RTCRtpSender interface: calling setStreams(MediaStream) on new RTCPeerConnection().addTransceiver('audio').sender with too few arguments must throw TypeError
+PASS RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "getStats()" with the proper type
+PASS RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "dtmf" with the proper type
 PASS RTCRtpReceiver interface: existence and properties of interface object
 PASS RTCRtpReceiver interface object length
 PASS RTCRtpReceiver interface object name
@@ -149,6 +270,17 @@
 PASS RTCRtpReceiver interface: operation getContributingSources()
 PASS RTCRtpReceiver interface: operation getSynchronizationSources()
 PASS RTCRtpReceiver interface: operation getStats()
+PASS RTCRtpReceiver must be primary interface of new RTCPeerConnection().addTransceiver('audio').receiver
+PASS Stringification of new RTCPeerConnection().addTransceiver('audio').receiver
+PASS RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "track" with the proper type
+PASS RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "transport" with the proper type
+PASS RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "rtcpTransport" with the proper type
+PASS RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "getCapabilities(DOMString)" with the proper type
+PASS RTCRtpReceiver interface: calling getCapabilities(DOMString) on new RTCPeerConnection().addTransceiver('audio').receiver with too few arguments must throw TypeError
+PASS RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "getParameters()" with the proper type
+PASS RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "getContributingSources()" with the proper type
+PASS RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "getSynchronizationSources()" with the proper type
+PASS RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "getStats()" with the proper type
 PASS RTCRtpTransceiver interface: existence and properties of interface object
 PASS RTCRtpTransceiver interface object length
 PASS RTCRtpTransceiver interface object name
@@ -162,6 +294,16 @@
 PASS RTCRtpTransceiver interface: attribute currentDirection
 FAIL RTCRtpTransceiver interface: operation stop() assert_own_property: interface prototype object missing non-static operation expected property "stop" missing
 PASS RTCRtpTransceiver interface: operation setCodecPreferences([object Object])
+PASS RTCRtpTransceiver must be primary interface of new RTCPeerConnection().addTransceiver('audio')
+PASS Stringification of new RTCPeerConnection().addTransceiver('audio')
+PASS RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "mid" with the proper type
+PASS RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "sender" with the proper type
+PASS RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "receiver" with the proper type
+PASS RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "direction" with the proper type
+PASS RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "currentDirection" with the proper type
+FAIL RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "stop()" with the proper type assert_inherits: property "stop" not found in prototype chain
+PASS RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "setCodecPreferences([object Object])" with the proper type
+PASS RTCRtpTransceiver interface: calling setCodecPreferences([object Object]) on new RTCPeerConnection().addTransceiver('audio') with too few arguments must throw TypeError
 PASS RTCDtlsTransport interface: existence and properties of interface object
 PASS RTCDtlsTransport interface object length
 PASS RTCDtlsTransport interface object name
@@ -173,6 +315,13 @@
 PASS RTCDtlsTransport interface: operation getRemoteCertificates()
 PASS RTCDtlsTransport interface: attribute onstatechange
 PASS RTCDtlsTransport interface: attribute onerror
+PASS RTCDtlsTransport must be primary interface of idlTestObjects.dtlsTransport
+PASS Stringification of idlTestObjects.dtlsTransport
+PASS RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "iceTransport" with the proper type
+PASS RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "state" with the proper type
+PASS RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "getRemoteCertificates()" with the proper type
+PASS RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "onstatechange" with the proper type
+PASS RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "onerror" with the proper type
 FAIL RTCIceTransport interface: existence and properties of interface object assert_throws: interface object didn't throw TypeError when called as a constructor function "function() {
                 new interface_object();
             }" did not throw
@@ -193,6 +342,20 @@
 PASS RTCIceTransport interface: attribute onstatechange
 PASS RTCIceTransport interface: attribute ongatheringstatechange
 PASS RTCIceTransport interface: attribute onselectedcandidatepairchange
+PASS RTCIceTransport must be primary interface of idlTestObjects.iceTransport
+PASS Stringification of idlTestObjects.iceTransport
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "role" with the proper type assert_equals: expected "string" but got "object"
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "component" with the proper type assert_inherits: property "component" not found in prototype chain
+PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "state" with the proper type
+PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "gatheringState" with the proper type
+PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getLocalCandidates()" with the proper type
+PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getRemoteCandidates()" with the proper type
+PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getSelectedCandidatePair()" with the proper type
+PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getLocalParameters()" with the proper type
+PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getRemoteParameters()" with the proper type
+PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "onstatechange" with the proper type
+PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "ongatheringstatechange" with the proper type
+PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "onselectedcandidatepairchange" with the proper type
 PASS RTCTrackEvent interface: existence and properties of interface object
 PASS RTCTrackEvent interface object length
 PASS RTCTrackEvent interface object name
@@ -203,6 +366,12 @@
 PASS RTCTrackEvent interface: attribute track
 PASS RTCTrackEvent interface: attribute streams
 PASS RTCTrackEvent interface: attribute transceiver
+PASS RTCTrackEvent must be primary interface of initTrackEvent()
+PASS Stringification of initTrackEvent()
+PASS RTCTrackEvent interface: initTrackEvent() must inherit property "receiver" with the proper type
+PASS RTCTrackEvent interface: initTrackEvent() must inherit property "track" with the proper type
+PASS RTCTrackEvent interface: initTrackEvent() must inherit property "streams" with the proper type
+PASS RTCTrackEvent interface: initTrackEvent() must inherit property "transceiver" with the proper type
 PASS RTCSctpTransport interface: existence and properties of interface object
 PASS RTCSctpTransport interface object length
 PASS RTCSctpTransport interface object name
@@ -214,6 +383,13 @@
 PASS RTCSctpTransport interface: attribute maxMessageSize
 PASS RTCSctpTransport interface: attribute maxChannels
 PASS RTCSctpTransport interface: attribute onstatechange
+PASS RTCSctpTransport must be primary interface of idlTestObjects.sctpTransport
+PASS Stringification of idlTestObjects.sctpTransport
+PASS RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "transport" with the proper type
+PASS RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "state" with the proper type
+PASS RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "maxMessageSize" with the proper type
+PASS RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "maxChannels" with the proper type
+PASS RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "onstatechange" with the proper type
 PASS RTCDataChannel interface: existence and properties of interface object
 PASS RTCDataChannel interface object length
 PASS RTCDataChannel interface object name
@@ -243,6 +419,35 @@
 PASS RTCDataChannel interface: operation send(Blob)
 PASS RTCDataChannel interface: operation send(ArrayBuffer)
 PASS RTCDataChannel interface: operation send(ArrayBufferView)
+PASS RTCDataChannel must be primary interface of new RTCPeerConnection().createDataChannel('')
+PASS Stringification of new RTCPeerConnection().createDataChannel('')
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "label" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "ordered" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "maxPacketLifeTime" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "maxRetransmits" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "protocol" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "negotiated" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "id" with the proper type
+FAIL RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "priority" with the proper type assert_inherits: property "priority" not found in prototype chain
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "readyState" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "bufferedAmount" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "bufferedAmountLowThreshold" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onopen" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onbufferedamountlow" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onerror" with the proper type
+FAIL RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onclosing" with the proper type assert_inherits: property "onclosing" not found in prototype chain
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onclose" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "close()" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onmessage" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "binaryType" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "send(USVString)" with the proper type
+PASS RTCDataChannel interface: calling send(USVString) on new RTCPeerConnection().createDataChannel('') with too few arguments must throw TypeError
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "send(Blob)" with the proper type
+PASS RTCDataChannel interface: calling send(Blob) on new RTCPeerConnection().createDataChannel('') with too few arguments must throw TypeError
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "send(ArrayBuffer)" with the proper type
+PASS RTCDataChannel interface: calling send(ArrayBuffer) on new RTCPeerConnection().createDataChannel('') with too few arguments must throw TypeError
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "send(ArrayBufferView)" with the proper type
+PASS RTCDataChannel interface: calling send(ArrayBufferView) on new RTCPeerConnection().createDataChannel('') with too few arguments must throw TypeError
 PASS RTCDataChannelEvent interface: existence and properties of interface object
 PASS RTCDataChannelEvent interface object length
 PASS RTCDataChannelEvent interface object name
@@ -250,6 +455,15 @@
 PASS RTCDataChannelEvent interface: existence and properties of interface prototype object's "constructor" property
 PASS RTCDataChannelEvent interface: existence and properties of interface prototype object's @@unscopables property
 PASS RTCDataChannelEvent interface: attribute channel
+PASS RTCDataChannelEvent must be primary interface of new RTCDataChannelEvent('channel', {
+          channel: new RTCPeerConnection().createDataChannel('')
+        })
+PASS Stringification of new RTCDataChannelEvent('channel', {
+          channel: new RTCPeerConnection().createDataChannel('')
+        })
+PASS RTCDataChannelEvent interface: new RTCDataChannelEvent('channel', {
+          channel: new RTCPeerConnection().createDataChannel('')
+        }) must inherit property "channel" with the proper type
 PASS RTCDTMFSender interface: existence and properties of interface object
 PASS RTCDTMFSender interface object length
 PASS RTCDTMFSender interface object name
@@ -299,5 +513,8 @@
 PASS RTCErrorEvent interface: existence and properties of interface prototype object's "constructor" property
 PASS RTCErrorEvent interface: existence and properties of interface prototype object's @@unscopables property
 PASS RTCErrorEvent interface: attribute error
+FAIL RTCErrorEvent must be primary interface of new RTCErrorEvent('error') assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCErrorEvent': 2 arguments required, but only 1 present."
+FAIL Stringification of new RTCErrorEvent('error') assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCErrorEvent': 2 arguments required, but only 1 present."
+FAIL RTCErrorEvent interface: new RTCErrorEvent('error') must inherit property "error" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCErrorEvent': 2 arguments required, but only 1 present."
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/webstorage/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/webstorage/idlharness.window-expected.txt
deleted file mode 100644
index adb6cc43..0000000
--- a/third_party/blink/web_tests/external/wpt/webstorage/idlharness.window-expected.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/webusb/idlharness.https.any-expected.txt b/third_party/blink/web_tests/external/wpt/webusb/idlharness.https.any-expected.txt
index 11d4d700..506f932 100644
--- a/third_party/blink/web_tests/external/wpt/webusb/idlharness.https.any-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/webusb/idlharness.https.any-expected.txt
@@ -1,8 +1,264 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface WorkerNavigator: original interface defined assert_true: Original interface should be defined expected true got false
+Found 260 tests; 180 PASS, 80 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+FAIL USB device setup promise_test: Unhandled rejection with value: object "TypeError: Cannot read property 'configurations' of undefined"
+PASS Partial interface Navigator: original interface defined
+PASS Partial interface Navigator: valid exposure set
+PASS Partial interface WorkerNavigator: original interface defined
+PASS Partial interface WorkerNavigator: valid exposure set
+PASS USB interface: existence and properties of interface object
+PASS USB interface object length
+PASS USB interface object name
+PASS USB interface: existence and properties of interface prototype object
+PASS USB interface: existence and properties of interface prototype object's "constructor" property
+PASS USB interface: existence and properties of interface prototype object's @@unscopables property
+PASS USB interface: attribute onconnect
+PASS USB interface: attribute ondisconnect
+PASS USB interface: operation getDevices()
+PASS USB interface: operation requestDevice(USBDeviceRequestOptions)
+PASS USB must be primary interface of navigator.usb
+PASS Stringification of navigator.usb
+PASS USB interface: navigator.usb must inherit property "onconnect" with the proper type
+PASS USB interface: navigator.usb must inherit property "ondisconnect" with the proper type
+PASS USB interface: navigator.usb must inherit property "getDevices()" with the proper type
+PASS USB interface: navigator.usb must inherit property "requestDevice(USBDeviceRequestOptions)" with the proper type
+PASS USB interface: calling requestDevice(USBDeviceRequestOptions) on navigator.usb with too few arguments must throw TypeError
+PASS USBConnectionEvent interface: existence and properties of interface object
+PASS USBConnectionEvent interface object length
+PASS USBConnectionEvent interface object name
+PASS USBConnectionEvent interface: existence and properties of interface prototype object
+PASS USBConnectionEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS USBConnectionEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBConnectionEvent interface: attribute device
+FAIL USBConnectionEvent must be primary interface of usbConnectionEvent assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbConnectionEvent is not defined"
+FAIL Stringification of usbConnectionEvent assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbConnectionEvent is not defined"
+FAIL USBConnectionEvent interface: usbConnectionEvent must inherit property "device" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbConnectionEvent is not defined"
+PASS USBDevice interface: existence and properties of interface object
+PASS USBDevice interface object length
+PASS USBDevice interface object name
+PASS USBDevice interface: existence and properties of interface prototype object
+PASS USBDevice interface: existence and properties of interface prototype object's "constructor" property
+PASS USBDevice interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBDevice interface: attribute usbVersionMajor
+PASS USBDevice interface: attribute usbVersionMinor
+PASS USBDevice interface: attribute usbVersionSubminor
+PASS USBDevice interface: attribute deviceClass
+PASS USBDevice interface: attribute deviceSubclass
+PASS USBDevice interface: attribute deviceProtocol
+PASS USBDevice interface: attribute vendorId
+PASS USBDevice interface: attribute productId
+PASS USBDevice interface: attribute deviceVersionMajor
+PASS USBDevice interface: attribute deviceVersionMinor
+PASS USBDevice interface: attribute deviceVersionSubminor
+PASS USBDevice interface: attribute manufacturerName
+PASS USBDevice interface: attribute productName
+PASS USBDevice interface: attribute serialNumber
+PASS USBDevice interface: attribute configuration
+PASS USBDevice interface: attribute configurations
+PASS USBDevice interface: attribute opened
+PASS USBDevice interface: operation open()
+PASS USBDevice interface: operation close()
+PASS USBDevice interface: operation selectConfiguration(octet)
+PASS USBDevice interface: operation claimInterface(octet)
+PASS USBDevice interface: operation releaseInterface(octet)
+PASS USBDevice interface: operation selectAlternateInterface(octet, octet)
+PASS USBDevice interface: operation controlTransferIn(USBControlTransferParameters, unsigned short)
+PASS USBDevice interface: operation controlTransferOut(USBControlTransferParameters, BufferSource)
+PASS USBDevice interface: operation clearHalt(USBDirection, octet)
+PASS USBDevice interface: operation transferIn(octet, unsigned long)
+PASS USBDevice interface: operation transferOut(octet, BufferSource)
+PASS USBDevice interface: operation isochronousTransferIn(octet, [object Object])
+PASS USBDevice interface: operation isochronousTransferOut(octet, BufferSource, [object Object])
+PASS USBDevice interface: operation reset()
+FAIL USBDevice must be primary interface of usbDevice assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL Stringification of usbDevice assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "usbVersionMajor" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "usbVersionMinor" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "usbVersionSubminor" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "deviceClass" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "deviceSubclass" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "deviceProtocol" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "vendorId" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "productId" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "deviceVersionMajor" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "deviceVersionMinor" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "deviceVersionSubminor" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "manufacturerName" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "productName" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "serialNumber" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "configuration" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "configurations" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "opened" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "open()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "close()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "selectConfiguration(octet)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling selectConfiguration(octet) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "claimInterface(octet)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling claimInterface(octet) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "releaseInterface(octet)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling releaseInterface(octet) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "selectAlternateInterface(octet, octet)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling selectAlternateInterface(octet, octet) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "controlTransferIn(USBControlTransferParameters, unsigned short)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling controlTransferIn(USBControlTransferParameters, unsigned short) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "controlTransferOut(USBControlTransferParameters, BufferSource)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling controlTransferOut(USBControlTransferParameters, BufferSource) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "clearHalt(USBDirection, octet)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling clearHalt(USBDirection, octet) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "transferIn(octet, unsigned long)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling transferIn(octet, unsigned long) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "transferOut(octet, BufferSource)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling transferOut(octet, BufferSource) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "isochronousTransferIn(octet, [object Object])" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling isochronousTransferIn(octet, [object Object]) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "isochronousTransferOut(octet, BufferSource, [object Object])" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling isochronousTransferOut(octet, BufferSource, [object Object]) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "reset()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+PASS USBInTransferResult interface: existence and properties of interface object
+PASS USBInTransferResult interface object length
+PASS USBInTransferResult interface object name
+PASS USBInTransferResult interface: existence and properties of interface prototype object
+PASS USBInTransferResult interface: existence and properties of interface prototype object's "constructor" property
+PASS USBInTransferResult interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBInTransferResult interface: attribute data
+PASS USBInTransferResult interface: attribute status
+PASS USBInTransferResult must be primary interface of new USBInTransferResult("ok")
+PASS Stringification of new USBInTransferResult("ok")
+PASS USBInTransferResult interface: new USBInTransferResult("ok") must inherit property "data" with the proper type
+PASS USBInTransferResult interface: new USBInTransferResult("ok") must inherit property "status" with the proper type
+PASS USBOutTransferResult interface: existence and properties of interface object
+PASS USBOutTransferResult interface object length
+PASS USBOutTransferResult interface object name
+PASS USBOutTransferResult interface: existence and properties of interface prototype object
+PASS USBOutTransferResult interface: existence and properties of interface prototype object's "constructor" property
+PASS USBOutTransferResult interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBOutTransferResult interface: attribute bytesWritten
+PASS USBOutTransferResult interface: attribute status
+PASS USBOutTransferResult must be primary interface of new USBOutTransferResult("ok")
+PASS Stringification of new USBOutTransferResult("ok")
+PASS USBOutTransferResult interface: new USBOutTransferResult("ok") must inherit property "bytesWritten" with the proper type
+PASS USBOutTransferResult interface: new USBOutTransferResult("ok") must inherit property "status" with the proper type
+PASS USBIsochronousInTransferPacket interface: existence and properties of interface object
+PASS USBIsochronousInTransferPacket interface object length
+PASS USBIsochronousInTransferPacket interface object name
+PASS USBIsochronousInTransferPacket interface: existence and properties of interface prototype object
+PASS USBIsochronousInTransferPacket interface: existence and properties of interface prototype object's "constructor" property
+PASS USBIsochronousInTransferPacket interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBIsochronousInTransferPacket interface: attribute data
+PASS USBIsochronousInTransferPacket interface: attribute status
+PASS USBIsochronousInTransferPacket must be primary interface of new USBIsochronousInTransferPacket("ok")
+PASS Stringification of new USBIsochronousInTransferPacket("ok")
+PASS USBIsochronousInTransferPacket interface: new USBIsochronousInTransferPacket("ok") must inherit property "data" with the proper type
+PASS USBIsochronousInTransferPacket interface: new USBIsochronousInTransferPacket("ok") must inherit property "status" with the proper type
+PASS USBIsochronousInTransferResult interface: existence and properties of interface object
+PASS USBIsochronousInTransferResult interface object length
+PASS USBIsochronousInTransferResult interface object name
+PASS USBIsochronousInTransferResult interface: existence and properties of interface prototype object
+PASS USBIsochronousInTransferResult interface: existence and properties of interface prototype object's "constructor" property
+PASS USBIsochronousInTransferResult interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBIsochronousInTransferResult interface: attribute data
+PASS USBIsochronousInTransferResult interface: attribute packets
+PASS USBIsochronousInTransferResult must be primary interface of new USBIsochronousInTransferResult([])
+PASS Stringification of new USBIsochronousInTransferResult([])
+PASS USBIsochronousInTransferResult interface: new USBIsochronousInTransferResult([]) must inherit property "data" with the proper type
+PASS USBIsochronousInTransferResult interface: new USBIsochronousInTransferResult([]) must inherit property "packets" with the proper type
+PASS USBIsochronousOutTransferPacket interface: existence and properties of interface object
+PASS USBIsochronousOutTransferPacket interface object length
+PASS USBIsochronousOutTransferPacket interface object name
+PASS USBIsochronousOutTransferPacket interface: existence and properties of interface prototype object
+PASS USBIsochronousOutTransferPacket interface: existence and properties of interface prototype object's "constructor" property
+PASS USBIsochronousOutTransferPacket interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBIsochronousOutTransferPacket interface: attribute bytesWritten
+PASS USBIsochronousOutTransferPacket interface: attribute status
+PASS USBIsochronousOutTransferPacket must be primary interface of new USBIsochronousOutTransferPacket("ok")
+PASS Stringification of new USBIsochronousOutTransferPacket("ok")
+PASS USBIsochronousOutTransferPacket interface: new USBIsochronousOutTransferPacket("ok") must inherit property "bytesWritten" with the proper type
+PASS USBIsochronousOutTransferPacket interface: new USBIsochronousOutTransferPacket("ok") must inherit property "status" with the proper type
+PASS USBIsochronousOutTransferResult interface: existence and properties of interface object
+PASS USBIsochronousOutTransferResult interface object length
+PASS USBIsochronousOutTransferResult interface object name
+PASS USBIsochronousOutTransferResult interface: existence and properties of interface prototype object
+PASS USBIsochronousOutTransferResult interface: existence and properties of interface prototype object's "constructor" property
+PASS USBIsochronousOutTransferResult interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBIsochronousOutTransferResult interface: attribute packets
+PASS USBIsochronousOutTransferResult must be primary interface of new USBIsochronousOutTransferResult([])
+PASS Stringification of new USBIsochronousOutTransferResult([])
+PASS USBIsochronousOutTransferResult interface: new USBIsochronousOutTransferResult([]) must inherit property "packets" with the proper type
+PASS USBConfiguration interface: existence and properties of interface object
+PASS USBConfiguration interface object length
+PASS USBConfiguration interface object name
+PASS USBConfiguration interface: existence and properties of interface prototype object
+PASS USBConfiguration interface: existence and properties of interface prototype object's "constructor" property
+PASS USBConfiguration interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBConfiguration interface: attribute configurationValue
+PASS USBConfiguration interface: attribute configurationName
+PASS USBConfiguration interface: attribute interfaces
+FAIL USBConfiguration must be primary interface of usbConfiguration assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbConfiguration is not defined"
+FAIL Stringification of usbConfiguration assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbConfiguration is not defined"
+FAIL USBConfiguration interface: usbConfiguration must inherit property "configurationValue" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbConfiguration is not defined"
+FAIL USBConfiguration interface: usbConfiguration must inherit property "configurationName" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbConfiguration is not defined"
+FAIL USBConfiguration interface: usbConfiguration must inherit property "interfaces" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbConfiguration is not defined"
+PASS USBInterface interface: existence and properties of interface object
+PASS USBInterface interface object length
+PASS USBInterface interface object name
+PASS USBInterface interface: existence and properties of interface prototype object
+PASS USBInterface interface: existence and properties of interface prototype object's "constructor" property
+PASS USBInterface interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBInterface interface: attribute interfaceNumber
+PASS USBInterface interface: attribute alternate
+PASS USBInterface interface: attribute alternates
+PASS USBInterface interface: attribute claimed
+FAIL USBInterface must be primary interface of usbInterface assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbInterface is not defined"
+FAIL Stringification of usbInterface assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbInterface is not defined"
+FAIL USBInterface interface: usbInterface must inherit property "interfaceNumber" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbInterface is not defined"
+FAIL USBInterface interface: usbInterface must inherit property "alternate" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbInterface is not defined"
+FAIL USBInterface interface: usbInterface must inherit property "alternates" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbInterface is not defined"
+FAIL USBInterface interface: usbInterface must inherit property "claimed" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbInterface is not defined"
+PASS USBAlternateInterface interface: existence and properties of interface object
+PASS USBAlternateInterface interface object length
+PASS USBAlternateInterface interface object name
+PASS USBAlternateInterface interface: existence and properties of interface prototype object
+PASS USBAlternateInterface interface: existence and properties of interface prototype object's "constructor" property
+PASS USBAlternateInterface interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBAlternateInterface interface: attribute alternateSetting
+PASS USBAlternateInterface interface: attribute interfaceClass
+PASS USBAlternateInterface interface: attribute interfaceSubclass
+PASS USBAlternateInterface interface: attribute interfaceProtocol
+PASS USBAlternateInterface interface: attribute interfaceName
+PASS USBAlternateInterface interface: attribute endpoints
+FAIL USBAlternateInterface must be primary interface of usbAlternateInterface assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbAlternateInterface is not defined"
+FAIL Stringification of usbAlternateInterface assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbAlternateInterface is not defined"
+FAIL USBAlternateInterface interface: usbAlternateInterface must inherit property "alternateSetting" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbAlternateInterface is not defined"
+FAIL USBAlternateInterface interface: usbAlternateInterface must inherit property "interfaceClass" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbAlternateInterface is not defined"
+FAIL USBAlternateInterface interface: usbAlternateInterface must inherit property "interfaceSubclass" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbAlternateInterface is not defined"
+FAIL USBAlternateInterface interface: usbAlternateInterface must inherit property "interfaceProtocol" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbAlternateInterface is not defined"
+FAIL USBAlternateInterface interface: usbAlternateInterface must inherit property "interfaceName" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbAlternateInterface is not defined"
+FAIL USBAlternateInterface interface: usbAlternateInterface must inherit property "endpoints" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbAlternateInterface is not defined"
+PASS USBEndpoint interface: existence and properties of interface object
+PASS USBEndpoint interface object length
+PASS USBEndpoint interface object name
+PASS USBEndpoint interface: existence and properties of interface prototype object
+PASS USBEndpoint interface: existence and properties of interface prototype object's "constructor" property
+PASS USBEndpoint interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBEndpoint interface: attribute endpointNumber
+PASS USBEndpoint interface: attribute direction
+PASS USBEndpoint interface: attribute type
+PASS USBEndpoint interface: attribute packetSize
+FAIL USBEndpoint must be primary interface of usbEndpoint assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbEndpoint is not defined"
+FAIL Stringification of usbEndpoint assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbEndpoint is not defined"
+FAIL USBEndpoint interface: usbEndpoint must inherit property "endpointNumber" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbEndpoint is not defined"
+FAIL USBEndpoint interface: usbEndpoint must inherit property "direction" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbEndpoint is not defined"
+FAIL USBEndpoint interface: usbEndpoint must inherit property "type" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbEndpoint is not defined"
+FAIL USBEndpoint interface: usbEndpoint must inherit property "packetSize" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbEndpoint is not defined"
+FAIL USBPermissionResult interface: existence and properties of interface object assert_own_property: self does not have own property "USBPermissionResult" expected property "USBPermissionResult" missing
+FAIL USBPermissionResult interface object length assert_own_property: self does not have own property "USBPermissionResult" expected property "USBPermissionResult" missing
+FAIL USBPermissionResult interface object name assert_own_property: self does not have own property "USBPermissionResult" expected property "USBPermissionResult" missing
+FAIL USBPermissionResult interface: existence and properties of interface prototype object assert_own_property: self does not have own property "USBPermissionResult" expected property "USBPermissionResult" missing
+FAIL USBPermissionResult interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "USBPermissionResult" expected property "USBPermissionResult" missing
+FAIL USBPermissionResult interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "USBPermissionResult" expected property "USBPermissionResult" missing
+FAIL USBPermissionResult interface: attribute devices assert_own_property: self does not have own property "USBPermissionResult" expected property "USBPermissionResult" missing
+PASS Navigator interface: attribute usb
+PASS Navigator interface: navigator must inherit property "usb" with the proper type
+PASS WorkerNavigator interface: existence and properties of interface object
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/webusb/idlharness.https.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/webusb/idlharness.https.any.worker-expected.txt
index 11d4d700..d097c0d 100644
--- a/third_party/blink/web_tests/external/wpt/webusb/idlharness.https.any.worker-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/webusb/idlharness.https.any.worker-expected.txt
@@ -1,8 +1,257 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface WorkerNavigator: original interface defined assert_true: Original interface should be defined expected true got false
+Found 253 tests; 180 PASS, 73 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+FAIL USB device setup promise_test: Unhandled rejection with value: object "TypeError: Cannot read property 'configurations' of undefined"
+PASS Partial interface Navigator: original interface defined
+PASS Partial interface Navigator: valid exposure set
+PASS Partial interface WorkerNavigator: original interface defined
+PASS Partial interface WorkerNavigator: valid exposure set
+PASS USB interface: existence and properties of interface object
+PASS USB interface object length
+PASS USB interface object name
+PASS USB interface: existence and properties of interface prototype object
+PASS USB interface: existence and properties of interface prototype object's "constructor" property
+PASS USB interface: existence and properties of interface prototype object's @@unscopables property
+PASS USB interface: attribute onconnect
+PASS USB interface: attribute ondisconnect
+PASS USB interface: operation getDevices()
+PASS USB interface: member requestDevice
+PASS USB must be primary interface of navigator.usb
+PASS Stringification of navigator.usb
+PASS USB interface: navigator.usb must inherit property "onconnect" with the proper type
+PASS USB interface: navigator.usb must inherit property "ondisconnect" with the proper type
+PASS USB interface: navigator.usb must inherit property "getDevices()" with the proper type
+PASS USB interface: navigator.usb must not have property "requestDevice"
+PASS USBConnectionEvent interface: existence and properties of interface object
+PASS USBConnectionEvent interface object length
+PASS USBConnectionEvent interface object name
+PASS USBConnectionEvent interface: existence and properties of interface prototype object
+PASS USBConnectionEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS USBConnectionEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBConnectionEvent interface: attribute device
+FAIL USBConnectionEvent must be primary interface of usbConnectionEvent assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbConnectionEvent is not defined"
+FAIL Stringification of usbConnectionEvent assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbConnectionEvent is not defined"
+FAIL USBConnectionEvent interface: usbConnectionEvent must inherit property "device" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbConnectionEvent is not defined"
+PASS USBDevice interface: existence and properties of interface object
+PASS USBDevice interface object length
+PASS USBDevice interface object name
+PASS USBDevice interface: existence and properties of interface prototype object
+PASS USBDevice interface: existence and properties of interface prototype object's "constructor" property
+PASS USBDevice interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBDevice interface: attribute usbVersionMajor
+PASS USBDevice interface: attribute usbVersionMinor
+PASS USBDevice interface: attribute usbVersionSubminor
+PASS USBDevice interface: attribute deviceClass
+PASS USBDevice interface: attribute deviceSubclass
+PASS USBDevice interface: attribute deviceProtocol
+PASS USBDevice interface: attribute vendorId
+PASS USBDevice interface: attribute productId
+PASS USBDevice interface: attribute deviceVersionMajor
+PASS USBDevice interface: attribute deviceVersionMinor
+PASS USBDevice interface: attribute deviceVersionSubminor
+PASS USBDevice interface: attribute manufacturerName
+PASS USBDevice interface: attribute productName
+PASS USBDevice interface: attribute serialNumber
+PASS USBDevice interface: attribute configuration
+PASS USBDevice interface: attribute configurations
+PASS USBDevice interface: attribute opened
+PASS USBDevice interface: operation open()
+PASS USBDevice interface: operation close()
+PASS USBDevice interface: operation selectConfiguration(octet)
+PASS USBDevice interface: operation claimInterface(octet)
+PASS USBDevice interface: operation releaseInterface(octet)
+PASS USBDevice interface: operation selectAlternateInterface(octet, octet)
+PASS USBDevice interface: operation controlTransferIn(USBControlTransferParameters, unsigned short)
+PASS USBDevice interface: operation controlTransferOut(USBControlTransferParameters, BufferSource)
+PASS USBDevice interface: operation clearHalt(USBDirection, octet)
+PASS USBDevice interface: operation transferIn(octet, unsigned long)
+PASS USBDevice interface: operation transferOut(octet, BufferSource)
+PASS USBDevice interface: operation isochronousTransferIn(octet, [object Object])
+PASS USBDevice interface: operation isochronousTransferOut(octet, BufferSource, [object Object])
+PASS USBDevice interface: operation reset()
+FAIL USBDevice must be primary interface of usbDevice assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL Stringification of usbDevice assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "usbVersionMajor" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "usbVersionMinor" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "usbVersionSubminor" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "deviceClass" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "deviceSubclass" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "deviceProtocol" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "vendorId" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "productId" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "deviceVersionMajor" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "deviceVersionMinor" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "deviceVersionSubminor" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "manufacturerName" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "productName" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "serialNumber" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "configuration" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "configurations" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "opened" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "open()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "close()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "selectConfiguration(octet)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling selectConfiguration(octet) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "claimInterface(octet)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling claimInterface(octet) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "releaseInterface(octet)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling releaseInterface(octet) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "selectAlternateInterface(octet, octet)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling selectAlternateInterface(octet, octet) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "controlTransferIn(USBControlTransferParameters, unsigned short)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling controlTransferIn(USBControlTransferParameters, unsigned short) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "controlTransferOut(USBControlTransferParameters, BufferSource)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling controlTransferOut(USBControlTransferParameters, BufferSource) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "clearHalt(USBDirection, octet)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling clearHalt(USBDirection, octet) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "transferIn(octet, unsigned long)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling transferIn(octet, unsigned long) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "transferOut(octet, BufferSource)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling transferOut(octet, BufferSource) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "isochronousTransferIn(octet, [object Object])" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling isochronousTransferIn(octet, [object Object]) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "isochronousTransferOut(octet, BufferSource, [object Object])" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: calling isochronousTransferOut(octet, BufferSource, [object Object]) on usbDevice with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+FAIL USBDevice interface: usbDevice must inherit property "reset()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbDevice is not defined"
+PASS USBInTransferResult interface: existence and properties of interface object
+PASS USBInTransferResult interface object length
+PASS USBInTransferResult interface object name
+PASS USBInTransferResult interface: existence and properties of interface prototype object
+PASS USBInTransferResult interface: existence and properties of interface prototype object's "constructor" property
+PASS USBInTransferResult interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBInTransferResult interface: attribute data
+PASS USBInTransferResult interface: attribute status
+PASS USBInTransferResult must be primary interface of new USBInTransferResult("ok")
+PASS Stringification of new USBInTransferResult("ok")
+PASS USBInTransferResult interface: new USBInTransferResult("ok") must inherit property "data" with the proper type
+PASS USBInTransferResult interface: new USBInTransferResult("ok") must inherit property "status" with the proper type
+PASS USBOutTransferResult interface: existence and properties of interface object
+PASS USBOutTransferResult interface object length
+PASS USBOutTransferResult interface object name
+PASS USBOutTransferResult interface: existence and properties of interface prototype object
+PASS USBOutTransferResult interface: existence and properties of interface prototype object's "constructor" property
+PASS USBOutTransferResult interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBOutTransferResult interface: attribute bytesWritten
+PASS USBOutTransferResult interface: attribute status
+PASS USBOutTransferResult must be primary interface of new USBOutTransferResult("ok")
+PASS Stringification of new USBOutTransferResult("ok")
+PASS USBOutTransferResult interface: new USBOutTransferResult("ok") must inherit property "bytesWritten" with the proper type
+PASS USBOutTransferResult interface: new USBOutTransferResult("ok") must inherit property "status" with the proper type
+PASS USBIsochronousInTransferPacket interface: existence and properties of interface object
+PASS USBIsochronousInTransferPacket interface object length
+PASS USBIsochronousInTransferPacket interface object name
+PASS USBIsochronousInTransferPacket interface: existence and properties of interface prototype object
+PASS USBIsochronousInTransferPacket interface: existence and properties of interface prototype object's "constructor" property
+PASS USBIsochronousInTransferPacket interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBIsochronousInTransferPacket interface: attribute data
+PASS USBIsochronousInTransferPacket interface: attribute status
+PASS USBIsochronousInTransferPacket must be primary interface of new USBIsochronousInTransferPacket("ok")
+PASS Stringification of new USBIsochronousInTransferPacket("ok")
+PASS USBIsochronousInTransferPacket interface: new USBIsochronousInTransferPacket("ok") must inherit property "data" with the proper type
+PASS USBIsochronousInTransferPacket interface: new USBIsochronousInTransferPacket("ok") must inherit property "status" with the proper type
+PASS USBIsochronousInTransferResult interface: existence and properties of interface object
+PASS USBIsochronousInTransferResult interface object length
+PASS USBIsochronousInTransferResult interface object name
+PASS USBIsochronousInTransferResult interface: existence and properties of interface prototype object
+PASS USBIsochronousInTransferResult interface: existence and properties of interface prototype object's "constructor" property
+PASS USBIsochronousInTransferResult interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBIsochronousInTransferResult interface: attribute data
+PASS USBIsochronousInTransferResult interface: attribute packets
+PASS USBIsochronousInTransferResult must be primary interface of new USBIsochronousInTransferResult([])
+PASS Stringification of new USBIsochronousInTransferResult([])
+PASS USBIsochronousInTransferResult interface: new USBIsochronousInTransferResult([]) must inherit property "data" with the proper type
+PASS USBIsochronousInTransferResult interface: new USBIsochronousInTransferResult([]) must inherit property "packets" with the proper type
+PASS USBIsochronousOutTransferPacket interface: existence and properties of interface object
+PASS USBIsochronousOutTransferPacket interface object length
+PASS USBIsochronousOutTransferPacket interface object name
+PASS USBIsochronousOutTransferPacket interface: existence and properties of interface prototype object
+PASS USBIsochronousOutTransferPacket interface: existence and properties of interface prototype object's "constructor" property
+PASS USBIsochronousOutTransferPacket interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBIsochronousOutTransferPacket interface: attribute bytesWritten
+PASS USBIsochronousOutTransferPacket interface: attribute status
+PASS USBIsochronousOutTransferPacket must be primary interface of new USBIsochronousOutTransferPacket("ok")
+PASS Stringification of new USBIsochronousOutTransferPacket("ok")
+PASS USBIsochronousOutTransferPacket interface: new USBIsochronousOutTransferPacket("ok") must inherit property "bytesWritten" with the proper type
+PASS USBIsochronousOutTransferPacket interface: new USBIsochronousOutTransferPacket("ok") must inherit property "status" with the proper type
+PASS USBIsochronousOutTransferResult interface: existence and properties of interface object
+PASS USBIsochronousOutTransferResult interface object length
+PASS USBIsochronousOutTransferResult interface object name
+PASS USBIsochronousOutTransferResult interface: existence and properties of interface prototype object
+PASS USBIsochronousOutTransferResult interface: existence and properties of interface prototype object's "constructor" property
+PASS USBIsochronousOutTransferResult interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBIsochronousOutTransferResult interface: attribute packets
+PASS USBIsochronousOutTransferResult must be primary interface of new USBIsochronousOutTransferResult([])
+PASS Stringification of new USBIsochronousOutTransferResult([])
+PASS USBIsochronousOutTransferResult interface: new USBIsochronousOutTransferResult([]) must inherit property "packets" with the proper type
+PASS USBConfiguration interface: existence and properties of interface object
+PASS USBConfiguration interface object length
+PASS USBConfiguration interface object name
+PASS USBConfiguration interface: existence and properties of interface prototype object
+PASS USBConfiguration interface: existence and properties of interface prototype object's "constructor" property
+PASS USBConfiguration interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBConfiguration interface: attribute configurationValue
+PASS USBConfiguration interface: attribute configurationName
+PASS USBConfiguration interface: attribute interfaces
+FAIL USBConfiguration must be primary interface of usbConfiguration assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbConfiguration is not defined"
+FAIL Stringification of usbConfiguration assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbConfiguration is not defined"
+FAIL USBConfiguration interface: usbConfiguration must inherit property "configurationValue" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbConfiguration is not defined"
+FAIL USBConfiguration interface: usbConfiguration must inherit property "configurationName" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbConfiguration is not defined"
+FAIL USBConfiguration interface: usbConfiguration must inherit property "interfaces" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbConfiguration is not defined"
+PASS USBInterface interface: existence and properties of interface object
+PASS USBInterface interface object length
+PASS USBInterface interface object name
+PASS USBInterface interface: existence and properties of interface prototype object
+PASS USBInterface interface: existence and properties of interface prototype object's "constructor" property
+PASS USBInterface interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBInterface interface: attribute interfaceNumber
+PASS USBInterface interface: attribute alternate
+PASS USBInterface interface: attribute alternates
+PASS USBInterface interface: attribute claimed
+FAIL USBInterface must be primary interface of usbInterface assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbInterface is not defined"
+FAIL Stringification of usbInterface assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbInterface is not defined"
+FAIL USBInterface interface: usbInterface must inherit property "interfaceNumber" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbInterface is not defined"
+FAIL USBInterface interface: usbInterface must inherit property "alternate" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbInterface is not defined"
+FAIL USBInterface interface: usbInterface must inherit property "alternates" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbInterface is not defined"
+FAIL USBInterface interface: usbInterface must inherit property "claimed" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbInterface is not defined"
+PASS USBAlternateInterface interface: existence and properties of interface object
+PASS USBAlternateInterface interface object length
+PASS USBAlternateInterface interface object name
+PASS USBAlternateInterface interface: existence and properties of interface prototype object
+PASS USBAlternateInterface interface: existence and properties of interface prototype object's "constructor" property
+PASS USBAlternateInterface interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBAlternateInterface interface: attribute alternateSetting
+PASS USBAlternateInterface interface: attribute interfaceClass
+PASS USBAlternateInterface interface: attribute interfaceSubclass
+PASS USBAlternateInterface interface: attribute interfaceProtocol
+PASS USBAlternateInterface interface: attribute interfaceName
+PASS USBAlternateInterface interface: attribute endpoints
+FAIL USBAlternateInterface must be primary interface of usbAlternateInterface assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbAlternateInterface is not defined"
+FAIL Stringification of usbAlternateInterface assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbAlternateInterface is not defined"
+FAIL USBAlternateInterface interface: usbAlternateInterface must inherit property "alternateSetting" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbAlternateInterface is not defined"
+FAIL USBAlternateInterface interface: usbAlternateInterface must inherit property "interfaceClass" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbAlternateInterface is not defined"
+FAIL USBAlternateInterface interface: usbAlternateInterface must inherit property "interfaceSubclass" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbAlternateInterface is not defined"
+FAIL USBAlternateInterface interface: usbAlternateInterface must inherit property "interfaceProtocol" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbAlternateInterface is not defined"
+FAIL USBAlternateInterface interface: usbAlternateInterface must inherit property "interfaceName" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbAlternateInterface is not defined"
+FAIL USBAlternateInterface interface: usbAlternateInterface must inherit property "endpoints" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbAlternateInterface is not defined"
+PASS USBEndpoint interface: existence and properties of interface object
+PASS USBEndpoint interface object length
+PASS USBEndpoint interface object name
+PASS USBEndpoint interface: existence and properties of interface prototype object
+PASS USBEndpoint interface: existence and properties of interface prototype object's "constructor" property
+PASS USBEndpoint interface: existence and properties of interface prototype object's @@unscopables property
+PASS USBEndpoint interface: attribute endpointNumber
+PASS USBEndpoint interface: attribute direction
+PASS USBEndpoint interface: attribute type
+PASS USBEndpoint interface: attribute packetSize
+FAIL USBEndpoint must be primary interface of usbEndpoint assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbEndpoint is not defined"
+FAIL Stringification of usbEndpoint assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbEndpoint is not defined"
+FAIL USBEndpoint interface: usbEndpoint must inherit property "endpointNumber" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbEndpoint is not defined"
+FAIL USBEndpoint interface: usbEndpoint must inherit property "direction" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbEndpoint is not defined"
+FAIL USBEndpoint interface: usbEndpoint must inherit property "type" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbEndpoint is not defined"
+FAIL USBEndpoint interface: usbEndpoint must inherit property "packetSize" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: usbEndpoint is not defined"
+PASS USBPermissionResult interface: existence and properties of interface object
+PASS Navigator interface: existence and properties of interface object
+PASS WorkerNavigator interface: attribute usb
+PASS WorkerNavigator interface: navigator must inherit property "usb" with the proper type
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/webvtt/api/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/webvtt/api/idlharness.window-expected.txt
index adb6cc43..194df34f 100644
--- a/third_party/blink/web_tests/external/wpt/webvtt/api/idlharness.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/webvtt/api/idlharness.window-expected.txt
@@ -1,6 +1,59 @@
 This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+Found 55 tests; 51 PASS, 4 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS VTTCue interface: existence and properties of interface object
+PASS VTTCue interface object length
+PASS VTTCue interface object name
+PASS VTTCue interface: existence and properties of interface prototype object
+PASS VTTCue interface: existence and properties of interface prototype object's "constructor" property
+PASS VTTCue interface: existence and properties of interface prototype object's @@unscopables property
+PASS VTTCue interface: attribute region
+PASS VTTCue interface: attribute vertical
+PASS VTTCue interface: attribute snapToLines
+PASS VTTCue interface: attribute line
+FAIL VTTCue interface: attribute lineAlign assert_true: The prototype object must have a property "lineAlign" expected true got false
+PASS VTTCue interface: attribute position
+FAIL VTTCue interface: attribute positionAlign assert_true: The prototype object must have a property "positionAlign" expected true got false
+PASS VTTCue interface: attribute size
+PASS VTTCue interface: attribute align
+PASS VTTCue interface: attribute text
+PASS VTTCue interface: operation getCueAsHTML()
+PASS VTTCue must be primary interface of new VTTCue(0, 0, "")
+PASS Stringification of new VTTCue(0, 0, "")
+PASS VTTCue interface: new VTTCue(0, 0, "") must inherit property "region" with the proper type
+PASS VTTCue interface: new VTTCue(0, 0, "") must inherit property "vertical" with the proper type
+PASS VTTCue interface: new VTTCue(0, 0, "") must inherit property "snapToLines" with the proper type
+PASS VTTCue interface: new VTTCue(0, 0, "") must inherit property "line" with the proper type
+FAIL VTTCue interface: new VTTCue(0, 0, "") must inherit property "lineAlign" with the proper type assert_inherits: property "lineAlign" not found in prototype chain
+PASS VTTCue interface: new VTTCue(0, 0, "") must inherit property "position" with the proper type
+FAIL VTTCue interface: new VTTCue(0, 0, "") must inherit property "positionAlign" with the proper type assert_inherits: property "positionAlign" not found in prototype chain
+PASS VTTCue interface: new VTTCue(0, 0, "") must inherit property "size" with the proper type
+PASS VTTCue interface: new VTTCue(0, 0, "") must inherit property "align" with the proper type
+PASS VTTCue interface: new VTTCue(0, 0, "") must inherit property "text" with the proper type
+PASS VTTCue interface: new VTTCue(0, 0, "") must inherit property "getCueAsHTML()" with the proper type
+PASS VTTRegion interface: existence and properties of interface object
+PASS VTTRegion interface object length
+PASS VTTRegion interface object name
+PASS VTTRegion interface: existence and properties of interface prototype object
+PASS VTTRegion interface: existence and properties of interface prototype object's "constructor" property
+PASS VTTRegion interface: existence and properties of interface prototype object's @@unscopables property
+PASS VTTRegion interface: attribute id
+PASS VTTRegion interface: attribute width
+PASS VTTRegion interface: attribute lines
+PASS VTTRegion interface: attribute regionAnchorX
+PASS VTTRegion interface: attribute regionAnchorY
+PASS VTTRegion interface: attribute viewportAnchorX
+PASS VTTRegion interface: attribute viewportAnchorY
+PASS VTTRegion interface: attribute scroll
+PASS VTTRegion must be primary interface of new VTTRegion()
+PASS Stringification of new VTTRegion()
+PASS VTTRegion interface: new VTTRegion() must inherit property "id" with the proper type
+PASS VTTRegion interface: new VTTRegion() must inherit property "width" with the proper type
+PASS VTTRegion interface: new VTTRegion() must inherit property "lines" with the proper type
+PASS VTTRegion interface: new VTTRegion() must inherit property "regionAnchorX" with the proper type
+PASS VTTRegion interface: new VTTRegion() must inherit property "regionAnchorY" with the proper type
+PASS VTTRegion interface: new VTTRegion() must inherit property "viewportAnchorX" with the proper type
+PASS VTTRegion interface: new VTTRegion() must inherit property "viewportAnchorY" with the proper type
+PASS VTTRegion interface: new VTTRegion() must inherit property "scroll" with the proper type
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/webxr/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/webxr/idlharness.https.window-expected.txt
deleted file mode 100644
index 6def90d..0000000
--- a/third_party/blink/web_tests/external/wpt/webxr/idlharness.https.window-expected.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-FAIL Partial interface Navigator: original interface defined assert_true: Original interface should be defined expected true got false
-PASS Partial dictionary WebGLContextAttributes: original dictionary defined
-PASS Partial interface mixin WebGLRenderingContextBase: original interface mixin defined
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/xhr/idlharness.any-expected.txt b/third_party/blink/web_tests/external/wpt/xhr/idlharness.any-expected.txt
deleted file mode 100644
index b137646..0000000
--- a/third_party/blink/web_tests/external/wpt/xhr/idlharness.any-expected.txt
+++ /dev/null
@@ -1,86 +0,0 @@
-This is a testharness.js-based test.
-Found 80 tests; 79 PASS, 1 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS XMLHttpRequestEventTarget interface: existence and properties of interface object
-PASS XMLHttpRequestEventTarget interface object length
-PASS XMLHttpRequestEventTarget interface object name
-PASS XMLHttpRequestEventTarget interface: existence and properties of interface prototype object
-PASS XMLHttpRequestEventTarget interface: existence and properties of interface prototype object's "constructor" property
-PASS XMLHttpRequestEventTarget interface: existence and properties of interface prototype object's @@unscopables property
-PASS XMLHttpRequestEventTarget interface: attribute onloadstart
-PASS XMLHttpRequestEventTarget interface: attribute onprogress
-PASS XMLHttpRequestEventTarget interface: attribute onabort
-PASS XMLHttpRequestEventTarget interface: attribute onerror
-PASS XMLHttpRequestEventTarget interface: attribute onload
-PASS XMLHttpRequestEventTarget interface: attribute ontimeout
-PASS XMLHttpRequestEventTarget interface: attribute onloadend
-PASS XMLHttpRequestUpload interface: existence and properties of interface object
-PASS XMLHttpRequestUpload interface object length
-PASS XMLHttpRequestUpload interface object name
-PASS XMLHttpRequestUpload interface: existence and properties of interface prototype object
-PASS XMLHttpRequestUpload interface: existence and properties of interface prototype object's "constructor" property
-PASS XMLHttpRequestUpload interface: existence and properties of interface prototype object's @@unscopables property
-PASS XMLHttpRequest interface: existence and properties of interface object
-PASS XMLHttpRequest interface object length
-PASS XMLHttpRequest interface object name
-PASS XMLHttpRequest interface: existence and properties of interface prototype object
-PASS XMLHttpRequest interface: existence and properties of interface prototype object's "constructor" property
-PASS XMLHttpRequest interface: existence and properties of interface prototype object's @@unscopables property
-PASS XMLHttpRequest interface: attribute onreadystatechange
-PASS XMLHttpRequest interface: constant UNSENT on interface object
-PASS XMLHttpRequest interface: constant UNSENT on interface prototype object
-PASS XMLHttpRequest interface: constant OPENED on interface object
-PASS XMLHttpRequest interface: constant OPENED on interface prototype object
-PASS XMLHttpRequest interface: constant HEADERS_RECEIVED on interface object
-PASS XMLHttpRequest interface: constant HEADERS_RECEIVED on interface prototype object
-PASS XMLHttpRequest interface: constant LOADING on interface object
-PASS XMLHttpRequest interface: constant LOADING on interface prototype object
-PASS XMLHttpRequest interface: constant DONE on interface object
-PASS XMLHttpRequest interface: constant DONE on interface prototype object
-PASS XMLHttpRequest interface: attribute readyState
-PASS XMLHttpRequest interface: operation open(ByteString, USVString)
-PASS XMLHttpRequest interface: operation open(ByteString, USVString, boolean, USVString, USVString)
-PASS XMLHttpRequest interface: operation setRequestHeader(ByteString, ByteString)
-PASS XMLHttpRequest interface: attribute timeout
-PASS XMLHttpRequest interface: attribute withCredentials
-PASS XMLHttpRequest interface: attribute upload
-PASS XMLHttpRequest interface: operation send([object Object],[object Object])
-PASS XMLHttpRequest interface: operation abort()
-PASS XMLHttpRequest interface: attribute responseURL
-PASS XMLHttpRequest interface: attribute status
-PASS XMLHttpRequest interface: attribute statusText
-PASS XMLHttpRequest interface: operation getResponseHeader(ByteString)
-PASS XMLHttpRequest interface: operation getAllResponseHeaders()
-PASS XMLHttpRequest interface: operation overrideMimeType(DOMString)
-PASS XMLHttpRequest interface: attribute responseType
-PASS XMLHttpRequest interface: attribute response
-PASS XMLHttpRequest interface: attribute responseText
-PASS XMLHttpRequest interface: attribute responseXML
-PASS FormData interface: existence and properties of interface object
-PASS FormData interface object length
-PASS FormData interface object name
-PASS FormData interface: existence and properties of interface prototype object
-PASS FormData interface: existence and properties of interface prototype object's "constructor" property
-PASS FormData interface: existence and properties of interface prototype object's @@unscopables property
-PASS FormData interface: operation append(USVString, USVString)
-PASS FormData interface: operation append(USVString, Blob, USVString)
-PASS FormData interface: operation delete(USVString)
-PASS FormData interface: operation get(USVString)
-PASS FormData interface: operation getAll(USVString)
-PASS FormData interface: operation has(USVString)
-PASS FormData interface: operation set(USVString, USVString)
-PASS FormData interface: operation set(USVString, Blob, USVString)
-PASS FormData interface: iterable<USVString, FormDataEntryValue>
-PASS ProgressEvent interface: existence and properties of interface object
-PASS ProgressEvent interface object length
-PASS ProgressEvent interface object name
-PASS ProgressEvent interface: existence and properties of interface prototype object
-PASS ProgressEvent interface: existence and properties of interface prototype object's "constructor" property
-PASS ProgressEvent interface: existence and properties of interface prototype object's @@unscopables property
-PASS ProgressEvent interface: attribute lengthComputable
-PASS ProgressEvent interface: attribute loaded
-PASS ProgressEvent interface: attribute total
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/xhr/idlharness.any.sharedworker-expected.txt b/third_party/blink/web_tests/external/wpt/xhr/idlharness.any.sharedworker-expected.txt
index 382e3cda..3405f42 100644
--- a/third_party/blink/web_tests/external/wpt/xhr/idlharness.any.sharedworker-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/xhr/idlharness.any.sharedworker-expected.txt
@@ -1,8 +1,6 @@
 This is a testharness.js-based test.
-Found 82 tests; 80 PASS, 2 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+Found 154 tests; 152 PASS, 2 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
 PASS XMLHttpRequestEventTarget interface: existence and properties of interface object
 PASS XMLHttpRequestEventTarget interface object length
 PASS XMLHttpRequestEventTarget interface object name
@@ -22,6 +20,15 @@
 PASS XMLHttpRequestUpload interface: existence and properties of interface prototype object
 PASS XMLHttpRequestUpload interface: existence and properties of interface prototype object's "constructor" property
 PASS XMLHttpRequestUpload interface: existence and properties of interface prototype object's @@unscopables property
+PASS XMLHttpRequestUpload must be primary interface of (new XMLHttpRequest()).upload
+PASS Stringification of (new XMLHttpRequest()).upload
+PASS XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property "onloadstart" with the proper type
+PASS XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property "onprogress" with the proper type
+PASS XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property "onabort" with the proper type
+PASS XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property "onerror" with the proper type
+PASS XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property "onload" with the proper type
+PASS XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property "ontimeout" with the proper type
+PASS XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property "onloadend" with the proper type
 PASS XMLHttpRequest interface: existence and properties of interface object
 PASS XMLHttpRequest interface object length
 PASS XMLHttpRequest interface object name
@@ -58,6 +65,46 @@
 PASS XMLHttpRequest interface: attribute response
 PASS XMLHttpRequest interface: attribute responseText
 FAIL XMLHttpRequest interface: member responseXML assert_false: The prototype object must not have a property "responseXML" expected false got true
+PASS XMLHttpRequest must be primary interface of new XMLHttpRequest()
+PASS Stringification of new XMLHttpRequest()
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "onreadystatechange" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "UNSENT" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "OPENED" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "HEADERS_RECEIVED" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "LOADING" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "DONE" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "readyState" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "open(ByteString, USVString)" with the proper type
+PASS XMLHttpRequest interface: calling open(ByteString, USVString) on new XMLHttpRequest() with too few arguments must throw TypeError
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "open(ByteString, USVString, boolean, USVString, USVString)" with the proper type
+PASS XMLHttpRequest interface: calling open(ByteString, USVString, boolean, USVString, USVString) on new XMLHttpRequest() with too few arguments must throw TypeError
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "setRequestHeader(ByteString, ByteString)" with the proper type
+PASS XMLHttpRequest interface: calling setRequestHeader(ByteString, ByteString) on new XMLHttpRequest() with too few arguments must throw TypeError
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "timeout" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "withCredentials" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "upload" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "send([object Object],[object Object])" with the proper type
+PASS XMLHttpRequest interface: calling send([object Object],[object Object]) on new XMLHttpRequest() with too few arguments must throw TypeError
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "abort()" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "responseURL" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "status" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "statusText" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "getResponseHeader(ByteString)" with the proper type
+PASS XMLHttpRequest interface: calling getResponseHeader(ByteString) on new XMLHttpRequest() with too few arguments must throw TypeError
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "getAllResponseHeaders()" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "overrideMimeType(DOMString)" with the proper type
+PASS XMLHttpRequest interface: calling overrideMimeType(DOMString) on new XMLHttpRequest() with too few arguments must throw TypeError
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "responseType" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "response" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "responseText" with the proper type
+FAIL XMLHttpRequest interface: new XMLHttpRequest() must not have property "responseXML" assert_false: expected false got true
+PASS XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property "onloadstart" with the proper type
+PASS XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property "onprogress" with the proper type
+PASS XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property "onabort" with the proper type
+PASS XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property "onerror" with the proper type
+PASS XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property "onload" with the proper type
+PASS XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property "ontimeout" with the proper type
+PASS XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property "onloadend" with the proper type
 PASS FormData interface: existence and properties of interface object
 PASS FormData interface object length
 PASS FormData interface object name
@@ -73,6 +120,24 @@
 PASS FormData interface: operation set(USVString, USVString)
 PASS FormData interface: operation set(USVString, Blob, USVString)
 PASS FormData interface: iterable<USVString, FormDataEntryValue>
+PASS FormData must be primary interface of new FormData()
+PASS Stringification of new FormData()
+PASS FormData interface: new FormData() must inherit property "append(USVString, USVString)" with the proper type
+PASS FormData interface: calling append(USVString, USVString) on new FormData() with too few arguments must throw TypeError
+PASS FormData interface: new FormData() must inherit property "append(USVString, Blob, USVString)" with the proper type
+PASS FormData interface: calling append(USVString, Blob, USVString) on new FormData() with too few arguments must throw TypeError
+PASS FormData interface: new FormData() must inherit property "delete(USVString)" with the proper type
+PASS FormData interface: calling delete(USVString) on new FormData() with too few arguments must throw TypeError
+PASS FormData interface: new FormData() must inherit property "get(USVString)" with the proper type
+PASS FormData interface: calling get(USVString) on new FormData() with too few arguments must throw TypeError
+PASS FormData interface: new FormData() must inherit property "getAll(USVString)" with the proper type
+PASS FormData interface: calling getAll(USVString) on new FormData() with too few arguments must throw TypeError
+PASS FormData interface: new FormData() must inherit property "has(USVString)" with the proper type
+PASS FormData interface: calling has(USVString) on new FormData() with too few arguments must throw TypeError
+PASS FormData interface: new FormData() must inherit property "set(USVString, USVString)" with the proper type
+PASS FormData interface: calling set(USVString, USVString) on new FormData() with too few arguments must throw TypeError
+PASS FormData interface: new FormData() must inherit property "set(USVString, Blob, USVString)" with the proper type
+PASS FormData interface: calling set(USVString, Blob, USVString) on new FormData() with too few arguments must throw TypeError
 PASS ProgressEvent interface: existence and properties of interface object
 PASS ProgressEvent interface object length
 PASS ProgressEvent interface object name
@@ -82,6 +147,11 @@
 PASS ProgressEvent interface: attribute lengthComputable
 PASS ProgressEvent interface: attribute loaded
 PASS ProgressEvent interface: attribute total
+PASS ProgressEvent must be primary interface of new ProgressEvent("type")
+PASS Stringification of new ProgressEvent("type")
+PASS ProgressEvent interface: new ProgressEvent("type") must inherit property "lengthComputable" with the proper type
+PASS ProgressEvent interface: new ProgressEvent("type") must inherit property "loaded" with the proper type
+PASS ProgressEvent interface: new ProgressEvent("type") must inherit property "total" with the proper type
 PASS Node interface: existence and properties of interface object
 PASS Document interface: existence and properties of interface object
 Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/xhr/idlharness.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/xhr/idlharness.any.worker-expected.txt
index 382e3cda..3405f42 100644
--- a/third_party/blink/web_tests/external/wpt/xhr/idlharness.any.worker-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/xhr/idlharness.any.worker-expected.txt
@@ -1,8 +1,6 @@
 This is a testharness.js-based test.
-Found 82 tests; 80 PASS, 2 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
+Found 154 tests; 152 PASS, 2 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
 PASS XMLHttpRequestEventTarget interface: existence and properties of interface object
 PASS XMLHttpRequestEventTarget interface object length
 PASS XMLHttpRequestEventTarget interface object name
@@ -22,6 +20,15 @@
 PASS XMLHttpRequestUpload interface: existence and properties of interface prototype object
 PASS XMLHttpRequestUpload interface: existence and properties of interface prototype object's "constructor" property
 PASS XMLHttpRequestUpload interface: existence and properties of interface prototype object's @@unscopables property
+PASS XMLHttpRequestUpload must be primary interface of (new XMLHttpRequest()).upload
+PASS Stringification of (new XMLHttpRequest()).upload
+PASS XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property "onloadstart" with the proper type
+PASS XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property "onprogress" with the proper type
+PASS XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property "onabort" with the proper type
+PASS XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property "onerror" with the proper type
+PASS XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property "onload" with the proper type
+PASS XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property "ontimeout" with the proper type
+PASS XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property "onloadend" with the proper type
 PASS XMLHttpRequest interface: existence and properties of interface object
 PASS XMLHttpRequest interface object length
 PASS XMLHttpRequest interface object name
@@ -58,6 +65,46 @@
 PASS XMLHttpRequest interface: attribute response
 PASS XMLHttpRequest interface: attribute responseText
 FAIL XMLHttpRequest interface: member responseXML assert_false: The prototype object must not have a property "responseXML" expected false got true
+PASS XMLHttpRequest must be primary interface of new XMLHttpRequest()
+PASS Stringification of new XMLHttpRequest()
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "onreadystatechange" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "UNSENT" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "OPENED" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "HEADERS_RECEIVED" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "LOADING" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "DONE" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "readyState" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "open(ByteString, USVString)" with the proper type
+PASS XMLHttpRequest interface: calling open(ByteString, USVString) on new XMLHttpRequest() with too few arguments must throw TypeError
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "open(ByteString, USVString, boolean, USVString, USVString)" with the proper type
+PASS XMLHttpRequest interface: calling open(ByteString, USVString, boolean, USVString, USVString) on new XMLHttpRequest() with too few arguments must throw TypeError
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "setRequestHeader(ByteString, ByteString)" with the proper type
+PASS XMLHttpRequest interface: calling setRequestHeader(ByteString, ByteString) on new XMLHttpRequest() with too few arguments must throw TypeError
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "timeout" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "withCredentials" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "upload" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "send([object Object],[object Object])" with the proper type
+PASS XMLHttpRequest interface: calling send([object Object],[object Object]) on new XMLHttpRequest() with too few arguments must throw TypeError
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "abort()" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "responseURL" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "status" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "statusText" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "getResponseHeader(ByteString)" with the proper type
+PASS XMLHttpRequest interface: calling getResponseHeader(ByteString) on new XMLHttpRequest() with too few arguments must throw TypeError
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "getAllResponseHeaders()" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "overrideMimeType(DOMString)" with the proper type
+PASS XMLHttpRequest interface: calling overrideMimeType(DOMString) on new XMLHttpRequest() with too few arguments must throw TypeError
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "responseType" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "response" with the proper type
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property "responseText" with the proper type
+FAIL XMLHttpRequest interface: new XMLHttpRequest() must not have property "responseXML" assert_false: expected false got true
+PASS XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property "onloadstart" with the proper type
+PASS XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property "onprogress" with the proper type
+PASS XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property "onabort" with the proper type
+PASS XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property "onerror" with the proper type
+PASS XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property "onload" with the proper type
+PASS XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property "ontimeout" with the proper type
+PASS XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property "onloadend" with the proper type
 PASS FormData interface: existence and properties of interface object
 PASS FormData interface object length
 PASS FormData interface object name
@@ -73,6 +120,24 @@
 PASS FormData interface: operation set(USVString, USVString)
 PASS FormData interface: operation set(USVString, Blob, USVString)
 PASS FormData interface: iterable<USVString, FormDataEntryValue>
+PASS FormData must be primary interface of new FormData()
+PASS Stringification of new FormData()
+PASS FormData interface: new FormData() must inherit property "append(USVString, USVString)" with the proper type
+PASS FormData interface: calling append(USVString, USVString) on new FormData() with too few arguments must throw TypeError
+PASS FormData interface: new FormData() must inherit property "append(USVString, Blob, USVString)" with the proper type
+PASS FormData interface: calling append(USVString, Blob, USVString) on new FormData() with too few arguments must throw TypeError
+PASS FormData interface: new FormData() must inherit property "delete(USVString)" with the proper type
+PASS FormData interface: calling delete(USVString) on new FormData() with too few arguments must throw TypeError
+PASS FormData interface: new FormData() must inherit property "get(USVString)" with the proper type
+PASS FormData interface: calling get(USVString) on new FormData() with too few arguments must throw TypeError
+PASS FormData interface: new FormData() must inherit property "getAll(USVString)" with the proper type
+PASS FormData interface: calling getAll(USVString) on new FormData() with too few arguments must throw TypeError
+PASS FormData interface: new FormData() must inherit property "has(USVString)" with the proper type
+PASS FormData interface: calling has(USVString) on new FormData() with too few arguments must throw TypeError
+PASS FormData interface: new FormData() must inherit property "set(USVString, USVString)" with the proper type
+PASS FormData interface: calling set(USVString, USVString) on new FormData() with too few arguments must throw TypeError
+PASS FormData interface: new FormData() must inherit property "set(USVString, Blob, USVString)" with the proper type
+PASS FormData interface: calling set(USVString, Blob, USVString) on new FormData() with too few arguments must throw TypeError
 PASS ProgressEvent interface: existence and properties of interface object
 PASS ProgressEvent interface object length
 PASS ProgressEvent interface object name
@@ -82,6 +147,11 @@
 PASS ProgressEvent interface: attribute lengthComputable
 PASS ProgressEvent interface: attribute loaded
 PASS ProgressEvent interface: attribute total
+PASS ProgressEvent must be primary interface of new ProgressEvent("type")
+PASS Stringification of new ProgressEvent("type")
+PASS ProgressEvent interface: new ProgressEvent("type") must inherit property "lengthComputable" with the proper type
+PASS ProgressEvent interface: new ProgressEvent("type") must inherit property "loaded" with the proper type
+PASS ProgressEvent interface: new ProgressEvent("type") must inherit property "total" with the proper type
 PASS Node interface: existence and properties of interface object
 PASS Document interface: existence and properties of interface object
 Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/xslt/idlharness.tentative.window-expected.txt b/third_party/blink/web_tests/external/wpt/xslt/idlharness.tentative.window-expected.txt
deleted file mode 100644
index 47fa44f511..0000000
--- a/third_party/blink/web_tests/external/wpt/xslt/idlharness.tentative.window-expected.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-This is a testharness.js-based test.
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-PASS XSLTProcessor interface: existence and properties of interface object
-PASS XSLTProcessor interface object length
-PASS XSLTProcessor interface object name
-PASS XSLTProcessor interface: existence and properties of interface prototype object
-PASS XSLTProcessor interface: existence and properties of interface prototype object's "constructor" property
-PASS XSLTProcessor interface: existence and properties of interface prototype object's @@unscopables property
-PASS XSLTProcessor interface: operation importStylesheet(Node)
-PASS XSLTProcessor interface: operation transformToFragment(Node, Document)
-PASS XSLTProcessor interface: operation transformToDocument(Node)
-PASS XSLTProcessor interface: operation setParameter(DOMString, DOMString, any)
-PASS XSLTProcessor interface: operation getParameter(DOMString, DOMString)
-PASS XSLTProcessor interface: operation removeParameter(DOMString, DOMString)
-PASS XSLTProcessor interface: operation clearParameters()
-PASS XSLTProcessor interface: operation reset()
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/http/tests/devtools/network/extra-info-redirects-expected.txt b/third_party/blink/web_tests/http/tests/devtools/network/extra-info-redirects-expected.txt
new file mode 100644
index 0000000..d5caadd
--- /dev/null
+++ b/third_party/blink/web_tests/http/tests/devtools/network/extra-info-redirects-expected.txt
@@ -0,0 +1,25 @@
+Verifies that Network.*ExtraInfo events get assigned to the correct SDK.NetworkRequest instance in the case of cross origin redirects.
+[
+  {
+    "url": "http://redirect-one.test:8000/devtools/network/resources/redirect-1.php",
+    "hasExtraRequestInfo": true,
+    "hasExtraResponseInfo": true,
+    "requestHostHeader": "redirect-one.test:8000",
+    "responseXDevToolsRedirectHeader": "1"
+  },
+  {
+    "url": "http://redirect-two.test:8000/devtools/network/resources/redirect-2.php",
+    "hasExtraRequestInfo": true,
+    "hasExtraResponseInfo": true,
+    "requestHostHeader": "redirect-two.test:8000",
+    "responseXDevToolsRedirectHeader": "2"
+  },
+  {
+    "url": "http://redirect-three.test:8000/devtools/network/resources/redirect-3.php",
+    "hasExtraRequestInfo": true,
+    "hasExtraResponseInfo": true,
+    "requestHostHeader": "redirect-three.test:8000",
+    "responseXDevToolsRedirectHeader": "3"
+  }
+]
+
diff --git a/third_party/blink/web_tests/http/tests/devtools/network/extra-info-redirects.js b/third_party/blink/web_tests/http/tests/devtools/network/extra-info-redirects.js
new file mode 100644
index 0000000..f382abb
--- /dev/null
+++ b/third_party/blink/web_tests/http/tests/devtools/network/extra-info-redirects.js
@@ -0,0 +1,34 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+(async function() {
+  TestRunner.addResult(
+      'Verifies that Network.*ExtraInfo events get assigned to the correct SDK.NetworkRequest instance in the case of cross origin redirects.');
+  await TestRunner.loadModule('network_test_runner');
+
+  await TestRunner.evaluateInPageAsync(`
+new Promise(resolve => {
+  xhr = new XMLHttpRequest();
+  xhr.open('GET', 'http://redirect-one.test:8000/devtools/network/resources/redirect-1.php');
+  xhr.send();
+  xhr.onreadystatechange = () => {
+    if (xhr.readyState === XMLHttpRequest.DONE)
+      resolve();
+  };
+});
+`);
+
+  const reqs = SDK.networkLog.requests().map(request => {
+    return {
+      url: request.url(),
+      hasExtraRequestInfo: request.hasExtraRequestInfo(),
+      hasExtraResponseInfo: request.hasExtraResponseInfo(),
+      requestHostHeader: request.requestHeaderValue('host'),
+      responseXDevToolsRedirectHeader:
+          request.responseHeaderValue('x-devtools-redirect')
+    };
+  });
+  TestRunner.addResult(JSON.stringify(reqs, null, 2));
+  TestRunner.completeTest();
+})();
diff --git a/third_party/blink/web_tests/http/tests/devtools/network/resources/redirect-1.php b/third_party/blink/web_tests/http/tests/devtools/network/resources/redirect-1.php
new file mode 100644
index 0000000..cd01ce55
--- /dev/null
+++ b/third_party/blink/web_tests/http/tests/devtools/network/resources/redirect-1.php
@@ -0,0 +1,5 @@
+<?php
+http_response_code(307);
+header('x-devtools-redirect: 1');
+header('location: http://redirect-two.test:8000/devtools/network/resources/redirect-2.php');
+?>
diff --git a/third_party/blink/web_tests/http/tests/devtools/network/resources/redirect-2.php b/third_party/blink/web_tests/http/tests/devtools/network/resources/redirect-2.php
new file mode 100644
index 0000000..59be585
--- /dev/null
+++ b/third_party/blink/web_tests/http/tests/devtools/network/resources/redirect-2.php
@@ -0,0 +1,5 @@
+<?php
+http_response_code(307);
+header('x-devtools-redirect: 2');
+header('location: http://redirect-three.test:8000/devtools/network/resources/redirect-3.php');
+?>
diff --git a/third_party/blink/web_tests/http/tests/devtools/network/resources/redirect-3.php b/third_party/blink/web_tests/http/tests/devtools/network/resources/redirect-3.php
new file mode 100644
index 0000000..7c75d9f
--- /dev/null
+++ b/third_party/blink/web_tests/http/tests/devtools/network/resources/redirect-3.php
@@ -0,0 +1,3 @@
+<?php
+header('x-devtools-redirect: 3');
+?>
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/IndexedDB/idlharness.any.serviceworker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/IndexedDB/idlharness.any.serviceworker-expected.txt
new file mode 100644
index 0000000..cf73abdc
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/IndexedDB/idlharness.any.serviceworker-expected.txt
@@ -0,0 +1,189 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined
+PASS IDBRequest interface: existence and properties of interface object
+PASS IDBRequest interface object length
+PASS IDBRequest interface object name
+PASS IDBRequest interface: existence and properties of interface prototype object
+PASS IDBRequest interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBRequest interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBRequest interface: attribute result
+PASS IDBRequest interface: attribute error
+PASS IDBRequest interface: attribute source
+PASS IDBRequest interface: attribute transaction
+PASS IDBRequest interface: attribute readyState
+PASS IDBRequest interface: attribute onsuccess
+PASS IDBRequest interface: attribute onerror
+PASS IDBOpenDBRequest interface: existence and properties of interface object
+PASS IDBOpenDBRequest interface object length
+PASS IDBOpenDBRequest interface object name
+PASS IDBOpenDBRequest interface: existence and properties of interface prototype object
+PASS IDBOpenDBRequest interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBOpenDBRequest interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBOpenDBRequest interface: attribute onblocked
+PASS IDBOpenDBRequest interface: attribute onupgradeneeded
+PASS IDBVersionChangeEvent interface: existence and properties of interface object
+PASS IDBVersionChangeEvent interface object length
+PASS IDBVersionChangeEvent interface object name
+PASS IDBVersionChangeEvent interface: existence and properties of interface prototype object
+PASS IDBVersionChangeEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBVersionChangeEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBVersionChangeEvent interface: attribute oldVersion
+PASS IDBVersionChangeEvent interface: attribute newVersion
+PASS IDBVersionChangeEvent must be primary interface of new IDBVersionChangeEvent("type")
+PASS Stringification of new IDBVersionChangeEvent("type")
+PASS IDBVersionChangeEvent interface: new IDBVersionChangeEvent("type") must inherit property "oldVersion" with the proper type
+PASS IDBVersionChangeEvent interface: new IDBVersionChangeEvent("type") must inherit property "newVersion" with the proper type
+PASS IDBFactory interface: existence and properties of interface object
+PASS IDBFactory interface object length
+PASS IDBFactory interface object name
+PASS IDBFactory interface: existence and properties of interface prototype object
+PASS IDBFactory interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBFactory interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBFactory interface: operation open(DOMString, unsigned long long)
+PASS IDBFactory interface: operation deleteDatabase(DOMString)
+PASS IDBFactory interface: operation databases()
+PASS IDBFactory interface: operation cmp(any, any)
+PASS IDBFactory must be primary interface of [object IDBFactory]
+PASS Stringification of [object IDBFactory]
+PASS IDBFactory interface: [object IDBFactory] must inherit property "open(DOMString, unsigned long long)" with the proper type
+PASS IDBFactory interface: calling open(DOMString, unsigned long long) on [object IDBFactory] with too few arguments must throw TypeError
+PASS IDBFactory interface: [object IDBFactory] must inherit property "deleteDatabase(DOMString)" with the proper type
+PASS IDBFactory interface: calling deleteDatabase(DOMString) on [object IDBFactory] with too few arguments must throw TypeError
+PASS IDBFactory interface: [object IDBFactory] must inherit property "databases()" with the proper type
+PASS IDBFactory interface: [object IDBFactory] must inherit property "cmp(any, any)" with the proper type
+PASS IDBFactory interface: calling cmp(any, any) on [object IDBFactory] with too few arguments must throw TypeError
+PASS IDBDatabase interface: existence and properties of interface object
+PASS IDBDatabase interface object length
+PASS IDBDatabase interface object name
+PASS IDBDatabase interface: existence and properties of interface prototype object
+PASS IDBDatabase interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBDatabase interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBDatabase interface: attribute name
+PASS IDBDatabase interface: attribute version
+PASS IDBDatabase interface: attribute objectStoreNames
+PASS IDBDatabase interface: operation transaction([object Object],[object Object], IDBTransactionMode)
+PASS IDBDatabase interface: operation close()
+PASS IDBDatabase interface: operation createObjectStore(DOMString, IDBObjectStoreParameters)
+PASS IDBDatabase interface: operation deleteObjectStore(DOMString)
+PASS IDBDatabase interface: attribute onabort
+PASS IDBDatabase interface: attribute onclose
+PASS IDBDatabase interface: attribute onerror
+PASS IDBDatabase interface: attribute onversionchange
+PASS IDBObjectStore interface: existence and properties of interface object
+PASS IDBObjectStore interface object length
+PASS IDBObjectStore interface object name
+PASS IDBObjectStore interface: existence and properties of interface prototype object
+PASS IDBObjectStore interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBObjectStore interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBObjectStore interface: attribute name
+PASS IDBObjectStore interface: attribute keyPath
+PASS IDBObjectStore interface: attribute indexNames
+PASS IDBObjectStore interface: attribute transaction
+PASS IDBObjectStore interface: attribute autoIncrement
+PASS IDBObjectStore interface: operation put(any, any)
+PASS IDBObjectStore interface: operation add(any, any)
+PASS IDBObjectStore interface: operation delete(any)
+PASS IDBObjectStore interface: operation clear()
+PASS IDBObjectStore interface: operation get(any)
+PASS IDBObjectStore interface: operation getKey(any)
+PASS IDBObjectStore interface: operation getAll(any, unsigned long)
+PASS IDBObjectStore interface: operation getAllKeys(any, unsigned long)
+PASS IDBObjectStore interface: operation count(any)
+PASS IDBObjectStore interface: operation openCursor(any, IDBCursorDirection)
+PASS IDBObjectStore interface: operation openKeyCursor(any, IDBCursorDirection)
+PASS IDBObjectStore interface: operation index(DOMString)
+PASS IDBObjectStore interface: operation createIndex(DOMString, [object Object],[object Object], IDBIndexParameters)
+PASS IDBObjectStore interface: operation deleteIndex(DOMString)
+PASS IDBIndex interface: existence and properties of interface object
+PASS IDBIndex interface object length
+PASS IDBIndex interface object name
+PASS IDBIndex interface: existence and properties of interface prototype object
+PASS IDBIndex interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBIndex interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBIndex interface: attribute name
+PASS IDBIndex interface: attribute objectStore
+PASS IDBIndex interface: attribute keyPath
+PASS IDBIndex interface: attribute multiEntry
+PASS IDBIndex interface: attribute unique
+PASS IDBIndex interface: operation get(any)
+PASS IDBIndex interface: operation getKey(any)
+PASS IDBIndex interface: operation getAll(any, unsigned long)
+PASS IDBIndex interface: operation getAllKeys(any, unsigned long)
+PASS IDBIndex interface: operation count(any)
+PASS IDBIndex interface: operation openCursor(any, IDBCursorDirection)
+PASS IDBIndex interface: operation openKeyCursor(any, IDBCursorDirection)
+PASS IDBKeyRange interface: existence and properties of interface object
+PASS IDBKeyRange interface object length
+PASS IDBKeyRange interface object name
+PASS IDBKeyRange interface: existence and properties of interface prototype object
+PASS IDBKeyRange interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBKeyRange interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBKeyRange interface: attribute lower
+PASS IDBKeyRange interface: attribute upper
+PASS IDBKeyRange interface: attribute lowerOpen
+PASS IDBKeyRange interface: attribute upperOpen
+PASS IDBKeyRange interface: operation only(any)
+PASS IDBKeyRange interface: operation lowerBound(any, boolean)
+PASS IDBKeyRange interface: operation upperBound(any, boolean)
+PASS IDBKeyRange interface: operation bound(any, any, boolean, boolean)
+PASS IDBKeyRange interface: operation includes(any)
+PASS IDBKeyRange must be primary interface of [object IDBKeyRange]
+PASS Stringification of [object IDBKeyRange]
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "lower" with the proper type
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "upper" with the proper type
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "lowerOpen" with the proper type
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "upperOpen" with the proper type
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "only(any)" with the proper type
+PASS IDBKeyRange interface: calling only(any) on [object IDBKeyRange] with too few arguments must throw TypeError
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "lowerBound(any, boolean)" with the proper type
+PASS IDBKeyRange interface: calling lowerBound(any, boolean) on [object IDBKeyRange] with too few arguments must throw TypeError
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "upperBound(any, boolean)" with the proper type
+PASS IDBKeyRange interface: calling upperBound(any, boolean) on [object IDBKeyRange] with too few arguments must throw TypeError
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "bound(any, any, boolean, boolean)" with the proper type
+PASS IDBKeyRange interface: calling bound(any, any, boolean, boolean) on [object IDBKeyRange] with too few arguments must throw TypeError
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "includes(any)" with the proper type
+PASS IDBKeyRange interface: calling includes(any) on [object IDBKeyRange] with too few arguments must throw TypeError
+PASS IDBCursor interface: existence and properties of interface object
+PASS IDBCursor interface object length
+PASS IDBCursor interface object name
+PASS IDBCursor interface: existence and properties of interface prototype object
+PASS IDBCursor interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBCursor interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBCursor interface: attribute source
+PASS IDBCursor interface: attribute direction
+PASS IDBCursor interface: attribute key
+PASS IDBCursor interface: attribute primaryKey
+PASS IDBCursor interface: attribute request
+PASS IDBCursor interface: operation advance(unsigned long)
+PASS IDBCursor interface: operation continue(any)
+PASS IDBCursor interface: operation continuePrimaryKey(any, any)
+PASS IDBCursor interface: operation update(any)
+PASS IDBCursor interface: operation delete()
+PASS IDBCursorWithValue interface: existence and properties of interface object
+PASS IDBCursorWithValue interface object length
+PASS IDBCursorWithValue interface object name
+PASS IDBCursorWithValue interface: existence and properties of interface prototype object
+PASS IDBCursorWithValue interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBCursorWithValue interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBCursorWithValue interface: attribute value
+PASS IDBTransaction interface: existence and properties of interface object
+PASS IDBTransaction interface object length
+PASS IDBTransaction interface object name
+PASS IDBTransaction interface: existence and properties of interface prototype object
+PASS IDBTransaction interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBTransaction interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBTransaction interface: attribute objectStoreNames
+PASS IDBTransaction interface: attribute mode
+PASS IDBTransaction interface: attribute db
+PASS IDBTransaction interface: attribute error
+PASS IDBTransaction interface: operation objectStore(DOMString)
+PASS IDBTransaction interface: operation commit()
+PASS IDBTransaction interface: operation abort()
+PASS IDBTransaction interface: attribute onabort
+PASS IDBTransaction interface: attribute oncomplete
+PASS IDBTransaction interface: attribute onerror
+PASS Window interface: existence and properties of interface object
+PASS WorkerGlobalScope interface: attribute indexedDB
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/WebCryptoAPI/idlharness.https.any.worker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/WebCryptoAPI/idlharness.https.any.worker-expected.txt
new file mode 100644
index 0000000..482b74a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/WebCryptoAPI/idlharness.https.any.worker-expected.txt
@@ -0,0 +1,74 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined
+PASS Crypto interface: existence and properties of interface object
+PASS Crypto interface object length
+PASS Crypto interface object name
+PASS Crypto interface: existence and properties of interface prototype object
+PASS Crypto interface: existence and properties of interface prototype object's "constructor" property
+PASS Crypto interface: existence and properties of interface prototype object's @@unscopables property
+PASS Crypto interface: attribute subtle
+PASS Crypto interface: operation getRandomValues(ArrayBufferView)
+PASS Crypto must be primary interface of crypto
+PASS Stringification of crypto
+PASS Crypto interface: crypto must inherit property "subtle" with the proper type
+PASS Crypto interface: crypto must inherit property "getRandomValues(ArrayBufferView)" with the proper type
+PASS Crypto interface: calling getRandomValues(ArrayBufferView) on crypto with too few arguments must throw TypeError
+PASS CryptoKey interface: existence and properties of interface object
+PASS CryptoKey interface object length
+PASS CryptoKey interface object name
+PASS CryptoKey interface: existence and properties of interface prototype object
+PASS CryptoKey interface: existence and properties of interface prototype object's "constructor" property
+PASS CryptoKey interface: existence and properties of interface prototype object's @@unscopables property
+PASS CryptoKey interface: attribute type
+PASS CryptoKey interface: attribute extractable
+PASS CryptoKey interface: attribute algorithm
+PASS CryptoKey interface: attribute usages
+PASS SubtleCrypto interface: existence and properties of interface object
+PASS SubtleCrypto interface object length
+PASS SubtleCrypto interface object name
+PASS SubtleCrypto interface: existence and properties of interface prototype object
+PASS SubtleCrypto interface: existence and properties of interface prototype object's "constructor" property
+PASS SubtleCrypto interface: existence and properties of interface prototype object's @@unscopables property
+PASS SubtleCrypto interface: operation encrypt(AlgorithmIdentifier, CryptoKey, BufferSource)
+PASS SubtleCrypto interface: operation decrypt(AlgorithmIdentifier, CryptoKey, BufferSource)
+PASS SubtleCrypto interface: operation sign(AlgorithmIdentifier, CryptoKey, BufferSource)
+PASS SubtleCrypto interface: operation verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource)
+PASS SubtleCrypto interface: operation digest(AlgorithmIdentifier, BufferSource)
+PASS SubtleCrypto interface: operation generateKey(AlgorithmIdentifier, boolean, [object Object])
+PASS SubtleCrypto interface: operation deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, [object Object])
+PASS SubtleCrypto interface: operation deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long)
+PASS SubtleCrypto interface: operation importKey(KeyFormat, [object Object],[object Object], AlgorithmIdentifier, boolean, [object Object])
+PASS SubtleCrypto interface: operation exportKey(KeyFormat, CryptoKey)
+PASS SubtleCrypto interface: operation wrapKey(KeyFormat, CryptoKey, CryptoKey, AlgorithmIdentifier)
+PASS SubtleCrypto interface: operation unwrapKey(KeyFormat, BufferSource, CryptoKey, AlgorithmIdentifier, AlgorithmIdentifier, boolean, [object Object])
+PASS SubtleCrypto must be primary interface of crypto.subtle
+PASS Stringification of crypto.subtle
+PASS SubtleCrypto interface: crypto.subtle must inherit property "encrypt(AlgorithmIdentifier, CryptoKey, BufferSource)" with the proper type
+PASS SubtleCrypto interface: calling encrypt(AlgorithmIdentifier, CryptoKey, BufferSource) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "decrypt(AlgorithmIdentifier, CryptoKey, BufferSource)" with the proper type
+PASS SubtleCrypto interface: calling decrypt(AlgorithmIdentifier, CryptoKey, BufferSource) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "sign(AlgorithmIdentifier, CryptoKey, BufferSource)" with the proper type
+PASS SubtleCrypto interface: calling sign(AlgorithmIdentifier, CryptoKey, BufferSource) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource)" with the proper type
+PASS SubtleCrypto interface: calling verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "digest(AlgorithmIdentifier, BufferSource)" with the proper type
+PASS SubtleCrypto interface: calling digest(AlgorithmIdentifier, BufferSource) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "generateKey(AlgorithmIdentifier, boolean, [object Object])" with the proper type
+PASS SubtleCrypto interface: calling generateKey(AlgorithmIdentifier, boolean, [object Object]) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, [object Object])" with the proper type
+PASS SubtleCrypto interface: calling deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, [object Object]) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long)" with the proper type
+PASS SubtleCrypto interface: calling deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "importKey(KeyFormat, [object Object],[object Object], AlgorithmIdentifier, boolean, [object Object])" with the proper type
+PASS SubtleCrypto interface: calling importKey(KeyFormat, [object Object],[object Object], AlgorithmIdentifier, boolean, [object Object]) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "exportKey(KeyFormat, CryptoKey)" with the proper type
+PASS SubtleCrypto interface: calling exportKey(KeyFormat, CryptoKey) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "wrapKey(KeyFormat, CryptoKey, CryptoKey, AlgorithmIdentifier)" with the proper type
+PASS SubtleCrypto interface: calling wrapKey(KeyFormat, CryptoKey, CryptoKey, AlgorithmIdentifier) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "unwrapKey(KeyFormat, BufferSource, CryptoKey, AlgorithmIdentifier, AlgorithmIdentifier, boolean, [object Object])" with the proper type
+PASS SubtleCrypto interface: calling unwrapKey(KeyFormat, BufferSource, CryptoKey, AlgorithmIdentifier, AlgorithmIdentifier, boolean, [object Object]) on crypto.subtle with too few arguments must throw TypeError
+PASS Window interface: existence and properties of interface object
+PASS WorkerGlobalScope interface: attribute crypto
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/background-fetch/idlharness.https.any.serviceworker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/background-fetch/idlharness.https.any.serviceworker-expected.txt
new file mode 100644
index 0000000..d0dfd483
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/background-fetch/idlharness.https.any.serviceworker-expected.txt
@@ -0,0 +1,61 @@
+This is a testharness.js-based test.
+Found 57 tests; 56 PASS, 1 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface ServiceWorkerGlobalScope: original interface defined
+PASS Partial interface ServiceWorkerRegistration: original interface defined
+PASS BackgroundFetchManager interface: existence and properties of interface object
+PASS BackgroundFetchManager interface object length
+PASS BackgroundFetchManager interface object name
+PASS BackgroundFetchManager interface: existence and properties of interface prototype object
+PASS BackgroundFetchManager interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchManager interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchManager interface: operation fetch(DOMString, [object Object],[object Object], BackgroundFetchOptions)
+PASS BackgroundFetchManager interface: operation get(DOMString)
+PASS BackgroundFetchManager interface: operation getIds()
+PASS BackgroundFetchRegistration interface: existence and properties of interface object
+PASS BackgroundFetchRegistration interface object length
+PASS BackgroundFetchRegistration interface object name
+PASS BackgroundFetchRegistration interface: existence and properties of interface prototype object
+PASS BackgroundFetchRegistration interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchRegistration interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchRegistration interface: attribute id
+PASS BackgroundFetchRegistration interface: attribute uploadTotal
+PASS BackgroundFetchRegistration interface: attribute uploaded
+PASS BackgroundFetchRegistration interface: attribute downloadTotal
+PASS BackgroundFetchRegistration interface: attribute downloaded
+PASS BackgroundFetchRegistration interface: attribute result
+PASS BackgroundFetchRegistration interface: attribute failureReason
+PASS BackgroundFetchRegistration interface: attribute recordsAvailable
+PASS BackgroundFetchRegistration interface: attribute onprogress
+PASS BackgroundFetchRegistration interface: operation abort()
+PASS BackgroundFetchRegistration interface: operation match(RequestInfo, CacheQueryOptions)
+PASS BackgroundFetchRegistration interface: operation matchAll(RequestInfo, CacheQueryOptions)
+PASS BackgroundFetchRecord interface: existence and properties of interface object
+PASS BackgroundFetchRecord interface object length
+PASS BackgroundFetchRecord interface object name
+PASS BackgroundFetchRecord interface: existence and properties of interface prototype object
+PASS BackgroundFetchRecord interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchRecord interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchRecord interface: attribute request
+PASS BackgroundFetchRecord interface: attribute responseReady
+PASS BackgroundFetchEvent interface: existence and properties of interface object
+PASS BackgroundFetchEvent interface object length
+PASS BackgroundFetchEvent interface object name
+PASS BackgroundFetchEvent interface: existence and properties of interface prototype object
+PASS BackgroundFetchEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchEvent interface: attribute registration
+PASS BackgroundFetchUpdateUIEvent interface: existence and properties of interface object
+PASS BackgroundFetchUpdateUIEvent interface object length
+PASS BackgroundFetchUpdateUIEvent interface object name
+PASS BackgroundFetchUpdateUIEvent interface: existence and properties of interface prototype object
+PASS BackgroundFetchUpdateUIEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchUpdateUIEvent interface: existence and properties of interface prototype object's @@unscopables property
+FAIL BackgroundFetchUpdateUIEvent interface: operation updateUI(BackgroundFetchUIOptions) assert_equals: property has wrong .length expected 0 but got 1
+PASS ServiceWorkerRegistration interface: attribute backgroundFetch
+PASS ServiceWorkerGlobalScope interface: attribute onbackgroundfetchsuccess
+PASS ServiceWorkerGlobalScope interface: attribute onbackgroundfetchfail
+PASS ServiceWorkerGlobalScope interface: attribute onbackgroundfetchabort
+PASS ServiceWorkerGlobalScope interface: attribute onbackgroundfetchclick
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/background-fetch/idlharness.https.any.worker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/background-fetch/idlharness.https.any.worker-expected.txt
new file mode 100644
index 0000000..0b6e9e5
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/background-fetch/idlharness.https.any.worker-expected.txt
@@ -0,0 +1,46 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface ServiceWorkerGlobalScope: original interface defined
+PASS Partial interface ServiceWorkerRegistration: original interface defined
+PASS BackgroundFetchManager interface: existence and properties of interface object
+PASS BackgroundFetchManager interface object length
+PASS BackgroundFetchManager interface object name
+PASS BackgroundFetchManager interface: existence and properties of interface prototype object
+PASS BackgroundFetchManager interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchManager interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchManager interface: operation fetch(DOMString, [object Object],[object Object], BackgroundFetchOptions)
+PASS BackgroundFetchManager interface: operation get(DOMString)
+PASS BackgroundFetchManager interface: operation getIds()
+PASS BackgroundFetchRegistration interface: existence and properties of interface object
+PASS BackgroundFetchRegistration interface object length
+PASS BackgroundFetchRegistration interface object name
+PASS BackgroundFetchRegistration interface: existence and properties of interface prototype object
+PASS BackgroundFetchRegistration interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchRegistration interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchRegistration interface: attribute id
+PASS BackgroundFetchRegistration interface: attribute uploadTotal
+PASS BackgroundFetchRegistration interface: attribute uploaded
+PASS BackgroundFetchRegistration interface: attribute downloadTotal
+PASS BackgroundFetchRegistration interface: attribute downloaded
+PASS BackgroundFetchRegistration interface: attribute result
+PASS BackgroundFetchRegistration interface: attribute failureReason
+PASS BackgroundFetchRegistration interface: attribute recordsAvailable
+PASS BackgroundFetchRegistration interface: attribute onprogress
+PASS BackgroundFetchRegistration interface: operation abort()
+PASS BackgroundFetchRegistration interface: operation match(RequestInfo, CacheQueryOptions)
+PASS BackgroundFetchRegistration interface: operation matchAll(RequestInfo, CacheQueryOptions)
+PASS BackgroundFetchRecord interface: existence and properties of interface object
+PASS BackgroundFetchRecord interface object length
+PASS BackgroundFetchRecord interface object name
+PASS BackgroundFetchRecord interface: existence and properties of interface prototype object
+PASS BackgroundFetchRecord interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchRecord interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchRecord interface: attribute request
+PASS BackgroundFetchRecord interface: attribute responseReady
+PASS BackgroundFetchEvent interface: existence and properties of interface object
+PASS BackgroundFetchUpdateUIEvent interface: existence and properties of interface object
+PASS ServiceWorkerRegistration interface: attribute backgroundFetch
+PASS ServiceWorkerGlobalScope interface: existence and properties of interface object
+PASS ExtendableEvent interface: existence and properties of interface object
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/css/css-masking/idlharness-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/css/css-masking/idlharness-expected.txt
new file mode 100644
index 0000000..f188afc0
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/css/css-masking/idlharness-expected.txt
@@ -0,0 +1,36 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+FAIL SVGClipPathElement interface: existence and properties of interface object assert_equals: prototype of SVGClipPathElement is not SVGElement expected function "function SVGElement() { [native code] }" but got function "function SVGGraphicsElement() { [native code] }"
+PASS SVGClipPathElement interface object length
+PASS SVGClipPathElement interface object name
+FAIL SVGClipPathElement interface: existence and properties of interface prototype object assert_equals: prototype of SVGClipPathElement.prototype is not SVGElement.prototype expected object "[object SVGElement]" but got object "[object SVGGraphicsElement]"
+PASS SVGClipPathElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGClipPathElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGClipPathElement interface: attribute clipPathUnits
+FAIL SVGClipPathElement interface: attribute transform assert_own_property: expected property "transform" missing
+PASS SVGClipPathElement must be primary interface of [object SVGClipPathElement]
+PASS Stringification of [object SVGClipPathElement]
+PASS SVGClipPathElement interface: [object SVGClipPathElement] must inherit property "clipPathUnits" with the proper type
+PASS SVGClipPathElement interface: [object SVGClipPathElement] must inherit property "transform" with the proper type
+PASS SVGMaskElement interface: existence and properties of interface object
+PASS SVGMaskElement interface object length
+PASS SVGMaskElement interface object name
+PASS SVGMaskElement interface: existence and properties of interface prototype object
+PASS SVGMaskElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGMaskElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGMaskElement interface: attribute maskUnits
+PASS SVGMaskElement interface: attribute maskContentUnits
+PASS SVGMaskElement interface: attribute x
+PASS SVGMaskElement interface: attribute y
+PASS SVGMaskElement interface: attribute width
+PASS SVGMaskElement interface: attribute height
+PASS SVGMaskElement must be primary interface of [object SVGMaskElement]
+PASS Stringification of [object SVGMaskElement]
+PASS SVGMaskElement interface: [object SVGMaskElement] must inherit property "maskUnits" with the proper type
+PASS SVGMaskElement interface: [object SVGMaskElement] must inherit property "maskContentUnits" with the proper type
+PASS SVGMaskElement interface: [object SVGMaskElement] must inherit property "x" with the proper type
+PASS SVGMaskElement interface: [object SVGMaskElement] must inherit property "y" with the proper type
+PASS SVGMaskElement interface: [object SVGMaskElement] must inherit property "width" with the proper type
+PASS SVGMaskElement interface: [object SVGMaskElement] must inherit property "height" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/css/cssom-view/idlharness-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/css/cssom-view/idlharness-expected.txt
new file mode 100644
index 0000000..55af6db
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/css/cssom-view/idlharness-expected.txt
@@ -0,0 +1,329 @@
+This is a testharness.js-based test.
+Found 325 tests; 252 PASS, 73 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface Window: original interface defined
+PASS Partial interface Document: original interface defined
+PASS Partial interface Element: original interface defined
+PASS Partial interface HTMLElement: original interface defined
+PASS Partial interface HTMLImageElement: original interface defined
+PASS Partial interface Range: original interface defined
+PASS Partial interface MouseEvent: original interface defined
+PASS Partial dictionary MouseEventInit: original dictionary defined
+PASS MediaQueryList interface: existence and properties of interface object
+PASS MediaQueryList interface object length
+PASS MediaQueryList interface object name
+PASS MediaQueryList interface: existence and properties of interface prototype object
+PASS MediaQueryList interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaQueryList interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaQueryList interface: attribute media
+PASS MediaQueryList interface: attribute matches
+PASS MediaQueryList interface: operation addListener(EventListener)
+PASS MediaQueryList interface: operation removeListener(EventListener)
+PASS MediaQueryList interface: attribute onchange
+PASS MediaQueryList must be primary interface of matchMedia("all")
+PASS Stringification of matchMedia("all")
+PASS MediaQueryList interface: matchMedia("all") must inherit property "media" with the proper type
+PASS MediaQueryList interface: matchMedia("all") must inherit property "matches" with the proper type
+PASS MediaQueryList interface: matchMedia("all") must inherit property "addListener(EventListener)" with the proper type
+PASS MediaQueryList interface: calling addListener(EventListener) on matchMedia("all") with too few arguments must throw TypeError
+PASS MediaQueryList interface: matchMedia("all") must inherit property "removeListener(EventListener)" with the proper type
+PASS MediaQueryList interface: calling removeListener(EventListener) on matchMedia("all") with too few arguments must throw TypeError
+PASS MediaQueryList interface: matchMedia("all") must inherit property "onchange" with the proper type
+PASS MediaQueryListEvent interface: existence and properties of interface object
+PASS MediaQueryListEvent interface object length
+PASS MediaQueryListEvent interface object name
+PASS MediaQueryListEvent interface: existence and properties of interface prototype object
+PASS MediaQueryListEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaQueryListEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaQueryListEvent interface: attribute media
+PASS MediaQueryListEvent interface: attribute matches
+PASS MediaQueryListEvent must be primary interface of new MediaQueryListEvent("change")
+PASS Stringification of new MediaQueryListEvent("change")
+PASS MediaQueryListEvent interface: new MediaQueryListEvent("change") must inherit property "media" with the proper type
+PASS MediaQueryListEvent interface: new MediaQueryListEvent("change") must inherit property "matches" with the proper type
+PASS Screen interface: existence and properties of interface object
+PASS Screen interface object length
+PASS Screen interface object name
+PASS Screen interface: existence and properties of interface prototype object
+PASS Screen interface: existence and properties of interface prototype object's "constructor" property
+PASS Screen interface: existence and properties of interface prototype object's @@unscopables property
+PASS Screen interface: attribute availWidth
+PASS Screen interface: attribute availHeight
+PASS Screen interface: attribute width
+PASS Screen interface: attribute height
+PASS Screen interface: attribute colorDepth
+PASS Screen interface: attribute pixelDepth
+PASS Screen must be primary interface of screen
+PASS Stringification of screen
+PASS Screen interface: screen must inherit property "availWidth" with the proper type
+PASS Screen interface: screen must inherit property "availHeight" with the proper type
+PASS Screen interface: screen must inherit property "width" with the proper type
+PASS Screen interface: screen must inherit property "height" with the proper type
+PASS Screen interface: screen must inherit property "colorDepth" with the proper type
+PASS Screen interface: screen must inherit property "pixelDepth" with the proper type
+FAIL CaretPosition interface: existence and properties of interface object assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface object length assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface object name assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: attribute offsetNode assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: attribute offset assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: operation getClientRect() assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition must be primary interface of document.caretPositionFromPoint(5, 5) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: document.caretPositionFromPoint is not a function"
+FAIL Stringification of document.caretPositionFromPoint(5, 5) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: document.caretPositionFromPoint is not a function"
+FAIL CaretPosition interface: document.caretPositionFromPoint(5, 5) must inherit property "offsetNode" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: document.caretPositionFromPoint is not a function"
+FAIL CaretPosition interface: document.caretPositionFromPoint(5, 5) must inherit property "offset" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: document.caretPositionFromPoint is not a function"
+FAIL CaretPosition interface: document.caretPositionFromPoint(5, 5) must inherit property "getClientRect()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: document.caretPositionFromPoint is not a function"
+FAIL CSSPseudoElement interface: operation getBoxQuads(BoxQuadOptions) assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+FAIL CSSPseudoElement interface: operation convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+FAIL CSSPseudoElement interface: operation convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+FAIL CSSPseudoElement interface: operation convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+PASS MouseEvent interface: attribute screenX
+PASS MouseEvent interface: attribute screenY
+PASS MouseEvent interface: attribute pageX
+PASS MouseEvent interface: attribute pageY
+PASS MouseEvent interface: attribute clientX
+PASS MouseEvent interface: attribute clientY
+PASS MouseEvent interface: attribute x
+PASS MouseEvent interface: attribute y
+PASS MouseEvent interface: attribute offsetX
+PASS MouseEvent interface: attribute offsetY
+PASS HTMLElement interface: attribute offsetParent
+PASS HTMLElement interface: attribute offsetTop
+PASS HTMLElement interface: attribute offsetLeft
+PASS HTMLElement interface: attribute offsetWidth
+PASS HTMLElement interface: attribute offsetHeight
+PASS HTMLElement interface: document.createElement("div") must inherit property "offsetParent" with the proper type
+PASS HTMLElement interface: document.createElement("div") must inherit property "offsetTop" with the proper type
+PASS HTMLElement interface: document.createElement("div") must inherit property "offsetLeft" with the proper type
+PASS HTMLElement interface: document.createElement("div") must inherit property "offsetWidth" with the proper type
+PASS HTMLElement interface: document.createElement("div") must inherit property "offsetHeight" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "getClientRects()" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "getBoundingClientRect()" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "scrollIntoView([object Object],[object Object])" with the proper type
+PASS Element interface: calling scrollIntoView([object Object],[object Object]) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scroll(ScrollToOptions)" with the proper type
+PASS Element interface: calling scroll(ScrollToOptions) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scroll(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scroll(unrestricted double, unrestricted double) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scrollTo(ScrollToOptions)" with the proper type
+PASS Element interface: calling scrollTo(ScrollToOptions) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scrollTo(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scrollTo(unrestricted double, unrestricted double) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scrollBy(ScrollToOptions)" with the proper type
+PASS Element interface: calling scrollBy(ScrollToOptions) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scrollBy(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scrollBy(unrestricted double, unrestricted double) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scrollTop" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "scrollLeft" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "scrollWidth" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "scrollHeight" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "clientTop" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "clientLeft" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "clientWidth" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "clientHeight" with the proper type
+FAIL Element interface: document.createElement("div") must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: calling getBoxQuads(BoxQuadOptions) on document.createElement("div") with too few arguments must throw TypeError assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: document.createElement("div") must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document.createElement("div") with too few arguments must throw TypeError assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: document.createElement("div") must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document.createElement("div") with too few arguments must throw TypeError assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: document.createElement("div") must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Element interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document.createElement("div") with too few arguments must throw TypeError assert_inherits: property "convertPointFromNode" not found in prototype chain
+PASS HTMLImageElement interface: attribute x
+PASS HTMLImageElement interface: attribute y
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "x" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "y" with the proper type
+PASS HTMLElement interface: document.createElement("img") must inherit property "offsetParent" with the proper type
+PASS HTMLElement interface: document.createElement("img") must inherit property "offsetTop" with the proper type
+PASS HTMLElement interface: document.createElement("img") must inherit property "offsetLeft" with the proper type
+PASS HTMLElement interface: document.createElement("img") must inherit property "offsetWidth" with the proper type
+PASS HTMLElement interface: document.createElement("img") must inherit property "offsetHeight" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "getClientRects()" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "getBoundingClientRect()" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "scrollIntoView([object Object],[object Object])" with the proper type
+PASS Element interface: calling scrollIntoView([object Object],[object Object]) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scroll(ScrollToOptions)" with the proper type
+PASS Element interface: calling scroll(ScrollToOptions) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scroll(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scroll(unrestricted double, unrestricted double) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scrollTo(ScrollToOptions)" with the proper type
+PASS Element interface: calling scrollTo(ScrollToOptions) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scrollTo(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scrollTo(unrestricted double, unrestricted double) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scrollBy(ScrollToOptions)" with the proper type
+PASS Element interface: calling scrollBy(ScrollToOptions) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scrollBy(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scrollBy(unrestricted double, unrestricted double) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scrollTop" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "scrollLeft" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "scrollWidth" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "scrollHeight" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "clientTop" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "clientLeft" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "clientWidth" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "clientHeight" with the proper type
+FAIL Element interface: document.createElement("img") must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: calling getBoxQuads(BoxQuadOptions) on document.createElement("img") with too few arguments must throw TypeError assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: document.createElement("img") must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document.createElement("img") with too few arguments must throw TypeError assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: document.createElement("img") must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document.createElement("img") with too few arguments must throw TypeError assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: document.createElement("img") must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Element interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document.createElement("img") with too few arguments must throw TypeError assert_inherits: property "convertPointFromNode" not found in prototype chain
+PASS Window interface: operation matchMedia(CSSOMString)
+PASS Window interface: attribute screen
+PASS Window interface: operation moveTo(long, long)
+PASS Window interface: operation moveBy(long, long)
+PASS Window interface: operation resizeTo(long, long)
+PASS Window interface: operation resizeBy(long, long)
+PASS Window interface: attribute innerWidth
+PASS Window interface: attribute innerHeight
+PASS Window interface: attribute scrollX
+PASS Window interface: attribute pageXOffset
+PASS Window interface: attribute scrollY
+PASS Window interface: attribute pageYOffset
+PASS Window interface: operation scroll(ScrollToOptions)
+PASS Window interface: operation scroll(unrestricted double, unrestricted double)
+PASS Window interface: operation scrollTo(ScrollToOptions)
+PASS Window interface: operation scrollTo(unrestricted double, unrestricted double)
+PASS Window interface: operation scrollBy(ScrollToOptions)
+PASS Window interface: operation scrollBy(unrestricted double, unrestricted double)
+PASS Window interface: attribute screenX
+PASS Window interface: attribute screenLeft
+PASS Window interface: attribute screenY
+PASS Window interface: attribute screenTop
+PASS Window interface: attribute outerWidth
+PASS Window interface: attribute outerHeight
+PASS Window interface: attribute devicePixelRatio
+PASS Window interface: window must inherit property "matchMedia(CSSOMString)" with the proper type
+PASS Window interface: calling matchMedia(CSSOMString) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "screen" with the proper type
+PASS Window interface: window must inherit property "moveTo(long, long)" with the proper type
+PASS Window interface: calling moveTo(long, long) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "moveBy(long, long)" with the proper type
+PASS Window interface: calling moveBy(long, long) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "resizeTo(long, long)" with the proper type
+PASS Window interface: calling resizeTo(long, long) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "resizeBy(long, long)" with the proper type
+PASS Window interface: calling resizeBy(long, long) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "innerWidth" with the proper type
+PASS Window interface: window must inherit property "innerHeight" with the proper type
+PASS Window interface: window must inherit property "scrollX" with the proper type
+PASS Window interface: window must inherit property "pageXOffset" with the proper type
+PASS Window interface: window must inherit property "scrollY" with the proper type
+PASS Window interface: window must inherit property "pageYOffset" with the proper type
+PASS Window interface: window must inherit property "scroll(ScrollToOptions)" with the proper type
+PASS Window interface: calling scroll(ScrollToOptions) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "scroll(unrestricted double, unrestricted double)" with the proper type
+PASS Window interface: calling scroll(unrestricted double, unrestricted double) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "scrollTo(ScrollToOptions)" with the proper type
+PASS Window interface: calling scrollTo(ScrollToOptions) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "scrollTo(unrestricted double, unrestricted double)" with the proper type
+PASS Window interface: calling scrollTo(unrestricted double, unrestricted double) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "scrollBy(ScrollToOptions)" with the proper type
+PASS Window interface: calling scrollBy(ScrollToOptions) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "scrollBy(unrestricted double, unrestricted double)" with the proper type
+PASS Window interface: calling scrollBy(unrestricted double, unrestricted double) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "screenX" with the proper type
+PASS Window interface: window must inherit property "screenLeft" with the proper type
+PASS Window interface: window must inherit property "screenY" with the proper type
+PASS Window interface: window must inherit property "screenTop" with the proper type
+PASS Window interface: window must inherit property "outerWidth" with the proper type
+PASS Window interface: window must inherit property "outerHeight" with the proper type
+PASS Window interface: window must inherit property "devicePixelRatio" with the proper type
+PASS Document interface: operation elementFromPoint(double, double)
+PASS Document interface: operation elementsFromPoint(double, double)
+FAIL Document interface: operation caretPositionFromPoint(double, double) assert_own_property: interface prototype object missing non-static operation expected property "caretPositionFromPoint" missing
+PASS Document interface: attribute scrollingElement
+FAIL Document interface: operation getBoxQuads(BoxQuadOptions) assert_own_property: interface prototype object missing non-static operation expected property "getBoxQuads" missing
+FAIL Document interface: operation convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertQuadFromNode" missing
+FAIL Document interface: operation convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertRectFromNode" missing
+FAIL Document interface: operation convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertPointFromNode" missing
+PASS Document interface: document must inherit property "elementFromPoint(double, double)" with the proper type
+PASS Document interface: calling elementFromPoint(double, double) on document with too few arguments must throw TypeError
+PASS Document interface: document must inherit property "elementsFromPoint(double, double)" with the proper type
+PASS Document interface: calling elementsFromPoint(double, double) on document with too few arguments must throw TypeError
+FAIL Document interface: document must inherit property "caretPositionFromPoint(double, double)" with the proper type assert_inherits: property "caretPositionFromPoint" not found in prototype chain
+FAIL Document interface: calling caretPositionFromPoint(double, double) on document with too few arguments must throw TypeError assert_inherits: property "caretPositionFromPoint" not found in prototype chain
+PASS Document interface: document must inherit property "scrollingElement" with the proper type
+FAIL Document interface: document must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Document interface: calling getBoxQuads(BoxQuadOptions) on document with too few arguments must throw TypeError assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Document interface: document must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Document interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document with too few arguments must throw TypeError assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Document interface: document must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Document interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document with too few arguments must throw TypeError assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Document interface: document must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Document interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document with too few arguments must throw TypeError assert_inherits: property "convertPointFromNode" not found in prototype chain
+PASS Element interface: operation getClientRects()
+PASS Element interface: operation getBoundingClientRect()
+PASS Element interface: operation scrollIntoView([object Object],[object Object])
+PASS Element interface: operation scroll(ScrollToOptions)
+PASS Element interface: operation scroll(unrestricted double, unrestricted double)
+PASS Element interface: operation scrollTo(ScrollToOptions)
+PASS Element interface: operation scrollTo(unrestricted double, unrestricted double)
+PASS Element interface: operation scrollBy(ScrollToOptions)
+PASS Element interface: operation scrollBy(unrestricted double, unrestricted double)
+PASS Element interface: attribute scrollTop
+PASS Element interface: attribute scrollLeft
+PASS Element interface: attribute scrollWidth
+PASS Element interface: attribute scrollHeight
+PASS Element interface: attribute clientTop
+PASS Element interface: attribute clientLeft
+PASS Element interface: attribute clientWidth
+PASS Element interface: attribute clientHeight
+FAIL Element interface: operation getBoxQuads(BoxQuadOptions) assert_own_property: interface prototype object missing non-static operation expected property "getBoxQuads" missing
+FAIL Element interface: operation convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertQuadFromNode" missing
+FAIL Element interface: operation convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertRectFromNode" missing
+FAIL Element interface: operation convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertPointFromNode" missing
+PASS Element interface: document.createElementNS("x", "y") must inherit property "getClientRects()" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "getBoundingClientRect()" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollIntoView([object Object],[object Object])" with the proper type
+PASS Element interface: calling scrollIntoView([object Object],[object Object]) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scroll(ScrollToOptions)" with the proper type
+PASS Element interface: calling scroll(ScrollToOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scroll(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scroll(unrestricted double, unrestricted double) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollTo(ScrollToOptions)" with the proper type
+PASS Element interface: calling scrollTo(ScrollToOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollTo(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scrollTo(unrestricted double, unrestricted double) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollBy(ScrollToOptions)" with the proper type
+PASS Element interface: calling scrollBy(ScrollToOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollBy(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scrollBy(unrestricted double, unrestricted double) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollTop" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollLeft" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollWidth" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollHeight" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "clientTop" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "clientLeft" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "clientWidth" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "clientHeight" with the proper type
+FAIL Element interface: document.createElementNS("x", "y") must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: calling getBoxQuads(BoxQuadOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: document.createElementNS("x", "y") must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: document.createElementNS("x", "y") must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: document.createElementNS("x", "y") must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Element interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Text interface: operation getBoxQuads(BoxQuadOptions) assert_own_property: interface prototype object missing non-static operation expected property "getBoxQuads" missing
+FAIL Text interface: operation convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertQuadFromNode" missing
+FAIL Text interface: operation convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertRectFromNode" missing
+FAIL Text interface: operation convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertPointFromNode" missing
+FAIL Text interface: document.createTextNode("x") must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Text interface: calling getBoxQuads(BoxQuadOptions) on document.createTextNode("x") with too few arguments must throw TypeError assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Text interface: document.createTextNode("x") must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Text interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document.createTextNode("x") with too few arguments must throw TypeError assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Text interface: document.createTextNode("x") must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Text interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document.createTextNode("x") with too few arguments must throw TypeError assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Text interface: document.createTextNode("x") must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Text interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document.createTextNode("x") with too few arguments must throw TypeError assert_inherits: property "convertPointFromNode" not found in prototype chain
+PASS Range interface: operation getClientRects()
+PASS Range interface: operation getBoundingClientRect()
+PASS Range interface: new Range() must inherit property "getClientRects()" with the proper type
+PASS Range interface: new Range() must inherit property "getBoundingClientRect()" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/dom/idlharness.window_include=Node-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/dom/idlharness.window_include=Node-expected.txt
new file mode 100644
index 0000000..60bf7dfc
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/dom/idlharness.window_include=Node-expected.txt
@@ -0,0 +1,616 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface Window: original interface defined
+PASS Node interface: existence and properties of interface object
+PASS Node interface object length
+PASS Node interface object name
+PASS Node interface: existence and properties of interface prototype object
+PASS Node interface: existence and properties of interface prototype object's "constructor" property
+PASS Node interface: existence and properties of interface prototype object's @@unscopables property
+PASS Node interface: constant ELEMENT_NODE on interface object
+PASS Node interface: constant ELEMENT_NODE on interface prototype object
+PASS Node interface: constant ATTRIBUTE_NODE on interface object
+PASS Node interface: constant ATTRIBUTE_NODE on interface prototype object
+PASS Node interface: constant TEXT_NODE on interface object
+PASS Node interface: constant TEXT_NODE on interface prototype object
+PASS Node interface: constant CDATA_SECTION_NODE on interface object
+PASS Node interface: constant CDATA_SECTION_NODE on interface prototype object
+PASS Node interface: constant ENTITY_REFERENCE_NODE on interface object
+PASS Node interface: constant ENTITY_REFERENCE_NODE on interface prototype object
+PASS Node interface: constant ENTITY_NODE on interface object
+PASS Node interface: constant ENTITY_NODE on interface prototype object
+PASS Node interface: constant PROCESSING_INSTRUCTION_NODE on interface object
+PASS Node interface: constant PROCESSING_INSTRUCTION_NODE on interface prototype object
+PASS Node interface: constant COMMENT_NODE on interface object
+PASS Node interface: constant COMMENT_NODE on interface prototype object
+PASS Node interface: constant DOCUMENT_NODE on interface object
+PASS Node interface: constant DOCUMENT_NODE on interface prototype object
+PASS Node interface: constant DOCUMENT_TYPE_NODE on interface object
+PASS Node interface: constant DOCUMENT_TYPE_NODE on interface prototype object
+PASS Node interface: constant DOCUMENT_FRAGMENT_NODE on interface object
+PASS Node interface: constant DOCUMENT_FRAGMENT_NODE on interface prototype object
+PASS Node interface: constant NOTATION_NODE on interface object
+PASS Node interface: constant NOTATION_NODE on interface prototype object
+PASS Node interface: attribute nodeType
+PASS Node interface: attribute nodeName
+PASS Node interface: attribute baseURI
+PASS Node interface: attribute isConnected
+PASS Node interface: attribute ownerDocument
+PASS Node interface: operation getRootNode(GetRootNodeOptions)
+PASS Node interface: attribute parentNode
+PASS Node interface: attribute parentElement
+PASS Node interface: operation hasChildNodes()
+PASS Node interface: attribute childNodes
+PASS Node interface: attribute firstChild
+PASS Node interface: attribute lastChild
+PASS Node interface: attribute previousSibling
+PASS Node interface: attribute nextSibling
+PASS Node interface: attribute nodeValue
+PASS Node interface: attribute textContent
+PASS Node interface: operation normalize()
+PASS Node interface: operation cloneNode(boolean)
+PASS Node interface: operation isEqualNode(Node)
+PASS Node interface: operation isSameNode(Node)
+PASS Node interface: constant DOCUMENT_POSITION_DISCONNECTED on interface object
+PASS Node interface: constant DOCUMENT_POSITION_DISCONNECTED on interface prototype object
+PASS Node interface: constant DOCUMENT_POSITION_PRECEDING on interface object
+PASS Node interface: constant DOCUMENT_POSITION_PRECEDING on interface prototype object
+PASS Node interface: constant DOCUMENT_POSITION_FOLLOWING on interface object
+PASS Node interface: constant DOCUMENT_POSITION_FOLLOWING on interface prototype object
+PASS Node interface: constant DOCUMENT_POSITION_CONTAINS on interface object
+PASS Node interface: constant DOCUMENT_POSITION_CONTAINS on interface prototype object
+PASS Node interface: constant DOCUMENT_POSITION_CONTAINED_BY on interface object
+PASS Node interface: constant DOCUMENT_POSITION_CONTAINED_BY on interface prototype object
+PASS Node interface: constant DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC on interface object
+PASS Node interface: constant DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC on interface prototype object
+PASS Node interface: operation compareDocumentPosition(Node)
+PASS Node interface: operation contains(Node)
+PASS Node interface: operation lookupPrefix(DOMString)
+PASS Node interface: operation lookupNamespaceURI(DOMString)
+PASS Node interface: operation isDefaultNamespace(DOMString)
+PASS Node interface: operation insertBefore(Node, Node)
+PASS Node interface: operation appendChild(Node)
+PASS Node interface: operation replaceChild(Node, Node)
+PASS Node interface: operation removeChild(Node)
+PASS Node interface: new Document() must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "nodeType" with the proper type
+PASS Node interface: new Document() must inherit property "nodeName" with the proper type
+PASS Node interface: new Document() must inherit property "baseURI" with the proper type
+PASS Node interface: new Document() must inherit property "isConnected" with the proper type
+PASS Node interface: new Document() must inherit property "ownerDocument" with the proper type
+PASS Node interface: new Document() must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "parentNode" with the proper type
+PASS Node interface: new Document() must inherit property "parentElement" with the proper type
+PASS Node interface: new Document() must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: new Document() must inherit property "childNodes" with the proper type
+PASS Node interface: new Document() must inherit property "firstChild" with the proper type
+PASS Node interface: new Document() must inherit property "lastChild" with the proper type
+PASS Node interface: new Document() must inherit property "previousSibling" with the proper type
+PASS Node interface: new Document() must inherit property "nextSibling" with the proper type
+PASS Node interface: new Document() must inherit property "nodeValue" with the proper type
+PASS Node interface: new Document() must inherit property "textContent" with the proper type
+PASS Node interface: new Document() must inherit property "normalize()" with the proper type
+PASS Node interface: new Document() must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: new Document() must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "nodeType" with the proper type
+PASS Node interface: xmlDoc must inherit property "nodeName" with the proper type
+PASS Node interface: xmlDoc must inherit property "baseURI" with the proper type
+PASS Node interface: xmlDoc must inherit property "isConnected" with the proper type
+PASS Node interface: xmlDoc must inherit property "ownerDocument" with the proper type
+PASS Node interface: xmlDoc must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "parentNode" with the proper type
+PASS Node interface: xmlDoc must inherit property "parentElement" with the proper type
+PASS Node interface: xmlDoc must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: xmlDoc must inherit property "childNodes" with the proper type
+PASS Node interface: xmlDoc must inherit property "firstChild" with the proper type
+PASS Node interface: xmlDoc must inherit property "lastChild" with the proper type
+PASS Node interface: xmlDoc must inherit property "previousSibling" with the proper type
+PASS Node interface: xmlDoc must inherit property "nextSibling" with the proper type
+PASS Node interface: xmlDoc must inherit property "nodeValue" with the proper type
+PASS Node interface: xmlDoc must inherit property "textContent" with the proper type
+PASS Node interface: xmlDoc must inherit property "normalize()" with the proper type
+PASS Node interface: xmlDoc must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: xmlDoc must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "nodeType" with the proper type
+PASS Node interface: document.doctype must inherit property "nodeName" with the proper type
+PASS Node interface: document.doctype must inherit property "baseURI" with the proper type
+PASS Node interface: document.doctype must inherit property "isConnected" with the proper type
+PASS Node interface: document.doctype must inherit property "ownerDocument" with the proper type
+PASS Node interface: document.doctype must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "parentNode" with the proper type
+PASS Node interface: document.doctype must inherit property "parentElement" with the proper type
+PASS Node interface: document.doctype must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: document.doctype must inherit property "childNodes" with the proper type
+PASS Node interface: document.doctype must inherit property "firstChild" with the proper type
+PASS Node interface: document.doctype must inherit property "lastChild" with the proper type
+PASS Node interface: document.doctype must inherit property "previousSibling" with the proper type
+PASS Node interface: document.doctype must inherit property "nextSibling" with the proper type
+PASS Node interface: document.doctype must inherit property "nodeValue" with the proper type
+PASS Node interface: document.doctype must inherit property "textContent" with the proper type
+PASS Node interface: document.doctype must inherit property "normalize()" with the proper type
+PASS Node interface: document.doctype must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: document.doctype must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "nodeType" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "nodeName" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "baseURI" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "isConnected" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "ownerDocument" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "parentNode" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "parentElement" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "childNodes" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "firstChild" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "lastChild" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "previousSibling" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "nextSibling" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "nodeValue" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "textContent" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "normalize()" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: element must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: element must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: element must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: element must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: element must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: element must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: element must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: element must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: element must inherit property "nodeType" with the proper type
+PASS Node interface: element must inherit property "nodeName" with the proper type
+PASS Node interface: element must inherit property "baseURI" with the proper type
+PASS Node interface: element must inherit property "isConnected" with the proper type
+PASS Node interface: element must inherit property "ownerDocument" with the proper type
+PASS Node interface: element must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "parentNode" with the proper type
+PASS Node interface: element must inherit property "parentElement" with the proper type
+PASS Node interface: element must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: element must inherit property "childNodes" with the proper type
+PASS Node interface: element must inherit property "firstChild" with the proper type
+PASS Node interface: element must inherit property "lastChild" with the proper type
+PASS Node interface: element must inherit property "previousSibling" with the proper type
+PASS Node interface: element must inherit property "nextSibling" with the proper type
+PASS Node interface: element must inherit property "nodeValue" with the proper type
+PASS Node interface: element must inherit property "textContent" with the proper type
+PASS Node interface: element must inherit property "normalize()" with the proper type
+PASS Node interface: element must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: element must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on element with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "nodeType" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "nodeName" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "baseURI" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "isConnected" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "ownerDocument" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "parentNode" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "parentElement" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "childNodes" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "firstChild" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "lastChild" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "previousSibling" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "nextSibling" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "nodeValue" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "textContent" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "normalize()" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "nodeType" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "nodeName" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "baseURI" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "isConnected" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "ownerDocument" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "parentNode" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "parentElement" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "childNodes" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "firstChild" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "lastChild" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "previousSibling" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "nextSibling" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "nodeValue" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "textContent" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "normalize()" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "nodeType" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "nodeName" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "baseURI" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "isConnected" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "ownerDocument" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "parentNode" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "parentElement" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "childNodes" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "firstChild" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "lastChild" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "previousSibling" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "nextSibling" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "nodeValue" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "textContent" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "normalize()" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "nodeType" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "nodeName" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "baseURI" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "isConnected" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "ownerDocument" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "parentNode" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "parentElement" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "childNodes" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "firstChild" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "lastChild" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "previousSibling" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "nextSibling" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "nodeValue" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "textContent" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "normalize()" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on document.createComment("abc") with too few arguments must throw TypeError
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/encrypted-media/idlharness.https-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/encrypted-media/idlharness.https-expected.txt
new file mode 100644
index 0000000..3b1c95e
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/encrypted-media/idlharness.https-expected.txt
@@ -0,0 +1,75 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface Navigator: original interface defined
+PASS Partial interface Navigator: valid exposure set
+PASS Partial interface HTMLMediaElement: original interface defined
+PASS Partial interface HTMLMediaElement: valid exposure set
+PASS MediaKeySystemAccess interface: existence and properties of interface object
+PASS MediaKeySystemAccess interface object length
+PASS MediaKeySystemAccess interface object name
+PASS MediaKeySystemAccess interface: existence and properties of interface prototype object
+PASS MediaKeySystemAccess interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaKeySystemAccess interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaKeySystemAccess interface: attribute keySystem
+PASS MediaKeySystemAccess interface: operation getConfiguration()
+PASS MediaKeySystemAccess interface: operation createMediaKeys()
+PASS MediaKeys interface: existence and properties of interface object
+PASS MediaKeys interface object length
+PASS MediaKeys interface object name
+PASS MediaKeys interface: existence and properties of interface prototype object
+PASS MediaKeys interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaKeys interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaKeys interface: operation createSession(MediaKeySessionType)
+PASS MediaKeys interface: operation setServerCertificate(BufferSource)
+PASS MediaKeySession interface: existence and properties of interface object
+PASS MediaKeySession interface object length
+PASS MediaKeySession interface object name
+PASS MediaKeySession interface: existence and properties of interface prototype object
+PASS MediaKeySession interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaKeySession interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaKeySession interface: attribute sessionId
+PASS MediaKeySession interface: attribute expiration
+PASS MediaKeySession interface: attribute closed
+PASS MediaKeySession interface: attribute keyStatuses
+PASS MediaKeySession interface: attribute onkeystatuseschange
+PASS MediaKeySession interface: attribute onmessage
+PASS MediaKeySession interface: operation generateRequest(DOMString, BufferSource)
+PASS MediaKeySession interface: operation load(DOMString)
+PASS MediaKeySession interface: operation update(BufferSource)
+PASS MediaKeySession interface: operation close()
+PASS MediaKeySession interface: operation remove()
+PASS MediaKeyStatusMap interface: existence and properties of interface object
+PASS MediaKeyStatusMap interface object length
+PASS MediaKeyStatusMap interface object name
+PASS MediaKeyStatusMap interface: existence and properties of interface prototype object
+PASS MediaKeyStatusMap interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaKeyStatusMap interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaKeyStatusMap interface: iterable<BufferSource, MediaKeyStatus>
+PASS MediaKeyStatusMap interface: attribute size
+PASS MediaKeyStatusMap interface: operation has(BufferSource)
+PASS MediaKeyStatusMap interface: operation get(BufferSource)
+PASS MediaKeyMessageEvent interface: existence and properties of interface object
+PASS MediaKeyMessageEvent interface object length
+PASS MediaKeyMessageEvent interface object name
+PASS MediaKeyMessageEvent interface: existence and properties of interface prototype object
+PASS MediaKeyMessageEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaKeyMessageEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaKeyMessageEvent interface: attribute messageType
+PASS MediaKeyMessageEvent interface: attribute message
+PASS MediaEncryptedEvent interface: existence and properties of interface object
+PASS MediaEncryptedEvent interface object length
+PASS MediaEncryptedEvent interface object name
+PASS MediaEncryptedEvent interface: existence and properties of interface prototype object
+PASS MediaEncryptedEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaEncryptedEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaEncryptedEvent interface: attribute initDataType
+PASS MediaEncryptedEvent interface: attribute initData
+PASS HTMLMediaElement interface: attribute mediaKeys
+PASS HTMLMediaElement interface: attribute onencrypted
+PASS HTMLMediaElement interface: attribute onwaitingforkey
+PASS HTMLMediaElement interface: operation setMediaKeys(MediaKeys)
+PASS Navigator interface: operation requestMediaKeySystemAccess(DOMString, [object Object])
+PASS Navigator interface: navigator must inherit property "requestMediaKeySystemAccess(DOMString, [object Object])" with the proper type
+PASS Navigator interface: calling requestMediaKeySystemAccess(DOMString, [object Object]) on navigator with too few arguments must throw TypeError
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/geolocation-API/idlharness.window-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/geolocation-API/idlharness.window-expected.txt
new file mode 100644
index 0000000..6fa16430
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/geolocation-API/idlharness.window-expected.txt
@@ -0,0 +1,14 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface Navigator: original interface defined
+PASS Stringification of navigator.geolocation
+PASS Geolocation interface: navigator.geolocation must inherit property "getCurrentPosition(PositionCallback, PositionErrorCallback, PositionOptions)" with the proper type
+PASS Geolocation interface: calling getCurrentPosition(PositionCallback, PositionErrorCallback, PositionOptions) on navigator.geolocation with too few arguments must throw TypeError
+PASS Geolocation interface: navigator.geolocation must inherit property "watchPosition(PositionCallback, PositionErrorCallback, PositionOptions)" with the proper type
+PASS Geolocation interface: calling watchPosition(PositionCallback, PositionErrorCallback, PositionOptions) on navigator.geolocation with too few arguments must throw TypeError
+PASS Geolocation interface: navigator.geolocation must inherit property "clearWatch(long)" with the proper type
+PASS Geolocation interface: calling clearWatch(long) on navigator.geolocation with too few arguments must throw TypeError
+PASS Navigator interface: attribute geolocation
+PASS Navigator interface: navigator must inherit property "geolocation" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
new file mode 100644
index 0000000..579bca6
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
@@ -0,0 +1,3593 @@
+This is a testharness.js-based test.
+Found 3589 tests; 3549 PASS, 40 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface Document: original interface defined
+PASS Partial interface mixin DocumentOrShadowRoot: original interface mixin defined
+PASS Partial interface mixin NavigatorID: original interface mixin defined
+PASS Partial interface HTMLAnchorElement: original interface defined
+PASS Partial interface HTMLAreaElement: original interface defined
+PASS Partial interface HTMLBodyElement: original interface defined
+PASS Partial interface HTMLBRElement: original interface defined
+PASS Partial interface HTMLTableCaptionElement: original interface defined
+PASS Partial interface HTMLTableColElement: original interface defined
+PASS Partial interface HTMLDivElement: original interface defined
+PASS Partial interface HTMLDListElement: original interface defined
+PASS Partial interface HTMLEmbedElement: original interface defined
+PASS Partial interface HTMLHeadingElement: original interface defined
+PASS Partial interface HTMLHRElement: original interface defined
+PASS Partial interface HTMLHtmlElement: original interface defined
+PASS Partial interface HTMLIFrameElement: original interface defined
+PASS Partial interface HTMLImageElement: original interface defined
+PASS Partial interface HTMLInputElement: original interface defined
+PASS Partial interface HTMLLegendElement: original interface defined
+PASS Partial interface HTMLLIElement: original interface defined
+PASS Partial interface HTMLLinkElement: original interface defined
+PASS Partial interface HTMLMenuElement: original interface defined
+PASS Partial interface HTMLMetaElement: original interface defined
+PASS Partial interface HTMLObjectElement: original interface defined
+PASS Partial interface HTMLOListElement: original interface defined
+PASS Partial interface HTMLParagraphElement: original interface defined
+PASS Partial interface HTMLParamElement: original interface defined
+PASS Partial interface HTMLPreElement: original interface defined
+PASS Partial interface HTMLStyleElement: original interface defined
+PASS Partial interface HTMLScriptElement: original interface defined
+PASS Partial interface HTMLTableElement: original interface defined
+PASS Partial interface HTMLTableSectionElement: original interface defined
+PASS Partial interface HTMLTableCellElement: original interface defined
+PASS Partial interface HTMLTableRowElement: original interface defined
+PASS Partial interface HTMLUListElement: original interface defined
+PASS Partial interface Document[2]: original interface defined
+PASS Partial interface Window: original interface defined
+PASS HTMLAllCollection interface: existence and properties of interface object
+PASS HTMLAllCollection interface object length
+PASS HTMLAllCollection interface object name
+PASS HTMLAllCollection interface: existence and properties of interface prototype object
+PASS HTMLAllCollection interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLAllCollection interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLAllCollection interface: attribute length
+PASS HTMLAllCollection interface: operation namedItem(DOMString)
+PASS HTMLAllCollection interface: operation item(DOMString)
+FAIL HTMLAllCollection must be primary interface of document.all assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL Stringification of document.all assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL HTMLAllCollection interface: document.all must inherit property "length" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL HTMLAllCollection interface: document.all must inherit property "namedItem(DOMString)" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL HTMLAllCollection interface: calling namedItem(DOMString) on document.all with too few arguments must throw TypeError assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL HTMLAllCollection interface: document.all must inherit property "item(DOMString)" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL HTMLAllCollection interface: calling item(DOMString) on document.all with too few arguments must throw TypeError assert_equals: wrong typeof object expected "object" but got "undefined"
+PASS HTMLFormControlsCollection interface: existence and properties of interface object
+PASS HTMLFormControlsCollection interface object length
+PASS HTMLFormControlsCollection interface object name
+PASS HTMLFormControlsCollection interface: existence and properties of interface prototype object
+PASS HTMLFormControlsCollection interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFormControlsCollection interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFormControlsCollection interface: operation namedItem(DOMString)
+PASS HTMLFormControlsCollection must be primary interface of document.createElement("form").elements
+PASS Stringification of document.createElement("form").elements
+PASS HTMLFormControlsCollection interface: document.createElement("form").elements must inherit property "namedItem(DOMString)" with the proper type
+PASS HTMLFormControlsCollection interface: calling namedItem(DOMString) on document.createElement("form").elements with too few arguments must throw TypeError
+PASS HTMLOptionsCollection interface: existence and properties of interface object
+PASS HTMLOptionsCollection interface object length
+PASS HTMLOptionsCollection interface object name
+PASS HTMLOptionsCollection interface: existence and properties of interface prototype object
+PASS HTMLOptionsCollection interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLOptionsCollection interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLOptionsCollection interface: attribute length
+PASS HTMLOptionsCollection interface: operation add([object Object],[object Object], [object Object],[object Object])
+PASS HTMLOptionsCollection interface: operation remove(long)
+PASS HTMLOptionsCollection interface: attribute selectedIndex
+PASS HTMLOptionsCollection must be primary interface of document.createElement("select").options
+PASS Stringification of document.createElement("select").options
+PASS HTMLOptionsCollection interface: document.createElement("select").options must inherit property "length" with the proper type
+PASS HTMLOptionsCollection interface: document.createElement("select").options must inherit property "add([object Object],[object Object], [object Object],[object Object])" with the proper type
+PASS HTMLOptionsCollection interface: calling add([object Object],[object Object], [object Object],[object Object]) on document.createElement("select").options with too few arguments must throw TypeError
+PASS HTMLOptionsCollection interface: document.createElement("select").options must inherit property "remove(long)" with the proper type
+PASS HTMLOptionsCollection interface: calling remove(long) on document.createElement("select").options with too few arguments must throw TypeError
+PASS HTMLOptionsCollection interface: document.createElement("select").options must inherit property "selectedIndex" with the proper type
+PASS HTMLElement interface: existence and properties of interface object
+PASS HTMLElement interface object length
+PASS HTMLElement interface object name
+PASS HTMLElement interface: existence and properties of interface prototype object
+PASS HTMLElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLElement interface: attribute title
+PASS HTMLElement interface: attribute lang
+PASS HTMLElement interface: attribute translate
+PASS HTMLElement interface: attribute dir
+PASS HTMLElement interface: attribute hidden
+PASS HTMLElement interface: operation click()
+PASS HTMLElement interface: attribute accessKey
+FAIL HTMLElement interface: attribute accessKeyLabel assert_true: The prototype object must have a property "accessKeyLabel" expected true got false
+PASS HTMLElement interface: attribute draggable
+PASS HTMLElement interface: attribute spellcheck
+PASS HTMLElement interface: attribute autocapitalize
+PASS HTMLElement interface: attribute innerText
+PASS HTMLElement interface: operation attachInternals()
+PASS HTMLElement interface: attribute onabort
+PASS HTMLElement interface: attribute onauxclick
+PASS HTMLElement interface: attribute onblur
+PASS HTMLElement interface: attribute oncancel
+PASS HTMLElement interface: attribute oncanplay
+PASS HTMLElement interface: attribute oncanplaythrough
+PASS HTMLElement interface: attribute onchange
+PASS HTMLElement interface: attribute onclick
+PASS HTMLElement interface: attribute onclose
+PASS HTMLElement interface: attribute oncontextmenu
+PASS HTMLElement interface: attribute oncuechange
+PASS HTMLElement interface: attribute ondblclick
+PASS HTMLElement interface: attribute ondrag
+PASS HTMLElement interface: attribute ondragend
+PASS HTMLElement interface: attribute ondragenter
+FAIL HTMLElement interface: attribute ondragexit assert_true: The prototype object must have a property "ondragexit" expected true got false
+PASS HTMLElement interface: attribute ondragleave
+PASS HTMLElement interface: attribute ondragover
+PASS HTMLElement interface: attribute ondragstart
+PASS HTMLElement interface: attribute ondrop
+PASS HTMLElement interface: attribute ondurationchange
+PASS HTMLElement interface: attribute onemptied
+PASS HTMLElement interface: attribute onended
+PASS HTMLElement interface: attribute onerror
+PASS HTMLElement interface: attribute onfocus
+PASS HTMLElement interface: attribute onformdata
+PASS HTMLElement interface: attribute oninput
+PASS HTMLElement interface: attribute oninvalid
+PASS HTMLElement interface: attribute onkeydown
+PASS HTMLElement interface: attribute onkeypress
+PASS HTMLElement interface: attribute onkeyup
+PASS HTMLElement interface: attribute onload
+PASS HTMLElement interface: attribute onloadeddata
+PASS HTMLElement interface: attribute onloadedmetadata
+PASS HTMLElement interface: attribute onloadstart
+PASS HTMLElement interface: attribute onmousedown
+PASS HTMLElement interface: attribute onmouseenter
+PASS HTMLElement interface: attribute onmouseleave
+PASS HTMLElement interface: attribute onmousemove
+PASS HTMLElement interface: attribute onmouseout
+PASS HTMLElement interface: attribute onmouseover
+PASS HTMLElement interface: attribute onmouseup
+PASS HTMLElement interface: attribute onwheel
+PASS HTMLElement interface: attribute onpause
+PASS HTMLElement interface: attribute onplay
+PASS HTMLElement interface: attribute onplaying
+PASS HTMLElement interface: attribute onprogress
+PASS HTMLElement interface: attribute onratechange
+PASS HTMLElement interface: attribute onreset
+PASS HTMLElement interface: attribute onresize
+PASS HTMLElement interface: attribute onscroll
+FAIL HTMLElement interface: attribute onsecuritypolicyviolation assert_true: The prototype object must have a property "onsecuritypolicyviolation" expected true got false
+PASS HTMLElement interface: attribute onseeked
+PASS HTMLElement interface: attribute onseeking
+PASS HTMLElement interface: attribute onselect
+PASS HTMLElement interface: attribute onstalled
+PASS HTMLElement interface: attribute onsubmit
+PASS HTMLElement interface: attribute onsuspend
+PASS HTMLElement interface: attribute ontimeupdate
+PASS HTMLElement interface: attribute ontoggle
+PASS HTMLElement interface: attribute onvolumechange
+PASS HTMLElement interface: attribute onwaiting
+PASS HTMLElement interface: attribute oncopy
+PASS HTMLElement interface: attribute oncut
+PASS HTMLElement interface: attribute onpaste
+PASS HTMLElement interface: attribute contentEditable
+PASS HTMLElement interface: attribute enterKeyHint
+PASS HTMLElement interface: attribute isContentEditable
+PASS HTMLElement interface: attribute inputMode
+PASS HTMLElement interface: attribute dataset
+PASS HTMLElement interface: attribute nonce
+FAIL HTMLElement interface: attribute autofocus assert_true: The prototype object must have a property "autofocus" expected true got false
+PASS HTMLElement interface: attribute tabIndex
+PASS HTMLElement interface: operation focus(FocusOptions)
+PASS HTMLElement interface: operation blur()
+PASS HTMLElement must be primary interface of document.createElement("noscript")
+PASS Stringification of document.createElement("noscript")
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "title" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "lang" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "translate" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "dir" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "hidden" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "click()" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "accessKey" with the proper type
+FAIL HTMLElement interface: document.createElement("noscript") must inherit property "accessKeyLabel" with the proper type assert_inherits: property "accessKeyLabel" not found in prototype chain
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "draggable" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "spellcheck" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "autocapitalize" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "innerText" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "attachInternals()" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onabort" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onauxclick" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onblur" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncancel" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncanplay" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncanplaythrough" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onchange" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onclick" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onclose" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncontextmenu" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncuechange" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondblclick" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondrag" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragend" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragenter" with the proper type
+FAIL HTMLElement interface: document.createElement("noscript") must inherit property "ondragexit" with the proper type assert_inherits: property "ondragexit" not found in prototype chain
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragleave" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragover" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragstart" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondrop" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondurationchange" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onemptied" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onended" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onerror" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onfocus" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onformdata" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oninput" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oninvalid" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onkeydown" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onkeypress" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onkeyup" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onload" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onloadeddata" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onloadedmetadata" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onloadstart" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmousedown" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseenter" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseleave" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmousemove" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseout" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseover" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseup" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwheel" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onpause" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onplay" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onplaying" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onprogress" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onratechange" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onreset" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onresize" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onscroll" with the proper type
+FAIL HTMLElement interface: document.createElement("noscript") must inherit property "onsecuritypolicyviolation" with the proper type assert_inherits: property "onsecuritypolicyviolation" not found in prototype chain
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onseeked" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onseeking" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onselect" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onstalled" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onsubmit" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onsuspend" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ontimeupdate" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ontoggle" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onvolumechange" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwaiting" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncopy" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncut" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onpaste" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "contentEditable" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "enterKeyHint" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "isContentEditable" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "inputMode" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "dataset" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "nonce" with the proper type
+FAIL HTMLElement interface: document.createElement("noscript") must inherit property "autofocus" with the proper type assert_inherits: property "autofocus" not found in prototype chain
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "tabIndex" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "focus(FocusOptions)" with the proper type
+PASS HTMLElement interface: calling focus(FocusOptions) on document.createElement("noscript") with too few arguments must throw TypeError
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "blur()" with the proper type
+PASS HTMLUnknownElement interface: existence and properties of interface object
+PASS HTMLUnknownElement interface object length
+PASS HTMLUnknownElement interface object name
+PASS HTMLUnknownElement interface: existence and properties of interface prototype object
+PASS HTMLUnknownElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLUnknownElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLUnknownElement must be primary interface of document.createElement("bgsound")
+PASS Stringification of document.createElement("bgsound")
+PASS HTMLHtmlElement interface: existence and properties of interface object
+PASS HTMLHtmlElement interface object length
+PASS HTMLHtmlElement interface object name
+PASS HTMLHtmlElement interface: existence and properties of interface prototype object
+PASS HTMLHtmlElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLHtmlElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLHtmlElement interface: attribute version
+PASS HTMLHtmlElement must be primary interface of document.createElement("html")
+PASS Stringification of document.createElement("html")
+PASS HTMLHtmlElement interface: document.createElement("html") must inherit property "version" with the proper type
+PASS HTMLHeadElement interface: existence and properties of interface object
+PASS HTMLHeadElement interface object length
+PASS HTMLHeadElement interface object name
+PASS HTMLHeadElement interface: existence and properties of interface prototype object
+PASS HTMLHeadElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLHeadElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLHeadElement must be primary interface of document.createElement("head")
+PASS Stringification of document.createElement("head")
+PASS HTMLTitleElement interface: existence and properties of interface object
+PASS HTMLTitleElement interface object length
+PASS HTMLTitleElement interface object name
+PASS HTMLTitleElement interface: existence and properties of interface prototype object
+PASS HTMLTitleElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTitleElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTitleElement interface: attribute text
+PASS HTMLTitleElement must be primary interface of document.createElement("title")
+PASS Stringification of document.createElement("title")
+PASS HTMLTitleElement interface: document.createElement("title") must inherit property "text" with the proper type
+PASS HTMLBaseElement interface: existence and properties of interface object
+PASS HTMLBaseElement interface object length
+PASS HTMLBaseElement interface object name
+PASS HTMLBaseElement interface: existence and properties of interface prototype object
+PASS HTMLBaseElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLBaseElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLBaseElement interface: attribute href
+PASS HTMLBaseElement interface: attribute target
+PASS HTMLBaseElement must be primary interface of document.createElement("base")
+PASS Stringification of document.createElement("base")
+PASS HTMLBaseElement interface: document.createElement("base") must inherit property "href" with the proper type
+PASS HTMLBaseElement interface: document.createElement("base") must inherit property "target" with the proper type
+PASS HTMLLinkElement interface: existence and properties of interface object
+PASS HTMLLinkElement interface object length
+PASS HTMLLinkElement interface object name
+PASS HTMLLinkElement interface: existence and properties of interface prototype object
+PASS HTMLLinkElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLLinkElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLLinkElement interface: attribute href
+PASS HTMLLinkElement interface: attribute crossOrigin
+PASS HTMLLinkElement interface: attribute rel
+PASS HTMLLinkElement interface: attribute as
+PASS HTMLLinkElement interface: attribute relList
+PASS HTMLLinkElement interface: attribute media
+PASS HTMLLinkElement interface: attribute integrity
+PASS HTMLLinkElement interface: attribute hreflang
+PASS HTMLLinkElement interface: attribute type
+PASS HTMLLinkElement interface: attribute sizes
+PASS HTMLLinkElement interface: attribute imageSrcset
+PASS HTMLLinkElement interface: attribute imageSizes
+PASS HTMLLinkElement interface: attribute referrerPolicy
+PASS HTMLLinkElement interface: attribute charset
+PASS HTMLLinkElement interface: attribute rev
+PASS HTMLLinkElement interface: attribute target
+PASS HTMLLinkElement must be primary interface of document.createElement("link")
+PASS Stringification of document.createElement("link")
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "href" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "crossOrigin" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "rel" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "as" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "relList" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "media" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "integrity" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "hreflang" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "type" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "sizes" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "imageSrcset" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "imageSizes" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "referrerPolicy" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "charset" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "rev" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "target" with the proper type
+PASS HTMLMetaElement interface: existence and properties of interface object
+PASS HTMLMetaElement interface object length
+PASS HTMLMetaElement interface object name
+PASS HTMLMetaElement interface: existence and properties of interface prototype object
+PASS HTMLMetaElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMetaElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMetaElement interface: attribute name
+PASS HTMLMetaElement interface: attribute httpEquiv
+PASS HTMLMetaElement interface: attribute content
+PASS HTMLMetaElement interface: attribute scheme
+PASS HTMLMetaElement must be primary interface of document.createElement("meta")
+PASS Stringification of document.createElement("meta")
+PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "name" with the proper type
+PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "httpEquiv" with the proper type
+PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "content" with the proper type
+PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "scheme" with the proper type
+PASS HTMLStyleElement interface: existence and properties of interface object
+PASS HTMLStyleElement interface object length
+PASS HTMLStyleElement interface object name
+PASS HTMLStyleElement interface: existence and properties of interface prototype object
+PASS HTMLStyleElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLStyleElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLStyleElement interface: attribute media
+PASS HTMLStyleElement interface: attribute type
+PASS HTMLStyleElement must be primary interface of document.createElement("style")
+PASS Stringification of document.createElement("style")
+PASS HTMLStyleElement interface: document.createElement("style") must inherit property "media" with the proper type
+PASS HTMLStyleElement interface: document.createElement("style") must inherit property "type" with the proper type
+PASS HTMLBodyElement interface: existence and properties of interface object
+PASS HTMLBodyElement interface object length
+PASS HTMLBodyElement interface object name
+PASS HTMLBodyElement interface: existence and properties of interface prototype object
+PASS HTMLBodyElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLBodyElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLBodyElement interface: attribute text
+PASS HTMLBodyElement interface: attribute link
+PASS HTMLBodyElement interface: attribute vLink
+PASS HTMLBodyElement interface: attribute aLink
+PASS HTMLBodyElement interface: attribute bgColor
+PASS HTMLBodyElement interface: attribute background
+PASS HTMLBodyElement interface: attribute onafterprint
+PASS HTMLBodyElement interface: attribute onbeforeprint
+PASS HTMLBodyElement interface: attribute onbeforeunload
+PASS HTMLBodyElement interface: attribute onhashchange
+PASS HTMLBodyElement interface: attribute onlanguagechange
+PASS HTMLBodyElement interface: attribute onmessage
+PASS HTMLBodyElement interface: attribute onmessageerror
+PASS HTMLBodyElement interface: attribute onoffline
+PASS HTMLBodyElement interface: attribute ononline
+PASS HTMLBodyElement interface: attribute onpagehide
+PASS HTMLBodyElement interface: attribute onpageshow
+PASS HTMLBodyElement interface: attribute onpopstate
+PASS HTMLBodyElement interface: attribute onrejectionhandled
+PASS HTMLBodyElement interface: attribute onstorage
+PASS HTMLBodyElement interface: attribute onunhandledrejection
+PASS HTMLBodyElement interface: attribute onunload
+PASS HTMLBodyElement must be primary interface of document.createElement("body")
+PASS Stringification of document.createElement("body")
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "text" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "link" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "vLink" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "aLink" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "bgColor" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "background" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onafterprint" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onbeforeprint" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onbeforeunload" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onhashchange" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onlanguagechange" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onmessage" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onmessageerror" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onoffline" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "ononline" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onpagehide" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onpageshow" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onpopstate" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onrejectionhandled" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onstorage" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onunhandledrejection" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onunload" with the proper type
+PASS HTMLHeadingElement interface: existence and properties of interface object
+PASS HTMLHeadingElement interface object length
+PASS HTMLHeadingElement interface object name
+PASS HTMLHeadingElement interface: existence and properties of interface prototype object
+PASS HTMLHeadingElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLHeadingElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLHeadingElement interface: attribute align
+PASS HTMLHeadingElement must be primary interface of document.createElement("h1")
+PASS Stringification of document.createElement("h1")
+PASS HTMLHeadingElement interface: document.createElement("h1") must inherit property "align" with the proper type
+PASS HTMLParagraphElement interface: existence and properties of interface object
+PASS HTMLParagraphElement interface object length
+PASS HTMLParagraphElement interface object name
+PASS HTMLParagraphElement interface: existence and properties of interface prototype object
+PASS HTMLParagraphElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLParagraphElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLParagraphElement interface: attribute align
+PASS HTMLParagraphElement must be primary interface of document.createElement("p")
+PASS Stringification of document.createElement("p")
+PASS HTMLParagraphElement interface: document.createElement("p") must inherit property "align" with the proper type
+PASS HTMLHRElement interface: existence and properties of interface object
+PASS HTMLHRElement interface object length
+PASS HTMLHRElement interface object name
+PASS HTMLHRElement interface: existence and properties of interface prototype object
+PASS HTMLHRElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLHRElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLHRElement interface: attribute align
+PASS HTMLHRElement interface: attribute color
+PASS HTMLHRElement interface: attribute noShade
+PASS HTMLHRElement interface: attribute size
+PASS HTMLHRElement interface: attribute width
+PASS HTMLHRElement must be primary interface of document.createElement("hr")
+PASS Stringification of document.createElement("hr")
+PASS HTMLHRElement interface: document.createElement("hr") must inherit property "align" with the proper type
+PASS HTMLHRElement interface: document.createElement("hr") must inherit property "color" with the proper type
+PASS HTMLHRElement interface: document.createElement("hr") must inherit property "noShade" with the proper type
+PASS HTMLHRElement interface: document.createElement("hr") must inherit property "size" with the proper type
+PASS HTMLHRElement interface: document.createElement("hr") must inherit property "width" with the proper type
+PASS HTMLPreElement interface: existence and properties of interface object
+PASS HTMLPreElement interface object length
+PASS HTMLPreElement interface object name
+PASS HTMLPreElement interface: existence and properties of interface prototype object
+PASS HTMLPreElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLPreElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLPreElement interface: attribute width
+PASS HTMLPreElement must be primary interface of document.createElement("pre")
+PASS Stringification of document.createElement("pre")
+PASS HTMLPreElement interface: document.createElement("pre") must inherit property "width" with the proper type
+PASS HTMLPreElement must be primary interface of document.createElement("listing")
+PASS Stringification of document.createElement("listing")
+PASS HTMLPreElement interface: document.createElement("listing") must inherit property "width" with the proper type
+PASS HTMLPreElement must be primary interface of document.createElement("xmp")
+PASS Stringification of document.createElement("xmp")
+PASS HTMLPreElement interface: document.createElement("xmp") must inherit property "width" with the proper type
+PASS HTMLQuoteElement interface: existence and properties of interface object
+PASS HTMLQuoteElement interface object length
+PASS HTMLQuoteElement interface object name
+PASS HTMLQuoteElement interface: existence and properties of interface prototype object
+PASS HTMLQuoteElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLQuoteElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLQuoteElement interface: attribute cite
+PASS HTMLQuoteElement must be primary interface of document.createElement("blockquote")
+PASS Stringification of document.createElement("blockquote")
+PASS HTMLQuoteElement interface: document.createElement("blockquote") must inherit property "cite" with the proper type
+PASS HTMLQuoteElement must be primary interface of document.createElement("q")
+PASS Stringification of document.createElement("q")
+PASS HTMLQuoteElement interface: document.createElement("q") must inherit property "cite" with the proper type
+PASS HTMLOListElement interface: existence and properties of interface object
+PASS HTMLOListElement interface object length
+PASS HTMLOListElement interface object name
+PASS HTMLOListElement interface: existence and properties of interface prototype object
+PASS HTMLOListElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLOListElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLOListElement interface: attribute reversed
+PASS HTMLOListElement interface: attribute start
+PASS HTMLOListElement interface: attribute type
+PASS HTMLOListElement interface: attribute compact
+PASS HTMLUListElement interface: existence and properties of interface object
+PASS HTMLUListElement interface object length
+PASS HTMLUListElement interface object name
+PASS HTMLUListElement interface: existence and properties of interface prototype object
+PASS HTMLUListElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLUListElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLUListElement interface: attribute compact
+PASS HTMLUListElement interface: attribute type
+PASS HTMLMenuElement interface: existence and properties of interface object
+PASS HTMLMenuElement interface object length
+PASS HTMLMenuElement interface object name
+PASS HTMLMenuElement interface: existence and properties of interface prototype object
+PASS HTMLMenuElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMenuElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMenuElement interface: attribute compact
+PASS HTMLMenuElement must be primary interface of document.createElement("menu")
+PASS Stringification of document.createElement("menu")
+PASS HTMLMenuElement interface: document.createElement("menu") must inherit property "compact" with the proper type
+PASS HTMLLIElement interface: existence and properties of interface object
+PASS HTMLLIElement interface object length
+PASS HTMLLIElement interface object name
+PASS HTMLLIElement interface: existence and properties of interface prototype object
+PASS HTMLLIElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLLIElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLLIElement interface: attribute value
+PASS HTMLLIElement interface: attribute type
+PASS HTMLLIElement must be primary interface of document.createElement("li")
+PASS Stringification of document.createElement("li")
+PASS HTMLLIElement interface: document.createElement("li") must inherit property "value" with the proper type
+PASS HTMLLIElement interface: document.createElement("li") must inherit property "type" with the proper type
+PASS HTMLDListElement interface: existence and properties of interface object
+PASS HTMLDListElement interface object length
+PASS HTMLDListElement interface object name
+PASS HTMLDListElement interface: existence and properties of interface prototype object
+PASS HTMLDListElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDListElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDListElement interface: attribute compact
+PASS HTMLDivElement interface: existence and properties of interface object
+PASS HTMLDivElement interface object length
+PASS HTMLDivElement interface object name
+PASS HTMLDivElement interface: existence and properties of interface prototype object
+PASS HTMLDivElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDivElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDivElement interface: attribute align
+PASS HTMLDivElement must be primary interface of document.createElement("div")
+PASS Stringification of document.createElement("div")
+PASS HTMLDivElement interface: document.createElement("div") must inherit property "align" with the proper type
+PASS HTMLAnchorElement interface: existence and properties of interface object
+PASS HTMLAnchorElement interface object length
+PASS HTMLAnchorElement interface object name
+PASS HTMLAnchorElement interface: existence and properties of interface prototype object
+PASS HTMLAnchorElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLAnchorElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLAnchorElement interface: attribute target
+PASS HTMLAnchorElement interface: attribute download
+PASS HTMLAnchorElement interface: attribute ping
+PASS HTMLAnchorElement interface: attribute rel
+PASS HTMLAnchorElement interface: attribute relList
+PASS HTMLAnchorElement interface: attribute hreflang
+PASS HTMLAnchorElement interface: attribute type
+PASS HTMLAnchorElement interface: attribute text
+PASS HTMLAnchorElement interface: attribute referrerPolicy
+PASS HTMLAnchorElement interface: attribute coords
+PASS HTMLAnchorElement interface: attribute charset
+PASS HTMLAnchorElement interface: attribute name
+PASS HTMLAnchorElement interface: attribute rev
+PASS HTMLAnchorElement interface: attribute shape
+PASS HTMLAnchorElement interface: attribute href
+PASS HTMLAnchorElement interface: stringifier
+PASS HTMLAnchorElement interface: attribute origin
+PASS HTMLAnchorElement interface: attribute protocol
+PASS HTMLAnchorElement interface: attribute username
+PASS HTMLAnchorElement interface: attribute password
+PASS HTMLAnchorElement interface: attribute host
+PASS HTMLAnchorElement interface: attribute hostname
+PASS HTMLAnchorElement interface: attribute port
+PASS HTMLAnchorElement interface: attribute pathname
+PASS HTMLAnchorElement interface: attribute search
+PASS HTMLAnchorElement interface: attribute hash
+PASS HTMLAnchorElement must be primary interface of document.createElement("a")
+PASS Stringification of document.createElement("a")
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "target" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "download" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "ping" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "rel" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "relList" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "hreflang" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "type" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "text" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "referrerPolicy" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "coords" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "charset" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "name" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "rev" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "shape" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "href" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "origin" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "protocol" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "username" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "password" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "host" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "hostname" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "port" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "pathname" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "search" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "hash" with the proper type
+PASS HTMLDataElement interface: existence and properties of interface object
+PASS HTMLDataElement interface object length
+PASS HTMLDataElement interface object name
+PASS HTMLDataElement interface: existence and properties of interface prototype object
+PASS HTMLDataElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDataElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDataElement interface: attribute value
+PASS HTMLDataElement must be primary interface of document.createElement("data")
+PASS Stringification of document.createElement("data")
+PASS HTMLDataElement interface: document.createElement("data") must inherit property "value" with the proper type
+PASS HTMLTimeElement interface: existence and properties of interface object
+PASS HTMLTimeElement interface object length
+PASS HTMLTimeElement interface object name
+PASS HTMLTimeElement interface: existence and properties of interface prototype object
+PASS HTMLTimeElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTimeElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTimeElement interface: attribute dateTime
+PASS HTMLTimeElement must be primary interface of document.createElement("time")
+PASS Stringification of document.createElement("time")
+PASS HTMLTimeElement interface: document.createElement("time") must inherit property "dateTime" with the proper type
+PASS HTMLSpanElement interface: existence and properties of interface object
+PASS HTMLSpanElement interface object length
+PASS HTMLSpanElement interface object name
+PASS HTMLSpanElement interface: existence and properties of interface prototype object
+PASS HTMLSpanElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLSpanElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLSpanElement must be primary interface of document.createElement("span")
+PASS Stringification of document.createElement("span")
+PASS HTMLBRElement interface: existence and properties of interface object
+PASS HTMLBRElement interface object length
+PASS HTMLBRElement interface object name
+PASS HTMLBRElement interface: existence and properties of interface prototype object
+PASS HTMLBRElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLBRElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLBRElement interface: attribute clear
+PASS HTMLBRElement must be primary interface of document.createElement("br")
+PASS Stringification of document.createElement("br")
+PASS HTMLBRElement interface: document.createElement("br") must inherit property "clear" with the proper type
+PASS HTMLModElement interface: existence and properties of interface object
+PASS HTMLModElement interface object length
+PASS HTMLModElement interface object name
+PASS HTMLModElement interface: existence and properties of interface prototype object
+PASS HTMLModElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLModElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLModElement interface: attribute cite
+PASS HTMLModElement interface: attribute dateTime
+PASS HTMLModElement must be primary interface of document.createElement("ins")
+PASS Stringification of document.createElement("ins")
+PASS HTMLModElement interface: document.createElement("ins") must inherit property "cite" with the proper type
+PASS HTMLModElement interface: document.createElement("ins") must inherit property "dateTime" with the proper type
+PASS HTMLModElement must be primary interface of document.createElement("del")
+PASS Stringification of document.createElement("del")
+PASS HTMLModElement interface: document.createElement("del") must inherit property "cite" with the proper type
+PASS HTMLModElement interface: document.createElement("del") must inherit property "dateTime" with the proper type
+PASS HTMLPictureElement interface: existence and properties of interface object
+PASS HTMLPictureElement interface object length
+PASS HTMLPictureElement interface object name
+PASS HTMLPictureElement interface: existence and properties of interface prototype object
+PASS HTMLPictureElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLPictureElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLPictureElement must be primary interface of document.createElement("picture")
+PASS Stringification of document.createElement("picture")
+PASS HTMLSourceElement interface: existence and properties of interface object
+PASS HTMLSourceElement interface object length
+PASS HTMLSourceElement interface object name
+PASS HTMLSourceElement interface: existence and properties of interface prototype object
+PASS HTMLSourceElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLSourceElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLSourceElement interface: attribute src
+PASS HTMLSourceElement interface: attribute type
+PASS HTMLSourceElement interface: attribute srcset
+PASS HTMLSourceElement interface: attribute sizes
+PASS HTMLSourceElement interface: attribute media
+PASS HTMLSourceElement must be primary interface of document.createElement("source")
+PASS Stringification of document.createElement("source")
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "src" with the proper type
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "type" with the proper type
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "srcset" with the proper type
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "sizes" with the proper type
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "media" with the proper type
+PASS HTMLImageElement interface: existence and properties of interface object
+PASS HTMLImageElement interface object length
+PASS HTMLImageElement interface object name
+PASS HTMLImageElement interface: named constructor
+PASS HTMLImageElement interface: named constructor object
+PASS HTMLImageElement interface: named constructor prototype property
+PASS HTMLImageElement interface: named constructor name
+PASS HTMLImageElement interface: named constructor length
+PASS HTMLImageElement interface: named constructor without 'new'
+PASS HTMLImageElement interface: existence and properties of interface prototype object
+PASS HTMLImageElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLImageElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLImageElement interface: attribute alt
+PASS HTMLImageElement interface: attribute src
+PASS HTMLImageElement interface: attribute srcset
+PASS HTMLImageElement interface: attribute sizes
+PASS HTMLImageElement interface: attribute crossOrigin
+PASS HTMLImageElement interface: attribute useMap
+PASS HTMLImageElement interface: attribute isMap
+PASS HTMLImageElement interface: attribute width
+PASS HTMLImageElement interface: attribute height
+PASS HTMLImageElement interface: attribute naturalWidth
+PASS HTMLImageElement interface: attribute naturalHeight
+PASS HTMLImageElement interface: attribute complete
+PASS HTMLImageElement interface: attribute currentSrc
+PASS HTMLImageElement interface: attribute referrerPolicy
+PASS HTMLImageElement interface: attribute decoding
+PASS HTMLImageElement interface: operation decode()
+PASS HTMLImageElement interface: attribute name
+PASS HTMLImageElement interface: attribute lowsrc
+PASS HTMLImageElement interface: attribute align
+PASS HTMLImageElement interface: attribute hspace
+PASS HTMLImageElement interface: attribute vspace
+PASS HTMLImageElement interface: attribute longDesc
+PASS HTMLImageElement interface: attribute border
+PASS HTMLImageElement must be primary interface of document.createElement("img")
+PASS Stringification of document.createElement("img")
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "alt" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "src" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "srcset" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "sizes" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "crossOrigin" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "useMap" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "isMap" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "width" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "height" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "naturalWidth" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "naturalHeight" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "complete" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "currentSrc" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "referrerPolicy" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "decoding" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "decode()" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "name" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "lowsrc" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "align" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "hspace" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "vspace" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "longDesc" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "border" with the proper type
+PASS HTMLImageElement must be primary interface of new Image()
+PASS Stringification of new Image()
+PASS HTMLImageElement interface: new Image() must inherit property "alt" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "src" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "srcset" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "sizes" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "crossOrigin" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "useMap" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "isMap" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "width" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "height" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "naturalWidth" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "naturalHeight" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "complete" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "currentSrc" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "referrerPolicy" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "decoding" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "decode()" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "name" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "lowsrc" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "align" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "hspace" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "vspace" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "longDesc" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "border" with the proper type
+PASS HTMLIFrameElement interface: existence and properties of interface object
+PASS HTMLIFrameElement interface object length
+PASS HTMLIFrameElement interface object name
+PASS HTMLIFrameElement interface: existence and properties of interface prototype object
+PASS HTMLIFrameElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLIFrameElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLIFrameElement interface: attribute src
+PASS HTMLIFrameElement interface: attribute srcdoc
+PASS HTMLIFrameElement interface: attribute name
+PASS HTMLIFrameElement interface: attribute sandbox
+PASS HTMLIFrameElement interface: attribute allow
+PASS HTMLIFrameElement interface: attribute allowFullscreen
+PASS HTMLIFrameElement interface: attribute allowPaymentRequest
+PASS HTMLIFrameElement interface: attribute width
+PASS HTMLIFrameElement interface: attribute height
+PASS HTMLIFrameElement interface: attribute referrerPolicy
+PASS HTMLIFrameElement interface: attribute contentDocument
+PASS HTMLIFrameElement interface: attribute contentWindow
+PASS HTMLIFrameElement interface: operation getSVGDocument()
+PASS HTMLIFrameElement interface: attribute align
+PASS HTMLIFrameElement interface: attribute scrolling
+PASS HTMLIFrameElement interface: attribute frameBorder
+PASS HTMLIFrameElement interface: attribute longDesc
+PASS HTMLIFrameElement interface: attribute marginHeight
+PASS HTMLIFrameElement interface: attribute marginWidth
+PASS HTMLEmbedElement interface: existence and properties of interface object
+PASS HTMLEmbedElement interface object length
+PASS HTMLEmbedElement interface object name
+PASS HTMLEmbedElement interface: existence and properties of interface prototype object
+PASS HTMLEmbedElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLEmbedElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLEmbedElement interface: attribute src
+PASS HTMLEmbedElement interface: attribute type
+PASS HTMLEmbedElement interface: attribute width
+PASS HTMLEmbedElement interface: attribute height
+PASS HTMLEmbedElement interface: operation getSVGDocument()
+PASS HTMLEmbedElement interface: attribute align
+PASS HTMLEmbedElement interface: attribute name
+PASS HTMLEmbedElement must be primary interface of document.createElement("embed")
+PASS Stringification of document.createElement("embed")
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "src" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "type" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "width" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "height" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "getSVGDocument()" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "align" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "name" with the proper type
+PASS HTMLObjectElement interface: existence and properties of interface object
+PASS HTMLObjectElement interface object length
+PASS HTMLObjectElement interface object name
+PASS HTMLObjectElement interface: existence and properties of interface prototype object
+PASS HTMLObjectElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLObjectElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLObjectElement interface: attribute data
+PASS HTMLObjectElement interface: attribute type
+PASS HTMLObjectElement interface: attribute name
+PASS HTMLObjectElement interface: attribute useMap
+PASS HTMLObjectElement interface: attribute form
+PASS HTMLObjectElement interface: attribute width
+PASS HTMLObjectElement interface: attribute height
+PASS HTMLObjectElement interface: attribute contentDocument
+PASS HTMLObjectElement interface: attribute contentWindow
+PASS HTMLObjectElement interface: operation getSVGDocument()
+PASS HTMLObjectElement interface: attribute willValidate
+PASS HTMLObjectElement interface: attribute validity
+PASS HTMLObjectElement interface: attribute validationMessage
+PASS HTMLObjectElement interface: operation checkValidity()
+PASS HTMLObjectElement interface: operation reportValidity()
+PASS HTMLObjectElement interface: operation setCustomValidity(DOMString)
+PASS HTMLObjectElement interface: attribute align
+PASS HTMLObjectElement interface: attribute archive
+PASS HTMLObjectElement interface: attribute code
+PASS HTMLObjectElement interface: attribute declare
+PASS HTMLObjectElement interface: attribute hspace
+PASS HTMLObjectElement interface: attribute standby
+PASS HTMLObjectElement interface: attribute vspace
+PASS HTMLObjectElement interface: attribute codeBase
+PASS HTMLObjectElement interface: attribute codeType
+PASS HTMLObjectElement interface: attribute border
+PASS HTMLObjectElement must be primary interface of document.createElement("object")
+PASS Stringification of document.createElement("object")
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "data" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "type" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "name" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "useMap" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "form" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "width" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "height" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "contentDocument" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "contentWindow" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "getSVGDocument()" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "willValidate" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "validity" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "validationMessage" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "checkValidity()" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "reportValidity()" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLObjectElement interface: calling setCustomValidity(DOMString) on document.createElement("object") with too few arguments must throw TypeError
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "align" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "archive" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "code" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "declare" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "hspace" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "standby" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "vspace" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "codeBase" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "codeType" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "border" with the proper type
+PASS HTMLParamElement interface: existence and properties of interface object
+PASS HTMLParamElement interface object length
+PASS HTMLParamElement interface object name
+PASS HTMLParamElement interface: existence and properties of interface prototype object
+PASS HTMLParamElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLParamElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLParamElement interface: attribute name
+PASS HTMLParamElement interface: attribute value
+PASS HTMLParamElement interface: attribute type
+PASS HTMLParamElement interface: attribute valueType
+PASS HTMLParamElement must be primary interface of document.createElement("param")
+PASS Stringification of document.createElement("param")
+PASS HTMLParamElement interface: document.createElement("param") must inherit property "name" with the proper type
+PASS HTMLParamElement interface: document.createElement("param") must inherit property "value" with the proper type
+PASS HTMLParamElement interface: document.createElement("param") must inherit property "type" with the proper type
+PASS HTMLParamElement interface: document.createElement("param") must inherit property "valueType" with the proper type
+PASS HTMLVideoElement interface: existence and properties of interface object
+PASS HTMLVideoElement interface object length
+PASS HTMLVideoElement interface object name
+PASS HTMLVideoElement interface: existence and properties of interface prototype object
+PASS HTMLVideoElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLVideoElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLVideoElement interface: attribute width
+PASS HTMLVideoElement interface: attribute height
+PASS HTMLVideoElement interface: attribute videoWidth
+PASS HTMLVideoElement interface: attribute videoHeight
+PASS HTMLVideoElement interface: attribute poster
+PASS HTMLVideoElement interface: attribute playsInline
+PASS HTMLVideoElement must be primary interface of document.createElement("video")
+PASS Stringification of document.createElement("video")
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "width" with the proper type
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "height" with the proper type
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "videoWidth" with the proper type
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "videoHeight" with the proper type
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "poster" with the proper type
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "playsInline" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "error" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "src" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("video") must inherit property "srcObject" with the proper type Unrecognized type MediaStream
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "currentSrc" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "crossOrigin" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "NETWORK_EMPTY" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "NETWORK_IDLE" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "NETWORK_LOADING" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "NETWORK_NO_SOURCE" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "networkState" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "preload" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "buffered" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "load()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "canPlayType(DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling canPlayType(DOMString) on document.createElement("video") with too few arguments must throw TypeError
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_NOTHING" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_METADATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_CURRENT_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_FUTURE_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_ENOUGH_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "readyState" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "seeking" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "currentTime" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("video") must inherit property "fastSeek(double)" with the proper type assert_inherits: property "fastSeek" not found in prototype chain
+FAIL HTMLMediaElement interface: calling fastSeek(double) on document.createElement("video") with too few arguments must throw TypeError assert_inherits: property "fastSeek" not found in prototype chain
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "duration" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("video") must inherit property "getStartDate()" with the proper type assert_inherits: property "getStartDate" not found in prototype chain
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "paused" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "defaultPlaybackRate" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "playbackRate" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "played" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "seekable" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "ended" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "autoplay" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "loop" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "play()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "pause()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "controls" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "volume" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "muted" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "defaultMuted" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "audioTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "videoTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "textTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "addTextTrack(TextTrackKind, DOMString, DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, DOMString, DOMString) on document.createElement("video") with too few arguments must throw TypeError
+PASS HTMLAudioElement interface: existence and properties of interface object
+PASS HTMLAudioElement interface object length
+PASS HTMLAudioElement interface object name
+PASS HTMLAudioElement interface: named constructor
+PASS HTMLAudioElement interface: named constructor object
+PASS HTMLAudioElement interface: named constructor prototype property
+PASS HTMLAudioElement interface: named constructor name
+PASS HTMLAudioElement interface: named constructor length
+PASS HTMLAudioElement interface: named constructor without 'new'
+PASS HTMLAudioElement interface: existence and properties of interface prototype object
+PASS HTMLAudioElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLAudioElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLAudioElement must be primary interface of document.createElement("audio")
+PASS Stringification of document.createElement("audio")
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "error" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "src" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("audio") must inherit property "srcObject" with the proper type Unrecognized type MediaStream
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "currentSrc" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "crossOrigin" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "NETWORK_EMPTY" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "NETWORK_IDLE" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "NETWORK_LOADING" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "NETWORK_NO_SOURCE" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "networkState" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "preload" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "buffered" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "load()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "canPlayType(DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling canPlayType(DOMString) on document.createElement("audio") with too few arguments must throw TypeError
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_NOTHING" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_METADATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_CURRENT_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_FUTURE_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_ENOUGH_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "readyState" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "seeking" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "currentTime" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("audio") must inherit property "fastSeek(double)" with the proper type assert_inherits: property "fastSeek" not found in prototype chain
+FAIL HTMLMediaElement interface: calling fastSeek(double) on document.createElement("audio") with too few arguments must throw TypeError assert_inherits: property "fastSeek" not found in prototype chain
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "duration" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("audio") must inherit property "getStartDate()" with the proper type assert_inherits: property "getStartDate" not found in prototype chain
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "paused" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "defaultPlaybackRate" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "playbackRate" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "played" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "seekable" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "ended" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "autoplay" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "loop" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "play()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "pause()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "controls" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "volume" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "muted" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "defaultMuted" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "audioTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "videoTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "textTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "addTextTrack(TextTrackKind, DOMString, DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, DOMString, DOMString) on document.createElement("audio") with too few arguments must throw TypeError
+PASS HTMLAudioElement must be primary interface of new Audio()
+PASS Stringification of new Audio()
+PASS HTMLMediaElement interface: new Audio() must inherit property "error" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "src" with the proper type
+FAIL HTMLMediaElement interface: new Audio() must inherit property "srcObject" with the proper type Unrecognized type MediaStream
+PASS HTMLMediaElement interface: new Audio() must inherit property "currentSrc" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "crossOrigin" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "NETWORK_EMPTY" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "NETWORK_IDLE" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "NETWORK_LOADING" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "NETWORK_NO_SOURCE" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "networkState" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "preload" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "buffered" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "load()" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "canPlayType(DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling canPlayType(DOMString) on new Audio() with too few arguments must throw TypeError
+PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_NOTHING" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_METADATA" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_CURRENT_DATA" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_FUTURE_DATA" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_ENOUGH_DATA" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "readyState" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "seeking" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "currentTime" with the proper type
+FAIL HTMLMediaElement interface: new Audio() must inherit property "fastSeek(double)" with the proper type assert_inherits: property "fastSeek" not found in prototype chain
+FAIL HTMLMediaElement interface: calling fastSeek(double) on new Audio() with too few arguments must throw TypeError assert_inherits: property "fastSeek" not found in prototype chain
+PASS HTMLMediaElement interface: new Audio() must inherit property "duration" with the proper type
+FAIL HTMLMediaElement interface: new Audio() must inherit property "getStartDate()" with the proper type assert_inherits: property "getStartDate" not found in prototype chain
+PASS HTMLMediaElement interface: new Audio() must inherit property "paused" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "defaultPlaybackRate" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "playbackRate" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "played" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "seekable" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "ended" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "autoplay" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "loop" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "play()" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "pause()" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "controls" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "volume" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "muted" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "defaultMuted" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "audioTracks" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "videoTracks" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "textTracks" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "addTextTrack(TextTrackKind, DOMString, DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, DOMString, DOMString) on new Audio() with too few arguments must throw TypeError
+PASS HTMLTrackElement interface: existence and properties of interface object
+PASS HTMLTrackElement interface object length
+PASS HTMLTrackElement interface object name
+PASS HTMLTrackElement interface: existence and properties of interface prototype object
+PASS HTMLTrackElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTrackElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTrackElement interface: attribute kind
+PASS HTMLTrackElement interface: attribute src
+PASS HTMLTrackElement interface: attribute srclang
+PASS HTMLTrackElement interface: attribute label
+PASS HTMLTrackElement interface: attribute default
+PASS HTMLTrackElement interface: constant NONE on interface object
+PASS HTMLTrackElement interface: constant NONE on interface prototype object
+PASS HTMLTrackElement interface: constant LOADING on interface object
+PASS HTMLTrackElement interface: constant LOADING on interface prototype object
+PASS HTMLTrackElement interface: constant LOADED on interface object
+PASS HTMLTrackElement interface: constant LOADED on interface prototype object
+PASS HTMLTrackElement interface: constant ERROR on interface object
+PASS HTMLTrackElement interface: constant ERROR on interface prototype object
+PASS HTMLTrackElement interface: attribute readyState
+PASS HTMLTrackElement interface: attribute track
+PASS HTMLTrackElement must be primary interface of document.createElement("track")
+PASS Stringification of document.createElement("track")
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "kind" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "src" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "srclang" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "label" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "default" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "NONE" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "LOADING" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "LOADED" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "ERROR" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "readyState" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "track" with the proper type
+PASS HTMLMediaElement interface: existence and properties of interface object
+PASS HTMLMediaElement interface object length
+PASS HTMLMediaElement interface object name
+PASS HTMLMediaElement interface: existence and properties of interface prototype object
+PASS HTMLMediaElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMediaElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMediaElement interface: attribute error
+PASS HTMLMediaElement interface: attribute src
+PASS HTMLMediaElement interface: attribute srcObject
+PASS HTMLMediaElement interface: attribute currentSrc
+PASS HTMLMediaElement interface: attribute crossOrigin
+PASS HTMLMediaElement interface: constant NETWORK_EMPTY on interface object
+PASS HTMLMediaElement interface: constant NETWORK_EMPTY on interface prototype object
+PASS HTMLMediaElement interface: constant NETWORK_IDLE on interface object
+PASS HTMLMediaElement interface: constant NETWORK_IDLE on interface prototype object
+PASS HTMLMediaElement interface: constant NETWORK_LOADING on interface object
+PASS HTMLMediaElement interface: constant NETWORK_LOADING on interface prototype object
+PASS HTMLMediaElement interface: constant NETWORK_NO_SOURCE on interface object
+PASS HTMLMediaElement interface: constant NETWORK_NO_SOURCE on interface prototype object
+PASS HTMLMediaElement interface: attribute networkState
+PASS HTMLMediaElement interface: attribute preload
+PASS HTMLMediaElement interface: attribute buffered
+PASS HTMLMediaElement interface: operation load()
+PASS HTMLMediaElement interface: operation canPlayType(DOMString)
+PASS HTMLMediaElement interface: constant HAVE_NOTHING on interface object
+PASS HTMLMediaElement interface: constant HAVE_NOTHING on interface prototype object
+PASS HTMLMediaElement interface: constant HAVE_METADATA on interface object
+PASS HTMLMediaElement interface: constant HAVE_METADATA on interface prototype object
+PASS HTMLMediaElement interface: constant HAVE_CURRENT_DATA on interface object
+PASS HTMLMediaElement interface: constant HAVE_CURRENT_DATA on interface prototype object
+PASS HTMLMediaElement interface: constant HAVE_FUTURE_DATA on interface object
+PASS HTMLMediaElement interface: constant HAVE_FUTURE_DATA on interface prototype object
+PASS HTMLMediaElement interface: constant HAVE_ENOUGH_DATA on interface object
+PASS HTMLMediaElement interface: constant HAVE_ENOUGH_DATA on interface prototype object
+PASS HTMLMediaElement interface: attribute readyState
+PASS HTMLMediaElement interface: attribute seeking
+PASS HTMLMediaElement interface: attribute currentTime
+FAIL HTMLMediaElement interface: operation fastSeek(double) assert_own_property: interface prototype object missing non-static operation expected property "fastSeek" missing
+PASS HTMLMediaElement interface: attribute duration
+FAIL HTMLMediaElement interface: operation getStartDate() assert_own_property: interface prototype object missing non-static operation expected property "getStartDate" missing
+PASS HTMLMediaElement interface: attribute paused
+PASS HTMLMediaElement interface: attribute defaultPlaybackRate
+PASS HTMLMediaElement interface: attribute playbackRate
+PASS HTMLMediaElement interface: attribute played
+PASS HTMLMediaElement interface: attribute seekable
+PASS HTMLMediaElement interface: attribute ended
+PASS HTMLMediaElement interface: attribute autoplay
+PASS HTMLMediaElement interface: attribute loop
+PASS HTMLMediaElement interface: operation play()
+PASS HTMLMediaElement interface: operation pause()
+PASS HTMLMediaElement interface: attribute controls
+PASS HTMLMediaElement interface: attribute volume
+PASS HTMLMediaElement interface: attribute muted
+PASS HTMLMediaElement interface: attribute defaultMuted
+PASS HTMLMediaElement interface: attribute audioTracks
+PASS HTMLMediaElement interface: attribute videoTracks
+PASS HTMLMediaElement interface: attribute textTracks
+PASS HTMLMediaElement interface: operation addTextTrack(TextTrackKind, DOMString, DOMString)
+PASS HTMLMapElement interface: existence and properties of interface object
+PASS HTMLMapElement interface object length
+PASS HTMLMapElement interface object name
+PASS HTMLMapElement interface: existence and properties of interface prototype object
+PASS HTMLMapElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMapElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMapElement interface: attribute name
+PASS HTMLMapElement interface: attribute areas
+PASS HTMLMapElement must be primary interface of document.createElement("map")
+PASS Stringification of document.createElement("map")
+PASS HTMLMapElement interface: document.createElement("map") must inherit property "name" with the proper type
+PASS HTMLMapElement interface: document.createElement("map") must inherit property "areas" with the proper type
+PASS HTMLAreaElement interface: existence and properties of interface object
+PASS HTMLAreaElement interface object length
+PASS HTMLAreaElement interface object name
+PASS HTMLAreaElement interface: existence and properties of interface prototype object
+PASS HTMLAreaElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLAreaElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLAreaElement interface: attribute alt
+PASS HTMLAreaElement interface: attribute coords
+PASS HTMLAreaElement interface: attribute shape
+PASS HTMLAreaElement interface: attribute target
+PASS HTMLAreaElement interface: attribute download
+PASS HTMLAreaElement interface: attribute ping
+PASS HTMLAreaElement interface: attribute rel
+PASS HTMLAreaElement interface: attribute relList
+PASS HTMLAreaElement interface: attribute referrerPolicy
+PASS HTMLAreaElement interface: attribute noHref
+PASS HTMLAreaElement interface: attribute href
+PASS HTMLAreaElement interface: stringifier
+PASS HTMLAreaElement interface: attribute origin
+PASS HTMLAreaElement interface: attribute protocol
+PASS HTMLAreaElement interface: attribute username
+PASS HTMLAreaElement interface: attribute password
+PASS HTMLAreaElement interface: attribute host
+PASS HTMLAreaElement interface: attribute hostname
+PASS HTMLAreaElement interface: attribute port
+PASS HTMLAreaElement interface: attribute pathname
+PASS HTMLAreaElement interface: attribute search
+PASS HTMLAreaElement interface: attribute hash
+PASS HTMLAreaElement must be primary interface of document.createElement("area")
+PASS Stringification of document.createElement("area")
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "alt" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "coords" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "shape" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "target" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "download" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "ping" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "rel" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "relList" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "referrerPolicy" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "noHref" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "href" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "origin" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "protocol" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "username" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "password" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "host" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "hostname" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "port" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "pathname" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "search" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "hash" with the proper type
+PASS HTMLTableElement interface: existence and properties of interface object
+PASS HTMLTableElement interface object length
+PASS HTMLTableElement interface object name
+PASS HTMLTableElement interface: existence and properties of interface prototype object
+PASS HTMLTableElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableElement interface: attribute caption
+PASS HTMLTableElement interface: operation createCaption()
+PASS HTMLTableElement interface: operation deleteCaption()
+PASS HTMLTableElement interface: attribute tHead
+PASS HTMLTableElement interface: operation createTHead()
+PASS HTMLTableElement interface: operation deleteTHead()
+PASS HTMLTableElement interface: attribute tFoot
+PASS HTMLTableElement interface: operation createTFoot()
+PASS HTMLTableElement interface: operation deleteTFoot()
+PASS HTMLTableElement interface: attribute tBodies
+PASS HTMLTableElement interface: operation createTBody()
+PASS HTMLTableElement interface: attribute rows
+PASS HTMLTableElement interface: operation insertRow(long)
+PASS HTMLTableElement interface: operation deleteRow(long)
+PASS HTMLTableElement interface: attribute align
+PASS HTMLTableElement interface: attribute border
+PASS HTMLTableElement interface: attribute frame
+PASS HTMLTableElement interface: attribute rules
+PASS HTMLTableElement interface: attribute summary
+PASS HTMLTableElement interface: attribute width
+PASS HTMLTableElement interface: attribute bgColor
+PASS HTMLTableElement interface: attribute cellPadding
+PASS HTMLTableElement interface: attribute cellSpacing
+PASS HTMLTableElement must be primary interface of document.createElement("table")
+PASS Stringification of document.createElement("table")
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "caption" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "createCaption()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "deleteCaption()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "tHead" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "createTHead()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "deleteTHead()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "tFoot" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "createTFoot()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "deleteTFoot()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "tBodies" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "createTBody()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "rows" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "insertRow(long)" with the proper type
+PASS HTMLTableElement interface: calling insertRow(long) on document.createElement("table") with too few arguments must throw TypeError
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "deleteRow(long)" with the proper type
+PASS HTMLTableElement interface: calling deleteRow(long) on document.createElement("table") with too few arguments must throw TypeError
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "align" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "border" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "frame" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "rules" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "summary" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "width" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "bgColor" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "cellPadding" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "cellSpacing" with the proper type
+PASS HTMLTableCaptionElement interface: existence and properties of interface object
+PASS HTMLTableCaptionElement interface object length
+PASS HTMLTableCaptionElement interface object name
+PASS HTMLTableCaptionElement interface: existence and properties of interface prototype object
+PASS HTMLTableCaptionElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableCaptionElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableCaptionElement interface: attribute align
+PASS HTMLTableCaptionElement must be primary interface of document.createElement("caption")
+PASS Stringification of document.createElement("caption")
+PASS HTMLTableCaptionElement interface: document.createElement("caption") must inherit property "align" with the proper type
+PASS HTMLTableColElement interface: existence and properties of interface object
+PASS HTMLTableColElement interface object length
+PASS HTMLTableColElement interface object name
+PASS HTMLTableColElement interface: existence and properties of interface prototype object
+PASS HTMLTableColElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableColElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableColElement interface: attribute span
+PASS HTMLTableColElement interface: attribute align
+PASS HTMLTableColElement interface: attribute ch
+PASS HTMLTableColElement interface: attribute chOff
+PASS HTMLTableColElement interface: attribute vAlign
+PASS HTMLTableColElement interface: attribute width
+PASS HTMLTableColElement must be primary interface of document.createElement("colgroup")
+PASS Stringification of document.createElement("colgroup")
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "span" with the proper type
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "align" with the proper type
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "ch" with the proper type
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "chOff" with the proper type
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "vAlign" with the proper type
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "width" with the proper type
+PASS HTMLTableColElement must be primary interface of document.createElement("col")
+PASS Stringification of document.createElement("col")
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "span" with the proper type
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "align" with the proper type
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "ch" with the proper type
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "chOff" with the proper type
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "vAlign" with the proper type
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "width" with the proper type
+PASS HTMLTableSectionElement interface: existence and properties of interface object
+PASS HTMLTableSectionElement interface object length
+PASS HTMLTableSectionElement interface object name
+PASS HTMLTableSectionElement interface: existence and properties of interface prototype object
+PASS HTMLTableSectionElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableSectionElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableSectionElement interface: attribute rows
+PASS HTMLTableSectionElement interface: operation insertRow(long)
+PASS HTMLTableSectionElement interface: operation deleteRow(long)
+PASS HTMLTableSectionElement interface: attribute align
+PASS HTMLTableSectionElement interface: attribute ch
+PASS HTMLTableSectionElement interface: attribute chOff
+PASS HTMLTableSectionElement interface: attribute vAlign
+PASS HTMLTableSectionElement must be primary interface of document.createElement("tbody")
+PASS Stringification of document.createElement("tbody")
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "rows" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "insertRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(long) on document.createElement("tbody") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "deleteRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling deleteRow(long) on document.createElement("tbody") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "align" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "ch" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "chOff" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "vAlign" with the proper type
+PASS HTMLTableSectionElement must be primary interface of document.createElement("thead")
+PASS Stringification of document.createElement("thead")
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "rows" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "insertRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(long) on document.createElement("thead") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "deleteRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling deleteRow(long) on document.createElement("thead") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "align" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "ch" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "chOff" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "vAlign" with the proper type
+PASS HTMLTableSectionElement must be primary interface of document.createElement("tfoot")
+PASS Stringification of document.createElement("tfoot")
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "rows" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "insertRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(long) on document.createElement("tfoot") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "deleteRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling deleteRow(long) on document.createElement("tfoot") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "align" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "ch" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "chOff" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "vAlign" with the proper type
+PASS HTMLTableRowElement interface: existence and properties of interface object
+PASS HTMLTableRowElement interface object length
+PASS HTMLTableRowElement interface object name
+PASS HTMLTableRowElement interface: existence and properties of interface prototype object
+PASS HTMLTableRowElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableRowElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableRowElement interface: attribute rowIndex
+PASS HTMLTableRowElement interface: attribute sectionRowIndex
+PASS HTMLTableRowElement interface: attribute cells
+PASS HTMLTableRowElement interface: operation insertCell(long)
+PASS HTMLTableRowElement interface: operation deleteCell(long)
+PASS HTMLTableRowElement interface: attribute align
+PASS HTMLTableRowElement interface: attribute ch
+PASS HTMLTableRowElement interface: attribute chOff
+PASS HTMLTableRowElement interface: attribute vAlign
+PASS HTMLTableRowElement interface: attribute bgColor
+PASS HTMLTableRowElement must be primary interface of document.createElement("tr")
+PASS Stringification of document.createElement("tr")
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "rowIndex" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "sectionRowIndex" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "cells" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "insertCell(long)" with the proper type
+PASS HTMLTableRowElement interface: calling insertCell(long) on document.createElement("tr") with too few arguments must throw TypeError
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "deleteCell(long)" with the proper type
+PASS HTMLTableRowElement interface: calling deleteCell(long) on document.createElement("tr") with too few arguments must throw TypeError
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "align" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "ch" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "chOff" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "vAlign" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "bgColor" with the proper type
+PASS HTMLTableCellElement interface: existence and properties of interface object
+PASS HTMLTableCellElement interface object length
+PASS HTMLTableCellElement interface object name
+PASS HTMLTableCellElement interface: existence and properties of interface prototype object
+PASS HTMLTableCellElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableCellElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableCellElement interface: attribute colSpan
+PASS HTMLTableCellElement interface: attribute rowSpan
+PASS HTMLTableCellElement interface: attribute headers
+PASS HTMLTableCellElement interface: attribute cellIndex
+PASS HTMLTableCellElement interface: attribute scope
+PASS HTMLTableCellElement interface: attribute abbr
+PASS HTMLTableCellElement interface: attribute align
+PASS HTMLTableCellElement interface: attribute axis
+PASS HTMLTableCellElement interface: attribute height
+PASS HTMLTableCellElement interface: attribute width
+PASS HTMLTableCellElement interface: attribute ch
+PASS HTMLTableCellElement interface: attribute chOff
+PASS HTMLTableCellElement interface: attribute noWrap
+PASS HTMLTableCellElement interface: attribute vAlign
+PASS HTMLTableCellElement interface: attribute bgColor
+PASS HTMLTableCellElement must be primary interface of document.createElement("td")
+PASS Stringification of document.createElement("td")
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "colSpan" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "rowSpan" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "headers" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "cellIndex" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "scope" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "abbr" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "align" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "axis" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "height" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "width" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "ch" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "chOff" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "noWrap" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "vAlign" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "bgColor" with the proper type
+PASS HTMLTableCellElement must be primary interface of document.createElement("th")
+PASS Stringification of document.createElement("th")
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "colSpan" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "rowSpan" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "headers" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "cellIndex" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "scope" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "abbr" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "align" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "axis" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "height" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "width" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "ch" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "chOff" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "noWrap" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "vAlign" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "bgColor" with the proper type
+PASS HTMLFormElement interface: existence and properties of interface object
+PASS HTMLFormElement interface object length
+PASS HTMLFormElement interface object name
+PASS HTMLFormElement interface: existence and properties of interface prototype object
+PASS HTMLFormElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFormElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFormElement interface: attribute acceptCharset
+PASS HTMLFormElement interface: attribute action
+PASS HTMLFormElement interface: attribute autocomplete
+PASS HTMLFormElement interface: attribute enctype
+PASS HTMLFormElement interface: attribute encoding
+PASS HTMLFormElement interface: attribute method
+PASS HTMLFormElement interface: attribute name
+PASS HTMLFormElement interface: attribute noValidate
+PASS HTMLFormElement interface: attribute target
+FAIL HTMLFormElement interface: attribute rel assert_true: The prototype object must have a property "rel" expected true got false
+FAIL HTMLFormElement interface: attribute relList assert_true: The prototype object must have a property "relList" expected true got false
+PASS HTMLFormElement interface: attribute elements
+PASS HTMLFormElement interface: attribute length
+PASS HTMLFormElement interface: operation submit()
+PASS HTMLFormElement interface: operation requestSubmit(HTMLElement)
+PASS HTMLFormElement interface: operation reset()
+PASS HTMLFormElement interface: operation checkValidity()
+PASS HTMLFormElement interface: operation reportValidity()
+PASS HTMLFormElement must be primary interface of document.createElement("form")
+PASS Stringification of document.createElement("form")
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "acceptCharset" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "action" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "autocomplete" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "enctype" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "encoding" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "method" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "name" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "noValidate" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "target" with the proper type
+FAIL HTMLFormElement interface: document.createElement("form") must inherit property "rel" with the proper type assert_inherits: property "rel" not found in prototype chain
+FAIL HTMLFormElement interface: document.createElement("form") must inherit property "relList" with the proper type assert_inherits: property "relList" not found in prototype chain
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "elements" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "length" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "submit()" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "requestSubmit(HTMLElement)" with the proper type
+PASS HTMLFormElement interface: calling requestSubmit(HTMLElement) on document.createElement("form") with too few arguments must throw TypeError
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "reset()" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "checkValidity()" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "reportValidity()" with the proper type
+PASS HTMLLabelElement interface: existence and properties of interface object
+PASS HTMLLabelElement interface object length
+PASS HTMLLabelElement interface object name
+PASS HTMLLabelElement interface: existence and properties of interface prototype object
+PASS HTMLLabelElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLLabelElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLLabelElement interface: attribute form
+PASS HTMLLabelElement interface: attribute htmlFor
+PASS HTMLLabelElement interface: attribute control
+PASS HTMLLabelElement must be primary interface of document.createElement("label")
+PASS Stringification of document.createElement("label")
+PASS HTMLLabelElement interface: document.createElement("label") must inherit property "form" with the proper type
+PASS HTMLLabelElement interface: document.createElement("label") must inherit property "htmlFor" with the proper type
+PASS HTMLLabelElement interface: document.createElement("label") must inherit property "control" with the proper type
+PASS HTMLInputElement interface: existence and properties of interface object
+PASS HTMLInputElement interface object length
+PASS HTMLInputElement interface object name
+PASS HTMLInputElement interface: existence and properties of interface prototype object
+PASS HTMLInputElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLInputElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLInputElement interface: attribute accept
+PASS HTMLInputElement interface: attribute alt
+PASS HTMLInputElement interface: attribute autocomplete
+PASS HTMLInputElement interface: attribute defaultChecked
+PASS HTMLInputElement interface: attribute checked
+PASS HTMLInputElement interface: attribute dirName
+PASS HTMLInputElement interface: attribute disabled
+PASS HTMLInputElement interface: attribute form
+PASS HTMLInputElement interface: attribute files
+PASS HTMLInputElement interface: attribute formAction
+PASS HTMLInputElement interface: attribute formEnctype
+PASS HTMLInputElement interface: attribute formMethod
+PASS HTMLInputElement interface: attribute formNoValidate
+PASS HTMLInputElement interface: attribute formTarget
+PASS HTMLInputElement interface: attribute height
+PASS HTMLInputElement interface: attribute indeterminate
+PASS HTMLInputElement interface: attribute list
+PASS HTMLInputElement interface: attribute max
+PASS HTMLInputElement interface: attribute maxLength
+PASS HTMLInputElement interface: attribute min
+PASS HTMLInputElement interface: attribute minLength
+PASS HTMLInputElement interface: attribute multiple
+PASS HTMLInputElement interface: attribute name
+PASS HTMLInputElement interface: attribute pattern
+PASS HTMLInputElement interface: attribute placeholder
+PASS HTMLInputElement interface: attribute readOnly
+PASS HTMLInputElement interface: attribute required
+PASS HTMLInputElement interface: attribute size
+PASS HTMLInputElement interface: attribute src
+PASS HTMLInputElement interface: attribute step
+PASS HTMLInputElement interface: attribute type
+PASS HTMLInputElement interface: attribute defaultValue
+PASS HTMLInputElement interface: attribute value
+PASS HTMLInputElement interface: attribute valueAsDate
+PASS HTMLInputElement interface: attribute valueAsNumber
+PASS HTMLInputElement interface: attribute width
+PASS HTMLInputElement interface: operation stepUp(long)
+PASS HTMLInputElement interface: operation stepDown(long)
+PASS HTMLInputElement interface: attribute willValidate
+PASS HTMLInputElement interface: attribute validity
+PASS HTMLInputElement interface: attribute validationMessage
+PASS HTMLInputElement interface: operation checkValidity()
+PASS HTMLInputElement interface: operation reportValidity()
+PASS HTMLInputElement interface: operation setCustomValidity(DOMString)
+PASS HTMLInputElement interface: attribute labels
+PASS HTMLInputElement interface: operation select()
+PASS HTMLInputElement interface: attribute selectionStart
+PASS HTMLInputElement interface: attribute selectionEnd
+PASS HTMLInputElement interface: attribute selectionDirection
+PASS HTMLInputElement interface: operation setRangeText(DOMString)
+PASS HTMLInputElement interface: operation setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)
+PASS HTMLInputElement interface: operation setSelectionRange(unsigned long, unsigned long, DOMString)
+PASS HTMLInputElement interface: attribute align
+PASS HTMLInputElement interface: attribute useMap
+PASS HTMLInputElement must be primary interface of document.createElement("input")
+PASS Stringification of document.createElement("input")
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("text")
+PASS Stringification of createInput("text")
+PASS HTMLInputElement interface: createInput("text") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("hidden")
+PASS Stringification of createInput("hidden")
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("search")
+PASS Stringification of createInput("search")
+PASS HTMLInputElement interface: createInput("search") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("tel")
+PASS Stringification of createInput("tel")
+PASS HTMLInputElement interface: createInput("tel") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("url")
+PASS Stringification of createInput("url")
+PASS HTMLInputElement interface: createInput("url") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("email")
+PASS Stringification of createInput("email")
+PASS HTMLInputElement interface: createInput("email") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("password")
+PASS Stringification of createInput("password")
+PASS HTMLInputElement interface: createInput("password") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("date")
+PASS Stringification of createInput("date")
+PASS HTMLInputElement interface: createInput("date") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("month")
+PASS Stringification of createInput("month")
+PASS HTMLInputElement interface: createInput("month") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("week")
+PASS Stringification of createInput("week")
+PASS HTMLInputElement interface: createInput("week") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("time")
+PASS Stringification of createInput("time")
+PASS HTMLInputElement interface: createInput("time") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("datetime-local")
+PASS Stringification of createInput("datetime-local")
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("number")
+PASS Stringification of createInput("number")
+PASS HTMLInputElement interface: createInput("number") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("range")
+PASS Stringification of createInput("range")
+PASS HTMLInputElement interface: createInput("range") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("color")
+PASS Stringification of createInput("color")
+PASS HTMLInputElement interface: createInput("color") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("checkbox")
+PASS Stringification of createInput("checkbox")
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("radio")
+PASS Stringification of createInput("radio")
+PASS HTMLInputElement interface: createInput("radio") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("file")
+PASS Stringification of createInput("file")
+PASS HTMLInputElement interface: createInput("file") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("submit")
+PASS Stringification of createInput("submit")
+PASS HTMLInputElement interface: createInput("submit") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("image")
+PASS Stringification of createInput("image")
+PASS HTMLInputElement interface: createInput("image") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("reset")
+PASS Stringification of createInput("reset")
+PASS HTMLInputElement interface: createInput("reset") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("button")
+PASS Stringification of createInput("button")
+PASS HTMLInputElement interface: createInput("button") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "useMap" with the proper type
+PASS HTMLButtonElement interface: existence and properties of interface object
+PASS HTMLButtonElement interface object length
+PASS HTMLButtonElement interface object name
+PASS HTMLButtonElement interface: existence and properties of interface prototype object
+PASS HTMLButtonElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLButtonElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLButtonElement interface: attribute disabled
+PASS HTMLButtonElement interface: attribute form
+PASS HTMLButtonElement interface: attribute formAction
+PASS HTMLButtonElement interface: attribute formEnctype
+PASS HTMLButtonElement interface: attribute formMethod
+PASS HTMLButtonElement interface: attribute formNoValidate
+PASS HTMLButtonElement interface: attribute formTarget
+PASS HTMLButtonElement interface: attribute name
+PASS HTMLButtonElement interface: attribute type
+PASS HTMLButtonElement interface: attribute value
+PASS HTMLButtonElement interface: attribute willValidate
+PASS HTMLButtonElement interface: attribute validity
+PASS HTMLButtonElement interface: attribute validationMessage
+PASS HTMLButtonElement interface: operation checkValidity()
+PASS HTMLButtonElement interface: operation reportValidity()
+PASS HTMLButtonElement interface: operation setCustomValidity(DOMString)
+PASS HTMLButtonElement interface: attribute labels
+PASS HTMLButtonElement must be primary interface of document.createElement("button")
+PASS Stringification of document.createElement("button")
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "disabled" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "form" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formAction" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formEnctype" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formMethod" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formNoValidate" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formTarget" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "name" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "type" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "value" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "willValidate" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "validity" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "validationMessage" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "checkValidity()" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "reportValidity()" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLButtonElement interface: calling setCustomValidity(DOMString) on document.createElement("button") with too few arguments must throw TypeError
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "labels" with the proper type
+PASS HTMLSelectElement interface: existence and properties of interface object
+PASS HTMLSelectElement interface object length
+PASS HTMLSelectElement interface object name
+PASS HTMLSelectElement interface: existence and properties of interface prototype object
+PASS HTMLSelectElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLSelectElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLSelectElement interface: attribute autocomplete
+PASS HTMLSelectElement interface: attribute disabled
+PASS HTMLSelectElement interface: attribute form
+PASS HTMLSelectElement interface: attribute multiple
+PASS HTMLSelectElement interface: attribute name
+PASS HTMLSelectElement interface: attribute required
+PASS HTMLSelectElement interface: attribute size
+PASS HTMLSelectElement interface: attribute type
+PASS HTMLSelectElement interface: attribute options
+PASS HTMLSelectElement interface: attribute length
+PASS HTMLSelectElement interface: operation item(unsigned long)
+PASS HTMLSelectElement interface: operation namedItem(DOMString)
+PASS HTMLSelectElement interface: operation add([object Object],[object Object], [object Object],[object Object])
+PASS HTMLSelectElement interface: operation remove()
+PASS HTMLSelectElement interface: operation remove(long)
+PASS HTMLSelectElement interface: attribute selectedOptions
+PASS HTMLSelectElement interface: attribute selectedIndex
+PASS HTMLSelectElement interface: attribute value
+PASS HTMLSelectElement interface: attribute willValidate
+PASS HTMLSelectElement interface: attribute validity
+PASS HTMLSelectElement interface: attribute validationMessage
+PASS HTMLSelectElement interface: operation checkValidity()
+PASS HTMLSelectElement interface: operation reportValidity()
+PASS HTMLSelectElement interface: operation setCustomValidity(DOMString)
+PASS HTMLSelectElement interface: attribute labels
+PASS HTMLSelectElement must be primary interface of document.createElement("select")
+PASS Stringification of document.createElement("select")
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "autocomplete" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "disabled" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "form" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "multiple" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "name" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "required" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "size" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "type" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "options" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "length" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "item(unsigned long)" with the proper type
+PASS HTMLSelectElement interface: calling item(unsigned long) on document.createElement("select") with too few arguments must throw TypeError
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "namedItem(DOMString)" with the proper type
+PASS HTMLSelectElement interface: calling namedItem(DOMString) on document.createElement("select") with too few arguments must throw TypeError
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "add([object Object],[object Object], [object Object],[object Object])" with the proper type
+PASS HTMLSelectElement interface: calling add([object Object],[object Object], [object Object],[object Object]) on document.createElement("select") with too few arguments must throw TypeError
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "remove()" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "remove(long)" with the proper type
+PASS HTMLSelectElement interface: calling remove(long) on document.createElement("select") with too few arguments must throw TypeError
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "selectedOptions" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "selectedIndex" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "value" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "willValidate" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "validity" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "validationMessage" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "checkValidity()" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "reportValidity()" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLSelectElement interface: calling setCustomValidity(DOMString) on document.createElement("select") with too few arguments must throw TypeError
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "labels" with the proper type
+PASS HTMLDataListElement interface: existence and properties of interface object
+PASS HTMLDataListElement interface object length
+PASS HTMLDataListElement interface object name
+PASS HTMLDataListElement interface: existence and properties of interface prototype object
+PASS HTMLDataListElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDataListElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDataListElement interface: attribute options
+PASS HTMLDataListElement must be primary interface of document.createElement("datalist")
+PASS Stringification of document.createElement("datalist")
+PASS HTMLDataListElement interface: document.createElement("datalist") must inherit property "options" with the proper type
+PASS HTMLOptGroupElement interface: existence and properties of interface object
+PASS HTMLOptGroupElement interface object length
+PASS HTMLOptGroupElement interface object name
+PASS HTMLOptGroupElement interface: existence and properties of interface prototype object
+PASS HTMLOptGroupElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLOptGroupElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLOptGroupElement interface: attribute disabled
+PASS HTMLOptGroupElement interface: attribute label
+PASS HTMLOptGroupElement must be primary interface of document.createElement("optgroup")
+PASS Stringification of document.createElement("optgroup")
+PASS HTMLOptGroupElement interface: document.createElement("optgroup") must inherit property "disabled" with the proper type
+PASS HTMLOptGroupElement interface: document.createElement("optgroup") must inherit property "label" with the proper type
+PASS HTMLOptionElement interface: existence and properties of interface object
+PASS HTMLOptionElement interface object length
+PASS HTMLOptionElement interface object name
+PASS HTMLOptionElement interface: named constructor
+PASS HTMLOptionElement interface: named constructor object
+PASS HTMLOptionElement interface: named constructor prototype property
+PASS HTMLOptionElement interface: named constructor name
+PASS HTMLOptionElement interface: named constructor length
+PASS HTMLOptionElement interface: named constructor without 'new'
+PASS HTMLOptionElement interface: existence and properties of interface prototype object
+PASS HTMLOptionElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLOptionElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLOptionElement interface: attribute disabled
+PASS HTMLOptionElement interface: attribute form
+PASS HTMLOptionElement interface: attribute label
+PASS HTMLOptionElement interface: attribute defaultSelected
+PASS HTMLOptionElement interface: attribute selected
+PASS HTMLOptionElement interface: attribute value
+PASS HTMLOptionElement interface: attribute text
+PASS HTMLOptionElement interface: attribute index
+PASS HTMLOptionElement must be primary interface of document.createElement("option")
+PASS Stringification of document.createElement("option")
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "disabled" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "form" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "label" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "defaultSelected" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "selected" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "value" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "text" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "index" with the proper type
+PASS HTMLOptionElement must be primary interface of new Option()
+PASS Stringification of new Option()
+PASS HTMLOptionElement interface: new Option() must inherit property "disabled" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "form" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "label" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "defaultSelected" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "selected" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "value" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "text" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "index" with the proper type
+PASS HTMLTextAreaElement interface: existence and properties of interface object
+PASS HTMLTextAreaElement interface object length
+PASS HTMLTextAreaElement interface object name
+PASS HTMLTextAreaElement interface: existence and properties of interface prototype object
+PASS HTMLTextAreaElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTextAreaElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTextAreaElement interface: attribute autocomplete
+PASS HTMLTextAreaElement interface: attribute cols
+PASS HTMLTextAreaElement interface: attribute dirName
+PASS HTMLTextAreaElement interface: attribute disabled
+PASS HTMLTextAreaElement interface: attribute form
+PASS HTMLTextAreaElement interface: attribute maxLength
+PASS HTMLTextAreaElement interface: attribute minLength
+PASS HTMLTextAreaElement interface: attribute name
+PASS HTMLTextAreaElement interface: attribute placeholder
+PASS HTMLTextAreaElement interface: attribute readOnly
+PASS HTMLTextAreaElement interface: attribute required
+PASS HTMLTextAreaElement interface: attribute rows
+PASS HTMLTextAreaElement interface: attribute wrap
+PASS HTMLTextAreaElement interface: attribute type
+PASS HTMLTextAreaElement interface: attribute defaultValue
+PASS HTMLTextAreaElement interface: attribute value
+PASS HTMLTextAreaElement interface: attribute textLength
+PASS HTMLTextAreaElement interface: attribute willValidate
+PASS HTMLTextAreaElement interface: attribute validity
+PASS HTMLTextAreaElement interface: attribute validationMessage
+PASS HTMLTextAreaElement interface: operation checkValidity()
+PASS HTMLTextAreaElement interface: operation reportValidity()
+PASS HTMLTextAreaElement interface: operation setCustomValidity(DOMString)
+PASS HTMLTextAreaElement interface: attribute labels
+PASS HTMLTextAreaElement interface: operation select()
+PASS HTMLTextAreaElement interface: attribute selectionStart
+PASS HTMLTextAreaElement interface: attribute selectionEnd
+PASS HTMLTextAreaElement interface: attribute selectionDirection
+PASS HTMLTextAreaElement interface: operation setRangeText(DOMString)
+PASS HTMLTextAreaElement interface: operation setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)
+PASS HTMLTextAreaElement interface: operation setSelectionRange(unsigned long, unsigned long, DOMString)
+PASS HTMLTextAreaElement must be primary interface of document.createElement("textarea")
+PASS Stringification of document.createElement("textarea")
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "autocomplete" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "cols" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "dirName" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "disabled" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "form" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "maxLength" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "minLength" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "name" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "placeholder" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "readOnly" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "required" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "rows" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "wrap" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "type" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "defaultValue" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "value" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "textLength" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "willValidate" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "validity" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "validationMessage" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "checkValidity()" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "reportValidity()" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLTextAreaElement interface: calling setCustomValidity(DOMString) on document.createElement("textarea") with too few arguments must throw TypeError
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "labels" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "select()" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "selectionStart" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "selectionEnd" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "selectionDirection" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLTextAreaElement interface: calling setRangeText(DOMString) on document.createElement("textarea") with too few arguments must throw TypeError
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLTextAreaElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on document.createElement("textarea") with too few arguments must throw TypeError
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLTextAreaElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on document.createElement("textarea") with too few arguments must throw TypeError
+PASS HTMLOutputElement interface: existence and properties of interface object
+PASS HTMLOutputElement interface object length
+PASS HTMLOutputElement interface object name
+PASS HTMLOutputElement interface: existence and properties of interface prototype object
+PASS HTMLOutputElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLOutputElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLOutputElement interface: attribute htmlFor
+PASS HTMLOutputElement interface: attribute form
+PASS HTMLOutputElement interface: attribute name
+PASS HTMLOutputElement interface: attribute type
+PASS HTMLOutputElement interface: attribute defaultValue
+PASS HTMLOutputElement interface: attribute value
+PASS HTMLOutputElement interface: attribute willValidate
+PASS HTMLOutputElement interface: attribute validity
+PASS HTMLOutputElement interface: attribute validationMessage
+PASS HTMLOutputElement interface: operation checkValidity()
+PASS HTMLOutputElement interface: operation reportValidity()
+PASS HTMLOutputElement interface: operation setCustomValidity(DOMString)
+PASS HTMLOutputElement interface: attribute labels
+PASS HTMLOutputElement must be primary interface of document.createElement("output")
+PASS Stringification of document.createElement("output")
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "htmlFor" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "form" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "name" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "type" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "defaultValue" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "value" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "willValidate" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "validity" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "validationMessage" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "checkValidity()" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "reportValidity()" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLOutputElement interface: calling setCustomValidity(DOMString) on document.createElement("output") with too few arguments must throw TypeError
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "labels" with the proper type
+PASS HTMLProgressElement interface: existence and properties of interface object
+PASS HTMLProgressElement interface object length
+PASS HTMLProgressElement interface object name
+PASS HTMLProgressElement interface: existence and properties of interface prototype object
+PASS HTMLProgressElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLProgressElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLProgressElement interface: attribute value
+PASS HTMLProgressElement interface: attribute max
+PASS HTMLProgressElement interface: attribute position
+PASS HTMLProgressElement interface: attribute labels
+PASS HTMLProgressElement must be primary interface of document.createElement("progress")
+PASS Stringification of document.createElement("progress")
+PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "value" with the proper type
+PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "max" with the proper type
+PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "position" with the proper type
+PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "labels" with the proper type
+PASS HTMLMeterElement interface: existence and properties of interface object
+PASS HTMLMeterElement interface object length
+PASS HTMLMeterElement interface object name
+PASS HTMLMeterElement interface: existence and properties of interface prototype object
+PASS HTMLMeterElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMeterElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMeterElement interface: attribute value
+PASS HTMLMeterElement interface: attribute min
+PASS HTMLMeterElement interface: attribute max
+PASS HTMLMeterElement interface: attribute low
+PASS HTMLMeterElement interface: attribute high
+PASS HTMLMeterElement interface: attribute optimum
+PASS HTMLMeterElement interface: attribute labels
+PASS HTMLMeterElement must be primary interface of document.createElement("meter")
+PASS Stringification of document.createElement("meter")
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "value" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "min" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "max" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "low" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "high" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "optimum" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "labels" with the proper type
+PASS HTMLFieldSetElement interface: existence and properties of interface object
+PASS HTMLFieldSetElement interface object length
+PASS HTMLFieldSetElement interface object name
+PASS HTMLFieldSetElement interface: existence and properties of interface prototype object
+PASS HTMLFieldSetElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFieldSetElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFieldSetElement interface: attribute disabled
+PASS HTMLFieldSetElement interface: attribute form
+PASS HTMLFieldSetElement interface: attribute name
+PASS HTMLFieldSetElement interface: attribute type
+PASS HTMLFieldSetElement interface: attribute elements
+PASS HTMLFieldSetElement interface: attribute willValidate
+PASS HTMLFieldSetElement interface: attribute validity
+PASS HTMLFieldSetElement interface: attribute validationMessage
+PASS HTMLFieldSetElement interface: operation checkValidity()
+PASS HTMLFieldSetElement interface: operation reportValidity()
+PASS HTMLFieldSetElement interface: operation setCustomValidity(DOMString)
+PASS HTMLLegendElement interface: existence and properties of interface object
+PASS HTMLLegendElement interface object length
+PASS HTMLLegendElement interface object name
+PASS HTMLLegendElement interface: existence and properties of interface prototype object
+PASS HTMLLegendElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLLegendElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLLegendElement interface: attribute form
+PASS HTMLLegendElement interface: attribute align
+PASS HTMLLegendElement must be primary interface of document.createElement("legend")
+PASS Stringification of document.createElement("legend")
+PASS HTMLLegendElement interface: document.createElement("legend") must inherit property "form" with the proper type
+PASS HTMLLegendElement interface: document.createElement("legend") must inherit property "align" with the proper type
+PASS HTMLDetailsElement interface: existence and properties of interface object
+PASS HTMLDetailsElement interface object length
+PASS HTMLDetailsElement interface object name
+PASS HTMLDetailsElement interface: existence and properties of interface prototype object
+PASS HTMLDetailsElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDetailsElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDetailsElement interface: attribute open
+PASS HTMLDetailsElement must be primary interface of document.createElement("details")
+PASS Stringification of document.createElement("details")
+PASS HTMLDetailsElement interface: document.createElement("details") must inherit property "open" with the proper type
+PASS HTMLDialogElement interface: existence and properties of interface object
+PASS HTMLDialogElement interface object length
+PASS HTMLDialogElement interface object name
+PASS HTMLDialogElement interface: existence and properties of interface prototype object
+PASS HTMLDialogElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDialogElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDialogElement interface: attribute open
+PASS HTMLDialogElement interface: attribute returnValue
+PASS HTMLDialogElement interface: operation show()
+PASS HTMLDialogElement interface: operation showModal()
+PASS HTMLDialogElement interface: operation close(DOMString)
+PASS HTMLScriptElement interface: existence and properties of interface object
+PASS HTMLScriptElement interface object length
+PASS HTMLScriptElement interface object name
+PASS HTMLScriptElement interface: existence and properties of interface prototype object
+PASS HTMLScriptElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLScriptElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLScriptElement interface: attribute src
+PASS HTMLScriptElement interface: attribute type
+PASS HTMLScriptElement interface: attribute noModule
+PASS HTMLScriptElement interface: attribute async
+PASS HTMLScriptElement interface: attribute defer
+PASS HTMLScriptElement interface: attribute crossOrigin
+PASS HTMLScriptElement interface: attribute text
+PASS HTMLScriptElement interface: attribute integrity
+PASS HTMLScriptElement interface: attribute referrerPolicy
+PASS HTMLScriptElement interface: attribute charset
+PASS HTMLScriptElement interface: attribute event
+PASS HTMLScriptElement interface: attribute htmlFor
+PASS HTMLScriptElement must be primary interface of document.createElement("script")
+PASS Stringification of document.createElement("script")
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "src" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "type" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "noModule" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "async" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "defer" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "crossOrigin" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "text" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "integrity" with the proper type
+FAIL HTMLScriptElement interface: document.createElement("script") must inherit property "referrerPolicy" with the proper type assert_equals: expected "string" but got "object"
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "charset" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "event" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "htmlFor" with the proper type
+PASS HTMLTemplateElement interface: existence and properties of interface object
+PASS HTMLTemplateElement interface object length
+PASS HTMLTemplateElement interface object name
+PASS HTMLTemplateElement interface: existence and properties of interface prototype object
+PASS HTMLTemplateElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTemplateElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTemplateElement interface: attribute content
+PASS HTMLTemplateElement must be primary interface of document.createElement("template")
+PASS Stringification of document.createElement("template")
+PASS HTMLTemplateElement interface: document.createElement("template") must inherit property "content" with the proper type
+PASS HTMLSlotElement interface: existence and properties of interface object
+PASS HTMLSlotElement interface object length
+PASS HTMLSlotElement interface object name
+PASS HTMLSlotElement interface: existence and properties of interface prototype object
+PASS HTMLSlotElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLSlotElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLSlotElement interface: attribute name
+PASS HTMLSlotElement interface: operation assignedNodes(AssignedNodesOptions)
+PASS HTMLSlotElement interface: operation assignedElements(AssignedNodesOptions)
+PASS HTMLSlotElement must be primary interface of document.createElement("slot")
+PASS Stringification of document.createElement("slot")
+PASS HTMLSlotElement interface: document.createElement("slot") must inherit property "name" with the proper type
+PASS HTMLSlotElement interface: document.createElement("slot") must inherit property "assignedNodes(AssignedNodesOptions)" with the proper type
+PASS HTMLSlotElement interface: calling assignedNodes(AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError
+PASS HTMLSlotElement interface: document.createElement("slot") must inherit property "assignedElements(AssignedNodesOptions)" with the proper type
+PASS HTMLSlotElement interface: calling assignedElements(AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: existence and properties of interface object
+PASS HTMLCanvasElement interface object length
+PASS HTMLCanvasElement interface object name
+PASS HTMLCanvasElement interface: existence and properties of interface prototype object
+PASS HTMLCanvasElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLCanvasElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLCanvasElement interface: attribute width
+PASS HTMLCanvasElement interface: attribute height
+PASS HTMLCanvasElement interface: operation getContext(DOMString, any)
+PASS HTMLCanvasElement interface: operation toDataURL(DOMString, any)
+PASS HTMLCanvasElement interface: operation toBlob(BlobCallback, DOMString, any)
+PASS HTMLCanvasElement interface: operation transferControlToOffscreen()
+PASS HTMLCanvasElement must be primary interface of document.createElement("canvas")
+PASS Stringification of document.createElement("canvas")
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "width" with the proper type
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "height" with the proper type
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "getContext(DOMString, any)" with the proper type
+PASS HTMLCanvasElement interface: calling getContext(DOMString, any) on document.createElement("canvas") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toDataURL(DOMString, any)" with the proper type
+PASS HTMLCanvasElement interface: calling toDataURL(DOMString, any) on document.createElement("canvas") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toBlob(BlobCallback, DOMString, any)" with the proper type
+PASS HTMLCanvasElement interface: calling toBlob(BlobCallback, DOMString, any) on document.createElement("canvas") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "transferControlToOffscreen()" with the proper type
+PASS HTMLMarqueeElement interface: existence and properties of interface object
+PASS HTMLMarqueeElement interface object length
+PASS HTMLMarqueeElement interface object name
+PASS HTMLMarqueeElement interface: existence and properties of interface prototype object
+PASS HTMLMarqueeElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMarqueeElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMarqueeElement interface: attribute behavior
+PASS HTMLMarqueeElement interface: attribute bgColor
+PASS HTMLMarqueeElement interface: attribute direction
+PASS HTMLMarqueeElement interface: attribute height
+PASS HTMLMarqueeElement interface: attribute hspace
+PASS HTMLMarqueeElement interface: attribute loop
+PASS HTMLMarqueeElement interface: attribute scrollAmount
+PASS HTMLMarqueeElement interface: attribute scrollDelay
+PASS HTMLMarqueeElement interface: attribute trueSpeed
+PASS HTMLMarqueeElement interface: attribute vspace
+PASS HTMLMarqueeElement interface: attribute width
+FAIL HTMLMarqueeElement interface: attribute onbounce assert_true: The prototype object must have a property "onbounce" expected true got false
+FAIL HTMLMarqueeElement interface: attribute onfinish assert_true: The prototype object must have a property "onfinish" expected true got false
+FAIL HTMLMarqueeElement interface: attribute onstart assert_true: The prototype object must have a property "onstart" expected true got false
+PASS HTMLMarqueeElement interface: operation start()
+PASS HTMLMarqueeElement interface: operation stop()
+PASS HTMLMarqueeElement must be primary interface of document.createElement("marquee")
+PASS Stringification of document.createElement("marquee")
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "behavior" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "bgColor" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "direction" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "height" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "hspace" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "loop" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "scrollAmount" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "scrollDelay" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "trueSpeed" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "vspace" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "width" with the proper type
+FAIL HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onbounce" with the proper type assert_inherits: property "onbounce" not found in prototype chain
+FAIL HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onfinish" with the proper type assert_inherits: property "onfinish" not found in prototype chain
+FAIL HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onstart" with the proper type assert_inherits: property "onstart" not found in prototype chain
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "start()" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "stop()" with the proper type
+PASS HTMLFrameSetElement interface: existence and properties of interface object
+PASS HTMLFrameSetElement interface object length
+PASS HTMLFrameSetElement interface object name
+PASS HTMLFrameSetElement interface: existence and properties of interface prototype object
+PASS HTMLFrameSetElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFrameSetElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFrameSetElement interface: attribute cols
+PASS HTMLFrameSetElement interface: attribute rows
+PASS HTMLFrameSetElement interface: attribute onafterprint
+PASS HTMLFrameSetElement interface: attribute onbeforeprint
+PASS HTMLFrameSetElement interface: attribute onbeforeunload
+PASS HTMLFrameSetElement interface: attribute onhashchange
+PASS HTMLFrameSetElement interface: attribute onlanguagechange
+PASS HTMLFrameSetElement interface: attribute onmessage
+PASS HTMLFrameSetElement interface: attribute onmessageerror
+PASS HTMLFrameSetElement interface: attribute onoffline
+PASS HTMLFrameSetElement interface: attribute ononline
+PASS HTMLFrameSetElement interface: attribute onpagehide
+PASS HTMLFrameSetElement interface: attribute onpageshow
+PASS HTMLFrameSetElement interface: attribute onpopstate
+PASS HTMLFrameSetElement interface: attribute onrejectionhandled
+PASS HTMLFrameSetElement interface: attribute onstorage
+PASS HTMLFrameSetElement interface: attribute onunhandledrejection
+PASS HTMLFrameSetElement interface: attribute onunload
+PASS HTMLFrameSetElement must be primary interface of document.createElement("frameset")
+PASS Stringification of document.createElement("frameset")
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "cols" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "rows" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onafterprint" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onbeforeprint" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onbeforeunload" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onhashchange" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onlanguagechange" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onmessage" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onmessageerror" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onoffline" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "ononline" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpagehide" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpageshow" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpopstate" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onrejectionhandled" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onstorage" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onunhandledrejection" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onunload" with the proper type
+PASS HTMLFrameElement interface: existence and properties of interface object
+PASS HTMLFrameElement interface object length
+PASS HTMLFrameElement interface object name
+PASS HTMLFrameElement interface: existence and properties of interface prototype object
+PASS HTMLFrameElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFrameElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFrameElement interface: attribute name
+PASS HTMLFrameElement interface: attribute scrolling
+PASS HTMLFrameElement interface: attribute src
+PASS HTMLFrameElement interface: attribute frameBorder
+PASS HTMLFrameElement interface: attribute longDesc
+PASS HTMLFrameElement interface: attribute noResize
+PASS HTMLFrameElement interface: attribute contentDocument
+PASS HTMLFrameElement interface: attribute contentWindow
+PASS HTMLFrameElement interface: attribute marginHeight
+PASS HTMLFrameElement interface: attribute marginWidth
+PASS HTMLFrameElement must be primary interface of document.createElement("frame")
+PASS Stringification of document.createElement("frame")
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "name" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "scrolling" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "src" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "frameBorder" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "longDesc" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "noResize" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "contentDocument" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "contentWindow" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "marginHeight" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "marginWidth" with the proper type
+PASS HTMLDirectoryElement interface: existence and properties of interface object
+PASS HTMLDirectoryElement interface object length
+PASS HTMLDirectoryElement interface object name
+PASS HTMLDirectoryElement interface: existence and properties of interface prototype object
+PASS HTMLDirectoryElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDirectoryElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDirectoryElement interface: attribute compact
+PASS HTMLDirectoryElement must be primary interface of document.createElement("dir")
+PASS Stringification of document.createElement("dir")
+PASS HTMLDirectoryElement interface: document.createElement("dir") must inherit property "compact" with the proper type
+PASS HTMLFontElement interface: existence and properties of interface object
+PASS HTMLFontElement interface object length
+PASS HTMLFontElement interface object name
+PASS HTMLFontElement interface: existence and properties of interface prototype object
+PASS HTMLFontElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFontElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFontElement interface: attribute color
+PASS HTMLFontElement interface: attribute face
+PASS HTMLFontElement interface: attribute size
+PASS HTMLFontElement must be primary interface of document.createElement("font")
+PASS Stringification of document.createElement("font")
+PASS HTMLFontElement interface: document.createElement("font") must inherit property "color" with the proper type
+PASS HTMLFontElement interface: document.createElement("font") must inherit property "face" with the proper type
+PASS HTMLFontElement interface: document.createElement("font") must inherit property "size" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/html/webappapis/scripting/events/event-handler-attributes-windowless-body-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/html/webappapis/scripting/events/event-handler-attributes-windowless-body-expected.txt
new file mode 100644
index 0000000..9ce3c84
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/html/webappapis/scripting/events/event-handler-attributes-windowless-body-expected.txt
@@ -0,0 +1,210 @@
+This is a testharness.js-based test.
+Found 206 tests; 202 PASS, 4 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Return null when getting the blur event handler of a windowless body
+PASS Ignore setting of blur window event handlers on windowless body
+PASS Return null when getting the error event handler of a windowless body
+PASS Ignore setting of error window event handlers on windowless body
+PASS Return null when getting the focus event handler of a windowless body
+PASS Ignore setting of focus window event handlers on windowless body
+PASS Return null when getting the load event handler of a windowless body
+PASS Ignore setting of load window event handlers on windowless body
+PASS Return null when getting the resize event handler of a windowless body
+PASS Ignore setting of resize window event handlers on windowless body
+PASS Return null when getting the scroll event handler of a windowless body
+PASS Ignore setting of scroll window event handlers on windowless body
+PASS Return null when getting the afterprint event handler of a windowless body
+PASS Ignore setting of afterprint window event handlers on windowless body
+PASS Return null when getting the beforeprint event handler of a windowless body
+PASS Ignore setting of beforeprint window event handlers on windowless body
+PASS Return null when getting the beforeunload event handler of a windowless body
+PASS Ignore setting of beforeunload window event handlers on windowless body
+PASS Return null when getting the hashchange event handler of a windowless body
+PASS Ignore setting of hashchange window event handlers on windowless body
+PASS Return null when getting the languagechange event handler of a windowless body
+PASS Ignore setting of languagechange window event handlers on windowless body
+PASS Return null when getting the message event handler of a windowless body
+PASS Ignore setting of message window event handlers on windowless body
+PASS Return null when getting the messageerror event handler of a windowless body
+PASS Ignore setting of messageerror window event handlers on windowless body
+PASS Return null when getting the offline event handler of a windowless body
+PASS Ignore setting of offline window event handlers on windowless body
+PASS Return null when getting the online event handler of a windowless body
+PASS Ignore setting of online window event handlers on windowless body
+PASS Return null when getting the pagehide event handler of a windowless body
+PASS Ignore setting of pagehide window event handlers on windowless body
+PASS Return null when getting the pageshow event handler of a windowless body
+PASS Ignore setting of pageshow window event handlers on windowless body
+PASS Return null when getting the popstate event handler of a windowless body
+PASS Ignore setting of popstate window event handlers on windowless body
+PASS Return null when getting the rejectionhandled event handler of a windowless body
+PASS Ignore setting of rejectionhandled window event handlers on windowless body
+PASS Return null when getting the storage event handler of a windowless body
+PASS Ignore setting of storage window event handlers on windowless body
+PASS Return null when getting the unhandledrejection event handler of a windowless body
+PASS Ignore setting of unhandledrejection window event handlers on windowless body
+PASS Return null when getting the unload event handler of a windowless body
+PASS Ignore setting of unload window event handlers on windowless body
+PASS abort is unaffected on a windowless body
+PASS auxclick is unaffected on a windowless body
+PASS cancel is unaffected on a windowless body
+PASS canplay is unaffected on a windowless body
+PASS canplaythrough is unaffected on a windowless body
+PASS change is unaffected on a windowless body
+PASS click is unaffected on a windowless body
+PASS close is unaffected on a windowless body
+PASS contextmenu is unaffected on a windowless body
+PASS cuechange is unaffected on a windowless body
+PASS dblclick is unaffected on a windowless body
+PASS drag is unaffected on a windowless body
+PASS dragend is unaffected on a windowless body
+PASS dragenter is unaffected on a windowless body
+FAIL dragexit is unaffected on a windowless body assert_equals: expected (object) null but got (undefined) undefined
+PASS dragleave is unaffected on a windowless body
+PASS dragover is unaffected on a windowless body
+PASS dragstart is unaffected on a windowless body
+PASS drop is unaffected on a windowless body
+PASS durationchange is unaffected on a windowless body
+PASS emptied is unaffected on a windowless body
+PASS ended is unaffected on a windowless body
+PASS formdata is unaffected on a windowless body
+PASS input is unaffected on a windowless body
+PASS invalid is unaffected on a windowless body
+PASS keydown is unaffected on a windowless body
+PASS keypress is unaffected on a windowless body
+PASS keyup is unaffected on a windowless body
+PASS loadeddata is unaffected on a windowless body
+PASS loadedmetadata is unaffected on a windowless body
+PASS loadstart is unaffected on a windowless body
+PASS mousedown is unaffected on a windowless body
+PASS mouseenter is unaffected on a windowless body
+PASS mouseleave is unaffected on a windowless body
+PASS mousemove is unaffected on a windowless body
+PASS mouseout is unaffected on a windowless body
+PASS mouseover is unaffected on a windowless body
+PASS mouseup is unaffected on a windowless body
+PASS wheel is unaffected on a windowless body
+PASS pause is unaffected on a windowless body
+PASS play is unaffected on a windowless body
+PASS playing is unaffected on a windowless body
+PASS progress is unaffected on a windowless body
+PASS ratechange is unaffected on a windowless body
+PASS reset is unaffected on a windowless body
+FAIL securitypolicyviolation is unaffected on a windowless body assert_equals: expected (object) null but got (undefined) undefined
+PASS seeked is unaffected on a windowless body
+PASS seeking is unaffected on a windowless body
+PASS select is unaffected on a windowless body
+PASS stalled is unaffected on a windowless body
+PASS submit is unaffected on a windowless body
+PASS suspend is unaffected on a windowless body
+PASS timeupdate is unaffected on a windowless body
+PASS toggle is unaffected on a windowless body
+PASS volumechange is unaffected on a windowless body
+PASS waiting is unaffected on a windowless body
+PASS copy is unaffected on a windowless body
+PASS cut is unaffected on a windowless body
+PASS paste is unaffected on a windowless body
+PASS Return null when getting the blur event handler of a windowless frameset
+PASS Ignore setting of blur window event handlers on windowless frameset
+PASS Return null when getting the error event handler of a windowless frameset
+PASS Ignore setting of error window event handlers on windowless frameset
+PASS Return null when getting the focus event handler of a windowless frameset
+PASS Ignore setting of focus window event handlers on windowless frameset
+PASS Return null when getting the load event handler of a windowless frameset
+PASS Ignore setting of load window event handlers on windowless frameset
+PASS Return null when getting the resize event handler of a windowless frameset
+PASS Ignore setting of resize window event handlers on windowless frameset
+PASS Return null when getting the scroll event handler of a windowless frameset
+PASS Ignore setting of scroll window event handlers on windowless frameset
+PASS Return null when getting the afterprint event handler of a windowless frameset
+PASS Ignore setting of afterprint window event handlers on windowless frameset
+PASS Return null when getting the beforeprint event handler of a windowless frameset
+PASS Ignore setting of beforeprint window event handlers on windowless frameset
+PASS Return null when getting the beforeunload event handler of a windowless frameset
+PASS Ignore setting of beforeunload window event handlers on windowless frameset
+PASS Return null when getting the hashchange event handler of a windowless frameset
+PASS Ignore setting of hashchange window event handlers on windowless frameset
+PASS Return null when getting the languagechange event handler of a windowless frameset
+PASS Ignore setting of languagechange window event handlers on windowless frameset
+PASS Return null when getting the message event handler of a windowless frameset
+PASS Ignore setting of message window event handlers on windowless frameset
+PASS Return null when getting the messageerror event handler of a windowless frameset
+PASS Ignore setting of messageerror window event handlers on windowless frameset
+PASS Return null when getting the offline event handler of a windowless frameset
+PASS Ignore setting of offline window event handlers on windowless frameset
+PASS Return null when getting the online event handler of a windowless frameset
+PASS Ignore setting of online window event handlers on windowless frameset
+PASS Return null when getting the pagehide event handler of a windowless frameset
+PASS Ignore setting of pagehide window event handlers on windowless frameset
+PASS Return null when getting the pageshow event handler of a windowless frameset
+PASS Ignore setting of pageshow window event handlers on windowless frameset
+PASS Return null when getting the popstate event handler of a windowless frameset
+PASS Ignore setting of popstate window event handlers on windowless frameset
+PASS Return null when getting the rejectionhandled event handler of a windowless frameset
+PASS Ignore setting of rejectionhandled window event handlers on windowless frameset
+PASS Return null when getting the storage event handler of a windowless frameset
+PASS Ignore setting of storage window event handlers on windowless frameset
+PASS Return null when getting the unhandledrejection event handler of a windowless frameset
+PASS Ignore setting of unhandledrejection window event handlers on windowless frameset
+PASS Return null when getting the unload event handler of a windowless frameset
+PASS Ignore setting of unload window event handlers on windowless frameset
+PASS abort is unaffected on a windowless frameset
+PASS auxclick is unaffected on a windowless frameset
+PASS cancel is unaffected on a windowless frameset
+PASS canplay is unaffected on a windowless frameset
+PASS canplaythrough is unaffected on a windowless frameset
+PASS change is unaffected on a windowless frameset
+PASS click is unaffected on a windowless frameset
+PASS close is unaffected on a windowless frameset
+PASS contextmenu is unaffected on a windowless frameset
+PASS cuechange is unaffected on a windowless frameset
+PASS dblclick is unaffected on a windowless frameset
+PASS drag is unaffected on a windowless frameset
+PASS dragend is unaffected on a windowless frameset
+PASS dragenter is unaffected on a windowless frameset
+FAIL dragexit is unaffected on a windowless frameset assert_equals: expected (object) null but got (undefined) undefined
+PASS dragleave is unaffected on a windowless frameset
+PASS dragover is unaffected on a windowless frameset
+PASS dragstart is unaffected on a windowless frameset
+PASS drop is unaffected on a windowless frameset
+PASS durationchange is unaffected on a windowless frameset
+PASS emptied is unaffected on a windowless frameset
+PASS ended is unaffected on a windowless frameset
+PASS formdata is unaffected on a windowless frameset
+PASS input is unaffected on a windowless frameset
+PASS invalid is unaffected on a windowless frameset
+PASS keydown is unaffected on a windowless frameset
+PASS keypress is unaffected on a windowless frameset
+PASS keyup is unaffected on a windowless frameset
+PASS loadeddata is unaffected on a windowless frameset
+PASS loadedmetadata is unaffected on a windowless frameset
+PASS loadstart is unaffected on a windowless frameset
+PASS mousedown is unaffected on a windowless frameset
+PASS mouseenter is unaffected on a windowless frameset
+PASS mouseleave is unaffected on a windowless frameset
+PASS mousemove is unaffected on a windowless frameset
+PASS mouseout is unaffected on a windowless frameset
+PASS mouseover is unaffected on a windowless frameset
+PASS mouseup is unaffected on a windowless frameset
+PASS wheel is unaffected on a windowless frameset
+PASS pause is unaffected on a windowless frameset
+PASS play is unaffected on a windowless frameset
+PASS playing is unaffected on a windowless frameset
+PASS progress is unaffected on a windowless frameset
+PASS ratechange is unaffected on a windowless frameset
+PASS reset is unaffected on a windowless frameset
+FAIL securitypolicyviolation is unaffected on a windowless frameset assert_equals: expected (object) null but got (undefined) undefined
+PASS seeked is unaffected on a windowless frameset
+PASS seeking is unaffected on a windowless frameset
+PASS select is unaffected on a windowless frameset
+PASS stalled is unaffected on a windowless frameset
+PASS submit is unaffected on a windowless frameset
+PASS suspend is unaffected on a windowless frameset
+PASS timeupdate is unaffected on a windowless frameset
+PASS toggle is unaffected on a windowless frameset
+PASS volumechange is unaffected on a windowless frameset
+PASS waiting is unaffected on a windowless frameset
+PASS copy is unaffected on a windowless frameset
+PASS cut is unaffected on a windowless frameset
+PASS paste is unaffected on a windowless frameset
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/idle-detection/idlharness.https.any-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/idle-detection/idlharness.https.any-expected.txt
new file mode 100644
index 0000000..41bb15de
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/idle-detection/idlharness.https.any-expected.txt
@@ -0,0 +1,32 @@
+This is a testharness.js-based test.
+PASS Test IDL implementation of Idle Detection API
+PASS IdleDetector interface: existence and properties of interface object
+PASS IdleDetector interface object length
+PASS IdleDetector interface object name
+PASS IdleDetector interface: existence and properties of interface prototype object
+PASS IdleDetector interface: existence and properties of interface prototype object's "constructor" property
+PASS IdleDetector interface: existence and properties of interface prototype object's @@unscopables property
+PASS IdleDetector interface: attribute state
+PASS IdleDetector interface: attribute onchange
+PASS IdleDetector interface: operation start()
+PASS IdleDetector interface: operation stop()
+PASS IdleDetector must be primary interface of idle
+PASS Stringification of idle
+PASS IdleDetector interface: idle must inherit property "state" with the proper type
+PASS IdleDetector interface: idle must inherit property "onchange" with the proper type
+PASS IdleDetector interface: idle must inherit property "start()" with the proper type
+PASS IdleDetector interface: idle must inherit property "stop()" with the proper type
+PASS IdleState interface: existence and properties of interface object
+PASS IdleState interface object length
+PASS IdleState interface object name
+PASS IdleState interface: existence and properties of interface prototype object
+PASS IdleState interface: existence and properties of interface prototype object's "constructor" property
+PASS IdleState interface: existence and properties of interface prototype object's @@unscopables property
+PASS IdleState interface: attribute user
+PASS IdleState interface: attribute screen
+PASS IdleState must be primary interface of idle.state
+PASS Stringification of idle.state
+PASS IdleState interface: idle.state must inherit property "user" with the proper type
+PASS IdleState interface: idle.state must inherit property "screen" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/notifications/idlharness.https.any.serviceworker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/notifications/idlharness.https.any.serviceworker-expected.txt
new file mode 100644
index 0000000..860bff6
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/notifications/idlharness.https.any.serviceworker-expected.txt
@@ -0,0 +1,49 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface ServiceWorkerRegistration: original interface defined
+PASS Partial interface ServiceWorkerGlobalScope: original interface defined
+PASS Notification interface: existence and properties of interface object
+PASS Notification interface object length
+PASS Notification interface object name
+PASS Notification interface: existence and properties of interface prototype object
+PASS Notification interface: existence and properties of interface prototype object's "constructor" property
+PASS Notification interface: existence and properties of interface prototype object's @@unscopables property
+PASS Notification interface: attribute permission
+PASS Notification interface: member requestPermission
+PASS Notification interface: attribute maxActions
+PASS Notification interface: attribute onclick
+PASS Notification interface: attribute onshow
+PASS Notification interface: attribute onerror
+PASS Notification interface: attribute onclose
+PASS Notification interface: attribute title
+PASS Notification interface: attribute dir
+PASS Notification interface: attribute lang
+PASS Notification interface: attribute body
+PASS Notification interface: attribute tag
+PASS Notification interface: attribute image
+PASS Notification interface: attribute icon
+PASS Notification interface: attribute badge
+PASS Notification interface: attribute vibrate
+PASS Notification interface: attribute timestamp
+PASS Notification interface: attribute renotify
+PASS Notification interface: attribute silent
+PASS Notification interface: attribute requireInteraction
+PASS Notification interface: attribute data
+PASS Notification interface: attribute actions
+PASS Notification interface: operation close()
+PASS NotificationEvent interface: existence and properties of interface object
+PASS NotificationEvent interface object length
+PASS NotificationEvent interface object name
+PASS NotificationEvent interface: existence and properties of interface prototype object
+PASS NotificationEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS NotificationEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS NotificationEvent interface: attribute notification
+PASS NotificationEvent interface: attribute action
+PASS ServiceWorkerRegistration interface: operation showNotification(DOMString, NotificationOptions)
+PASS ServiceWorkerRegistration interface: operation getNotifications(GetNotificationOptions)
+PASS ServiceWorkerGlobalScope interface: attribute onnotificationclick
+PASS ServiceWorkerGlobalScope interface: attribute onnotificationclose
+PASS ServiceWorkerGlobalScope interface: self must inherit property "onnotificationclick" with the proper type
+PASS ServiceWorkerGlobalScope interface: self must inherit property "onnotificationclose" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/push-api/idlharness.https.any.worker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/push-api/idlharness.https.any.worker-expected.txt
new file mode 100644
index 0000000..b62d5df3
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/push-api/idlharness.https.any.worker-expected.txt
@@ -0,0 +1,43 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface ServiceWorkerRegistration: original interface defined
+PASS Partial interface ServiceWorkerGlobalScope: original interface defined
+PASS Partial interface ServiceWorkerGlobalScope: valid exposure set
+PASS PushManager interface: existence and properties of interface object
+PASS PushManager interface object length
+PASS PushManager interface object name
+PASS PushManager interface: existence and properties of interface prototype object
+PASS PushManager interface: existence and properties of interface prototype object's "constructor" property
+PASS PushManager interface: existence and properties of interface prototype object's @@unscopables property
+PASS PushManager interface: attribute supportedContentEncodings
+PASS PushManager interface: operation subscribe(PushSubscriptionOptionsInit)
+PASS PushManager interface: operation getSubscription()
+PASS PushManager interface: operation permissionState(PushSubscriptionOptionsInit)
+PASS PushSubscriptionOptions interface: existence and properties of interface object
+PASS PushSubscriptionOptions interface object length
+PASS PushSubscriptionOptions interface object name
+PASS PushSubscriptionOptions interface: existence and properties of interface prototype object
+PASS PushSubscriptionOptions interface: existence and properties of interface prototype object's "constructor" property
+PASS PushSubscriptionOptions interface: existence and properties of interface prototype object's @@unscopables property
+PASS PushSubscriptionOptions interface: attribute userVisibleOnly
+PASS PushSubscriptionOptions interface: attribute applicationServerKey
+PASS PushSubscription interface: existence and properties of interface object
+PASS PushSubscription interface object length
+PASS PushSubscription interface object name
+PASS PushSubscription interface: existence and properties of interface prototype object
+PASS PushSubscription interface: existence and properties of interface prototype object's "constructor" property
+PASS PushSubscription interface: existence and properties of interface prototype object's @@unscopables property
+PASS PushSubscription interface: attribute endpoint
+PASS PushSubscription interface: attribute expirationTime
+PASS PushSubscription interface: attribute options
+PASS PushSubscription interface: operation getKey(PushEncryptionKeyName)
+PASS PushSubscription interface: operation unsubscribe()
+PASS PushSubscription interface: operation toJSON()
+PASS PushMessageData interface: existence and properties of interface object
+PASS PushEvent interface: existence and properties of interface object
+PASS PushSubscriptionChangeEvent interface: existence and properties of interface object
+PASS ServiceWorkerRegistration interface: attribute pushManager
+PASS ServiceWorkerGlobalScope interface: existence and properties of interface object
+PASS ExtendableEvent interface: existence and properties of interface object
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-retina/external/wpt/IndexedDB/idlharness.any.serviceworker-expected.txt b/third_party/blink/web_tests/platform/mac-retina/external/wpt/IndexedDB/idlharness.any.serviceworker-expected.txt
new file mode 100644
index 0000000..cf73abdc
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-retina/external/wpt/IndexedDB/idlharness.any.serviceworker-expected.txt
@@ -0,0 +1,189 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined
+PASS IDBRequest interface: existence and properties of interface object
+PASS IDBRequest interface object length
+PASS IDBRequest interface object name
+PASS IDBRequest interface: existence and properties of interface prototype object
+PASS IDBRequest interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBRequest interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBRequest interface: attribute result
+PASS IDBRequest interface: attribute error
+PASS IDBRequest interface: attribute source
+PASS IDBRequest interface: attribute transaction
+PASS IDBRequest interface: attribute readyState
+PASS IDBRequest interface: attribute onsuccess
+PASS IDBRequest interface: attribute onerror
+PASS IDBOpenDBRequest interface: existence and properties of interface object
+PASS IDBOpenDBRequest interface object length
+PASS IDBOpenDBRequest interface object name
+PASS IDBOpenDBRequest interface: existence and properties of interface prototype object
+PASS IDBOpenDBRequest interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBOpenDBRequest interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBOpenDBRequest interface: attribute onblocked
+PASS IDBOpenDBRequest interface: attribute onupgradeneeded
+PASS IDBVersionChangeEvent interface: existence and properties of interface object
+PASS IDBVersionChangeEvent interface object length
+PASS IDBVersionChangeEvent interface object name
+PASS IDBVersionChangeEvent interface: existence and properties of interface prototype object
+PASS IDBVersionChangeEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBVersionChangeEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBVersionChangeEvent interface: attribute oldVersion
+PASS IDBVersionChangeEvent interface: attribute newVersion
+PASS IDBVersionChangeEvent must be primary interface of new IDBVersionChangeEvent("type")
+PASS Stringification of new IDBVersionChangeEvent("type")
+PASS IDBVersionChangeEvent interface: new IDBVersionChangeEvent("type") must inherit property "oldVersion" with the proper type
+PASS IDBVersionChangeEvent interface: new IDBVersionChangeEvent("type") must inherit property "newVersion" with the proper type
+PASS IDBFactory interface: existence and properties of interface object
+PASS IDBFactory interface object length
+PASS IDBFactory interface object name
+PASS IDBFactory interface: existence and properties of interface prototype object
+PASS IDBFactory interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBFactory interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBFactory interface: operation open(DOMString, unsigned long long)
+PASS IDBFactory interface: operation deleteDatabase(DOMString)
+PASS IDBFactory interface: operation databases()
+PASS IDBFactory interface: operation cmp(any, any)
+PASS IDBFactory must be primary interface of [object IDBFactory]
+PASS Stringification of [object IDBFactory]
+PASS IDBFactory interface: [object IDBFactory] must inherit property "open(DOMString, unsigned long long)" with the proper type
+PASS IDBFactory interface: calling open(DOMString, unsigned long long) on [object IDBFactory] with too few arguments must throw TypeError
+PASS IDBFactory interface: [object IDBFactory] must inherit property "deleteDatabase(DOMString)" with the proper type
+PASS IDBFactory interface: calling deleteDatabase(DOMString) on [object IDBFactory] with too few arguments must throw TypeError
+PASS IDBFactory interface: [object IDBFactory] must inherit property "databases()" with the proper type
+PASS IDBFactory interface: [object IDBFactory] must inherit property "cmp(any, any)" with the proper type
+PASS IDBFactory interface: calling cmp(any, any) on [object IDBFactory] with too few arguments must throw TypeError
+PASS IDBDatabase interface: existence and properties of interface object
+PASS IDBDatabase interface object length
+PASS IDBDatabase interface object name
+PASS IDBDatabase interface: existence and properties of interface prototype object
+PASS IDBDatabase interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBDatabase interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBDatabase interface: attribute name
+PASS IDBDatabase interface: attribute version
+PASS IDBDatabase interface: attribute objectStoreNames
+PASS IDBDatabase interface: operation transaction([object Object],[object Object], IDBTransactionMode)
+PASS IDBDatabase interface: operation close()
+PASS IDBDatabase interface: operation createObjectStore(DOMString, IDBObjectStoreParameters)
+PASS IDBDatabase interface: operation deleteObjectStore(DOMString)
+PASS IDBDatabase interface: attribute onabort
+PASS IDBDatabase interface: attribute onclose
+PASS IDBDatabase interface: attribute onerror
+PASS IDBDatabase interface: attribute onversionchange
+PASS IDBObjectStore interface: existence and properties of interface object
+PASS IDBObjectStore interface object length
+PASS IDBObjectStore interface object name
+PASS IDBObjectStore interface: existence and properties of interface prototype object
+PASS IDBObjectStore interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBObjectStore interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBObjectStore interface: attribute name
+PASS IDBObjectStore interface: attribute keyPath
+PASS IDBObjectStore interface: attribute indexNames
+PASS IDBObjectStore interface: attribute transaction
+PASS IDBObjectStore interface: attribute autoIncrement
+PASS IDBObjectStore interface: operation put(any, any)
+PASS IDBObjectStore interface: operation add(any, any)
+PASS IDBObjectStore interface: operation delete(any)
+PASS IDBObjectStore interface: operation clear()
+PASS IDBObjectStore interface: operation get(any)
+PASS IDBObjectStore interface: operation getKey(any)
+PASS IDBObjectStore interface: operation getAll(any, unsigned long)
+PASS IDBObjectStore interface: operation getAllKeys(any, unsigned long)
+PASS IDBObjectStore interface: operation count(any)
+PASS IDBObjectStore interface: operation openCursor(any, IDBCursorDirection)
+PASS IDBObjectStore interface: operation openKeyCursor(any, IDBCursorDirection)
+PASS IDBObjectStore interface: operation index(DOMString)
+PASS IDBObjectStore interface: operation createIndex(DOMString, [object Object],[object Object], IDBIndexParameters)
+PASS IDBObjectStore interface: operation deleteIndex(DOMString)
+PASS IDBIndex interface: existence and properties of interface object
+PASS IDBIndex interface object length
+PASS IDBIndex interface object name
+PASS IDBIndex interface: existence and properties of interface prototype object
+PASS IDBIndex interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBIndex interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBIndex interface: attribute name
+PASS IDBIndex interface: attribute objectStore
+PASS IDBIndex interface: attribute keyPath
+PASS IDBIndex interface: attribute multiEntry
+PASS IDBIndex interface: attribute unique
+PASS IDBIndex interface: operation get(any)
+PASS IDBIndex interface: operation getKey(any)
+PASS IDBIndex interface: operation getAll(any, unsigned long)
+PASS IDBIndex interface: operation getAllKeys(any, unsigned long)
+PASS IDBIndex interface: operation count(any)
+PASS IDBIndex interface: operation openCursor(any, IDBCursorDirection)
+PASS IDBIndex interface: operation openKeyCursor(any, IDBCursorDirection)
+PASS IDBKeyRange interface: existence and properties of interface object
+PASS IDBKeyRange interface object length
+PASS IDBKeyRange interface object name
+PASS IDBKeyRange interface: existence and properties of interface prototype object
+PASS IDBKeyRange interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBKeyRange interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBKeyRange interface: attribute lower
+PASS IDBKeyRange interface: attribute upper
+PASS IDBKeyRange interface: attribute lowerOpen
+PASS IDBKeyRange interface: attribute upperOpen
+PASS IDBKeyRange interface: operation only(any)
+PASS IDBKeyRange interface: operation lowerBound(any, boolean)
+PASS IDBKeyRange interface: operation upperBound(any, boolean)
+PASS IDBKeyRange interface: operation bound(any, any, boolean, boolean)
+PASS IDBKeyRange interface: operation includes(any)
+PASS IDBKeyRange must be primary interface of [object IDBKeyRange]
+PASS Stringification of [object IDBKeyRange]
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "lower" with the proper type
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "upper" with the proper type
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "lowerOpen" with the proper type
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "upperOpen" with the proper type
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "only(any)" with the proper type
+PASS IDBKeyRange interface: calling only(any) on [object IDBKeyRange] with too few arguments must throw TypeError
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "lowerBound(any, boolean)" with the proper type
+PASS IDBKeyRange interface: calling lowerBound(any, boolean) on [object IDBKeyRange] with too few arguments must throw TypeError
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "upperBound(any, boolean)" with the proper type
+PASS IDBKeyRange interface: calling upperBound(any, boolean) on [object IDBKeyRange] with too few arguments must throw TypeError
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "bound(any, any, boolean, boolean)" with the proper type
+PASS IDBKeyRange interface: calling bound(any, any, boolean, boolean) on [object IDBKeyRange] with too few arguments must throw TypeError
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "includes(any)" with the proper type
+PASS IDBKeyRange interface: calling includes(any) on [object IDBKeyRange] with too few arguments must throw TypeError
+PASS IDBCursor interface: existence and properties of interface object
+PASS IDBCursor interface object length
+PASS IDBCursor interface object name
+PASS IDBCursor interface: existence and properties of interface prototype object
+PASS IDBCursor interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBCursor interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBCursor interface: attribute source
+PASS IDBCursor interface: attribute direction
+PASS IDBCursor interface: attribute key
+PASS IDBCursor interface: attribute primaryKey
+PASS IDBCursor interface: attribute request
+PASS IDBCursor interface: operation advance(unsigned long)
+PASS IDBCursor interface: operation continue(any)
+PASS IDBCursor interface: operation continuePrimaryKey(any, any)
+PASS IDBCursor interface: operation update(any)
+PASS IDBCursor interface: operation delete()
+PASS IDBCursorWithValue interface: existence and properties of interface object
+PASS IDBCursorWithValue interface object length
+PASS IDBCursorWithValue interface object name
+PASS IDBCursorWithValue interface: existence and properties of interface prototype object
+PASS IDBCursorWithValue interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBCursorWithValue interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBCursorWithValue interface: attribute value
+PASS IDBTransaction interface: existence and properties of interface object
+PASS IDBTransaction interface object length
+PASS IDBTransaction interface object name
+PASS IDBTransaction interface: existence and properties of interface prototype object
+PASS IDBTransaction interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBTransaction interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBTransaction interface: attribute objectStoreNames
+PASS IDBTransaction interface: attribute mode
+PASS IDBTransaction interface: attribute db
+PASS IDBTransaction interface: attribute error
+PASS IDBTransaction interface: operation objectStore(DOMString)
+PASS IDBTransaction interface: operation commit()
+PASS IDBTransaction interface: operation abort()
+PASS IDBTransaction interface: attribute onabort
+PASS IDBTransaction interface: attribute oncomplete
+PASS IDBTransaction interface: attribute onerror
+PASS Window interface: existence and properties of interface object
+PASS WorkerGlobalScope interface: attribute indexedDB
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-retina/external/wpt/WebCryptoAPI/idlharness.https.any.worker-expected.txt b/third_party/blink/web_tests/platform/mac-retina/external/wpt/WebCryptoAPI/idlharness.https.any.worker-expected.txt
new file mode 100644
index 0000000..482b74a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-retina/external/wpt/WebCryptoAPI/idlharness.https.any.worker-expected.txt
@@ -0,0 +1,74 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined
+PASS Crypto interface: existence and properties of interface object
+PASS Crypto interface object length
+PASS Crypto interface object name
+PASS Crypto interface: existence and properties of interface prototype object
+PASS Crypto interface: existence and properties of interface prototype object's "constructor" property
+PASS Crypto interface: existence and properties of interface prototype object's @@unscopables property
+PASS Crypto interface: attribute subtle
+PASS Crypto interface: operation getRandomValues(ArrayBufferView)
+PASS Crypto must be primary interface of crypto
+PASS Stringification of crypto
+PASS Crypto interface: crypto must inherit property "subtle" with the proper type
+PASS Crypto interface: crypto must inherit property "getRandomValues(ArrayBufferView)" with the proper type
+PASS Crypto interface: calling getRandomValues(ArrayBufferView) on crypto with too few arguments must throw TypeError
+PASS CryptoKey interface: existence and properties of interface object
+PASS CryptoKey interface object length
+PASS CryptoKey interface object name
+PASS CryptoKey interface: existence and properties of interface prototype object
+PASS CryptoKey interface: existence and properties of interface prototype object's "constructor" property
+PASS CryptoKey interface: existence and properties of interface prototype object's @@unscopables property
+PASS CryptoKey interface: attribute type
+PASS CryptoKey interface: attribute extractable
+PASS CryptoKey interface: attribute algorithm
+PASS CryptoKey interface: attribute usages
+PASS SubtleCrypto interface: existence and properties of interface object
+PASS SubtleCrypto interface object length
+PASS SubtleCrypto interface object name
+PASS SubtleCrypto interface: existence and properties of interface prototype object
+PASS SubtleCrypto interface: existence and properties of interface prototype object's "constructor" property
+PASS SubtleCrypto interface: existence and properties of interface prototype object's @@unscopables property
+PASS SubtleCrypto interface: operation encrypt(AlgorithmIdentifier, CryptoKey, BufferSource)
+PASS SubtleCrypto interface: operation decrypt(AlgorithmIdentifier, CryptoKey, BufferSource)
+PASS SubtleCrypto interface: operation sign(AlgorithmIdentifier, CryptoKey, BufferSource)
+PASS SubtleCrypto interface: operation verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource)
+PASS SubtleCrypto interface: operation digest(AlgorithmIdentifier, BufferSource)
+PASS SubtleCrypto interface: operation generateKey(AlgorithmIdentifier, boolean, [object Object])
+PASS SubtleCrypto interface: operation deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, [object Object])
+PASS SubtleCrypto interface: operation deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long)
+PASS SubtleCrypto interface: operation importKey(KeyFormat, [object Object],[object Object], AlgorithmIdentifier, boolean, [object Object])
+PASS SubtleCrypto interface: operation exportKey(KeyFormat, CryptoKey)
+PASS SubtleCrypto interface: operation wrapKey(KeyFormat, CryptoKey, CryptoKey, AlgorithmIdentifier)
+PASS SubtleCrypto interface: operation unwrapKey(KeyFormat, BufferSource, CryptoKey, AlgorithmIdentifier, AlgorithmIdentifier, boolean, [object Object])
+PASS SubtleCrypto must be primary interface of crypto.subtle
+PASS Stringification of crypto.subtle
+PASS SubtleCrypto interface: crypto.subtle must inherit property "encrypt(AlgorithmIdentifier, CryptoKey, BufferSource)" with the proper type
+PASS SubtleCrypto interface: calling encrypt(AlgorithmIdentifier, CryptoKey, BufferSource) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "decrypt(AlgorithmIdentifier, CryptoKey, BufferSource)" with the proper type
+PASS SubtleCrypto interface: calling decrypt(AlgorithmIdentifier, CryptoKey, BufferSource) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "sign(AlgorithmIdentifier, CryptoKey, BufferSource)" with the proper type
+PASS SubtleCrypto interface: calling sign(AlgorithmIdentifier, CryptoKey, BufferSource) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource)" with the proper type
+PASS SubtleCrypto interface: calling verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "digest(AlgorithmIdentifier, BufferSource)" with the proper type
+PASS SubtleCrypto interface: calling digest(AlgorithmIdentifier, BufferSource) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "generateKey(AlgorithmIdentifier, boolean, [object Object])" with the proper type
+PASS SubtleCrypto interface: calling generateKey(AlgorithmIdentifier, boolean, [object Object]) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, [object Object])" with the proper type
+PASS SubtleCrypto interface: calling deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, [object Object]) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long)" with the proper type
+PASS SubtleCrypto interface: calling deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "importKey(KeyFormat, [object Object],[object Object], AlgorithmIdentifier, boolean, [object Object])" with the proper type
+PASS SubtleCrypto interface: calling importKey(KeyFormat, [object Object],[object Object], AlgorithmIdentifier, boolean, [object Object]) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "exportKey(KeyFormat, CryptoKey)" with the proper type
+PASS SubtleCrypto interface: calling exportKey(KeyFormat, CryptoKey) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "wrapKey(KeyFormat, CryptoKey, CryptoKey, AlgorithmIdentifier)" with the proper type
+PASS SubtleCrypto interface: calling wrapKey(KeyFormat, CryptoKey, CryptoKey, AlgorithmIdentifier) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "unwrapKey(KeyFormat, BufferSource, CryptoKey, AlgorithmIdentifier, AlgorithmIdentifier, boolean, [object Object])" with the proper type
+PASS SubtleCrypto interface: calling unwrapKey(KeyFormat, BufferSource, CryptoKey, AlgorithmIdentifier, AlgorithmIdentifier, boolean, [object Object]) on crypto.subtle with too few arguments must throw TypeError
+PASS Window interface: existence and properties of interface object
+PASS WorkerGlobalScope interface: attribute crypto
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-retina/external/wpt/background-fetch/idlharness.https.any.serviceworker-expected.txt b/third_party/blink/web_tests/platform/mac-retina/external/wpt/background-fetch/idlharness.https.any.serviceworker-expected.txt
new file mode 100644
index 0000000..d0dfd483
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-retina/external/wpt/background-fetch/idlharness.https.any.serviceworker-expected.txt
@@ -0,0 +1,61 @@
+This is a testharness.js-based test.
+Found 57 tests; 56 PASS, 1 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface ServiceWorkerGlobalScope: original interface defined
+PASS Partial interface ServiceWorkerRegistration: original interface defined
+PASS BackgroundFetchManager interface: existence and properties of interface object
+PASS BackgroundFetchManager interface object length
+PASS BackgroundFetchManager interface object name
+PASS BackgroundFetchManager interface: existence and properties of interface prototype object
+PASS BackgroundFetchManager interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchManager interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchManager interface: operation fetch(DOMString, [object Object],[object Object], BackgroundFetchOptions)
+PASS BackgroundFetchManager interface: operation get(DOMString)
+PASS BackgroundFetchManager interface: operation getIds()
+PASS BackgroundFetchRegistration interface: existence and properties of interface object
+PASS BackgroundFetchRegistration interface object length
+PASS BackgroundFetchRegistration interface object name
+PASS BackgroundFetchRegistration interface: existence and properties of interface prototype object
+PASS BackgroundFetchRegistration interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchRegistration interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchRegistration interface: attribute id
+PASS BackgroundFetchRegistration interface: attribute uploadTotal
+PASS BackgroundFetchRegistration interface: attribute uploaded
+PASS BackgroundFetchRegistration interface: attribute downloadTotal
+PASS BackgroundFetchRegistration interface: attribute downloaded
+PASS BackgroundFetchRegistration interface: attribute result
+PASS BackgroundFetchRegistration interface: attribute failureReason
+PASS BackgroundFetchRegistration interface: attribute recordsAvailable
+PASS BackgroundFetchRegistration interface: attribute onprogress
+PASS BackgroundFetchRegistration interface: operation abort()
+PASS BackgroundFetchRegistration interface: operation match(RequestInfo, CacheQueryOptions)
+PASS BackgroundFetchRegistration interface: operation matchAll(RequestInfo, CacheQueryOptions)
+PASS BackgroundFetchRecord interface: existence and properties of interface object
+PASS BackgroundFetchRecord interface object length
+PASS BackgroundFetchRecord interface object name
+PASS BackgroundFetchRecord interface: existence and properties of interface prototype object
+PASS BackgroundFetchRecord interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchRecord interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchRecord interface: attribute request
+PASS BackgroundFetchRecord interface: attribute responseReady
+PASS BackgroundFetchEvent interface: existence and properties of interface object
+PASS BackgroundFetchEvent interface object length
+PASS BackgroundFetchEvent interface object name
+PASS BackgroundFetchEvent interface: existence and properties of interface prototype object
+PASS BackgroundFetchEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchEvent interface: attribute registration
+PASS BackgroundFetchUpdateUIEvent interface: existence and properties of interface object
+PASS BackgroundFetchUpdateUIEvent interface object length
+PASS BackgroundFetchUpdateUIEvent interface object name
+PASS BackgroundFetchUpdateUIEvent interface: existence and properties of interface prototype object
+PASS BackgroundFetchUpdateUIEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchUpdateUIEvent interface: existence and properties of interface prototype object's @@unscopables property
+FAIL BackgroundFetchUpdateUIEvent interface: operation updateUI(BackgroundFetchUIOptions) assert_equals: property has wrong .length expected 0 but got 1
+PASS ServiceWorkerRegistration interface: attribute backgroundFetch
+PASS ServiceWorkerGlobalScope interface: attribute onbackgroundfetchsuccess
+PASS ServiceWorkerGlobalScope interface: attribute onbackgroundfetchfail
+PASS ServiceWorkerGlobalScope interface: attribute onbackgroundfetchabort
+PASS ServiceWorkerGlobalScope interface: attribute onbackgroundfetchclick
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-retina/external/wpt/background-fetch/idlharness.https.any.worker-expected.txt b/third_party/blink/web_tests/platform/mac-retina/external/wpt/background-fetch/idlharness.https.any.worker-expected.txt
new file mode 100644
index 0000000..0b6e9e5
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-retina/external/wpt/background-fetch/idlharness.https.any.worker-expected.txt
@@ -0,0 +1,46 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface ServiceWorkerGlobalScope: original interface defined
+PASS Partial interface ServiceWorkerRegistration: original interface defined
+PASS BackgroundFetchManager interface: existence and properties of interface object
+PASS BackgroundFetchManager interface object length
+PASS BackgroundFetchManager interface object name
+PASS BackgroundFetchManager interface: existence and properties of interface prototype object
+PASS BackgroundFetchManager interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchManager interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchManager interface: operation fetch(DOMString, [object Object],[object Object], BackgroundFetchOptions)
+PASS BackgroundFetchManager interface: operation get(DOMString)
+PASS BackgroundFetchManager interface: operation getIds()
+PASS BackgroundFetchRegistration interface: existence and properties of interface object
+PASS BackgroundFetchRegistration interface object length
+PASS BackgroundFetchRegistration interface object name
+PASS BackgroundFetchRegistration interface: existence and properties of interface prototype object
+PASS BackgroundFetchRegistration interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchRegistration interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchRegistration interface: attribute id
+PASS BackgroundFetchRegistration interface: attribute uploadTotal
+PASS BackgroundFetchRegistration interface: attribute uploaded
+PASS BackgroundFetchRegistration interface: attribute downloadTotal
+PASS BackgroundFetchRegistration interface: attribute downloaded
+PASS BackgroundFetchRegistration interface: attribute result
+PASS BackgroundFetchRegistration interface: attribute failureReason
+PASS BackgroundFetchRegistration interface: attribute recordsAvailable
+PASS BackgroundFetchRegistration interface: attribute onprogress
+PASS BackgroundFetchRegistration interface: operation abort()
+PASS BackgroundFetchRegistration interface: operation match(RequestInfo, CacheQueryOptions)
+PASS BackgroundFetchRegistration interface: operation matchAll(RequestInfo, CacheQueryOptions)
+PASS BackgroundFetchRecord interface: existence and properties of interface object
+PASS BackgroundFetchRecord interface object length
+PASS BackgroundFetchRecord interface object name
+PASS BackgroundFetchRecord interface: existence and properties of interface prototype object
+PASS BackgroundFetchRecord interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchRecord interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchRecord interface: attribute request
+PASS BackgroundFetchRecord interface: attribute responseReady
+PASS BackgroundFetchEvent interface: existence and properties of interface object
+PASS BackgroundFetchUpdateUIEvent interface: existence and properties of interface object
+PASS ServiceWorkerRegistration interface: attribute backgroundFetch
+PASS ServiceWorkerGlobalScope interface: existence and properties of interface object
+PASS ExtendableEvent interface: existence and properties of interface object
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-retina/external/wpt/css/css-masking/idlharness-expected.txt b/third_party/blink/web_tests/platform/mac-retina/external/wpt/css/css-masking/idlharness-expected.txt
new file mode 100644
index 0000000..f188afc0
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-retina/external/wpt/css/css-masking/idlharness-expected.txt
@@ -0,0 +1,36 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+FAIL SVGClipPathElement interface: existence and properties of interface object assert_equals: prototype of SVGClipPathElement is not SVGElement expected function "function SVGElement() { [native code] }" but got function "function SVGGraphicsElement() { [native code] }"
+PASS SVGClipPathElement interface object length
+PASS SVGClipPathElement interface object name
+FAIL SVGClipPathElement interface: existence and properties of interface prototype object assert_equals: prototype of SVGClipPathElement.prototype is not SVGElement.prototype expected object "[object SVGElement]" but got object "[object SVGGraphicsElement]"
+PASS SVGClipPathElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGClipPathElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGClipPathElement interface: attribute clipPathUnits
+FAIL SVGClipPathElement interface: attribute transform assert_own_property: expected property "transform" missing
+PASS SVGClipPathElement must be primary interface of [object SVGClipPathElement]
+PASS Stringification of [object SVGClipPathElement]
+PASS SVGClipPathElement interface: [object SVGClipPathElement] must inherit property "clipPathUnits" with the proper type
+PASS SVGClipPathElement interface: [object SVGClipPathElement] must inherit property "transform" with the proper type
+PASS SVGMaskElement interface: existence and properties of interface object
+PASS SVGMaskElement interface object length
+PASS SVGMaskElement interface object name
+PASS SVGMaskElement interface: existence and properties of interface prototype object
+PASS SVGMaskElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGMaskElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGMaskElement interface: attribute maskUnits
+PASS SVGMaskElement interface: attribute maskContentUnits
+PASS SVGMaskElement interface: attribute x
+PASS SVGMaskElement interface: attribute y
+PASS SVGMaskElement interface: attribute width
+PASS SVGMaskElement interface: attribute height
+PASS SVGMaskElement must be primary interface of [object SVGMaskElement]
+PASS Stringification of [object SVGMaskElement]
+PASS SVGMaskElement interface: [object SVGMaskElement] must inherit property "maskUnits" with the proper type
+PASS SVGMaskElement interface: [object SVGMaskElement] must inherit property "maskContentUnits" with the proper type
+PASS SVGMaskElement interface: [object SVGMaskElement] must inherit property "x" with the proper type
+PASS SVGMaskElement interface: [object SVGMaskElement] must inherit property "y" with the proper type
+PASS SVGMaskElement interface: [object SVGMaskElement] must inherit property "width" with the proper type
+PASS SVGMaskElement interface: [object SVGMaskElement] must inherit property "height" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-retina/external/wpt/css/cssom-view/idlharness-expected.txt b/third_party/blink/web_tests/platform/mac-retina/external/wpt/css/cssom-view/idlharness-expected.txt
new file mode 100644
index 0000000..55af6db
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-retina/external/wpt/css/cssom-view/idlharness-expected.txt
@@ -0,0 +1,329 @@
+This is a testharness.js-based test.
+Found 325 tests; 252 PASS, 73 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface Window: original interface defined
+PASS Partial interface Document: original interface defined
+PASS Partial interface Element: original interface defined
+PASS Partial interface HTMLElement: original interface defined
+PASS Partial interface HTMLImageElement: original interface defined
+PASS Partial interface Range: original interface defined
+PASS Partial interface MouseEvent: original interface defined
+PASS Partial dictionary MouseEventInit: original dictionary defined
+PASS MediaQueryList interface: existence and properties of interface object
+PASS MediaQueryList interface object length
+PASS MediaQueryList interface object name
+PASS MediaQueryList interface: existence and properties of interface prototype object
+PASS MediaQueryList interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaQueryList interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaQueryList interface: attribute media
+PASS MediaQueryList interface: attribute matches
+PASS MediaQueryList interface: operation addListener(EventListener)
+PASS MediaQueryList interface: operation removeListener(EventListener)
+PASS MediaQueryList interface: attribute onchange
+PASS MediaQueryList must be primary interface of matchMedia("all")
+PASS Stringification of matchMedia("all")
+PASS MediaQueryList interface: matchMedia("all") must inherit property "media" with the proper type
+PASS MediaQueryList interface: matchMedia("all") must inherit property "matches" with the proper type
+PASS MediaQueryList interface: matchMedia("all") must inherit property "addListener(EventListener)" with the proper type
+PASS MediaQueryList interface: calling addListener(EventListener) on matchMedia("all") with too few arguments must throw TypeError
+PASS MediaQueryList interface: matchMedia("all") must inherit property "removeListener(EventListener)" with the proper type
+PASS MediaQueryList interface: calling removeListener(EventListener) on matchMedia("all") with too few arguments must throw TypeError
+PASS MediaQueryList interface: matchMedia("all") must inherit property "onchange" with the proper type
+PASS MediaQueryListEvent interface: existence and properties of interface object
+PASS MediaQueryListEvent interface object length
+PASS MediaQueryListEvent interface object name
+PASS MediaQueryListEvent interface: existence and properties of interface prototype object
+PASS MediaQueryListEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaQueryListEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaQueryListEvent interface: attribute media
+PASS MediaQueryListEvent interface: attribute matches
+PASS MediaQueryListEvent must be primary interface of new MediaQueryListEvent("change")
+PASS Stringification of new MediaQueryListEvent("change")
+PASS MediaQueryListEvent interface: new MediaQueryListEvent("change") must inherit property "media" with the proper type
+PASS MediaQueryListEvent interface: new MediaQueryListEvent("change") must inherit property "matches" with the proper type
+PASS Screen interface: existence and properties of interface object
+PASS Screen interface object length
+PASS Screen interface object name
+PASS Screen interface: existence and properties of interface prototype object
+PASS Screen interface: existence and properties of interface prototype object's "constructor" property
+PASS Screen interface: existence and properties of interface prototype object's @@unscopables property
+PASS Screen interface: attribute availWidth
+PASS Screen interface: attribute availHeight
+PASS Screen interface: attribute width
+PASS Screen interface: attribute height
+PASS Screen interface: attribute colorDepth
+PASS Screen interface: attribute pixelDepth
+PASS Screen must be primary interface of screen
+PASS Stringification of screen
+PASS Screen interface: screen must inherit property "availWidth" with the proper type
+PASS Screen interface: screen must inherit property "availHeight" with the proper type
+PASS Screen interface: screen must inherit property "width" with the proper type
+PASS Screen interface: screen must inherit property "height" with the proper type
+PASS Screen interface: screen must inherit property "colorDepth" with the proper type
+PASS Screen interface: screen must inherit property "pixelDepth" with the proper type
+FAIL CaretPosition interface: existence and properties of interface object assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface object length assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface object name assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: attribute offsetNode assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: attribute offset assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: operation getClientRect() assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition must be primary interface of document.caretPositionFromPoint(5, 5) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: document.caretPositionFromPoint is not a function"
+FAIL Stringification of document.caretPositionFromPoint(5, 5) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: document.caretPositionFromPoint is not a function"
+FAIL CaretPosition interface: document.caretPositionFromPoint(5, 5) must inherit property "offsetNode" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: document.caretPositionFromPoint is not a function"
+FAIL CaretPosition interface: document.caretPositionFromPoint(5, 5) must inherit property "offset" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: document.caretPositionFromPoint is not a function"
+FAIL CaretPosition interface: document.caretPositionFromPoint(5, 5) must inherit property "getClientRect()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: document.caretPositionFromPoint is not a function"
+FAIL CSSPseudoElement interface: operation getBoxQuads(BoxQuadOptions) assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+FAIL CSSPseudoElement interface: operation convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+FAIL CSSPseudoElement interface: operation convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+FAIL CSSPseudoElement interface: operation convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+PASS MouseEvent interface: attribute screenX
+PASS MouseEvent interface: attribute screenY
+PASS MouseEvent interface: attribute pageX
+PASS MouseEvent interface: attribute pageY
+PASS MouseEvent interface: attribute clientX
+PASS MouseEvent interface: attribute clientY
+PASS MouseEvent interface: attribute x
+PASS MouseEvent interface: attribute y
+PASS MouseEvent interface: attribute offsetX
+PASS MouseEvent interface: attribute offsetY
+PASS HTMLElement interface: attribute offsetParent
+PASS HTMLElement interface: attribute offsetTop
+PASS HTMLElement interface: attribute offsetLeft
+PASS HTMLElement interface: attribute offsetWidth
+PASS HTMLElement interface: attribute offsetHeight
+PASS HTMLElement interface: document.createElement("div") must inherit property "offsetParent" with the proper type
+PASS HTMLElement interface: document.createElement("div") must inherit property "offsetTop" with the proper type
+PASS HTMLElement interface: document.createElement("div") must inherit property "offsetLeft" with the proper type
+PASS HTMLElement interface: document.createElement("div") must inherit property "offsetWidth" with the proper type
+PASS HTMLElement interface: document.createElement("div") must inherit property "offsetHeight" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "getClientRects()" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "getBoundingClientRect()" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "scrollIntoView([object Object],[object Object])" with the proper type
+PASS Element interface: calling scrollIntoView([object Object],[object Object]) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scroll(ScrollToOptions)" with the proper type
+PASS Element interface: calling scroll(ScrollToOptions) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scroll(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scroll(unrestricted double, unrestricted double) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scrollTo(ScrollToOptions)" with the proper type
+PASS Element interface: calling scrollTo(ScrollToOptions) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scrollTo(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scrollTo(unrestricted double, unrestricted double) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scrollBy(ScrollToOptions)" with the proper type
+PASS Element interface: calling scrollBy(ScrollToOptions) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scrollBy(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scrollBy(unrestricted double, unrestricted double) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scrollTop" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "scrollLeft" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "scrollWidth" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "scrollHeight" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "clientTop" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "clientLeft" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "clientWidth" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "clientHeight" with the proper type
+FAIL Element interface: document.createElement("div") must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: calling getBoxQuads(BoxQuadOptions) on document.createElement("div") with too few arguments must throw TypeError assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: document.createElement("div") must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document.createElement("div") with too few arguments must throw TypeError assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: document.createElement("div") must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document.createElement("div") with too few arguments must throw TypeError assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: document.createElement("div") must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Element interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document.createElement("div") with too few arguments must throw TypeError assert_inherits: property "convertPointFromNode" not found in prototype chain
+PASS HTMLImageElement interface: attribute x
+PASS HTMLImageElement interface: attribute y
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "x" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "y" with the proper type
+PASS HTMLElement interface: document.createElement("img") must inherit property "offsetParent" with the proper type
+PASS HTMLElement interface: document.createElement("img") must inherit property "offsetTop" with the proper type
+PASS HTMLElement interface: document.createElement("img") must inherit property "offsetLeft" with the proper type
+PASS HTMLElement interface: document.createElement("img") must inherit property "offsetWidth" with the proper type
+PASS HTMLElement interface: document.createElement("img") must inherit property "offsetHeight" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "getClientRects()" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "getBoundingClientRect()" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "scrollIntoView([object Object],[object Object])" with the proper type
+PASS Element interface: calling scrollIntoView([object Object],[object Object]) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scroll(ScrollToOptions)" with the proper type
+PASS Element interface: calling scroll(ScrollToOptions) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scroll(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scroll(unrestricted double, unrestricted double) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scrollTo(ScrollToOptions)" with the proper type
+PASS Element interface: calling scrollTo(ScrollToOptions) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scrollTo(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scrollTo(unrestricted double, unrestricted double) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scrollBy(ScrollToOptions)" with the proper type
+PASS Element interface: calling scrollBy(ScrollToOptions) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scrollBy(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scrollBy(unrestricted double, unrestricted double) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scrollTop" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "scrollLeft" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "scrollWidth" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "scrollHeight" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "clientTop" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "clientLeft" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "clientWidth" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "clientHeight" with the proper type
+FAIL Element interface: document.createElement("img") must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: calling getBoxQuads(BoxQuadOptions) on document.createElement("img") with too few arguments must throw TypeError assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: document.createElement("img") must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document.createElement("img") with too few arguments must throw TypeError assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: document.createElement("img") must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document.createElement("img") with too few arguments must throw TypeError assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: document.createElement("img") must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Element interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document.createElement("img") with too few arguments must throw TypeError assert_inherits: property "convertPointFromNode" not found in prototype chain
+PASS Window interface: operation matchMedia(CSSOMString)
+PASS Window interface: attribute screen
+PASS Window interface: operation moveTo(long, long)
+PASS Window interface: operation moveBy(long, long)
+PASS Window interface: operation resizeTo(long, long)
+PASS Window interface: operation resizeBy(long, long)
+PASS Window interface: attribute innerWidth
+PASS Window interface: attribute innerHeight
+PASS Window interface: attribute scrollX
+PASS Window interface: attribute pageXOffset
+PASS Window interface: attribute scrollY
+PASS Window interface: attribute pageYOffset
+PASS Window interface: operation scroll(ScrollToOptions)
+PASS Window interface: operation scroll(unrestricted double, unrestricted double)
+PASS Window interface: operation scrollTo(ScrollToOptions)
+PASS Window interface: operation scrollTo(unrestricted double, unrestricted double)
+PASS Window interface: operation scrollBy(ScrollToOptions)
+PASS Window interface: operation scrollBy(unrestricted double, unrestricted double)
+PASS Window interface: attribute screenX
+PASS Window interface: attribute screenLeft
+PASS Window interface: attribute screenY
+PASS Window interface: attribute screenTop
+PASS Window interface: attribute outerWidth
+PASS Window interface: attribute outerHeight
+PASS Window interface: attribute devicePixelRatio
+PASS Window interface: window must inherit property "matchMedia(CSSOMString)" with the proper type
+PASS Window interface: calling matchMedia(CSSOMString) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "screen" with the proper type
+PASS Window interface: window must inherit property "moveTo(long, long)" with the proper type
+PASS Window interface: calling moveTo(long, long) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "moveBy(long, long)" with the proper type
+PASS Window interface: calling moveBy(long, long) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "resizeTo(long, long)" with the proper type
+PASS Window interface: calling resizeTo(long, long) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "resizeBy(long, long)" with the proper type
+PASS Window interface: calling resizeBy(long, long) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "innerWidth" with the proper type
+PASS Window interface: window must inherit property "innerHeight" with the proper type
+PASS Window interface: window must inherit property "scrollX" with the proper type
+PASS Window interface: window must inherit property "pageXOffset" with the proper type
+PASS Window interface: window must inherit property "scrollY" with the proper type
+PASS Window interface: window must inherit property "pageYOffset" with the proper type
+PASS Window interface: window must inherit property "scroll(ScrollToOptions)" with the proper type
+PASS Window interface: calling scroll(ScrollToOptions) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "scroll(unrestricted double, unrestricted double)" with the proper type
+PASS Window interface: calling scroll(unrestricted double, unrestricted double) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "scrollTo(ScrollToOptions)" with the proper type
+PASS Window interface: calling scrollTo(ScrollToOptions) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "scrollTo(unrestricted double, unrestricted double)" with the proper type
+PASS Window interface: calling scrollTo(unrestricted double, unrestricted double) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "scrollBy(ScrollToOptions)" with the proper type
+PASS Window interface: calling scrollBy(ScrollToOptions) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "scrollBy(unrestricted double, unrestricted double)" with the proper type
+PASS Window interface: calling scrollBy(unrestricted double, unrestricted double) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "screenX" with the proper type
+PASS Window interface: window must inherit property "screenLeft" with the proper type
+PASS Window interface: window must inherit property "screenY" with the proper type
+PASS Window interface: window must inherit property "screenTop" with the proper type
+PASS Window interface: window must inherit property "outerWidth" with the proper type
+PASS Window interface: window must inherit property "outerHeight" with the proper type
+PASS Window interface: window must inherit property "devicePixelRatio" with the proper type
+PASS Document interface: operation elementFromPoint(double, double)
+PASS Document interface: operation elementsFromPoint(double, double)
+FAIL Document interface: operation caretPositionFromPoint(double, double) assert_own_property: interface prototype object missing non-static operation expected property "caretPositionFromPoint" missing
+PASS Document interface: attribute scrollingElement
+FAIL Document interface: operation getBoxQuads(BoxQuadOptions) assert_own_property: interface prototype object missing non-static operation expected property "getBoxQuads" missing
+FAIL Document interface: operation convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertQuadFromNode" missing
+FAIL Document interface: operation convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertRectFromNode" missing
+FAIL Document interface: operation convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertPointFromNode" missing
+PASS Document interface: document must inherit property "elementFromPoint(double, double)" with the proper type
+PASS Document interface: calling elementFromPoint(double, double) on document with too few arguments must throw TypeError
+PASS Document interface: document must inherit property "elementsFromPoint(double, double)" with the proper type
+PASS Document interface: calling elementsFromPoint(double, double) on document with too few arguments must throw TypeError
+FAIL Document interface: document must inherit property "caretPositionFromPoint(double, double)" with the proper type assert_inherits: property "caretPositionFromPoint" not found in prototype chain
+FAIL Document interface: calling caretPositionFromPoint(double, double) on document with too few arguments must throw TypeError assert_inherits: property "caretPositionFromPoint" not found in prototype chain
+PASS Document interface: document must inherit property "scrollingElement" with the proper type
+FAIL Document interface: document must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Document interface: calling getBoxQuads(BoxQuadOptions) on document with too few arguments must throw TypeError assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Document interface: document must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Document interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document with too few arguments must throw TypeError assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Document interface: document must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Document interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document with too few arguments must throw TypeError assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Document interface: document must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Document interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document with too few arguments must throw TypeError assert_inherits: property "convertPointFromNode" not found in prototype chain
+PASS Element interface: operation getClientRects()
+PASS Element interface: operation getBoundingClientRect()
+PASS Element interface: operation scrollIntoView([object Object],[object Object])
+PASS Element interface: operation scroll(ScrollToOptions)
+PASS Element interface: operation scroll(unrestricted double, unrestricted double)
+PASS Element interface: operation scrollTo(ScrollToOptions)
+PASS Element interface: operation scrollTo(unrestricted double, unrestricted double)
+PASS Element interface: operation scrollBy(ScrollToOptions)
+PASS Element interface: operation scrollBy(unrestricted double, unrestricted double)
+PASS Element interface: attribute scrollTop
+PASS Element interface: attribute scrollLeft
+PASS Element interface: attribute scrollWidth
+PASS Element interface: attribute scrollHeight
+PASS Element interface: attribute clientTop
+PASS Element interface: attribute clientLeft
+PASS Element interface: attribute clientWidth
+PASS Element interface: attribute clientHeight
+FAIL Element interface: operation getBoxQuads(BoxQuadOptions) assert_own_property: interface prototype object missing non-static operation expected property "getBoxQuads" missing
+FAIL Element interface: operation convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertQuadFromNode" missing
+FAIL Element interface: operation convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertRectFromNode" missing
+FAIL Element interface: operation convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertPointFromNode" missing
+PASS Element interface: document.createElementNS("x", "y") must inherit property "getClientRects()" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "getBoundingClientRect()" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollIntoView([object Object],[object Object])" with the proper type
+PASS Element interface: calling scrollIntoView([object Object],[object Object]) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scroll(ScrollToOptions)" with the proper type
+PASS Element interface: calling scroll(ScrollToOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scroll(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scroll(unrestricted double, unrestricted double) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollTo(ScrollToOptions)" with the proper type
+PASS Element interface: calling scrollTo(ScrollToOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollTo(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scrollTo(unrestricted double, unrestricted double) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollBy(ScrollToOptions)" with the proper type
+PASS Element interface: calling scrollBy(ScrollToOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollBy(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scrollBy(unrestricted double, unrestricted double) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollTop" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollLeft" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollWidth" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollHeight" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "clientTop" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "clientLeft" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "clientWidth" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "clientHeight" with the proper type
+FAIL Element interface: document.createElementNS("x", "y") must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: calling getBoxQuads(BoxQuadOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: document.createElementNS("x", "y") must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: document.createElementNS("x", "y") must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: document.createElementNS("x", "y") must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Element interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Text interface: operation getBoxQuads(BoxQuadOptions) assert_own_property: interface prototype object missing non-static operation expected property "getBoxQuads" missing
+FAIL Text interface: operation convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertQuadFromNode" missing
+FAIL Text interface: operation convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertRectFromNode" missing
+FAIL Text interface: operation convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertPointFromNode" missing
+FAIL Text interface: document.createTextNode("x") must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Text interface: calling getBoxQuads(BoxQuadOptions) on document.createTextNode("x") with too few arguments must throw TypeError assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Text interface: document.createTextNode("x") must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Text interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document.createTextNode("x") with too few arguments must throw TypeError assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Text interface: document.createTextNode("x") must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Text interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document.createTextNode("x") with too few arguments must throw TypeError assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Text interface: document.createTextNode("x") must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Text interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document.createTextNode("x") with too few arguments must throw TypeError assert_inherits: property "convertPointFromNode" not found in prototype chain
+PASS Range interface: operation getClientRects()
+PASS Range interface: operation getBoundingClientRect()
+PASS Range interface: new Range() must inherit property "getClientRects()" with the proper type
+PASS Range interface: new Range() must inherit property "getBoundingClientRect()" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-retina/external/wpt/dom/idlharness.window_include=Node-expected.txt b/third_party/blink/web_tests/platform/mac-retina/external/wpt/dom/idlharness.window_include=Node-expected.txt
new file mode 100644
index 0000000..60bf7dfc
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-retina/external/wpt/dom/idlharness.window_include=Node-expected.txt
@@ -0,0 +1,616 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface Window: original interface defined
+PASS Node interface: existence and properties of interface object
+PASS Node interface object length
+PASS Node interface object name
+PASS Node interface: existence and properties of interface prototype object
+PASS Node interface: existence and properties of interface prototype object's "constructor" property
+PASS Node interface: existence and properties of interface prototype object's @@unscopables property
+PASS Node interface: constant ELEMENT_NODE on interface object
+PASS Node interface: constant ELEMENT_NODE on interface prototype object
+PASS Node interface: constant ATTRIBUTE_NODE on interface object
+PASS Node interface: constant ATTRIBUTE_NODE on interface prototype object
+PASS Node interface: constant TEXT_NODE on interface object
+PASS Node interface: constant TEXT_NODE on interface prototype object
+PASS Node interface: constant CDATA_SECTION_NODE on interface object
+PASS Node interface: constant CDATA_SECTION_NODE on interface prototype object
+PASS Node interface: constant ENTITY_REFERENCE_NODE on interface object
+PASS Node interface: constant ENTITY_REFERENCE_NODE on interface prototype object
+PASS Node interface: constant ENTITY_NODE on interface object
+PASS Node interface: constant ENTITY_NODE on interface prototype object
+PASS Node interface: constant PROCESSING_INSTRUCTION_NODE on interface object
+PASS Node interface: constant PROCESSING_INSTRUCTION_NODE on interface prototype object
+PASS Node interface: constant COMMENT_NODE on interface object
+PASS Node interface: constant COMMENT_NODE on interface prototype object
+PASS Node interface: constant DOCUMENT_NODE on interface object
+PASS Node interface: constant DOCUMENT_NODE on interface prototype object
+PASS Node interface: constant DOCUMENT_TYPE_NODE on interface object
+PASS Node interface: constant DOCUMENT_TYPE_NODE on interface prototype object
+PASS Node interface: constant DOCUMENT_FRAGMENT_NODE on interface object
+PASS Node interface: constant DOCUMENT_FRAGMENT_NODE on interface prototype object
+PASS Node interface: constant NOTATION_NODE on interface object
+PASS Node interface: constant NOTATION_NODE on interface prototype object
+PASS Node interface: attribute nodeType
+PASS Node interface: attribute nodeName
+PASS Node interface: attribute baseURI
+PASS Node interface: attribute isConnected
+PASS Node interface: attribute ownerDocument
+PASS Node interface: operation getRootNode(GetRootNodeOptions)
+PASS Node interface: attribute parentNode
+PASS Node interface: attribute parentElement
+PASS Node interface: operation hasChildNodes()
+PASS Node interface: attribute childNodes
+PASS Node interface: attribute firstChild
+PASS Node interface: attribute lastChild
+PASS Node interface: attribute previousSibling
+PASS Node interface: attribute nextSibling
+PASS Node interface: attribute nodeValue
+PASS Node interface: attribute textContent
+PASS Node interface: operation normalize()
+PASS Node interface: operation cloneNode(boolean)
+PASS Node interface: operation isEqualNode(Node)
+PASS Node interface: operation isSameNode(Node)
+PASS Node interface: constant DOCUMENT_POSITION_DISCONNECTED on interface object
+PASS Node interface: constant DOCUMENT_POSITION_DISCONNECTED on interface prototype object
+PASS Node interface: constant DOCUMENT_POSITION_PRECEDING on interface object
+PASS Node interface: constant DOCUMENT_POSITION_PRECEDING on interface prototype object
+PASS Node interface: constant DOCUMENT_POSITION_FOLLOWING on interface object
+PASS Node interface: constant DOCUMENT_POSITION_FOLLOWING on interface prototype object
+PASS Node interface: constant DOCUMENT_POSITION_CONTAINS on interface object
+PASS Node interface: constant DOCUMENT_POSITION_CONTAINS on interface prototype object
+PASS Node interface: constant DOCUMENT_POSITION_CONTAINED_BY on interface object
+PASS Node interface: constant DOCUMENT_POSITION_CONTAINED_BY on interface prototype object
+PASS Node interface: constant DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC on interface object
+PASS Node interface: constant DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC on interface prototype object
+PASS Node interface: operation compareDocumentPosition(Node)
+PASS Node interface: operation contains(Node)
+PASS Node interface: operation lookupPrefix(DOMString)
+PASS Node interface: operation lookupNamespaceURI(DOMString)
+PASS Node interface: operation isDefaultNamespace(DOMString)
+PASS Node interface: operation insertBefore(Node, Node)
+PASS Node interface: operation appendChild(Node)
+PASS Node interface: operation replaceChild(Node, Node)
+PASS Node interface: operation removeChild(Node)
+PASS Node interface: new Document() must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "nodeType" with the proper type
+PASS Node interface: new Document() must inherit property "nodeName" with the proper type
+PASS Node interface: new Document() must inherit property "baseURI" with the proper type
+PASS Node interface: new Document() must inherit property "isConnected" with the proper type
+PASS Node interface: new Document() must inherit property "ownerDocument" with the proper type
+PASS Node interface: new Document() must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "parentNode" with the proper type
+PASS Node interface: new Document() must inherit property "parentElement" with the proper type
+PASS Node interface: new Document() must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: new Document() must inherit property "childNodes" with the proper type
+PASS Node interface: new Document() must inherit property "firstChild" with the proper type
+PASS Node interface: new Document() must inherit property "lastChild" with the proper type
+PASS Node interface: new Document() must inherit property "previousSibling" with the proper type
+PASS Node interface: new Document() must inherit property "nextSibling" with the proper type
+PASS Node interface: new Document() must inherit property "nodeValue" with the proper type
+PASS Node interface: new Document() must inherit property "textContent" with the proper type
+PASS Node interface: new Document() must inherit property "normalize()" with the proper type
+PASS Node interface: new Document() must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: new Document() must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "nodeType" with the proper type
+PASS Node interface: xmlDoc must inherit property "nodeName" with the proper type
+PASS Node interface: xmlDoc must inherit property "baseURI" with the proper type
+PASS Node interface: xmlDoc must inherit property "isConnected" with the proper type
+PASS Node interface: xmlDoc must inherit property "ownerDocument" with the proper type
+PASS Node interface: xmlDoc must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "parentNode" with the proper type
+PASS Node interface: xmlDoc must inherit property "parentElement" with the proper type
+PASS Node interface: xmlDoc must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: xmlDoc must inherit property "childNodes" with the proper type
+PASS Node interface: xmlDoc must inherit property "firstChild" with the proper type
+PASS Node interface: xmlDoc must inherit property "lastChild" with the proper type
+PASS Node interface: xmlDoc must inherit property "previousSibling" with the proper type
+PASS Node interface: xmlDoc must inherit property "nextSibling" with the proper type
+PASS Node interface: xmlDoc must inherit property "nodeValue" with the proper type
+PASS Node interface: xmlDoc must inherit property "textContent" with the proper type
+PASS Node interface: xmlDoc must inherit property "normalize()" with the proper type
+PASS Node interface: xmlDoc must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: xmlDoc must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "nodeType" with the proper type
+PASS Node interface: document.doctype must inherit property "nodeName" with the proper type
+PASS Node interface: document.doctype must inherit property "baseURI" with the proper type
+PASS Node interface: document.doctype must inherit property "isConnected" with the proper type
+PASS Node interface: document.doctype must inherit property "ownerDocument" with the proper type
+PASS Node interface: document.doctype must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "parentNode" with the proper type
+PASS Node interface: document.doctype must inherit property "parentElement" with the proper type
+PASS Node interface: document.doctype must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: document.doctype must inherit property "childNodes" with the proper type
+PASS Node interface: document.doctype must inherit property "firstChild" with the proper type
+PASS Node interface: document.doctype must inherit property "lastChild" with the proper type
+PASS Node interface: document.doctype must inherit property "previousSibling" with the proper type
+PASS Node interface: document.doctype must inherit property "nextSibling" with the proper type
+PASS Node interface: document.doctype must inherit property "nodeValue" with the proper type
+PASS Node interface: document.doctype must inherit property "textContent" with the proper type
+PASS Node interface: document.doctype must inherit property "normalize()" with the proper type
+PASS Node interface: document.doctype must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: document.doctype must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "nodeType" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "nodeName" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "baseURI" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "isConnected" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "ownerDocument" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "parentNode" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "parentElement" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "childNodes" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "firstChild" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "lastChild" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "previousSibling" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "nextSibling" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "nodeValue" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "textContent" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "normalize()" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: element must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: element must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: element must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: element must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: element must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: element must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: element must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: element must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: element must inherit property "nodeType" with the proper type
+PASS Node interface: element must inherit property "nodeName" with the proper type
+PASS Node interface: element must inherit property "baseURI" with the proper type
+PASS Node interface: element must inherit property "isConnected" with the proper type
+PASS Node interface: element must inherit property "ownerDocument" with the proper type
+PASS Node interface: element must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "parentNode" with the proper type
+PASS Node interface: element must inherit property "parentElement" with the proper type
+PASS Node interface: element must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: element must inherit property "childNodes" with the proper type
+PASS Node interface: element must inherit property "firstChild" with the proper type
+PASS Node interface: element must inherit property "lastChild" with the proper type
+PASS Node interface: element must inherit property "previousSibling" with the proper type
+PASS Node interface: element must inherit property "nextSibling" with the proper type
+PASS Node interface: element must inherit property "nodeValue" with the proper type
+PASS Node interface: element must inherit property "textContent" with the proper type
+PASS Node interface: element must inherit property "normalize()" with the proper type
+PASS Node interface: element must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: element must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on element with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "nodeType" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "nodeName" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "baseURI" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "isConnected" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "ownerDocument" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "parentNode" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "parentElement" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "childNodes" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "firstChild" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "lastChild" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "previousSibling" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "nextSibling" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "nodeValue" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "textContent" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "normalize()" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "nodeType" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "nodeName" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "baseURI" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "isConnected" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "ownerDocument" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "parentNode" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "parentElement" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "childNodes" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "firstChild" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "lastChild" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "previousSibling" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "nextSibling" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "nodeValue" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "textContent" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "normalize()" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "nodeType" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "nodeName" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "baseURI" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "isConnected" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "ownerDocument" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "parentNode" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "parentElement" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "childNodes" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "firstChild" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "lastChild" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "previousSibling" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "nextSibling" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "nodeValue" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "textContent" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "normalize()" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "nodeType" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "nodeName" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "baseURI" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "isConnected" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "ownerDocument" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "parentNode" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "parentElement" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "childNodes" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "firstChild" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "lastChild" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "previousSibling" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "nextSibling" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "nodeValue" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "textContent" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "normalize()" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on document.createComment("abc") with too few arguments must throw TypeError
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-retina/external/wpt/encrypted-media/idlharness.https-expected.txt b/third_party/blink/web_tests/platform/mac-retina/external/wpt/encrypted-media/idlharness.https-expected.txt
new file mode 100644
index 0000000..3b1c95e
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-retina/external/wpt/encrypted-media/idlharness.https-expected.txt
@@ -0,0 +1,75 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface Navigator: original interface defined
+PASS Partial interface Navigator: valid exposure set
+PASS Partial interface HTMLMediaElement: original interface defined
+PASS Partial interface HTMLMediaElement: valid exposure set
+PASS MediaKeySystemAccess interface: existence and properties of interface object
+PASS MediaKeySystemAccess interface object length
+PASS MediaKeySystemAccess interface object name
+PASS MediaKeySystemAccess interface: existence and properties of interface prototype object
+PASS MediaKeySystemAccess interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaKeySystemAccess interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaKeySystemAccess interface: attribute keySystem
+PASS MediaKeySystemAccess interface: operation getConfiguration()
+PASS MediaKeySystemAccess interface: operation createMediaKeys()
+PASS MediaKeys interface: existence and properties of interface object
+PASS MediaKeys interface object length
+PASS MediaKeys interface object name
+PASS MediaKeys interface: existence and properties of interface prototype object
+PASS MediaKeys interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaKeys interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaKeys interface: operation createSession(MediaKeySessionType)
+PASS MediaKeys interface: operation setServerCertificate(BufferSource)
+PASS MediaKeySession interface: existence and properties of interface object
+PASS MediaKeySession interface object length
+PASS MediaKeySession interface object name
+PASS MediaKeySession interface: existence and properties of interface prototype object
+PASS MediaKeySession interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaKeySession interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaKeySession interface: attribute sessionId
+PASS MediaKeySession interface: attribute expiration
+PASS MediaKeySession interface: attribute closed
+PASS MediaKeySession interface: attribute keyStatuses
+PASS MediaKeySession interface: attribute onkeystatuseschange
+PASS MediaKeySession interface: attribute onmessage
+PASS MediaKeySession interface: operation generateRequest(DOMString, BufferSource)
+PASS MediaKeySession interface: operation load(DOMString)
+PASS MediaKeySession interface: operation update(BufferSource)
+PASS MediaKeySession interface: operation close()
+PASS MediaKeySession interface: operation remove()
+PASS MediaKeyStatusMap interface: existence and properties of interface object
+PASS MediaKeyStatusMap interface object length
+PASS MediaKeyStatusMap interface object name
+PASS MediaKeyStatusMap interface: existence and properties of interface prototype object
+PASS MediaKeyStatusMap interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaKeyStatusMap interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaKeyStatusMap interface: iterable<BufferSource, MediaKeyStatus>
+PASS MediaKeyStatusMap interface: attribute size
+PASS MediaKeyStatusMap interface: operation has(BufferSource)
+PASS MediaKeyStatusMap interface: operation get(BufferSource)
+PASS MediaKeyMessageEvent interface: existence and properties of interface object
+PASS MediaKeyMessageEvent interface object length
+PASS MediaKeyMessageEvent interface object name
+PASS MediaKeyMessageEvent interface: existence and properties of interface prototype object
+PASS MediaKeyMessageEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaKeyMessageEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaKeyMessageEvent interface: attribute messageType
+PASS MediaKeyMessageEvent interface: attribute message
+PASS MediaEncryptedEvent interface: existence and properties of interface object
+PASS MediaEncryptedEvent interface object length
+PASS MediaEncryptedEvent interface object name
+PASS MediaEncryptedEvent interface: existence and properties of interface prototype object
+PASS MediaEncryptedEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaEncryptedEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaEncryptedEvent interface: attribute initDataType
+PASS MediaEncryptedEvent interface: attribute initData
+PASS HTMLMediaElement interface: attribute mediaKeys
+PASS HTMLMediaElement interface: attribute onencrypted
+PASS HTMLMediaElement interface: attribute onwaitingforkey
+PASS HTMLMediaElement interface: operation setMediaKeys(MediaKeys)
+PASS Navigator interface: operation requestMediaKeySystemAccess(DOMString, [object Object])
+PASS Navigator interface: navigator must inherit property "requestMediaKeySystemAccess(DOMString, [object Object])" with the proper type
+PASS Navigator interface: calling requestMediaKeySystemAccess(DOMString, [object Object]) on navigator with too few arguments must throw TypeError
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-retina/external/wpt/geolocation-API/idlharness.window-expected.txt b/third_party/blink/web_tests/platform/mac-retina/external/wpt/geolocation-API/idlharness.window-expected.txt
new file mode 100644
index 0000000..6fa16430
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-retina/external/wpt/geolocation-API/idlharness.window-expected.txt
@@ -0,0 +1,14 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface Navigator: original interface defined
+PASS Stringification of navigator.geolocation
+PASS Geolocation interface: navigator.geolocation must inherit property "getCurrentPosition(PositionCallback, PositionErrorCallback, PositionOptions)" with the proper type
+PASS Geolocation interface: calling getCurrentPosition(PositionCallback, PositionErrorCallback, PositionOptions) on navigator.geolocation with too few arguments must throw TypeError
+PASS Geolocation interface: navigator.geolocation must inherit property "watchPosition(PositionCallback, PositionErrorCallback, PositionOptions)" with the proper type
+PASS Geolocation interface: calling watchPosition(PositionCallback, PositionErrorCallback, PositionOptions) on navigator.geolocation with too few arguments must throw TypeError
+PASS Geolocation interface: navigator.geolocation must inherit property "clearWatch(long)" with the proper type
+PASS Geolocation interface: calling clearWatch(long) on navigator.geolocation with too few arguments must throw TypeError
+PASS Navigator interface: attribute geolocation
+PASS Navigator interface: navigator must inherit property "geolocation" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-retina/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt b/third_party/blink/web_tests/platform/mac-retina/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
new file mode 100644
index 0000000..579bca6
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-retina/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
@@ -0,0 +1,3593 @@
+This is a testharness.js-based test.
+Found 3589 tests; 3549 PASS, 40 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface Document: original interface defined
+PASS Partial interface mixin DocumentOrShadowRoot: original interface mixin defined
+PASS Partial interface mixin NavigatorID: original interface mixin defined
+PASS Partial interface HTMLAnchorElement: original interface defined
+PASS Partial interface HTMLAreaElement: original interface defined
+PASS Partial interface HTMLBodyElement: original interface defined
+PASS Partial interface HTMLBRElement: original interface defined
+PASS Partial interface HTMLTableCaptionElement: original interface defined
+PASS Partial interface HTMLTableColElement: original interface defined
+PASS Partial interface HTMLDivElement: original interface defined
+PASS Partial interface HTMLDListElement: original interface defined
+PASS Partial interface HTMLEmbedElement: original interface defined
+PASS Partial interface HTMLHeadingElement: original interface defined
+PASS Partial interface HTMLHRElement: original interface defined
+PASS Partial interface HTMLHtmlElement: original interface defined
+PASS Partial interface HTMLIFrameElement: original interface defined
+PASS Partial interface HTMLImageElement: original interface defined
+PASS Partial interface HTMLInputElement: original interface defined
+PASS Partial interface HTMLLegendElement: original interface defined
+PASS Partial interface HTMLLIElement: original interface defined
+PASS Partial interface HTMLLinkElement: original interface defined
+PASS Partial interface HTMLMenuElement: original interface defined
+PASS Partial interface HTMLMetaElement: original interface defined
+PASS Partial interface HTMLObjectElement: original interface defined
+PASS Partial interface HTMLOListElement: original interface defined
+PASS Partial interface HTMLParagraphElement: original interface defined
+PASS Partial interface HTMLParamElement: original interface defined
+PASS Partial interface HTMLPreElement: original interface defined
+PASS Partial interface HTMLStyleElement: original interface defined
+PASS Partial interface HTMLScriptElement: original interface defined
+PASS Partial interface HTMLTableElement: original interface defined
+PASS Partial interface HTMLTableSectionElement: original interface defined
+PASS Partial interface HTMLTableCellElement: original interface defined
+PASS Partial interface HTMLTableRowElement: original interface defined
+PASS Partial interface HTMLUListElement: original interface defined
+PASS Partial interface Document[2]: original interface defined
+PASS Partial interface Window: original interface defined
+PASS HTMLAllCollection interface: existence and properties of interface object
+PASS HTMLAllCollection interface object length
+PASS HTMLAllCollection interface object name
+PASS HTMLAllCollection interface: existence and properties of interface prototype object
+PASS HTMLAllCollection interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLAllCollection interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLAllCollection interface: attribute length
+PASS HTMLAllCollection interface: operation namedItem(DOMString)
+PASS HTMLAllCollection interface: operation item(DOMString)
+FAIL HTMLAllCollection must be primary interface of document.all assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL Stringification of document.all assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL HTMLAllCollection interface: document.all must inherit property "length" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL HTMLAllCollection interface: document.all must inherit property "namedItem(DOMString)" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL HTMLAllCollection interface: calling namedItem(DOMString) on document.all with too few arguments must throw TypeError assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL HTMLAllCollection interface: document.all must inherit property "item(DOMString)" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL HTMLAllCollection interface: calling item(DOMString) on document.all with too few arguments must throw TypeError assert_equals: wrong typeof object expected "object" but got "undefined"
+PASS HTMLFormControlsCollection interface: existence and properties of interface object
+PASS HTMLFormControlsCollection interface object length
+PASS HTMLFormControlsCollection interface object name
+PASS HTMLFormControlsCollection interface: existence and properties of interface prototype object
+PASS HTMLFormControlsCollection interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFormControlsCollection interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFormControlsCollection interface: operation namedItem(DOMString)
+PASS HTMLFormControlsCollection must be primary interface of document.createElement("form").elements
+PASS Stringification of document.createElement("form").elements
+PASS HTMLFormControlsCollection interface: document.createElement("form").elements must inherit property "namedItem(DOMString)" with the proper type
+PASS HTMLFormControlsCollection interface: calling namedItem(DOMString) on document.createElement("form").elements with too few arguments must throw TypeError
+PASS HTMLOptionsCollection interface: existence and properties of interface object
+PASS HTMLOptionsCollection interface object length
+PASS HTMLOptionsCollection interface object name
+PASS HTMLOptionsCollection interface: existence and properties of interface prototype object
+PASS HTMLOptionsCollection interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLOptionsCollection interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLOptionsCollection interface: attribute length
+PASS HTMLOptionsCollection interface: operation add([object Object],[object Object], [object Object],[object Object])
+PASS HTMLOptionsCollection interface: operation remove(long)
+PASS HTMLOptionsCollection interface: attribute selectedIndex
+PASS HTMLOptionsCollection must be primary interface of document.createElement("select").options
+PASS Stringification of document.createElement("select").options
+PASS HTMLOptionsCollection interface: document.createElement("select").options must inherit property "length" with the proper type
+PASS HTMLOptionsCollection interface: document.createElement("select").options must inherit property "add([object Object],[object Object], [object Object],[object Object])" with the proper type
+PASS HTMLOptionsCollection interface: calling add([object Object],[object Object], [object Object],[object Object]) on document.createElement("select").options with too few arguments must throw TypeError
+PASS HTMLOptionsCollection interface: document.createElement("select").options must inherit property "remove(long)" with the proper type
+PASS HTMLOptionsCollection interface: calling remove(long) on document.createElement("select").options with too few arguments must throw TypeError
+PASS HTMLOptionsCollection interface: document.createElement("select").options must inherit property "selectedIndex" with the proper type
+PASS HTMLElement interface: existence and properties of interface object
+PASS HTMLElement interface object length
+PASS HTMLElement interface object name
+PASS HTMLElement interface: existence and properties of interface prototype object
+PASS HTMLElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLElement interface: attribute title
+PASS HTMLElement interface: attribute lang
+PASS HTMLElement interface: attribute translate
+PASS HTMLElement interface: attribute dir
+PASS HTMLElement interface: attribute hidden
+PASS HTMLElement interface: operation click()
+PASS HTMLElement interface: attribute accessKey
+FAIL HTMLElement interface: attribute accessKeyLabel assert_true: The prototype object must have a property "accessKeyLabel" expected true got false
+PASS HTMLElement interface: attribute draggable
+PASS HTMLElement interface: attribute spellcheck
+PASS HTMLElement interface: attribute autocapitalize
+PASS HTMLElement interface: attribute innerText
+PASS HTMLElement interface: operation attachInternals()
+PASS HTMLElement interface: attribute onabort
+PASS HTMLElement interface: attribute onauxclick
+PASS HTMLElement interface: attribute onblur
+PASS HTMLElement interface: attribute oncancel
+PASS HTMLElement interface: attribute oncanplay
+PASS HTMLElement interface: attribute oncanplaythrough
+PASS HTMLElement interface: attribute onchange
+PASS HTMLElement interface: attribute onclick
+PASS HTMLElement interface: attribute onclose
+PASS HTMLElement interface: attribute oncontextmenu
+PASS HTMLElement interface: attribute oncuechange
+PASS HTMLElement interface: attribute ondblclick
+PASS HTMLElement interface: attribute ondrag
+PASS HTMLElement interface: attribute ondragend
+PASS HTMLElement interface: attribute ondragenter
+FAIL HTMLElement interface: attribute ondragexit assert_true: The prototype object must have a property "ondragexit" expected true got false
+PASS HTMLElement interface: attribute ondragleave
+PASS HTMLElement interface: attribute ondragover
+PASS HTMLElement interface: attribute ondragstart
+PASS HTMLElement interface: attribute ondrop
+PASS HTMLElement interface: attribute ondurationchange
+PASS HTMLElement interface: attribute onemptied
+PASS HTMLElement interface: attribute onended
+PASS HTMLElement interface: attribute onerror
+PASS HTMLElement interface: attribute onfocus
+PASS HTMLElement interface: attribute onformdata
+PASS HTMLElement interface: attribute oninput
+PASS HTMLElement interface: attribute oninvalid
+PASS HTMLElement interface: attribute onkeydown
+PASS HTMLElement interface: attribute onkeypress
+PASS HTMLElement interface: attribute onkeyup
+PASS HTMLElement interface: attribute onload
+PASS HTMLElement interface: attribute onloadeddata
+PASS HTMLElement interface: attribute onloadedmetadata
+PASS HTMLElement interface: attribute onloadstart
+PASS HTMLElement interface: attribute onmousedown
+PASS HTMLElement interface: attribute onmouseenter
+PASS HTMLElement interface: attribute onmouseleave
+PASS HTMLElement interface: attribute onmousemove
+PASS HTMLElement interface: attribute onmouseout
+PASS HTMLElement interface: attribute onmouseover
+PASS HTMLElement interface: attribute onmouseup
+PASS HTMLElement interface: attribute onwheel
+PASS HTMLElement interface: attribute onpause
+PASS HTMLElement interface: attribute onplay
+PASS HTMLElement interface: attribute onplaying
+PASS HTMLElement interface: attribute onprogress
+PASS HTMLElement interface: attribute onratechange
+PASS HTMLElement interface: attribute onreset
+PASS HTMLElement interface: attribute onresize
+PASS HTMLElement interface: attribute onscroll
+FAIL HTMLElement interface: attribute onsecuritypolicyviolation assert_true: The prototype object must have a property "onsecuritypolicyviolation" expected true got false
+PASS HTMLElement interface: attribute onseeked
+PASS HTMLElement interface: attribute onseeking
+PASS HTMLElement interface: attribute onselect
+PASS HTMLElement interface: attribute onstalled
+PASS HTMLElement interface: attribute onsubmit
+PASS HTMLElement interface: attribute onsuspend
+PASS HTMLElement interface: attribute ontimeupdate
+PASS HTMLElement interface: attribute ontoggle
+PASS HTMLElement interface: attribute onvolumechange
+PASS HTMLElement interface: attribute onwaiting
+PASS HTMLElement interface: attribute oncopy
+PASS HTMLElement interface: attribute oncut
+PASS HTMLElement interface: attribute onpaste
+PASS HTMLElement interface: attribute contentEditable
+PASS HTMLElement interface: attribute enterKeyHint
+PASS HTMLElement interface: attribute isContentEditable
+PASS HTMLElement interface: attribute inputMode
+PASS HTMLElement interface: attribute dataset
+PASS HTMLElement interface: attribute nonce
+FAIL HTMLElement interface: attribute autofocus assert_true: The prototype object must have a property "autofocus" expected true got false
+PASS HTMLElement interface: attribute tabIndex
+PASS HTMLElement interface: operation focus(FocusOptions)
+PASS HTMLElement interface: operation blur()
+PASS HTMLElement must be primary interface of document.createElement("noscript")
+PASS Stringification of document.createElement("noscript")
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "title" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "lang" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "translate" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "dir" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "hidden" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "click()" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "accessKey" with the proper type
+FAIL HTMLElement interface: document.createElement("noscript") must inherit property "accessKeyLabel" with the proper type assert_inherits: property "accessKeyLabel" not found in prototype chain
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "draggable" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "spellcheck" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "autocapitalize" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "innerText" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "attachInternals()" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onabort" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onauxclick" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onblur" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncancel" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncanplay" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncanplaythrough" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onchange" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onclick" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onclose" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncontextmenu" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncuechange" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondblclick" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondrag" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragend" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragenter" with the proper type
+FAIL HTMLElement interface: document.createElement("noscript") must inherit property "ondragexit" with the proper type assert_inherits: property "ondragexit" not found in prototype chain
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragleave" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragover" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragstart" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondrop" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondurationchange" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onemptied" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onended" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onerror" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onfocus" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onformdata" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oninput" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oninvalid" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onkeydown" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onkeypress" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onkeyup" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onload" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onloadeddata" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onloadedmetadata" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onloadstart" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmousedown" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseenter" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseleave" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmousemove" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseout" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseover" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseup" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwheel" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onpause" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onplay" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onplaying" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onprogress" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onratechange" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onreset" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onresize" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onscroll" with the proper type
+FAIL HTMLElement interface: document.createElement("noscript") must inherit property "onsecuritypolicyviolation" with the proper type assert_inherits: property "onsecuritypolicyviolation" not found in prototype chain
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onseeked" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onseeking" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onselect" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onstalled" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onsubmit" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onsuspend" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ontimeupdate" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ontoggle" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onvolumechange" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwaiting" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncopy" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncut" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onpaste" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "contentEditable" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "enterKeyHint" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "isContentEditable" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "inputMode" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "dataset" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "nonce" with the proper type
+FAIL HTMLElement interface: document.createElement("noscript") must inherit property "autofocus" with the proper type assert_inherits: property "autofocus" not found in prototype chain
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "tabIndex" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "focus(FocusOptions)" with the proper type
+PASS HTMLElement interface: calling focus(FocusOptions) on document.createElement("noscript") with too few arguments must throw TypeError
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "blur()" with the proper type
+PASS HTMLUnknownElement interface: existence and properties of interface object
+PASS HTMLUnknownElement interface object length
+PASS HTMLUnknownElement interface object name
+PASS HTMLUnknownElement interface: existence and properties of interface prototype object
+PASS HTMLUnknownElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLUnknownElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLUnknownElement must be primary interface of document.createElement("bgsound")
+PASS Stringification of document.createElement("bgsound")
+PASS HTMLHtmlElement interface: existence and properties of interface object
+PASS HTMLHtmlElement interface object length
+PASS HTMLHtmlElement interface object name
+PASS HTMLHtmlElement interface: existence and properties of interface prototype object
+PASS HTMLHtmlElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLHtmlElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLHtmlElement interface: attribute version
+PASS HTMLHtmlElement must be primary interface of document.createElement("html")
+PASS Stringification of document.createElement("html")
+PASS HTMLHtmlElement interface: document.createElement("html") must inherit property "version" with the proper type
+PASS HTMLHeadElement interface: existence and properties of interface object
+PASS HTMLHeadElement interface object length
+PASS HTMLHeadElement interface object name
+PASS HTMLHeadElement interface: existence and properties of interface prototype object
+PASS HTMLHeadElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLHeadElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLHeadElement must be primary interface of document.createElement("head")
+PASS Stringification of document.createElement("head")
+PASS HTMLTitleElement interface: existence and properties of interface object
+PASS HTMLTitleElement interface object length
+PASS HTMLTitleElement interface object name
+PASS HTMLTitleElement interface: existence and properties of interface prototype object
+PASS HTMLTitleElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTitleElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTitleElement interface: attribute text
+PASS HTMLTitleElement must be primary interface of document.createElement("title")
+PASS Stringification of document.createElement("title")
+PASS HTMLTitleElement interface: document.createElement("title") must inherit property "text" with the proper type
+PASS HTMLBaseElement interface: existence and properties of interface object
+PASS HTMLBaseElement interface object length
+PASS HTMLBaseElement interface object name
+PASS HTMLBaseElement interface: existence and properties of interface prototype object
+PASS HTMLBaseElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLBaseElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLBaseElement interface: attribute href
+PASS HTMLBaseElement interface: attribute target
+PASS HTMLBaseElement must be primary interface of document.createElement("base")
+PASS Stringification of document.createElement("base")
+PASS HTMLBaseElement interface: document.createElement("base") must inherit property "href" with the proper type
+PASS HTMLBaseElement interface: document.createElement("base") must inherit property "target" with the proper type
+PASS HTMLLinkElement interface: existence and properties of interface object
+PASS HTMLLinkElement interface object length
+PASS HTMLLinkElement interface object name
+PASS HTMLLinkElement interface: existence and properties of interface prototype object
+PASS HTMLLinkElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLLinkElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLLinkElement interface: attribute href
+PASS HTMLLinkElement interface: attribute crossOrigin
+PASS HTMLLinkElement interface: attribute rel
+PASS HTMLLinkElement interface: attribute as
+PASS HTMLLinkElement interface: attribute relList
+PASS HTMLLinkElement interface: attribute media
+PASS HTMLLinkElement interface: attribute integrity
+PASS HTMLLinkElement interface: attribute hreflang
+PASS HTMLLinkElement interface: attribute type
+PASS HTMLLinkElement interface: attribute sizes
+PASS HTMLLinkElement interface: attribute imageSrcset
+PASS HTMLLinkElement interface: attribute imageSizes
+PASS HTMLLinkElement interface: attribute referrerPolicy
+PASS HTMLLinkElement interface: attribute charset
+PASS HTMLLinkElement interface: attribute rev
+PASS HTMLLinkElement interface: attribute target
+PASS HTMLLinkElement must be primary interface of document.createElement("link")
+PASS Stringification of document.createElement("link")
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "href" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "crossOrigin" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "rel" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "as" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "relList" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "media" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "integrity" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "hreflang" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "type" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "sizes" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "imageSrcset" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "imageSizes" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "referrerPolicy" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "charset" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "rev" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "target" with the proper type
+PASS HTMLMetaElement interface: existence and properties of interface object
+PASS HTMLMetaElement interface object length
+PASS HTMLMetaElement interface object name
+PASS HTMLMetaElement interface: existence and properties of interface prototype object
+PASS HTMLMetaElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMetaElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMetaElement interface: attribute name
+PASS HTMLMetaElement interface: attribute httpEquiv
+PASS HTMLMetaElement interface: attribute content
+PASS HTMLMetaElement interface: attribute scheme
+PASS HTMLMetaElement must be primary interface of document.createElement("meta")
+PASS Stringification of document.createElement("meta")
+PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "name" with the proper type
+PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "httpEquiv" with the proper type
+PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "content" with the proper type
+PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "scheme" with the proper type
+PASS HTMLStyleElement interface: existence and properties of interface object
+PASS HTMLStyleElement interface object length
+PASS HTMLStyleElement interface object name
+PASS HTMLStyleElement interface: existence and properties of interface prototype object
+PASS HTMLStyleElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLStyleElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLStyleElement interface: attribute media
+PASS HTMLStyleElement interface: attribute type
+PASS HTMLStyleElement must be primary interface of document.createElement("style")
+PASS Stringification of document.createElement("style")
+PASS HTMLStyleElement interface: document.createElement("style") must inherit property "media" with the proper type
+PASS HTMLStyleElement interface: document.createElement("style") must inherit property "type" with the proper type
+PASS HTMLBodyElement interface: existence and properties of interface object
+PASS HTMLBodyElement interface object length
+PASS HTMLBodyElement interface object name
+PASS HTMLBodyElement interface: existence and properties of interface prototype object
+PASS HTMLBodyElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLBodyElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLBodyElement interface: attribute text
+PASS HTMLBodyElement interface: attribute link
+PASS HTMLBodyElement interface: attribute vLink
+PASS HTMLBodyElement interface: attribute aLink
+PASS HTMLBodyElement interface: attribute bgColor
+PASS HTMLBodyElement interface: attribute background
+PASS HTMLBodyElement interface: attribute onafterprint
+PASS HTMLBodyElement interface: attribute onbeforeprint
+PASS HTMLBodyElement interface: attribute onbeforeunload
+PASS HTMLBodyElement interface: attribute onhashchange
+PASS HTMLBodyElement interface: attribute onlanguagechange
+PASS HTMLBodyElement interface: attribute onmessage
+PASS HTMLBodyElement interface: attribute onmessageerror
+PASS HTMLBodyElement interface: attribute onoffline
+PASS HTMLBodyElement interface: attribute ononline
+PASS HTMLBodyElement interface: attribute onpagehide
+PASS HTMLBodyElement interface: attribute onpageshow
+PASS HTMLBodyElement interface: attribute onpopstate
+PASS HTMLBodyElement interface: attribute onrejectionhandled
+PASS HTMLBodyElement interface: attribute onstorage
+PASS HTMLBodyElement interface: attribute onunhandledrejection
+PASS HTMLBodyElement interface: attribute onunload
+PASS HTMLBodyElement must be primary interface of document.createElement("body")
+PASS Stringification of document.createElement("body")
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "text" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "link" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "vLink" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "aLink" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "bgColor" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "background" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onafterprint" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onbeforeprint" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onbeforeunload" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onhashchange" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onlanguagechange" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onmessage" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onmessageerror" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onoffline" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "ononline" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onpagehide" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onpageshow" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onpopstate" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onrejectionhandled" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onstorage" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onunhandledrejection" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onunload" with the proper type
+PASS HTMLHeadingElement interface: existence and properties of interface object
+PASS HTMLHeadingElement interface object length
+PASS HTMLHeadingElement interface object name
+PASS HTMLHeadingElement interface: existence and properties of interface prototype object
+PASS HTMLHeadingElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLHeadingElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLHeadingElement interface: attribute align
+PASS HTMLHeadingElement must be primary interface of document.createElement("h1")
+PASS Stringification of document.createElement("h1")
+PASS HTMLHeadingElement interface: document.createElement("h1") must inherit property "align" with the proper type
+PASS HTMLParagraphElement interface: existence and properties of interface object
+PASS HTMLParagraphElement interface object length
+PASS HTMLParagraphElement interface object name
+PASS HTMLParagraphElement interface: existence and properties of interface prototype object
+PASS HTMLParagraphElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLParagraphElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLParagraphElement interface: attribute align
+PASS HTMLParagraphElement must be primary interface of document.createElement("p")
+PASS Stringification of document.createElement("p")
+PASS HTMLParagraphElement interface: document.createElement("p") must inherit property "align" with the proper type
+PASS HTMLHRElement interface: existence and properties of interface object
+PASS HTMLHRElement interface object length
+PASS HTMLHRElement interface object name
+PASS HTMLHRElement interface: existence and properties of interface prototype object
+PASS HTMLHRElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLHRElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLHRElement interface: attribute align
+PASS HTMLHRElement interface: attribute color
+PASS HTMLHRElement interface: attribute noShade
+PASS HTMLHRElement interface: attribute size
+PASS HTMLHRElement interface: attribute width
+PASS HTMLHRElement must be primary interface of document.createElement("hr")
+PASS Stringification of document.createElement("hr")
+PASS HTMLHRElement interface: document.createElement("hr") must inherit property "align" with the proper type
+PASS HTMLHRElement interface: document.createElement("hr") must inherit property "color" with the proper type
+PASS HTMLHRElement interface: document.createElement("hr") must inherit property "noShade" with the proper type
+PASS HTMLHRElement interface: document.createElement("hr") must inherit property "size" with the proper type
+PASS HTMLHRElement interface: document.createElement("hr") must inherit property "width" with the proper type
+PASS HTMLPreElement interface: existence and properties of interface object
+PASS HTMLPreElement interface object length
+PASS HTMLPreElement interface object name
+PASS HTMLPreElement interface: existence and properties of interface prototype object
+PASS HTMLPreElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLPreElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLPreElement interface: attribute width
+PASS HTMLPreElement must be primary interface of document.createElement("pre")
+PASS Stringification of document.createElement("pre")
+PASS HTMLPreElement interface: document.createElement("pre") must inherit property "width" with the proper type
+PASS HTMLPreElement must be primary interface of document.createElement("listing")
+PASS Stringification of document.createElement("listing")
+PASS HTMLPreElement interface: document.createElement("listing") must inherit property "width" with the proper type
+PASS HTMLPreElement must be primary interface of document.createElement("xmp")
+PASS Stringification of document.createElement("xmp")
+PASS HTMLPreElement interface: document.createElement("xmp") must inherit property "width" with the proper type
+PASS HTMLQuoteElement interface: existence and properties of interface object
+PASS HTMLQuoteElement interface object length
+PASS HTMLQuoteElement interface object name
+PASS HTMLQuoteElement interface: existence and properties of interface prototype object
+PASS HTMLQuoteElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLQuoteElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLQuoteElement interface: attribute cite
+PASS HTMLQuoteElement must be primary interface of document.createElement("blockquote")
+PASS Stringification of document.createElement("blockquote")
+PASS HTMLQuoteElement interface: document.createElement("blockquote") must inherit property "cite" with the proper type
+PASS HTMLQuoteElement must be primary interface of document.createElement("q")
+PASS Stringification of document.createElement("q")
+PASS HTMLQuoteElement interface: document.createElement("q") must inherit property "cite" with the proper type
+PASS HTMLOListElement interface: existence and properties of interface object
+PASS HTMLOListElement interface object length
+PASS HTMLOListElement interface object name
+PASS HTMLOListElement interface: existence and properties of interface prototype object
+PASS HTMLOListElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLOListElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLOListElement interface: attribute reversed
+PASS HTMLOListElement interface: attribute start
+PASS HTMLOListElement interface: attribute type
+PASS HTMLOListElement interface: attribute compact
+PASS HTMLUListElement interface: existence and properties of interface object
+PASS HTMLUListElement interface object length
+PASS HTMLUListElement interface object name
+PASS HTMLUListElement interface: existence and properties of interface prototype object
+PASS HTMLUListElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLUListElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLUListElement interface: attribute compact
+PASS HTMLUListElement interface: attribute type
+PASS HTMLMenuElement interface: existence and properties of interface object
+PASS HTMLMenuElement interface object length
+PASS HTMLMenuElement interface object name
+PASS HTMLMenuElement interface: existence and properties of interface prototype object
+PASS HTMLMenuElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMenuElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMenuElement interface: attribute compact
+PASS HTMLMenuElement must be primary interface of document.createElement("menu")
+PASS Stringification of document.createElement("menu")
+PASS HTMLMenuElement interface: document.createElement("menu") must inherit property "compact" with the proper type
+PASS HTMLLIElement interface: existence and properties of interface object
+PASS HTMLLIElement interface object length
+PASS HTMLLIElement interface object name
+PASS HTMLLIElement interface: existence and properties of interface prototype object
+PASS HTMLLIElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLLIElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLLIElement interface: attribute value
+PASS HTMLLIElement interface: attribute type
+PASS HTMLLIElement must be primary interface of document.createElement("li")
+PASS Stringification of document.createElement("li")
+PASS HTMLLIElement interface: document.createElement("li") must inherit property "value" with the proper type
+PASS HTMLLIElement interface: document.createElement("li") must inherit property "type" with the proper type
+PASS HTMLDListElement interface: existence and properties of interface object
+PASS HTMLDListElement interface object length
+PASS HTMLDListElement interface object name
+PASS HTMLDListElement interface: existence and properties of interface prototype object
+PASS HTMLDListElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDListElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDListElement interface: attribute compact
+PASS HTMLDivElement interface: existence and properties of interface object
+PASS HTMLDivElement interface object length
+PASS HTMLDivElement interface object name
+PASS HTMLDivElement interface: existence and properties of interface prototype object
+PASS HTMLDivElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDivElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDivElement interface: attribute align
+PASS HTMLDivElement must be primary interface of document.createElement("div")
+PASS Stringification of document.createElement("div")
+PASS HTMLDivElement interface: document.createElement("div") must inherit property "align" with the proper type
+PASS HTMLAnchorElement interface: existence and properties of interface object
+PASS HTMLAnchorElement interface object length
+PASS HTMLAnchorElement interface object name
+PASS HTMLAnchorElement interface: existence and properties of interface prototype object
+PASS HTMLAnchorElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLAnchorElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLAnchorElement interface: attribute target
+PASS HTMLAnchorElement interface: attribute download
+PASS HTMLAnchorElement interface: attribute ping
+PASS HTMLAnchorElement interface: attribute rel
+PASS HTMLAnchorElement interface: attribute relList
+PASS HTMLAnchorElement interface: attribute hreflang
+PASS HTMLAnchorElement interface: attribute type
+PASS HTMLAnchorElement interface: attribute text
+PASS HTMLAnchorElement interface: attribute referrerPolicy
+PASS HTMLAnchorElement interface: attribute coords
+PASS HTMLAnchorElement interface: attribute charset
+PASS HTMLAnchorElement interface: attribute name
+PASS HTMLAnchorElement interface: attribute rev
+PASS HTMLAnchorElement interface: attribute shape
+PASS HTMLAnchorElement interface: attribute href
+PASS HTMLAnchorElement interface: stringifier
+PASS HTMLAnchorElement interface: attribute origin
+PASS HTMLAnchorElement interface: attribute protocol
+PASS HTMLAnchorElement interface: attribute username
+PASS HTMLAnchorElement interface: attribute password
+PASS HTMLAnchorElement interface: attribute host
+PASS HTMLAnchorElement interface: attribute hostname
+PASS HTMLAnchorElement interface: attribute port
+PASS HTMLAnchorElement interface: attribute pathname
+PASS HTMLAnchorElement interface: attribute search
+PASS HTMLAnchorElement interface: attribute hash
+PASS HTMLAnchorElement must be primary interface of document.createElement("a")
+PASS Stringification of document.createElement("a")
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "target" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "download" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "ping" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "rel" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "relList" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "hreflang" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "type" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "text" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "referrerPolicy" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "coords" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "charset" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "name" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "rev" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "shape" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "href" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "origin" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "protocol" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "username" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "password" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "host" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "hostname" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "port" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "pathname" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "search" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "hash" with the proper type
+PASS HTMLDataElement interface: existence and properties of interface object
+PASS HTMLDataElement interface object length
+PASS HTMLDataElement interface object name
+PASS HTMLDataElement interface: existence and properties of interface prototype object
+PASS HTMLDataElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDataElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDataElement interface: attribute value
+PASS HTMLDataElement must be primary interface of document.createElement("data")
+PASS Stringification of document.createElement("data")
+PASS HTMLDataElement interface: document.createElement("data") must inherit property "value" with the proper type
+PASS HTMLTimeElement interface: existence and properties of interface object
+PASS HTMLTimeElement interface object length
+PASS HTMLTimeElement interface object name
+PASS HTMLTimeElement interface: existence and properties of interface prototype object
+PASS HTMLTimeElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTimeElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTimeElement interface: attribute dateTime
+PASS HTMLTimeElement must be primary interface of document.createElement("time")
+PASS Stringification of document.createElement("time")
+PASS HTMLTimeElement interface: document.createElement("time") must inherit property "dateTime" with the proper type
+PASS HTMLSpanElement interface: existence and properties of interface object
+PASS HTMLSpanElement interface object length
+PASS HTMLSpanElement interface object name
+PASS HTMLSpanElement interface: existence and properties of interface prototype object
+PASS HTMLSpanElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLSpanElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLSpanElement must be primary interface of document.createElement("span")
+PASS Stringification of document.createElement("span")
+PASS HTMLBRElement interface: existence and properties of interface object
+PASS HTMLBRElement interface object length
+PASS HTMLBRElement interface object name
+PASS HTMLBRElement interface: existence and properties of interface prototype object
+PASS HTMLBRElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLBRElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLBRElement interface: attribute clear
+PASS HTMLBRElement must be primary interface of document.createElement("br")
+PASS Stringification of document.createElement("br")
+PASS HTMLBRElement interface: document.createElement("br") must inherit property "clear" with the proper type
+PASS HTMLModElement interface: existence and properties of interface object
+PASS HTMLModElement interface object length
+PASS HTMLModElement interface object name
+PASS HTMLModElement interface: existence and properties of interface prototype object
+PASS HTMLModElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLModElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLModElement interface: attribute cite
+PASS HTMLModElement interface: attribute dateTime
+PASS HTMLModElement must be primary interface of document.createElement("ins")
+PASS Stringification of document.createElement("ins")
+PASS HTMLModElement interface: document.createElement("ins") must inherit property "cite" with the proper type
+PASS HTMLModElement interface: document.createElement("ins") must inherit property "dateTime" with the proper type
+PASS HTMLModElement must be primary interface of document.createElement("del")
+PASS Stringification of document.createElement("del")
+PASS HTMLModElement interface: document.createElement("del") must inherit property "cite" with the proper type
+PASS HTMLModElement interface: document.createElement("del") must inherit property "dateTime" with the proper type
+PASS HTMLPictureElement interface: existence and properties of interface object
+PASS HTMLPictureElement interface object length
+PASS HTMLPictureElement interface object name
+PASS HTMLPictureElement interface: existence and properties of interface prototype object
+PASS HTMLPictureElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLPictureElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLPictureElement must be primary interface of document.createElement("picture")
+PASS Stringification of document.createElement("picture")
+PASS HTMLSourceElement interface: existence and properties of interface object
+PASS HTMLSourceElement interface object length
+PASS HTMLSourceElement interface object name
+PASS HTMLSourceElement interface: existence and properties of interface prototype object
+PASS HTMLSourceElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLSourceElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLSourceElement interface: attribute src
+PASS HTMLSourceElement interface: attribute type
+PASS HTMLSourceElement interface: attribute srcset
+PASS HTMLSourceElement interface: attribute sizes
+PASS HTMLSourceElement interface: attribute media
+PASS HTMLSourceElement must be primary interface of document.createElement("source")
+PASS Stringification of document.createElement("source")
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "src" with the proper type
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "type" with the proper type
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "srcset" with the proper type
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "sizes" with the proper type
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "media" with the proper type
+PASS HTMLImageElement interface: existence and properties of interface object
+PASS HTMLImageElement interface object length
+PASS HTMLImageElement interface object name
+PASS HTMLImageElement interface: named constructor
+PASS HTMLImageElement interface: named constructor object
+PASS HTMLImageElement interface: named constructor prototype property
+PASS HTMLImageElement interface: named constructor name
+PASS HTMLImageElement interface: named constructor length
+PASS HTMLImageElement interface: named constructor without 'new'
+PASS HTMLImageElement interface: existence and properties of interface prototype object
+PASS HTMLImageElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLImageElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLImageElement interface: attribute alt
+PASS HTMLImageElement interface: attribute src
+PASS HTMLImageElement interface: attribute srcset
+PASS HTMLImageElement interface: attribute sizes
+PASS HTMLImageElement interface: attribute crossOrigin
+PASS HTMLImageElement interface: attribute useMap
+PASS HTMLImageElement interface: attribute isMap
+PASS HTMLImageElement interface: attribute width
+PASS HTMLImageElement interface: attribute height
+PASS HTMLImageElement interface: attribute naturalWidth
+PASS HTMLImageElement interface: attribute naturalHeight
+PASS HTMLImageElement interface: attribute complete
+PASS HTMLImageElement interface: attribute currentSrc
+PASS HTMLImageElement interface: attribute referrerPolicy
+PASS HTMLImageElement interface: attribute decoding
+PASS HTMLImageElement interface: operation decode()
+PASS HTMLImageElement interface: attribute name
+PASS HTMLImageElement interface: attribute lowsrc
+PASS HTMLImageElement interface: attribute align
+PASS HTMLImageElement interface: attribute hspace
+PASS HTMLImageElement interface: attribute vspace
+PASS HTMLImageElement interface: attribute longDesc
+PASS HTMLImageElement interface: attribute border
+PASS HTMLImageElement must be primary interface of document.createElement("img")
+PASS Stringification of document.createElement("img")
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "alt" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "src" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "srcset" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "sizes" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "crossOrigin" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "useMap" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "isMap" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "width" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "height" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "naturalWidth" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "naturalHeight" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "complete" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "currentSrc" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "referrerPolicy" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "decoding" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "decode()" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "name" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "lowsrc" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "align" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "hspace" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "vspace" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "longDesc" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "border" with the proper type
+PASS HTMLImageElement must be primary interface of new Image()
+PASS Stringification of new Image()
+PASS HTMLImageElement interface: new Image() must inherit property "alt" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "src" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "srcset" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "sizes" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "crossOrigin" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "useMap" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "isMap" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "width" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "height" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "naturalWidth" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "naturalHeight" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "complete" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "currentSrc" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "referrerPolicy" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "decoding" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "decode()" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "name" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "lowsrc" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "align" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "hspace" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "vspace" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "longDesc" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "border" with the proper type
+PASS HTMLIFrameElement interface: existence and properties of interface object
+PASS HTMLIFrameElement interface object length
+PASS HTMLIFrameElement interface object name
+PASS HTMLIFrameElement interface: existence and properties of interface prototype object
+PASS HTMLIFrameElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLIFrameElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLIFrameElement interface: attribute src
+PASS HTMLIFrameElement interface: attribute srcdoc
+PASS HTMLIFrameElement interface: attribute name
+PASS HTMLIFrameElement interface: attribute sandbox
+PASS HTMLIFrameElement interface: attribute allow
+PASS HTMLIFrameElement interface: attribute allowFullscreen
+PASS HTMLIFrameElement interface: attribute allowPaymentRequest
+PASS HTMLIFrameElement interface: attribute width
+PASS HTMLIFrameElement interface: attribute height
+PASS HTMLIFrameElement interface: attribute referrerPolicy
+PASS HTMLIFrameElement interface: attribute contentDocument
+PASS HTMLIFrameElement interface: attribute contentWindow
+PASS HTMLIFrameElement interface: operation getSVGDocument()
+PASS HTMLIFrameElement interface: attribute align
+PASS HTMLIFrameElement interface: attribute scrolling
+PASS HTMLIFrameElement interface: attribute frameBorder
+PASS HTMLIFrameElement interface: attribute longDesc
+PASS HTMLIFrameElement interface: attribute marginHeight
+PASS HTMLIFrameElement interface: attribute marginWidth
+PASS HTMLEmbedElement interface: existence and properties of interface object
+PASS HTMLEmbedElement interface object length
+PASS HTMLEmbedElement interface object name
+PASS HTMLEmbedElement interface: existence and properties of interface prototype object
+PASS HTMLEmbedElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLEmbedElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLEmbedElement interface: attribute src
+PASS HTMLEmbedElement interface: attribute type
+PASS HTMLEmbedElement interface: attribute width
+PASS HTMLEmbedElement interface: attribute height
+PASS HTMLEmbedElement interface: operation getSVGDocument()
+PASS HTMLEmbedElement interface: attribute align
+PASS HTMLEmbedElement interface: attribute name
+PASS HTMLEmbedElement must be primary interface of document.createElement("embed")
+PASS Stringification of document.createElement("embed")
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "src" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "type" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "width" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "height" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "getSVGDocument()" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "align" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "name" with the proper type
+PASS HTMLObjectElement interface: existence and properties of interface object
+PASS HTMLObjectElement interface object length
+PASS HTMLObjectElement interface object name
+PASS HTMLObjectElement interface: existence and properties of interface prototype object
+PASS HTMLObjectElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLObjectElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLObjectElement interface: attribute data
+PASS HTMLObjectElement interface: attribute type
+PASS HTMLObjectElement interface: attribute name
+PASS HTMLObjectElement interface: attribute useMap
+PASS HTMLObjectElement interface: attribute form
+PASS HTMLObjectElement interface: attribute width
+PASS HTMLObjectElement interface: attribute height
+PASS HTMLObjectElement interface: attribute contentDocument
+PASS HTMLObjectElement interface: attribute contentWindow
+PASS HTMLObjectElement interface: operation getSVGDocument()
+PASS HTMLObjectElement interface: attribute willValidate
+PASS HTMLObjectElement interface: attribute validity
+PASS HTMLObjectElement interface: attribute validationMessage
+PASS HTMLObjectElement interface: operation checkValidity()
+PASS HTMLObjectElement interface: operation reportValidity()
+PASS HTMLObjectElement interface: operation setCustomValidity(DOMString)
+PASS HTMLObjectElement interface: attribute align
+PASS HTMLObjectElement interface: attribute archive
+PASS HTMLObjectElement interface: attribute code
+PASS HTMLObjectElement interface: attribute declare
+PASS HTMLObjectElement interface: attribute hspace
+PASS HTMLObjectElement interface: attribute standby
+PASS HTMLObjectElement interface: attribute vspace
+PASS HTMLObjectElement interface: attribute codeBase
+PASS HTMLObjectElement interface: attribute codeType
+PASS HTMLObjectElement interface: attribute border
+PASS HTMLObjectElement must be primary interface of document.createElement("object")
+PASS Stringification of document.createElement("object")
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "data" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "type" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "name" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "useMap" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "form" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "width" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "height" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "contentDocument" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "contentWindow" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "getSVGDocument()" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "willValidate" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "validity" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "validationMessage" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "checkValidity()" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "reportValidity()" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLObjectElement interface: calling setCustomValidity(DOMString) on document.createElement("object") with too few arguments must throw TypeError
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "align" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "archive" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "code" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "declare" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "hspace" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "standby" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "vspace" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "codeBase" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "codeType" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "border" with the proper type
+PASS HTMLParamElement interface: existence and properties of interface object
+PASS HTMLParamElement interface object length
+PASS HTMLParamElement interface object name
+PASS HTMLParamElement interface: existence and properties of interface prototype object
+PASS HTMLParamElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLParamElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLParamElement interface: attribute name
+PASS HTMLParamElement interface: attribute value
+PASS HTMLParamElement interface: attribute type
+PASS HTMLParamElement interface: attribute valueType
+PASS HTMLParamElement must be primary interface of document.createElement("param")
+PASS Stringification of document.createElement("param")
+PASS HTMLParamElement interface: document.createElement("param") must inherit property "name" with the proper type
+PASS HTMLParamElement interface: document.createElement("param") must inherit property "value" with the proper type
+PASS HTMLParamElement interface: document.createElement("param") must inherit property "type" with the proper type
+PASS HTMLParamElement interface: document.createElement("param") must inherit property "valueType" with the proper type
+PASS HTMLVideoElement interface: existence and properties of interface object
+PASS HTMLVideoElement interface object length
+PASS HTMLVideoElement interface object name
+PASS HTMLVideoElement interface: existence and properties of interface prototype object
+PASS HTMLVideoElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLVideoElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLVideoElement interface: attribute width
+PASS HTMLVideoElement interface: attribute height
+PASS HTMLVideoElement interface: attribute videoWidth
+PASS HTMLVideoElement interface: attribute videoHeight
+PASS HTMLVideoElement interface: attribute poster
+PASS HTMLVideoElement interface: attribute playsInline
+PASS HTMLVideoElement must be primary interface of document.createElement("video")
+PASS Stringification of document.createElement("video")
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "width" with the proper type
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "height" with the proper type
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "videoWidth" with the proper type
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "videoHeight" with the proper type
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "poster" with the proper type
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "playsInline" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "error" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "src" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("video") must inherit property "srcObject" with the proper type Unrecognized type MediaStream
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "currentSrc" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "crossOrigin" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "NETWORK_EMPTY" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "NETWORK_IDLE" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "NETWORK_LOADING" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "NETWORK_NO_SOURCE" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "networkState" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "preload" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "buffered" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "load()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "canPlayType(DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling canPlayType(DOMString) on document.createElement("video") with too few arguments must throw TypeError
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_NOTHING" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_METADATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_CURRENT_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_FUTURE_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_ENOUGH_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "readyState" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "seeking" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "currentTime" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("video") must inherit property "fastSeek(double)" with the proper type assert_inherits: property "fastSeek" not found in prototype chain
+FAIL HTMLMediaElement interface: calling fastSeek(double) on document.createElement("video") with too few arguments must throw TypeError assert_inherits: property "fastSeek" not found in prototype chain
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "duration" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("video") must inherit property "getStartDate()" with the proper type assert_inherits: property "getStartDate" not found in prototype chain
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "paused" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "defaultPlaybackRate" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "playbackRate" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "played" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "seekable" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "ended" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "autoplay" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "loop" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "play()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "pause()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "controls" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "volume" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "muted" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "defaultMuted" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "audioTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "videoTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "textTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "addTextTrack(TextTrackKind, DOMString, DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, DOMString, DOMString) on document.createElement("video") with too few arguments must throw TypeError
+PASS HTMLAudioElement interface: existence and properties of interface object
+PASS HTMLAudioElement interface object length
+PASS HTMLAudioElement interface object name
+PASS HTMLAudioElement interface: named constructor
+PASS HTMLAudioElement interface: named constructor object
+PASS HTMLAudioElement interface: named constructor prototype property
+PASS HTMLAudioElement interface: named constructor name
+PASS HTMLAudioElement interface: named constructor length
+PASS HTMLAudioElement interface: named constructor without 'new'
+PASS HTMLAudioElement interface: existence and properties of interface prototype object
+PASS HTMLAudioElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLAudioElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLAudioElement must be primary interface of document.createElement("audio")
+PASS Stringification of document.createElement("audio")
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "error" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "src" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("audio") must inherit property "srcObject" with the proper type Unrecognized type MediaStream
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "currentSrc" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "crossOrigin" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "NETWORK_EMPTY" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "NETWORK_IDLE" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "NETWORK_LOADING" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "NETWORK_NO_SOURCE" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "networkState" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "preload" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "buffered" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "load()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "canPlayType(DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling canPlayType(DOMString) on document.createElement("audio") with too few arguments must throw TypeError
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_NOTHING" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_METADATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_CURRENT_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_FUTURE_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_ENOUGH_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "readyState" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "seeking" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "currentTime" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("audio") must inherit property "fastSeek(double)" with the proper type assert_inherits: property "fastSeek" not found in prototype chain
+FAIL HTMLMediaElement interface: calling fastSeek(double) on document.createElement("audio") with too few arguments must throw TypeError assert_inherits: property "fastSeek" not found in prototype chain
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "duration" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("audio") must inherit property "getStartDate()" with the proper type assert_inherits: property "getStartDate" not found in prototype chain
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "paused" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "defaultPlaybackRate" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "playbackRate" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "played" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "seekable" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "ended" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "autoplay" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "loop" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "play()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "pause()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "controls" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "volume" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "muted" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "defaultMuted" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "audioTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "videoTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "textTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "addTextTrack(TextTrackKind, DOMString, DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, DOMString, DOMString) on document.createElement("audio") with too few arguments must throw TypeError
+PASS HTMLAudioElement must be primary interface of new Audio()
+PASS Stringification of new Audio()
+PASS HTMLMediaElement interface: new Audio() must inherit property "error" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "src" with the proper type
+FAIL HTMLMediaElement interface: new Audio() must inherit property "srcObject" with the proper type Unrecognized type MediaStream
+PASS HTMLMediaElement interface: new Audio() must inherit property "currentSrc" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "crossOrigin" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "NETWORK_EMPTY" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "NETWORK_IDLE" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "NETWORK_LOADING" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "NETWORK_NO_SOURCE" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "networkState" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "preload" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "buffered" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "load()" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "canPlayType(DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling canPlayType(DOMString) on new Audio() with too few arguments must throw TypeError
+PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_NOTHING" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_METADATA" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_CURRENT_DATA" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_FUTURE_DATA" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_ENOUGH_DATA" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "readyState" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "seeking" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "currentTime" with the proper type
+FAIL HTMLMediaElement interface: new Audio() must inherit property "fastSeek(double)" with the proper type assert_inherits: property "fastSeek" not found in prototype chain
+FAIL HTMLMediaElement interface: calling fastSeek(double) on new Audio() with too few arguments must throw TypeError assert_inherits: property "fastSeek" not found in prototype chain
+PASS HTMLMediaElement interface: new Audio() must inherit property "duration" with the proper type
+FAIL HTMLMediaElement interface: new Audio() must inherit property "getStartDate()" with the proper type assert_inherits: property "getStartDate" not found in prototype chain
+PASS HTMLMediaElement interface: new Audio() must inherit property "paused" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "defaultPlaybackRate" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "playbackRate" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "played" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "seekable" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "ended" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "autoplay" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "loop" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "play()" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "pause()" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "controls" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "volume" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "muted" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "defaultMuted" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "audioTracks" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "videoTracks" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "textTracks" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "addTextTrack(TextTrackKind, DOMString, DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, DOMString, DOMString) on new Audio() with too few arguments must throw TypeError
+PASS HTMLTrackElement interface: existence and properties of interface object
+PASS HTMLTrackElement interface object length
+PASS HTMLTrackElement interface object name
+PASS HTMLTrackElement interface: existence and properties of interface prototype object
+PASS HTMLTrackElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTrackElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTrackElement interface: attribute kind
+PASS HTMLTrackElement interface: attribute src
+PASS HTMLTrackElement interface: attribute srclang
+PASS HTMLTrackElement interface: attribute label
+PASS HTMLTrackElement interface: attribute default
+PASS HTMLTrackElement interface: constant NONE on interface object
+PASS HTMLTrackElement interface: constant NONE on interface prototype object
+PASS HTMLTrackElement interface: constant LOADING on interface object
+PASS HTMLTrackElement interface: constant LOADING on interface prototype object
+PASS HTMLTrackElement interface: constant LOADED on interface object
+PASS HTMLTrackElement interface: constant LOADED on interface prototype object
+PASS HTMLTrackElement interface: constant ERROR on interface object
+PASS HTMLTrackElement interface: constant ERROR on interface prototype object
+PASS HTMLTrackElement interface: attribute readyState
+PASS HTMLTrackElement interface: attribute track
+PASS HTMLTrackElement must be primary interface of document.createElement("track")
+PASS Stringification of document.createElement("track")
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "kind" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "src" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "srclang" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "label" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "default" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "NONE" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "LOADING" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "LOADED" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "ERROR" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "readyState" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "track" with the proper type
+PASS HTMLMediaElement interface: existence and properties of interface object
+PASS HTMLMediaElement interface object length
+PASS HTMLMediaElement interface object name
+PASS HTMLMediaElement interface: existence and properties of interface prototype object
+PASS HTMLMediaElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMediaElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMediaElement interface: attribute error
+PASS HTMLMediaElement interface: attribute src
+PASS HTMLMediaElement interface: attribute srcObject
+PASS HTMLMediaElement interface: attribute currentSrc
+PASS HTMLMediaElement interface: attribute crossOrigin
+PASS HTMLMediaElement interface: constant NETWORK_EMPTY on interface object
+PASS HTMLMediaElement interface: constant NETWORK_EMPTY on interface prototype object
+PASS HTMLMediaElement interface: constant NETWORK_IDLE on interface object
+PASS HTMLMediaElement interface: constant NETWORK_IDLE on interface prototype object
+PASS HTMLMediaElement interface: constant NETWORK_LOADING on interface object
+PASS HTMLMediaElement interface: constant NETWORK_LOADING on interface prototype object
+PASS HTMLMediaElement interface: constant NETWORK_NO_SOURCE on interface object
+PASS HTMLMediaElement interface: constant NETWORK_NO_SOURCE on interface prototype object
+PASS HTMLMediaElement interface: attribute networkState
+PASS HTMLMediaElement interface: attribute preload
+PASS HTMLMediaElement interface: attribute buffered
+PASS HTMLMediaElement interface: operation load()
+PASS HTMLMediaElement interface: operation canPlayType(DOMString)
+PASS HTMLMediaElement interface: constant HAVE_NOTHING on interface object
+PASS HTMLMediaElement interface: constant HAVE_NOTHING on interface prototype object
+PASS HTMLMediaElement interface: constant HAVE_METADATA on interface object
+PASS HTMLMediaElement interface: constant HAVE_METADATA on interface prototype object
+PASS HTMLMediaElement interface: constant HAVE_CURRENT_DATA on interface object
+PASS HTMLMediaElement interface: constant HAVE_CURRENT_DATA on interface prototype object
+PASS HTMLMediaElement interface: constant HAVE_FUTURE_DATA on interface object
+PASS HTMLMediaElement interface: constant HAVE_FUTURE_DATA on interface prototype object
+PASS HTMLMediaElement interface: constant HAVE_ENOUGH_DATA on interface object
+PASS HTMLMediaElement interface: constant HAVE_ENOUGH_DATA on interface prototype object
+PASS HTMLMediaElement interface: attribute readyState
+PASS HTMLMediaElement interface: attribute seeking
+PASS HTMLMediaElement interface: attribute currentTime
+FAIL HTMLMediaElement interface: operation fastSeek(double) assert_own_property: interface prototype object missing non-static operation expected property "fastSeek" missing
+PASS HTMLMediaElement interface: attribute duration
+FAIL HTMLMediaElement interface: operation getStartDate() assert_own_property: interface prototype object missing non-static operation expected property "getStartDate" missing
+PASS HTMLMediaElement interface: attribute paused
+PASS HTMLMediaElement interface: attribute defaultPlaybackRate
+PASS HTMLMediaElement interface: attribute playbackRate
+PASS HTMLMediaElement interface: attribute played
+PASS HTMLMediaElement interface: attribute seekable
+PASS HTMLMediaElement interface: attribute ended
+PASS HTMLMediaElement interface: attribute autoplay
+PASS HTMLMediaElement interface: attribute loop
+PASS HTMLMediaElement interface: operation play()
+PASS HTMLMediaElement interface: operation pause()
+PASS HTMLMediaElement interface: attribute controls
+PASS HTMLMediaElement interface: attribute volume
+PASS HTMLMediaElement interface: attribute muted
+PASS HTMLMediaElement interface: attribute defaultMuted
+PASS HTMLMediaElement interface: attribute audioTracks
+PASS HTMLMediaElement interface: attribute videoTracks
+PASS HTMLMediaElement interface: attribute textTracks
+PASS HTMLMediaElement interface: operation addTextTrack(TextTrackKind, DOMString, DOMString)
+PASS HTMLMapElement interface: existence and properties of interface object
+PASS HTMLMapElement interface object length
+PASS HTMLMapElement interface object name
+PASS HTMLMapElement interface: existence and properties of interface prototype object
+PASS HTMLMapElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMapElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMapElement interface: attribute name
+PASS HTMLMapElement interface: attribute areas
+PASS HTMLMapElement must be primary interface of document.createElement("map")
+PASS Stringification of document.createElement("map")
+PASS HTMLMapElement interface: document.createElement("map") must inherit property "name" with the proper type
+PASS HTMLMapElement interface: document.createElement("map") must inherit property "areas" with the proper type
+PASS HTMLAreaElement interface: existence and properties of interface object
+PASS HTMLAreaElement interface object length
+PASS HTMLAreaElement interface object name
+PASS HTMLAreaElement interface: existence and properties of interface prototype object
+PASS HTMLAreaElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLAreaElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLAreaElement interface: attribute alt
+PASS HTMLAreaElement interface: attribute coords
+PASS HTMLAreaElement interface: attribute shape
+PASS HTMLAreaElement interface: attribute target
+PASS HTMLAreaElement interface: attribute download
+PASS HTMLAreaElement interface: attribute ping
+PASS HTMLAreaElement interface: attribute rel
+PASS HTMLAreaElement interface: attribute relList
+PASS HTMLAreaElement interface: attribute referrerPolicy
+PASS HTMLAreaElement interface: attribute noHref
+PASS HTMLAreaElement interface: attribute href
+PASS HTMLAreaElement interface: stringifier
+PASS HTMLAreaElement interface: attribute origin
+PASS HTMLAreaElement interface: attribute protocol
+PASS HTMLAreaElement interface: attribute username
+PASS HTMLAreaElement interface: attribute password
+PASS HTMLAreaElement interface: attribute host
+PASS HTMLAreaElement interface: attribute hostname
+PASS HTMLAreaElement interface: attribute port
+PASS HTMLAreaElement interface: attribute pathname
+PASS HTMLAreaElement interface: attribute search
+PASS HTMLAreaElement interface: attribute hash
+PASS HTMLAreaElement must be primary interface of document.createElement("area")
+PASS Stringification of document.createElement("area")
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "alt" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "coords" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "shape" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "target" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "download" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "ping" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "rel" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "relList" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "referrerPolicy" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "noHref" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "href" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "origin" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "protocol" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "username" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "password" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "host" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "hostname" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "port" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "pathname" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "search" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "hash" with the proper type
+PASS HTMLTableElement interface: existence and properties of interface object
+PASS HTMLTableElement interface object length
+PASS HTMLTableElement interface object name
+PASS HTMLTableElement interface: existence and properties of interface prototype object
+PASS HTMLTableElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableElement interface: attribute caption
+PASS HTMLTableElement interface: operation createCaption()
+PASS HTMLTableElement interface: operation deleteCaption()
+PASS HTMLTableElement interface: attribute tHead
+PASS HTMLTableElement interface: operation createTHead()
+PASS HTMLTableElement interface: operation deleteTHead()
+PASS HTMLTableElement interface: attribute tFoot
+PASS HTMLTableElement interface: operation createTFoot()
+PASS HTMLTableElement interface: operation deleteTFoot()
+PASS HTMLTableElement interface: attribute tBodies
+PASS HTMLTableElement interface: operation createTBody()
+PASS HTMLTableElement interface: attribute rows
+PASS HTMLTableElement interface: operation insertRow(long)
+PASS HTMLTableElement interface: operation deleteRow(long)
+PASS HTMLTableElement interface: attribute align
+PASS HTMLTableElement interface: attribute border
+PASS HTMLTableElement interface: attribute frame
+PASS HTMLTableElement interface: attribute rules
+PASS HTMLTableElement interface: attribute summary
+PASS HTMLTableElement interface: attribute width
+PASS HTMLTableElement interface: attribute bgColor
+PASS HTMLTableElement interface: attribute cellPadding
+PASS HTMLTableElement interface: attribute cellSpacing
+PASS HTMLTableElement must be primary interface of document.createElement("table")
+PASS Stringification of document.createElement("table")
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "caption" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "createCaption()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "deleteCaption()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "tHead" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "createTHead()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "deleteTHead()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "tFoot" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "createTFoot()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "deleteTFoot()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "tBodies" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "createTBody()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "rows" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "insertRow(long)" with the proper type
+PASS HTMLTableElement interface: calling insertRow(long) on document.createElement("table") with too few arguments must throw TypeError
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "deleteRow(long)" with the proper type
+PASS HTMLTableElement interface: calling deleteRow(long) on document.createElement("table") with too few arguments must throw TypeError
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "align" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "border" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "frame" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "rules" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "summary" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "width" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "bgColor" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "cellPadding" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "cellSpacing" with the proper type
+PASS HTMLTableCaptionElement interface: existence and properties of interface object
+PASS HTMLTableCaptionElement interface object length
+PASS HTMLTableCaptionElement interface object name
+PASS HTMLTableCaptionElement interface: existence and properties of interface prototype object
+PASS HTMLTableCaptionElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableCaptionElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableCaptionElement interface: attribute align
+PASS HTMLTableCaptionElement must be primary interface of document.createElement("caption")
+PASS Stringification of document.createElement("caption")
+PASS HTMLTableCaptionElement interface: document.createElement("caption") must inherit property "align" with the proper type
+PASS HTMLTableColElement interface: existence and properties of interface object
+PASS HTMLTableColElement interface object length
+PASS HTMLTableColElement interface object name
+PASS HTMLTableColElement interface: existence and properties of interface prototype object
+PASS HTMLTableColElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableColElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableColElement interface: attribute span
+PASS HTMLTableColElement interface: attribute align
+PASS HTMLTableColElement interface: attribute ch
+PASS HTMLTableColElement interface: attribute chOff
+PASS HTMLTableColElement interface: attribute vAlign
+PASS HTMLTableColElement interface: attribute width
+PASS HTMLTableColElement must be primary interface of document.createElement("colgroup")
+PASS Stringification of document.createElement("colgroup")
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "span" with the proper type
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "align" with the proper type
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "ch" with the proper type
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "chOff" with the proper type
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "vAlign" with the proper type
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "width" with the proper type
+PASS HTMLTableColElement must be primary interface of document.createElement("col")
+PASS Stringification of document.createElement("col")
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "span" with the proper type
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "align" with the proper type
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "ch" with the proper type
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "chOff" with the proper type
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "vAlign" with the proper type
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "width" with the proper type
+PASS HTMLTableSectionElement interface: existence and properties of interface object
+PASS HTMLTableSectionElement interface object length
+PASS HTMLTableSectionElement interface object name
+PASS HTMLTableSectionElement interface: existence and properties of interface prototype object
+PASS HTMLTableSectionElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableSectionElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableSectionElement interface: attribute rows
+PASS HTMLTableSectionElement interface: operation insertRow(long)
+PASS HTMLTableSectionElement interface: operation deleteRow(long)
+PASS HTMLTableSectionElement interface: attribute align
+PASS HTMLTableSectionElement interface: attribute ch
+PASS HTMLTableSectionElement interface: attribute chOff
+PASS HTMLTableSectionElement interface: attribute vAlign
+PASS HTMLTableSectionElement must be primary interface of document.createElement("tbody")
+PASS Stringification of document.createElement("tbody")
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "rows" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "insertRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(long) on document.createElement("tbody") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "deleteRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling deleteRow(long) on document.createElement("tbody") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "align" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "ch" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "chOff" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "vAlign" with the proper type
+PASS HTMLTableSectionElement must be primary interface of document.createElement("thead")
+PASS Stringification of document.createElement("thead")
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "rows" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "insertRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(long) on document.createElement("thead") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "deleteRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling deleteRow(long) on document.createElement("thead") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "align" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "ch" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "chOff" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "vAlign" with the proper type
+PASS HTMLTableSectionElement must be primary interface of document.createElement("tfoot")
+PASS Stringification of document.createElement("tfoot")
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "rows" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "insertRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(long) on document.createElement("tfoot") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "deleteRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling deleteRow(long) on document.createElement("tfoot") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "align" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "ch" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "chOff" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "vAlign" with the proper type
+PASS HTMLTableRowElement interface: existence and properties of interface object
+PASS HTMLTableRowElement interface object length
+PASS HTMLTableRowElement interface object name
+PASS HTMLTableRowElement interface: existence and properties of interface prototype object
+PASS HTMLTableRowElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableRowElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableRowElement interface: attribute rowIndex
+PASS HTMLTableRowElement interface: attribute sectionRowIndex
+PASS HTMLTableRowElement interface: attribute cells
+PASS HTMLTableRowElement interface: operation insertCell(long)
+PASS HTMLTableRowElement interface: operation deleteCell(long)
+PASS HTMLTableRowElement interface: attribute align
+PASS HTMLTableRowElement interface: attribute ch
+PASS HTMLTableRowElement interface: attribute chOff
+PASS HTMLTableRowElement interface: attribute vAlign
+PASS HTMLTableRowElement interface: attribute bgColor
+PASS HTMLTableRowElement must be primary interface of document.createElement("tr")
+PASS Stringification of document.createElement("tr")
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "rowIndex" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "sectionRowIndex" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "cells" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "insertCell(long)" with the proper type
+PASS HTMLTableRowElement interface: calling insertCell(long) on document.createElement("tr") with too few arguments must throw TypeError
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "deleteCell(long)" with the proper type
+PASS HTMLTableRowElement interface: calling deleteCell(long) on document.createElement("tr") with too few arguments must throw TypeError
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "align" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "ch" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "chOff" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "vAlign" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "bgColor" with the proper type
+PASS HTMLTableCellElement interface: existence and properties of interface object
+PASS HTMLTableCellElement interface object length
+PASS HTMLTableCellElement interface object name
+PASS HTMLTableCellElement interface: existence and properties of interface prototype object
+PASS HTMLTableCellElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableCellElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableCellElement interface: attribute colSpan
+PASS HTMLTableCellElement interface: attribute rowSpan
+PASS HTMLTableCellElement interface: attribute headers
+PASS HTMLTableCellElement interface: attribute cellIndex
+PASS HTMLTableCellElement interface: attribute scope
+PASS HTMLTableCellElement interface: attribute abbr
+PASS HTMLTableCellElement interface: attribute align
+PASS HTMLTableCellElement interface: attribute axis
+PASS HTMLTableCellElement interface: attribute height
+PASS HTMLTableCellElement interface: attribute width
+PASS HTMLTableCellElement interface: attribute ch
+PASS HTMLTableCellElement interface: attribute chOff
+PASS HTMLTableCellElement interface: attribute noWrap
+PASS HTMLTableCellElement interface: attribute vAlign
+PASS HTMLTableCellElement interface: attribute bgColor
+PASS HTMLTableCellElement must be primary interface of document.createElement("td")
+PASS Stringification of document.createElement("td")
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "colSpan" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "rowSpan" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "headers" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "cellIndex" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "scope" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "abbr" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "align" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "axis" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "height" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "width" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "ch" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "chOff" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "noWrap" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "vAlign" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "bgColor" with the proper type
+PASS HTMLTableCellElement must be primary interface of document.createElement("th")
+PASS Stringification of document.createElement("th")
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "colSpan" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "rowSpan" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "headers" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "cellIndex" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "scope" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "abbr" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "align" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "axis" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "height" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "width" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "ch" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "chOff" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "noWrap" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "vAlign" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "bgColor" with the proper type
+PASS HTMLFormElement interface: existence and properties of interface object
+PASS HTMLFormElement interface object length
+PASS HTMLFormElement interface object name
+PASS HTMLFormElement interface: existence and properties of interface prototype object
+PASS HTMLFormElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFormElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFormElement interface: attribute acceptCharset
+PASS HTMLFormElement interface: attribute action
+PASS HTMLFormElement interface: attribute autocomplete
+PASS HTMLFormElement interface: attribute enctype
+PASS HTMLFormElement interface: attribute encoding
+PASS HTMLFormElement interface: attribute method
+PASS HTMLFormElement interface: attribute name
+PASS HTMLFormElement interface: attribute noValidate
+PASS HTMLFormElement interface: attribute target
+FAIL HTMLFormElement interface: attribute rel assert_true: The prototype object must have a property "rel" expected true got false
+FAIL HTMLFormElement interface: attribute relList assert_true: The prototype object must have a property "relList" expected true got false
+PASS HTMLFormElement interface: attribute elements
+PASS HTMLFormElement interface: attribute length
+PASS HTMLFormElement interface: operation submit()
+PASS HTMLFormElement interface: operation requestSubmit(HTMLElement)
+PASS HTMLFormElement interface: operation reset()
+PASS HTMLFormElement interface: operation checkValidity()
+PASS HTMLFormElement interface: operation reportValidity()
+PASS HTMLFormElement must be primary interface of document.createElement("form")
+PASS Stringification of document.createElement("form")
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "acceptCharset" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "action" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "autocomplete" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "enctype" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "encoding" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "method" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "name" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "noValidate" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "target" with the proper type
+FAIL HTMLFormElement interface: document.createElement("form") must inherit property "rel" with the proper type assert_inherits: property "rel" not found in prototype chain
+FAIL HTMLFormElement interface: document.createElement("form") must inherit property "relList" with the proper type assert_inherits: property "relList" not found in prototype chain
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "elements" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "length" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "submit()" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "requestSubmit(HTMLElement)" with the proper type
+PASS HTMLFormElement interface: calling requestSubmit(HTMLElement) on document.createElement("form") with too few arguments must throw TypeError
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "reset()" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "checkValidity()" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "reportValidity()" with the proper type
+PASS HTMLLabelElement interface: existence and properties of interface object
+PASS HTMLLabelElement interface object length
+PASS HTMLLabelElement interface object name
+PASS HTMLLabelElement interface: existence and properties of interface prototype object
+PASS HTMLLabelElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLLabelElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLLabelElement interface: attribute form
+PASS HTMLLabelElement interface: attribute htmlFor
+PASS HTMLLabelElement interface: attribute control
+PASS HTMLLabelElement must be primary interface of document.createElement("label")
+PASS Stringification of document.createElement("label")
+PASS HTMLLabelElement interface: document.createElement("label") must inherit property "form" with the proper type
+PASS HTMLLabelElement interface: document.createElement("label") must inherit property "htmlFor" with the proper type
+PASS HTMLLabelElement interface: document.createElement("label") must inherit property "control" with the proper type
+PASS HTMLInputElement interface: existence and properties of interface object
+PASS HTMLInputElement interface object length
+PASS HTMLInputElement interface object name
+PASS HTMLInputElement interface: existence and properties of interface prototype object
+PASS HTMLInputElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLInputElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLInputElement interface: attribute accept
+PASS HTMLInputElement interface: attribute alt
+PASS HTMLInputElement interface: attribute autocomplete
+PASS HTMLInputElement interface: attribute defaultChecked
+PASS HTMLInputElement interface: attribute checked
+PASS HTMLInputElement interface: attribute dirName
+PASS HTMLInputElement interface: attribute disabled
+PASS HTMLInputElement interface: attribute form
+PASS HTMLInputElement interface: attribute files
+PASS HTMLInputElement interface: attribute formAction
+PASS HTMLInputElement interface: attribute formEnctype
+PASS HTMLInputElement interface: attribute formMethod
+PASS HTMLInputElement interface: attribute formNoValidate
+PASS HTMLInputElement interface: attribute formTarget
+PASS HTMLInputElement interface: attribute height
+PASS HTMLInputElement interface: attribute indeterminate
+PASS HTMLInputElement interface: attribute list
+PASS HTMLInputElement interface: attribute max
+PASS HTMLInputElement interface: attribute maxLength
+PASS HTMLInputElement interface: attribute min
+PASS HTMLInputElement interface: attribute minLength
+PASS HTMLInputElement interface: attribute multiple
+PASS HTMLInputElement interface: attribute name
+PASS HTMLInputElement interface: attribute pattern
+PASS HTMLInputElement interface: attribute placeholder
+PASS HTMLInputElement interface: attribute readOnly
+PASS HTMLInputElement interface: attribute required
+PASS HTMLInputElement interface: attribute size
+PASS HTMLInputElement interface: attribute src
+PASS HTMLInputElement interface: attribute step
+PASS HTMLInputElement interface: attribute type
+PASS HTMLInputElement interface: attribute defaultValue
+PASS HTMLInputElement interface: attribute value
+PASS HTMLInputElement interface: attribute valueAsDate
+PASS HTMLInputElement interface: attribute valueAsNumber
+PASS HTMLInputElement interface: attribute width
+PASS HTMLInputElement interface: operation stepUp(long)
+PASS HTMLInputElement interface: operation stepDown(long)
+PASS HTMLInputElement interface: attribute willValidate
+PASS HTMLInputElement interface: attribute validity
+PASS HTMLInputElement interface: attribute validationMessage
+PASS HTMLInputElement interface: operation checkValidity()
+PASS HTMLInputElement interface: operation reportValidity()
+PASS HTMLInputElement interface: operation setCustomValidity(DOMString)
+PASS HTMLInputElement interface: attribute labels
+PASS HTMLInputElement interface: operation select()
+PASS HTMLInputElement interface: attribute selectionStart
+PASS HTMLInputElement interface: attribute selectionEnd
+PASS HTMLInputElement interface: attribute selectionDirection
+PASS HTMLInputElement interface: operation setRangeText(DOMString)
+PASS HTMLInputElement interface: operation setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)
+PASS HTMLInputElement interface: operation setSelectionRange(unsigned long, unsigned long, DOMString)
+PASS HTMLInputElement interface: attribute align
+PASS HTMLInputElement interface: attribute useMap
+PASS HTMLInputElement must be primary interface of document.createElement("input")
+PASS Stringification of document.createElement("input")
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("text")
+PASS Stringification of createInput("text")
+PASS HTMLInputElement interface: createInput("text") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("hidden")
+PASS Stringification of createInput("hidden")
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("search")
+PASS Stringification of createInput("search")
+PASS HTMLInputElement interface: createInput("search") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("tel")
+PASS Stringification of createInput("tel")
+PASS HTMLInputElement interface: createInput("tel") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("url")
+PASS Stringification of createInput("url")
+PASS HTMLInputElement interface: createInput("url") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("email")
+PASS Stringification of createInput("email")
+PASS HTMLInputElement interface: createInput("email") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("password")
+PASS Stringification of createInput("password")
+PASS HTMLInputElement interface: createInput("password") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("date")
+PASS Stringification of createInput("date")
+PASS HTMLInputElement interface: createInput("date") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("month")
+PASS Stringification of createInput("month")
+PASS HTMLInputElement interface: createInput("month") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("week")
+PASS Stringification of createInput("week")
+PASS HTMLInputElement interface: createInput("week") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("time")
+PASS Stringification of createInput("time")
+PASS HTMLInputElement interface: createInput("time") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("datetime-local")
+PASS Stringification of createInput("datetime-local")
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("number")
+PASS Stringification of createInput("number")
+PASS HTMLInputElement interface: createInput("number") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("range")
+PASS Stringification of createInput("range")
+PASS HTMLInputElement interface: createInput("range") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("color")
+PASS Stringification of createInput("color")
+PASS HTMLInputElement interface: createInput("color") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("checkbox")
+PASS Stringification of createInput("checkbox")
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("radio")
+PASS Stringification of createInput("radio")
+PASS HTMLInputElement interface: createInput("radio") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("file")
+PASS Stringification of createInput("file")
+PASS HTMLInputElement interface: createInput("file") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("submit")
+PASS Stringification of createInput("submit")
+PASS HTMLInputElement interface: createInput("submit") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("image")
+PASS Stringification of createInput("image")
+PASS HTMLInputElement interface: createInput("image") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("reset")
+PASS Stringification of createInput("reset")
+PASS HTMLInputElement interface: createInput("reset") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("button")
+PASS Stringification of createInput("button")
+PASS HTMLInputElement interface: createInput("button") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "useMap" with the proper type
+PASS HTMLButtonElement interface: existence and properties of interface object
+PASS HTMLButtonElement interface object length
+PASS HTMLButtonElement interface object name
+PASS HTMLButtonElement interface: existence and properties of interface prototype object
+PASS HTMLButtonElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLButtonElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLButtonElement interface: attribute disabled
+PASS HTMLButtonElement interface: attribute form
+PASS HTMLButtonElement interface: attribute formAction
+PASS HTMLButtonElement interface: attribute formEnctype
+PASS HTMLButtonElement interface: attribute formMethod
+PASS HTMLButtonElement interface: attribute formNoValidate
+PASS HTMLButtonElement interface: attribute formTarget
+PASS HTMLButtonElement interface: attribute name
+PASS HTMLButtonElement interface: attribute type
+PASS HTMLButtonElement interface: attribute value
+PASS HTMLButtonElement interface: attribute willValidate
+PASS HTMLButtonElement interface: attribute validity
+PASS HTMLButtonElement interface: attribute validationMessage
+PASS HTMLButtonElement interface: operation checkValidity()
+PASS HTMLButtonElement interface: operation reportValidity()
+PASS HTMLButtonElement interface: operation setCustomValidity(DOMString)
+PASS HTMLButtonElement interface: attribute labels
+PASS HTMLButtonElement must be primary interface of document.createElement("button")
+PASS Stringification of document.createElement("button")
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "disabled" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "form" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formAction" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formEnctype" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formMethod" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formNoValidate" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formTarget" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "name" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "type" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "value" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "willValidate" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "validity" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "validationMessage" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "checkValidity()" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "reportValidity()" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLButtonElement interface: calling setCustomValidity(DOMString) on document.createElement("button") with too few arguments must throw TypeError
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "labels" with the proper type
+PASS HTMLSelectElement interface: existence and properties of interface object
+PASS HTMLSelectElement interface object length
+PASS HTMLSelectElement interface object name
+PASS HTMLSelectElement interface: existence and properties of interface prototype object
+PASS HTMLSelectElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLSelectElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLSelectElement interface: attribute autocomplete
+PASS HTMLSelectElement interface: attribute disabled
+PASS HTMLSelectElement interface: attribute form
+PASS HTMLSelectElement interface: attribute multiple
+PASS HTMLSelectElement interface: attribute name
+PASS HTMLSelectElement interface: attribute required
+PASS HTMLSelectElement interface: attribute size
+PASS HTMLSelectElement interface: attribute type
+PASS HTMLSelectElement interface: attribute options
+PASS HTMLSelectElement interface: attribute length
+PASS HTMLSelectElement interface: operation item(unsigned long)
+PASS HTMLSelectElement interface: operation namedItem(DOMString)
+PASS HTMLSelectElement interface: operation add([object Object],[object Object], [object Object],[object Object])
+PASS HTMLSelectElement interface: operation remove()
+PASS HTMLSelectElement interface: operation remove(long)
+PASS HTMLSelectElement interface: attribute selectedOptions
+PASS HTMLSelectElement interface: attribute selectedIndex
+PASS HTMLSelectElement interface: attribute value
+PASS HTMLSelectElement interface: attribute willValidate
+PASS HTMLSelectElement interface: attribute validity
+PASS HTMLSelectElement interface: attribute validationMessage
+PASS HTMLSelectElement interface: operation checkValidity()
+PASS HTMLSelectElement interface: operation reportValidity()
+PASS HTMLSelectElement interface: operation setCustomValidity(DOMString)
+PASS HTMLSelectElement interface: attribute labels
+PASS HTMLSelectElement must be primary interface of document.createElement("select")
+PASS Stringification of document.createElement("select")
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "autocomplete" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "disabled" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "form" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "multiple" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "name" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "required" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "size" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "type" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "options" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "length" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "item(unsigned long)" with the proper type
+PASS HTMLSelectElement interface: calling item(unsigned long) on document.createElement("select") with too few arguments must throw TypeError
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "namedItem(DOMString)" with the proper type
+PASS HTMLSelectElement interface: calling namedItem(DOMString) on document.createElement("select") with too few arguments must throw TypeError
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "add([object Object],[object Object], [object Object],[object Object])" with the proper type
+PASS HTMLSelectElement interface: calling add([object Object],[object Object], [object Object],[object Object]) on document.createElement("select") with too few arguments must throw TypeError
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "remove()" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "remove(long)" with the proper type
+PASS HTMLSelectElement interface: calling remove(long) on document.createElement("select") with too few arguments must throw TypeError
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "selectedOptions" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "selectedIndex" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "value" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "willValidate" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "validity" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "validationMessage" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "checkValidity()" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "reportValidity()" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLSelectElement interface: calling setCustomValidity(DOMString) on document.createElement("select") with too few arguments must throw TypeError
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "labels" with the proper type
+PASS HTMLDataListElement interface: existence and properties of interface object
+PASS HTMLDataListElement interface object length
+PASS HTMLDataListElement interface object name
+PASS HTMLDataListElement interface: existence and properties of interface prototype object
+PASS HTMLDataListElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDataListElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDataListElement interface: attribute options
+PASS HTMLDataListElement must be primary interface of document.createElement("datalist")
+PASS Stringification of document.createElement("datalist")
+PASS HTMLDataListElement interface: document.createElement("datalist") must inherit property "options" with the proper type
+PASS HTMLOptGroupElement interface: existence and properties of interface object
+PASS HTMLOptGroupElement interface object length
+PASS HTMLOptGroupElement interface object name
+PASS HTMLOptGroupElement interface: existence and properties of interface prototype object
+PASS HTMLOptGroupElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLOptGroupElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLOptGroupElement interface: attribute disabled
+PASS HTMLOptGroupElement interface: attribute label
+PASS HTMLOptGroupElement must be primary interface of document.createElement("optgroup")
+PASS Stringification of document.createElement("optgroup")
+PASS HTMLOptGroupElement interface: document.createElement("optgroup") must inherit property "disabled" with the proper type
+PASS HTMLOptGroupElement interface: document.createElement("optgroup") must inherit property "label" with the proper type
+PASS HTMLOptionElement interface: existence and properties of interface object
+PASS HTMLOptionElement interface object length
+PASS HTMLOptionElement interface object name
+PASS HTMLOptionElement interface: named constructor
+PASS HTMLOptionElement interface: named constructor object
+PASS HTMLOptionElement interface: named constructor prototype property
+PASS HTMLOptionElement interface: named constructor name
+PASS HTMLOptionElement interface: named constructor length
+PASS HTMLOptionElement interface: named constructor without 'new'
+PASS HTMLOptionElement interface: existence and properties of interface prototype object
+PASS HTMLOptionElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLOptionElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLOptionElement interface: attribute disabled
+PASS HTMLOptionElement interface: attribute form
+PASS HTMLOptionElement interface: attribute label
+PASS HTMLOptionElement interface: attribute defaultSelected
+PASS HTMLOptionElement interface: attribute selected
+PASS HTMLOptionElement interface: attribute value
+PASS HTMLOptionElement interface: attribute text
+PASS HTMLOptionElement interface: attribute index
+PASS HTMLOptionElement must be primary interface of document.createElement("option")
+PASS Stringification of document.createElement("option")
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "disabled" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "form" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "label" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "defaultSelected" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "selected" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "value" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "text" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "index" with the proper type
+PASS HTMLOptionElement must be primary interface of new Option()
+PASS Stringification of new Option()
+PASS HTMLOptionElement interface: new Option() must inherit property "disabled" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "form" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "label" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "defaultSelected" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "selected" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "value" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "text" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "index" with the proper type
+PASS HTMLTextAreaElement interface: existence and properties of interface object
+PASS HTMLTextAreaElement interface object length
+PASS HTMLTextAreaElement interface object name
+PASS HTMLTextAreaElement interface: existence and properties of interface prototype object
+PASS HTMLTextAreaElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTextAreaElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTextAreaElement interface: attribute autocomplete
+PASS HTMLTextAreaElement interface: attribute cols
+PASS HTMLTextAreaElement interface: attribute dirName
+PASS HTMLTextAreaElement interface: attribute disabled
+PASS HTMLTextAreaElement interface: attribute form
+PASS HTMLTextAreaElement interface: attribute maxLength
+PASS HTMLTextAreaElement interface: attribute minLength
+PASS HTMLTextAreaElement interface: attribute name
+PASS HTMLTextAreaElement interface: attribute placeholder
+PASS HTMLTextAreaElement interface: attribute readOnly
+PASS HTMLTextAreaElement interface: attribute required
+PASS HTMLTextAreaElement interface: attribute rows
+PASS HTMLTextAreaElement interface: attribute wrap
+PASS HTMLTextAreaElement interface: attribute type
+PASS HTMLTextAreaElement interface: attribute defaultValue
+PASS HTMLTextAreaElement interface: attribute value
+PASS HTMLTextAreaElement interface: attribute textLength
+PASS HTMLTextAreaElement interface: attribute willValidate
+PASS HTMLTextAreaElement interface: attribute validity
+PASS HTMLTextAreaElement interface: attribute validationMessage
+PASS HTMLTextAreaElement interface: operation checkValidity()
+PASS HTMLTextAreaElement interface: operation reportValidity()
+PASS HTMLTextAreaElement interface: operation setCustomValidity(DOMString)
+PASS HTMLTextAreaElement interface: attribute labels
+PASS HTMLTextAreaElement interface: operation select()
+PASS HTMLTextAreaElement interface: attribute selectionStart
+PASS HTMLTextAreaElement interface: attribute selectionEnd
+PASS HTMLTextAreaElement interface: attribute selectionDirection
+PASS HTMLTextAreaElement interface: operation setRangeText(DOMString)
+PASS HTMLTextAreaElement interface: operation setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)
+PASS HTMLTextAreaElement interface: operation setSelectionRange(unsigned long, unsigned long, DOMString)
+PASS HTMLTextAreaElement must be primary interface of document.createElement("textarea")
+PASS Stringification of document.createElement("textarea")
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "autocomplete" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "cols" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "dirName" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "disabled" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "form" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "maxLength" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "minLength" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "name" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "placeholder" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "readOnly" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "required" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "rows" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "wrap" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "type" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "defaultValue" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "value" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "textLength" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "willValidate" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "validity" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "validationMessage" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "checkValidity()" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "reportValidity()" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLTextAreaElement interface: calling setCustomValidity(DOMString) on document.createElement("textarea") with too few arguments must throw TypeError
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "labels" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "select()" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "selectionStart" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "selectionEnd" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "selectionDirection" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLTextAreaElement interface: calling setRangeText(DOMString) on document.createElement("textarea") with too few arguments must throw TypeError
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLTextAreaElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on document.createElement("textarea") with too few arguments must throw TypeError
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLTextAreaElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on document.createElement("textarea") with too few arguments must throw TypeError
+PASS HTMLOutputElement interface: existence and properties of interface object
+PASS HTMLOutputElement interface object length
+PASS HTMLOutputElement interface object name
+PASS HTMLOutputElement interface: existence and properties of interface prototype object
+PASS HTMLOutputElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLOutputElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLOutputElement interface: attribute htmlFor
+PASS HTMLOutputElement interface: attribute form
+PASS HTMLOutputElement interface: attribute name
+PASS HTMLOutputElement interface: attribute type
+PASS HTMLOutputElement interface: attribute defaultValue
+PASS HTMLOutputElement interface: attribute value
+PASS HTMLOutputElement interface: attribute willValidate
+PASS HTMLOutputElement interface: attribute validity
+PASS HTMLOutputElement interface: attribute validationMessage
+PASS HTMLOutputElement interface: operation checkValidity()
+PASS HTMLOutputElement interface: operation reportValidity()
+PASS HTMLOutputElement interface: operation setCustomValidity(DOMString)
+PASS HTMLOutputElement interface: attribute labels
+PASS HTMLOutputElement must be primary interface of document.createElement("output")
+PASS Stringification of document.createElement("output")
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "htmlFor" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "form" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "name" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "type" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "defaultValue" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "value" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "willValidate" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "validity" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "validationMessage" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "checkValidity()" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "reportValidity()" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLOutputElement interface: calling setCustomValidity(DOMString) on document.createElement("output") with too few arguments must throw TypeError
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "labels" with the proper type
+PASS HTMLProgressElement interface: existence and properties of interface object
+PASS HTMLProgressElement interface object length
+PASS HTMLProgressElement interface object name
+PASS HTMLProgressElement interface: existence and properties of interface prototype object
+PASS HTMLProgressElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLProgressElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLProgressElement interface: attribute value
+PASS HTMLProgressElement interface: attribute max
+PASS HTMLProgressElement interface: attribute position
+PASS HTMLProgressElement interface: attribute labels
+PASS HTMLProgressElement must be primary interface of document.createElement("progress")
+PASS Stringification of document.createElement("progress")
+PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "value" with the proper type
+PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "max" with the proper type
+PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "position" with the proper type
+PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "labels" with the proper type
+PASS HTMLMeterElement interface: existence and properties of interface object
+PASS HTMLMeterElement interface object length
+PASS HTMLMeterElement interface object name
+PASS HTMLMeterElement interface: existence and properties of interface prototype object
+PASS HTMLMeterElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMeterElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMeterElement interface: attribute value
+PASS HTMLMeterElement interface: attribute min
+PASS HTMLMeterElement interface: attribute max
+PASS HTMLMeterElement interface: attribute low
+PASS HTMLMeterElement interface: attribute high
+PASS HTMLMeterElement interface: attribute optimum
+PASS HTMLMeterElement interface: attribute labels
+PASS HTMLMeterElement must be primary interface of document.createElement("meter")
+PASS Stringification of document.createElement("meter")
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "value" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "min" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "max" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "low" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "high" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "optimum" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "labels" with the proper type
+PASS HTMLFieldSetElement interface: existence and properties of interface object
+PASS HTMLFieldSetElement interface object length
+PASS HTMLFieldSetElement interface object name
+PASS HTMLFieldSetElement interface: existence and properties of interface prototype object
+PASS HTMLFieldSetElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFieldSetElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFieldSetElement interface: attribute disabled
+PASS HTMLFieldSetElement interface: attribute form
+PASS HTMLFieldSetElement interface: attribute name
+PASS HTMLFieldSetElement interface: attribute type
+PASS HTMLFieldSetElement interface: attribute elements
+PASS HTMLFieldSetElement interface: attribute willValidate
+PASS HTMLFieldSetElement interface: attribute validity
+PASS HTMLFieldSetElement interface: attribute validationMessage
+PASS HTMLFieldSetElement interface: operation checkValidity()
+PASS HTMLFieldSetElement interface: operation reportValidity()
+PASS HTMLFieldSetElement interface: operation setCustomValidity(DOMString)
+PASS HTMLLegendElement interface: existence and properties of interface object
+PASS HTMLLegendElement interface object length
+PASS HTMLLegendElement interface object name
+PASS HTMLLegendElement interface: existence and properties of interface prototype object
+PASS HTMLLegendElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLLegendElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLLegendElement interface: attribute form
+PASS HTMLLegendElement interface: attribute align
+PASS HTMLLegendElement must be primary interface of document.createElement("legend")
+PASS Stringification of document.createElement("legend")
+PASS HTMLLegendElement interface: document.createElement("legend") must inherit property "form" with the proper type
+PASS HTMLLegendElement interface: document.createElement("legend") must inherit property "align" with the proper type
+PASS HTMLDetailsElement interface: existence and properties of interface object
+PASS HTMLDetailsElement interface object length
+PASS HTMLDetailsElement interface object name
+PASS HTMLDetailsElement interface: existence and properties of interface prototype object
+PASS HTMLDetailsElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDetailsElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDetailsElement interface: attribute open
+PASS HTMLDetailsElement must be primary interface of document.createElement("details")
+PASS Stringification of document.createElement("details")
+PASS HTMLDetailsElement interface: document.createElement("details") must inherit property "open" with the proper type
+PASS HTMLDialogElement interface: existence and properties of interface object
+PASS HTMLDialogElement interface object length
+PASS HTMLDialogElement interface object name
+PASS HTMLDialogElement interface: existence and properties of interface prototype object
+PASS HTMLDialogElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDialogElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDialogElement interface: attribute open
+PASS HTMLDialogElement interface: attribute returnValue
+PASS HTMLDialogElement interface: operation show()
+PASS HTMLDialogElement interface: operation showModal()
+PASS HTMLDialogElement interface: operation close(DOMString)
+PASS HTMLScriptElement interface: existence and properties of interface object
+PASS HTMLScriptElement interface object length
+PASS HTMLScriptElement interface object name
+PASS HTMLScriptElement interface: existence and properties of interface prototype object
+PASS HTMLScriptElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLScriptElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLScriptElement interface: attribute src
+PASS HTMLScriptElement interface: attribute type
+PASS HTMLScriptElement interface: attribute noModule
+PASS HTMLScriptElement interface: attribute async
+PASS HTMLScriptElement interface: attribute defer
+PASS HTMLScriptElement interface: attribute crossOrigin
+PASS HTMLScriptElement interface: attribute text
+PASS HTMLScriptElement interface: attribute integrity
+PASS HTMLScriptElement interface: attribute referrerPolicy
+PASS HTMLScriptElement interface: attribute charset
+PASS HTMLScriptElement interface: attribute event
+PASS HTMLScriptElement interface: attribute htmlFor
+PASS HTMLScriptElement must be primary interface of document.createElement("script")
+PASS Stringification of document.createElement("script")
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "src" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "type" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "noModule" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "async" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "defer" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "crossOrigin" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "text" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "integrity" with the proper type
+FAIL HTMLScriptElement interface: document.createElement("script") must inherit property "referrerPolicy" with the proper type assert_equals: expected "string" but got "object"
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "charset" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "event" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "htmlFor" with the proper type
+PASS HTMLTemplateElement interface: existence and properties of interface object
+PASS HTMLTemplateElement interface object length
+PASS HTMLTemplateElement interface object name
+PASS HTMLTemplateElement interface: existence and properties of interface prototype object
+PASS HTMLTemplateElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTemplateElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTemplateElement interface: attribute content
+PASS HTMLTemplateElement must be primary interface of document.createElement("template")
+PASS Stringification of document.createElement("template")
+PASS HTMLTemplateElement interface: document.createElement("template") must inherit property "content" with the proper type
+PASS HTMLSlotElement interface: existence and properties of interface object
+PASS HTMLSlotElement interface object length
+PASS HTMLSlotElement interface object name
+PASS HTMLSlotElement interface: existence and properties of interface prototype object
+PASS HTMLSlotElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLSlotElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLSlotElement interface: attribute name
+PASS HTMLSlotElement interface: operation assignedNodes(AssignedNodesOptions)
+PASS HTMLSlotElement interface: operation assignedElements(AssignedNodesOptions)
+PASS HTMLSlotElement must be primary interface of document.createElement("slot")
+PASS Stringification of document.createElement("slot")
+PASS HTMLSlotElement interface: document.createElement("slot") must inherit property "name" with the proper type
+PASS HTMLSlotElement interface: document.createElement("slot") must inherit property "assignedNodes(AssignedNodesOptions)" with the proper type
+PASS HTMLSlotElement interface: calling assignedNodes(AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError
+PASS HTMLSlotElement interface: document.createElement("slot") must inherit property "assignedElements(AssignedNodesOptions)" with the proper type
+PASS HTMLSlotElement interface: calling assignedElements(AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: existence and properties of interface object
+PASS HTMLCanvasElement interface object length
+PASS HTMLCanvasElement interface object name
+PASS HTMLCanvasElement interface: existence and properties of interface prototype object
+PASS HTMLCanvasElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLCanvasElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLCanvasElement interface: attribute width
+PASS HTMLCanvasElement interface: attribute height
+PASS HTMLCanvasElement interface: operation getContext(DOMString, any)
+PASS HTMLCanvasElement interface: operation toDataURL(DOMString, any)
+PASS HTMLCanvasElement interface: operation toBlob(BlobCallback, DOMString, any)
+PASS HTMLCanvasElement interface: operation transferControlToOffscreen()
+PASS HTMLCanvasElement must be primary interface of document.createElement("canvas")
+PASS Stringification of document.createElement("canvas")
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "width" with the proper type
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "height" with the proper type
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "getContext(DOMString, any)" with the proper type
+PASS HTMLCanvasElement interface: calling getContext(DOMString, any) on document.createElement("canvas") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toDataURL(DOMString, any)" with the proper type
+PASS HTMLCanvasElement interface: calling toDataURL(DOMString, any) on document.createElement("canvas") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toBlob(BlobCallback, DOMString, any)" with the proper type
+PASS HTMLCanvasElement interface: calling toBlob(BlobCallback, DOMString, any) on document.createElement("canvas") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "transferControlToOffscreen()" with the proper type
+PASS HTMLMarqueeElement interface: existence and properties of interface object
+PASS HTMLMarqueeElement interface object length
+PASS HTMLMarqueeElement interface object name
+PASS HTMLMarqueeElement interface: existence and properties of interface prototype object
+PASS HTMLMarqueeElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMarqueeElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMarqueeElement interface: attribute behavior
+PASS HTMLMarqueeElement interface: attribute bgColor
+PASS HTMLMarqueeElement interface: attribute direction
+PASS HTMLMarqueeElement interface: attribute height
+PASS HTMLMarqueeElement interface: attribute hspace
+PASS HTMLMarqueeElement interface: attribute loop
+PASS HTMLMarqueeElement interface: attribute scrollAmount
+PASS HTMLMarqueeElement interface: attribute scrollDelay
+PASS HTMLMarqueeElement interface: attribute trueSpeed
+PASS HTMLMarqueeElement interface: attribute vspace
+PASS HTMLMarqueeElement interface: attribute width
+FAIL HTMLMarqueeElement interface: attribute onbounce assert_true: The prototype object must have a property "onbounce" expected true got false
+FAIL HTMLMarqueeElement interface: attribute onfinish assert_true: The prototype object must have a property "onfinish" expected true got false
+FAIL HTMLMarqueeElement interface: attribute onstart assert_true: The prototype object must have a property "onstart" expected true got false
+PASS HTMLMarqueeElement interface: operation start()
+PASS HTMLMarqueeElement interface: operation stop()
+PASS HTMLMarqueeElement must be primary interface of document.createElement("marquee")
+PASS Stringification of document.createElement("marquee")
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "behavior" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "bgColor" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "direction" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "height" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "hspace" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "loop" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "scrollAmount" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "scrollDelay" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "trueSpeed" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "vspace" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "width" with the proper type
+FAIL HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onbounce" with the proper type assert_inherits: property "onbounce" not found in prototype chain
+FAIL HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onfinish" with the proper type assert_inherits: property "onfinish" not found in prototype chain
+FAIL HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onstart" with the proper type assert_inherits: property "onstart" not found in prototype chain
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "start()" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "stop()" with the proper type
+PASS HTMLFrameSetElement interface: existence and properties of interface object
+PASS HTMLFrameSetElement interface object length
+PASS HTMLFrameSetElement interface object name
+PASS HTMLFrameSetElement interface: existence and properties of interface prototype object
+PASS HTMLFrameSetElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFrameSetElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFrameSetElement interface: attribute cols
+PASS HTMLFrameSetElement interface: attribute rows
+PASS HTMLFrameSetElement interface: attribute onafterprint
+PASS HTMLFrameSetElement interface: attribute onbeforeprint
+PASS HTMLFrameSetElement interface: attribute onbeforeunload
+PASS HTMLFrameSetElement interface: attribute onhashchange
+PASS HTMLFrameSetElement interface: attribute onlanguagechange
+PASS HTMLFrameSetElement interface: attribute onmessage
+PASS HTMLFrameSetElement interface: attribute onmessageerror
+PASS HTMLFrameSetElement interface: attribute onoffline
+PASS HTMLFrameSetElement interface: attribute ononline
+PASS HTMLFrameSetElement interface: attribute onpagehide
+PASS HTMLFrameSetElement interface: attribute onpageshow
+PASS HTMLFrameSetElement interface: attribute onpopstate
+PASS HTMLFrameSetElement interface: attribute onrejectionhandled
+PASS HTMLFrameSetElement interface: attribute onstorage
+PASS HTMLFrameSetElement interface: attribute onunhandledrejection
+PASS HTMLFrameSetElement interface: attribute onunload
+PASS HTMLFrameSetElement must be primary interface of document.createElement("frameset")
+PASS Stringification of document.createElement("frameset")
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "cols" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "rows" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onafterprint" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onbeforeprint" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onbeforeunload" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onhashchange" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onlanguagechange" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onmessage" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onmessageerror" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onoffline" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "ononline" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpagehide" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpageshow" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpopstate" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onrejectionhandled" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onstorage" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onunhandledrejection" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onunload" with the proper type
+PASS HTMLFrameElement interface: existence and properties of interface object
+PASS HTMLFrameElement interface object length
+PASS HTMLFrameElement interface object name
+PASS HTMLFrameElement interface: existence and properties of interface prototype object
+PASS HTMLFrameElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFrameElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFrameElement interface: attribute name
+PASS HTMLFrameElement interface: attribute scrolling
+PASS HTMLFrameElement interface: attribute src
+PASS HTMLFrameElement interface: attribute frameBorder
+PASS HTMLFrameElement interface: attribute longDesc
+PASS HTMLFrameElement interface: attribute noResize
+PASS HTMLFrameElement interface: attribute contentDocument
+PASS HTMLFrameElement interface: attribute contentWindow
+PASS HTMLFrameElement interface: attribute marginHeight
+PASS HTMLFrameElement interface: attribute marginWidth
+PASS HTMLFrameElement must be primary interface of document.createElement("frame")
+PASS Stringification of document.createElement("frame")
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "name" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "scrolling" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "src" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "frameBorder" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "longDesc" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "noResize" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "contentDocument" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "contentWindow" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "marginHeight" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "marginWidth" with the proper type
+PASS HTMLDirectoryElement interface: existence and properties of interface object
+PASS HTMLDirectoryElement interface object length
+PASS HTMLDirectoryElement interface object name
+PASS HTMLDirectoryElement interface: existence and properties of interface prototype object
+PASS HTMLDirectoryElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDirectoryElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDirectoryElement interface: attribute compact
+PASS HTMLDirectoryElement must be primary interface of document.createElement("dir")
+PASS Stringification of document.createElement("dir")
+PASS HTMLDirectoryElement interface: document.createElement("dir") must inherit property "compact" with the proper type
+PASS HTMLFontElement interface: existence and properties of interface object
+PASS HTMLFontElement interface object length
+PASS HTMLFontElement interface object name
+PASS HTMLFontElement interface: existence and properties of interface prototype object
+PASS HTMLFontElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFontElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFontElement interface: attribute color
+PASS HTMLFontElement interface: attribute face
+PASS HTMLFontElement interface: attribute size
+PASS HTMLFontElement must be primary interface of document.createElement("font")
+PASS Stringification of document.createElement("font")
+PASS HTMLFontElement interface: document.createElement("font") must inherit property "color" with the proper type
+PASS HTMLFontElement interface: document.createElement("font") must inherit property "face" with the proper type
+PASS HTMLFontElement interface: document.createElement("font") must inherit property "size" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-retina/external/wpt/html/webappapis/scripting/events/event-handler-attributes-windowless-body-expected.txt b/third_party/blink/web_tests/platform/mac-retina/external/wpt/html/webappapis/scripting/events/event-handler-attributes-windowless-body-expected.txt
new file mode 100644
index 0000000..9ce3c84
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-retina/external/wpt/html/webappapis/scripting/events/event-handler-attributes-windowless-body-expected.txt
@@ -0,0 +1,210 @@
+This is a testharness.js-based test.
+Found 206 tests; 202 PASS, 4 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Return null when getting the blur event handler of a windowless body
+PASS Ignore setting of blur window event handlers on windowless body
+PASS Return null when getting the error event handler of a windowless body
+PASS Ignore setting of error window event handlers on windowless body
+PASS Return null when getting the focus event handler of a windowless body
+PASS Ignore setting of focus window event handlers on windowless body
+PASS Return null when getting the load event handler of a windowless body
+PASS Ignore setting of load window event handlers on windowless body
+PASS Return null when getting the resize event handler of a windowless body
+PASS Ignore setting of resize window event handlers on windowless body
+PASS Return null when getting the scroll event handler of a windowless body
+PASS Ignore setting of scroll window event handlers on windowless body
+PASS Return null when getting the afterprint event handler of a windowless body
+PASS Ignore setting of afterprint window event handlers on windowless body
+PASS Return null when getting the beforeprint event handler of a windowless body
+PASS Ignore setting of beforeprint window event handlers on windowless body
+PASS Return null when getting the beforeunload event handler of a windowless body
+PASS Ignore setting of beforeunload window event handlers on windowless body
+PASS Return null when getting the hashchange event handler of a windowless body
+PASS Ignore setting of hashchange window event handlers on windowless body
+PASS Return null when getting the languagechange event handler of a windowless body
+PASS Ignore setting of languagechange window event handlers on windowless body
+PASS Return null when getting the message event handler of a windowless body
+PASS Ignore setting of message window event handlers on windowless body
+PASS Return null when getting the messageerror event handler of a windowless body
+PASS Ignore setting of messageerror window event handlers on windowless body
+PASS Return null when getting the offline event handler of a windowless body
+PASS Ignore setting of offline window event handlers on windowless body
+PASS Return null when getting the online event handler of a windowless body
+PASS Ignore setting of online window event handlers on windowless body
+PASS Return null when getting the pagehide event handler of a windowless body
+PASS Ignore setting of pagehide window event handlers on windowless body
+PASS Return null when getting the pageshow event handler of a windowless body
+PASS Ignore setting of pageshow window event handlers on windowless body
+PASS Return null when getting the popstate event handler of a windowless body
+PASS Ignore setting of popstate window event handlers on windowless body
+PASS Return null when getting the rejectionhandled event handler of a windowless body
+PASS Ignore setting of rejectionhandled window event handlers on windowless body
+PASS Return null when getting the storage event handler of a windowless body
+PASS Ignore setting of storage window event handlers on windowless body
+PASS Return null when getting the unhandledrejection event handler of a windowless body
+PASS Ignore setting of unhandledrejection window event handlers on windowless body
+PASS Return null when getting the unload event handler of a windowless body
+PASS Ignore setting of unload window event handlers on windowless body
+PASS abort is unaffected on a windowless body
+PASS auxclick is unaffected on a windowless body
+PASS cancel is unaffected on a windowless body
+PASS canplay is unaffected on a windowless body
+PASS canplaythrough is unaffected on a windowless body
+PASS change is unaffected on a windowless body
+PASS click is unaffected on a windowless body
+PASS close is unaffected on a windowless body
+PASS contextmenu is unaffected on a windowless body
+PASS cuechange is unaffected on a windowless body
+PASS dblclick is unaffected on a windowless body
+PASS drag is unaffected on a windowless body
+PASS dragend is unaffected on a windowless body
+PASS dragenter is unaffected on a windowless body
+FAIL dragexit is unaffected on a windowless body assert_equals: expected (object) null but got (undefined) undefined
+PASS dragleave is unaffected on a windowless body
+PASS dragover is unaffected on a windowless body
+PASS dragstart is unaffected on a windowless body
+PASS drop is unaffected on a windowless body
+PASS durationchange is unaffected on a windowless body
+PASS emptied is unaffected on a windowless body
+PASS ended is unaffected on a windowless body
+PASS formdata is unaffected on a windowless body
+PASS input is unaffected on a windowless body
+PASS invalid is unaffected on a windowless body
+PASS keydown is unaffected on a windowless body
+PASS keypress is unaffected on a windowless body
+PASS keyup is unaffected on a windowless body
+PASS loadeddata is unaffected on a windowless body
+PASS loadedmetadata is unaffected on a windowless body
+PASS loadstart is unaffected on a windowless body
+PASS mousedown is unaffected on a windowless body
+PASS mouseenter is unaffected on a windowless body
+PASS mouseleave is unaffected on a windowless body
+PASS mousemove is unaffected on a windowless body
+PASS mouseout is unaffected on a windowless body
+PASS mouseover is unaffected on a windowless body
+PASS mouseup is unaffected on a windowless body
+PASS wheel is unaffected on a windowless body
+PASS pause is unaffected on a windowless body
+PASS play is unaffected on a windowless body
+PASS playing is unaffected on a windowless body
+PASS progress is unaffected on a windowless body
+PASS ratechange is unaffected on a windowless body
+PASS reset is unaffected on a windowless body
+FAIL securitypolicyviolation is unaffected on a windowless body assert_equals: expected (object) null but got (undefined) undefined
+PASS seeked is unaffected on a windowless body
+PASS seeking is unaffected on a windowless body
+PASS select is unaffected on a windowless body
+PASS stalled is unaffected on a windowless body
+PASS submit is unaffected on a windowless body
+PASS suspend is unaffected on a windowless body
+PASS timeupdate is unaffected on a windowless body
+PASS toggle is unaffected on a windowless body
+PASS volumechange is unaffected on a windowless body
+PASS waiting is unaffected on a windowless body
+PASS copy is unaffected on a windowless body
+PASS cut is unaffected on a windowless body
+PASS paste is unaffected on a windowless body
+PASS Return null when getting the blur event handler of a windowless frameset
+PASS Ignore setting of blur window event handlers on windowless frameset
+PASS Return null when getting the error event handler of a windowless frameset
+PASS Ignore setting of error window event handlers on windowless frameset
+PASS Return null when getting the focus event handler of a windowless frameset
+PASS Ignore setting of focus window event handlers on windowless frameset
+PASS Return null when getting the load event handler of a windowless frameset
+PASS Ignore setting of load window event handlers on windowless frameset
+PASS Return null when getting the resize event handler of a windowless frameset
+PASS Ignore setting of resize window event handlers on windowless frameset
+PASS Return null when getting the scroll event handler of a windowless frameset
+PASS Ignore setting of scroll window event handlers on windowless frameset
+PASS Return null when getting the afterprint event handler of a windowless frameset
+PASS Ignore setting of afterprint window event handlers on windowless frameset
+PASS Return null when getting the beforeprint event handler of a windowless frameset
+PASS Ignore setting of beforeprint window event handlers on windowless frameset
+PASS Return null when getting the beforeunload event handler of a windowless frameset
+PASS Ignore setting of beforeunload window event handlers on windowless frameset
+PASS Return null when getting the hashchange event handler of a windowless frameset
+PASS Ignore setting of hashchange window event handlers on windowless frameset
+PASS Return null when getting the languagechange event handler of a windowless frameset
+PASS Ignore setting of languagechange window event handlers on windowless frameset
+PASS Return null when getting the message event handler of a windowless frameset
+PASS Ignore setting of message window event handlers on windowless frameset
+PASS Return null when getting the messageerror event handler of a windowless frameset
+PASS Ignore setting of messageerror window event handlers on windowless frameset
+PASS Return null when getting the offline event handler of a windowless frameset
+PASS Ignore setting of offline window event handlers on windowless frameset
+PASS Return null when getting the online event handler of a windowless frameset
+PASS Ignore setting of online window event handlers on windowless frameset
+PASS Return null when getting the pagehide event handler of a windowless frameset
+PASS Ignore setting of pagehide window event handlers on windowless frameset
+PASS Return null when getting the pageshow event handler of a windowless frameset
+PASS Ignore setting of pageshow window event handlers on windowless frameset
+PASS Return null when getting the popstate event handler of a windowless frameset
+PASS Ignore setting of popstate window event handlers on windowless frameset
+PASS Return null when getting the rejectionhandled event handler of a windowless frameset
+PASS Ignore setting of rejectionhandled window event handlers on windowless frameset
+PASS Return null when getting the storage event handler of a windowless frameset
+PASS Ignore setting of storage window event handlers on windowless frameset
+PASS Return null when getting the unhandledrejection event handler of a windowless frameset
+PASS Ignore setting of unhandledrejection window event handlers on windowless frameset
+PASS Return null when getting the unload event handler of a windowless frameset
+PASS Ignore setting of unload window event handlers on windowless frameset
+PASS abort is unaffected on a windowless frameset
+PASS auxclick is unaffected on a windowless frameset
+PASS cancel is unaffected on a windowless frameset
+PASS canplay is unaffected on a windowless frameset
+PASS canplaythrough is unaffected on a windowless frameset
+PASS change is unaffected on a windowless frameset
+PASS click is unaffected on a windowless frameset
+PASS close is unaffected on a windowless frameset
+PASS contextmenu is unaffected on a windowless frameset
+PASS cuechange is unaffected on a windowless frameset
+PASS dblclick is unaffected on a windowless frameset
+PASS drag is unaffected on a windowless frameset
+PASS dragend is unaffected on a windowless frameset
+PASS dragenter is unaffected on a windowless frameset
+FAIL dragexit is unaffected on a windowless frameset assert_equals: expected (object) null but got (undefined) undefined
+PASS dragleave is unaffected on a windowless frameset
+PASS dragover is unaffected on a windowless frameset
+PASS dragstart is unaffected on a windowless frameset
+PASS drop is unaffected on a windowless frameset
+PASS durationchange is unaffected on a windowless frameset
+PASS emptied is unaffected on a windowless frameset
+PASS ended is unaffected on a windowless frameset
+PASS formdata is unaffected on a windowless frameset
+PASS input is unaffected on a windowless frameset
+PASS invalid is unaffected on a windowless frameset
+PASS keydown is unaffected on a windowless frameset
+PASS keypress is unaffected on a windowless frameset
+PASS keyup is unaffected on a windowless frameset
+PASS loadeddata is unaffected on a windowless frameset
+PASS loadedmetadata is unaffected on a windowless frameset
+PASS loadstart is unaffected on a windowless frameset
+PASS mousedown is unaffected on a windowless frameset
+PASS mouseenter is unaffected on a windowless frameset
+PASS mouseleave is unaffected on a windowless frameset
+PASS mousemove is unaffected on a windowless frameset
+PASS mouseout is unaffected on a windowless frameset
+PASS mouseover is unaffected on a windowless frameset
+PASS mouseup is unaffected on a windowless frameset
+PASS wheel is unaffected on a windowless frameset
+PASS pause is unaffected on a windowless frameset
+PASS play is unaffected on a windowless frameset
+PASS playing is unaffected on a windowless frameset
+PASS progress is unaffected on a windowless frameset
+PASS ratechange is unaffected on a windowless frameset
+PASS reset is unaffected on a windowless frameset
+FAIL securitypolicyviolation is unaffected on a windowless frameset assert_equals: expected (object) null but got (undefined) undefined
+PASS seeked is unaffected on a windowless frameset
+PASS seeking is unaffected on a windowless frameset
+PASS select is unaffected on a windowless frameset
+PASS stalled is unaffected on a windowless frameset
+PASS submit is unaffected on a windowless frameset
+PASS suspend is unaffected on a windowless frameset
+PASS timeupdate is unaffected on a windowless frameset
+PASS toggle is unaffected on a windowless frameset
+PASS volumechange is unaffected on a windowless frameset
+PASS waiting is unaffected on a windowless frameset
+PASS copy is unaffected on a windowless frameset
+PASS cut is unaffected on a windowless frameset
+PASS paste is unaffected on a windowless frameset
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-retina/external/wpt/idle-detection/idlharness.https.any-expected.txt b/third_party/blink/web_tests/platform/mac-retina/external/wpt/idle-detection/idlharness.https.any-expected.txt
new file mode 100644
index 0000000..41bb15de
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-retina/external/wpt/idle-detection/idlharness.https.any-expected.txt
@@ -0,0 +1,32 @@
+This is a testharness.js-based test.
+PASS Test IDL implementation of Idle Detection API
+PASS IdleDetector interface: existence and properties of interface object
+PASS IdleDetector interface object length
+PASS IdleDetector interface object name
+PASS IdleDetector interface: existence and properties of interface prototype object
+PASS IdleDetector interface: existence and properties of interface prototype object's "constructor" property
+PASS IdleDetector interface: existence and properties of interface prototype object's @@unscopables property
+PASS IdleDetector interface: attribute state
+PASS IdleDetector interface: attribute onchange
+PASS IdleDetector interface: operation start()
+PASS IdleDetector interface: operation stop()
+PASS IdleDetector must be primary interface of idle
+PASS Stringification of idle
+PASS IdleDetector interface: idle must inherit property "state" with the proper type
+PASS IdleDetector interface: idle must inherit property "onchange" with the proper type
+PASS IdleDetector interface: idle must inherit property "start()" with the proper type
+PASS IdleDetector interface: idle must inherit property "stop()" with the proper type
+PASS IdleState interface: existence and properties of interface object
+PASS IdleState interface object length
+PASS IdleState interface object name
+PASS IdleState interface: existence and properties of interface prototype object
+PASS IdleState interface: existence and properties of interface prototype object's "constructor" property
+PASS IdleState interface: existence and properties of interface prototype object's @@unscopables property
+PASS IdleState interface: attribute user
+PASS IdleState interface: attribute screen
+PASS IdleState must be primary interface of idle.state
+PASS Stringification of idle.state
+PASS IdleState interface: idle.state must inherit property "user" with the proper type
+PASS IdleState interface: idle.state must inherit property "screen" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-retina/external/wpt/notifications/idlharness.https.any.serviceworker-expected.txt b/third_party/blink/web_tests/platform/mac-retina/external/wpt/notifications/idlharness.https.any.serviceworker-expected.txt
new file mode 100644
index 0000000..860bff6
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-retina/external/wpt/notifications/idlharness.https.any.serviceworker-expected.txt
@@ -0,0 +1,49 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface ServiceWorkerRegistration: original interface defined
+PASS Partial interface ServiceWorkerGlobalScope: original interface defined
+PASS Notification interface: existence and properties of interface object
+PASS Notification interface object length
+PASS Notification interface object name
+PASS Notification interface: existence and properties of interface prototype object
+PASS Notification interface: existence and properties of interface prototype object's "constructor" property
+PASS Notification interface: existence and properties of interface prototype object's @@unscopables property
+PASS Notification interface: attribute permission
+PASS Notification interface: member requestPermission
+PASS Notification interface: attribute maxActions
+PASS Notification interface: attribute onclick
+PASS Notification interface: attribute onshow
+PASS Notification interface: attribute onerror
+PASS Notification interface: attribute onclose
+PASS Notification interface: attribute title
+PASS Notification interface: attribute dir
+PASS Notification interface: attribute lang
+PASS Notification interface: attribute body
+PASS Notification interface: attribute tag
+PASS Notification interface: attribute image
+PASS Notification interface: attribute icon
+PASS Notification interface: attribute badge
+PASS Notification interface: attribute vibrate
+PASS Notification interface: attribute timestamp
+PASS Notification interface: attribute renotify
+PASS Notification interface: attribute silent
+PASS Notification interface: attribute requireInteraction
+PASS Notification interface: attribute data
+PASS Notification interface: attribute actions
+PASS Notification interface: operation close()
+PASS NotificationEvent interface: existence and properties of interface object
+PASS NotificationEvent interface object length
+PASS NotificationEvent interface object name
+PASS NotificationEvent interface: existence and properties of interface prototype object
+PASS NotificationEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS NotificationEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS NotificationEvent interface: attribute notification
+PASS NotificationEvent interface: attribute action
+PASS ServiceWorkerRegistration interface: operation showNotification(DOMString, NotificationOptions)
+PASS ServiceWorkerRegistration interface: operation getNotifications(GetNotificationOptions)
+PASS ServiceWorkerGlobalScope interface: attribute onnotificationclick
+PASS ServiceWorkerGlobalScope interface: attribute onnotificationclose
+PASS ServiceWorkerGlobalScope interface: self must inherit property "onnotificationclick" with the proper type
+PASS ServiceWorkerGlobalScope interface: self must inherit property "onnotificationclose" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-retina/external/wpt/push-api/idlharness.https.any.worker-expected.txt b/third_party/blink/web_tests/platform/mac-retina/external/wpt/push-api/idlharness.https.any.worker-expected.txt
new file mode 100644
index 0000000..b62d5df3
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-retina/external/wpt/push-api/idlharness.https.any.worker-expected.txt
@@ -0,0 +1,43 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface ServiceWorkerRegistration: original interface defined
+PASS Partial interface ServiceWorkerGlobalScope: original interface defined
+PASS Partial interface ServiceWorkerGlobalScope: valid exposure set
+PASS PushManager interface: existence and properties of interface object
+PASS PushManager interface object length
+PASS PushManager interface object name
+PASS PushManager interface: existence and properties of interface prototype object
+PASS PushManager interface: existence and properties of interface prototype object's "constructor" property
+PASS PushManager interface: existence and properties of interface prototype object's @@unscopables property
+PASS PushManager interface: attribute supportedContentEncodings
+PASS PushManager interface: operation subscribe(PushSubscriptionOptionsInit)
+PASS PushManager interface: operation getSubscription()
+PASS PushManager interface: operation permissionState(PushSubscriptionOptionsInit)
+PASS PushSubscriptionOptions interface: existence and properties of interface object
+PASS PushSubscriptionOptions interface object length
+PASS PushSubscriptionOptions interface object name
+PASS PushSubscriptionOptions interface: existence and properties of interface prototype object
+PASS PushSubscriptionOptions interface: existence and properties of interface prototype object's "constructor" property
+PASS PushSubscriptionOptions interface: existence and properties of interface prototype object's @@unscopables property
+PASS PushSubscriptionOptions interface: attribute userVisibleOnly
+PASS PushSubscriptionOptions interface: attribute applicationServerKey
+PASS PushSubscription interface: existence and properties of interface object
+PASS PushSubscription interface object length
+PASS PushSubscription interface object name
+PASS PushSubscription interface: existence and properties of interface prototype object
+PASS PushSubscription interface: existence and properties of interface prototype object's "constructor" property
+PASS PushSubscription interface: existence and properties of interface prototype object's @@unscopables property
+PASS PushSubscription interface: attribute endpoint
+PASS PushSubscription interface: attribute expirationTime
+PASS PushSubscription interface: attribute options
+PASS PushSubscription interface: operation getKey(PushEncryptionKeyName)
+PASS PushSubscription interface: operation unsubscribe()
+PASS PushSubscription interface: operation toJSON()
+PASS PushMessageData interface: existence and properties of interface object
+PASS PushEvent interface: existence and properties of interface object
+PASS PushSubscriptionChangeEvent interface: existence and properties of interface object
+PASS ServiceWorkerRegistration interface: attribute pushManager
+PASS ServiceWorkerGlobalScope interface: existence and properties of interface object
+PASS ExtendableEvent interface: existence and properties of interface object
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac/virtual/forced-colors/fast/css/forced-colors-mode/backplate/forced-colors-mode-backplate-11-expected.png b/third_party/blink/web_tests/platform/mac/virtual/forced-colors/fast/css/forced-colors-mode/backplate/forced-colors-mode-backplate-11-expected.png
new file mode 100644
index 0000000..d2b745a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/virtual/forced-colors/fast/css/forced-colors-mode/backplate/forced-colors-mode-backplate-11-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/IndexedDB/idlharness.any.serviceworker-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/IndexedDB/idlharness.any.serviceworker-expected.txt
new file mode 100644
index 0000000..cf73abdc
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/external/wpt/IndexedDB/idlharness.any.serviceworker-expected.txt
@@ -0,0 +1,189 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined
+PASS IDBRequest interface: existence and properties of interface object
+PASS IDBRequest interface object length
+PASS IDBRequest interface object name
+PASS IDBRequest interface: existence and properties of interface prototype object
+PASS IDBRequest interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBRequest interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBRequest interface: attribute result
+PASS IDBRequest interface: attribute error
+PASS IDBRequest interface: attribute source
+PASS IDBRequest interface: attribute transaction
+PASS IDBRequest interface: attribute readyState
+PASS IDBRequest interface: attribute onsuccess
+PASS IDBRequest interface: attribute onerror
+PASS IDBOpenDBRequest interface: existence and properties of interface object
+PASS IDBOpenDBRequest interface object length
+PASS IDBOpenDBRequest interface object name
+PASS IDBOpenDBRequest interface: existence and properties of interface prototype object
+PASS IDBOpenDBRequest interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBOpenDBRequest interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBOpenDBRequest interface: attribute onblocked
+PASS IDBOpenDBRequest interface: attribute onupgradeneeded
+PASS IDBVersionChangeEvent interface: existence and properties of interface object
+PASS IDBVersionChangeEvent interface object length
+PASS IDBVersionChangeEvent interface object name
+PASS IDBVersionChangeEvent interface: existence and properties of interface prototype object
+PASS IDBVersionChangeEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBVersionChangeEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBVersionChangeEvent interface: attribute oldVersion
+PASS IDBVersionChangeEvent interface: attribute newVersion
+PASS IDBVersionChangeEvent must be primary interface of new IDBVersionChangeEvent("type")
+PASS Stringification of new IDBVersionChangeEvent("type")
+PASS IDBVersionChangeEvent interface: new IDBVersionChangeEvent("type") must inherit property "oldVersion" with the proper type
+PASS IDBVersionChangeEvent interface: new IDBVersionChangeEvent("type") must inherit property "newVersion" with the proper type
+PASS IDBFactory interface: existence and properties of interface object
+PASS IDBFactory interface object length
+PASS IDBFactory interface object name
+PASS IDBFactory interface: existence and properties of interface prototype object
+PASS IDBFactory interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBFactory interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBFactory interface: operation open(DOMString, unsigned long long)
+PASS IDBFactory interface: operation deleteDatabase(DOMString)
+PASS IDBFactory interface: operation databases()
+PASS IDBFactory interface: operation cmp(any, any)
+PASS IDBFactory must be primary interface of [object IDBFactory]
+PASS Stringification of [object IDBFactory]
+PASS IDBFactory interface: [object IDBFactory] must inherit property "open(DOMString, unsigned long long)" with the proper type
+PASS IDBFactory interface: calling open(DOMString, unsigned long long) on [object IDBFactory] with too few arguments must throw TypeError
+PASS IDBFactory interface: [object IDBFactory] must inherit property "deleteDatabase(DOMString)" with the proper type
+PASS IDBFactory interface: calling deleteDatabase(DOMString) on [object IDBFactory] with too few arguments must throw TypeError
+PASS IDBFactory interface: [object IDBFactory] must inherit property "databases()" with the proper type
+PASS IDBFactory interface: [object IDBFactory] must inherit property "cmp(any, any)" with the proper type
+PASS IDBFactory interface: calling cmp(any, any) on [object IDBFactory] with too few arguments must throw TypeError
+PASS IDBDatabase interface: existence and properties of interface object
+PASS IDBDatabase interface object length
+PASS IDBDatabase interface object name
+PASS IDBDatabase interface: existence and properties of interface prototype object
+PASS IDBDatabase interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBDatabase interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBDatabase interface: attribute name
+PASS IDBDatabase interface: attribute version
+PASS IDBDatabase interface: attribute objectStoreNames
+PASS IDBDatabase interface: operation transaction([object Object],[object Object], IDBTransactionMode)
+PASS IDBDatabase interface: operation close()
+PASS IDBDatabase interface: operation createObjectStore(DOMString, IDBObjectStoreParameters)
+PASS IDBDatabase interface: operation deleteObjectStore(DOMString)
+PASS IDBDatabase interface: attribute onabort
+PASS IDBDatabase interface: attribute onclose
+PASS IDBDatabase interface: attribute onerror
+PASS IDBDatabase interface: attribute onversionchange
+PASS IDBObjectStore interface: existence and properties of interface object
+PASS IDBObjectStore interface object length
+PASS IDBObjectStore interface object name
+PASS IDBObjectStore interface: existence and properties of interface prototype object
+PASS IDBObjectStore interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBObjectStore interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBObjectStore interface: attribute name
+PASS IDBObjectStore interface: attribute keyPath
+PASS IDBObjectStore interface: attribute indexNames
+PASS IDBObjectStore interface: attribute transaction
+PASS IDBObjectStore interface: attribute autoIncrement
+PASS IDBObjectStore interface: operation put(any, any)
+PASS IDBObjectStore interface: operation add(any, any)
+PASS IDBObjectStore interface: operation delete(any)
+PASS IDBObjectStore interface: operation clear()
+PASS IDBObjectStore interface: operation get(any)
+PASS IDBObjectStore interface: operation getKey(any)
+PASS IDBObjectStore interface: operation getAll(any, unsigned long)
+PASS IDBObjectStore interface: operation getAllKeys(any, unsigned long)
+PASS IDBObjectStore interface: operation count(any)
+PASS IDBObjectStore interface: operation openCursor(any, IDBCursorDirection)
+PASS IDBObjectStore interface: operation openKeyCursor(any, IDBCursorDirection)
+PASS IDBObjectStore interface: operation index(DOMString)
+PASS IDBObjectStore interface: operation createIndex(DOMString, [object Object],[object Object], IDBIndexParameters)
+PASS IDBObjectStore interface: operation deleteIndex(DOMString)
+PASS IDBIndex interface: existence and properties of interface object
+PASS IDBIndex interface object length
+PASS IDBIndex interface object name
+PASS IDBIndex interface: existence and properties of interface prototype object
+PASS IDBIndex interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBIndex interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBIndex interface: attribute name
+PASS IDBIndex interface: attribute objectStore
+PASS IDBIndex interface: attribute keyPath
+PASS IDBIndex interface: attribute multiEntry
+PASS IDBIndex interface: attribute unique
+PASS IDBIndex interface: operation get(any)
+PASS IDBIndex interface: operation getKey(any)
+PASS IDBIndex interface: operation getAll(any, unsigned long)
+PASS IDBIndex interface: operation getAllKeys(any, unsigned long)
+PASS IDBIndex interface: operation count(any)
+PASS IDBIndex interface: operation openCursor(any, IDBCursorDirection)
+PASS IDBIndex interface: operation openKeyCursor(any, IDBCursorDirection)
+PASS IDBKeyRange interface: existence and properties of interface object
+PASS IDBKeyRange interface object length
+PASS IDBKeyRange interface object name
+PASS IDBKeyRange interface: existence and properties of interface prototype object
+PASS IDBKeyRange interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBKeyRange interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBKeyRange interface: attribute lower
+PASS IDBKeyRange interface: attribute upper
+PASS IDBKeyRange interface: attribute lowerOpen
+PASS IDBKeyRange interface: attribute upperOpen
+PASS IDBKeyRange interface: operation only(any)
+PASS IDBKeyRange interface: operation lowerBound(any, boolean)
+PASS IDBKeyRange interface: operation upperBound(any, boolean)
+PASS IDBKeyRange interface: operation bound(any, any, boolean, boolean)
+PASS IDBKeyRange interface: operation includes(any)
+PASS IDBKeyRange must be primary interface of [object IDBKeyRange]
+PASS Stringification of [object IDBKeyRange]
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "lower" with the proper type
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "upper" with the proper type
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "lowerOpen" with the proper type
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "upperOpen" with the proper type
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "only(any)" with the proper type
+PASS IDBKeyRange interface: calling only(any) on [object IDBKeyRange] with too few arguments must throw TypeError
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "lowerBound(any, boolean)" with the proper type
+PASS IDBKeyRange interface: calling lowerBound(any, boolean) on [object IDBKeyRange] with too few arguments must throw TypeError
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "upperBound(any, boolean)" with the proper type
+PASS IDBKeyRange interface: calling upperBound(any, boolean) on [object IDBKeyRange] with too few arguments must throw TypeError
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "bound(any, any, boolean, boolean)" with the proper type
+PASS IDBKeyRange interface: calling bound(any, any, boolean, boolean) on [object IDBKeyRange] with too few arguments must throw TypeError
+PASS IDBKeyRange interface: [object IDBKeyRange] must inherit property "includes(any)" with the proper type
+PASS IDBKeyRange interface: calling includes(any) on [object IDBKeyRange] with too few arguments must throw TypeError
+PASS IDBCursor interface: existence and properties of interface object
+PASS IDBCursor interface object length
+PASS IDBCursor interface object name
+PASS IDBCursor interface: existence and properties of interface prototype object
+PASS IDBCursor interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBCursor interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBCursor interface: attribute source
+PASS IDBCursor interface: attribute direction
+PASS IDBCursor interface: attribute key
+PASS IDBCursor interface: attribute primaryKey
+PASS IDBCursor interface: attribute request
+PASS IDBCursor interface: operation advance(unsigned long)
+PASS IDBCursor interface: operation continue(any)
+PASS IDBCursor interface: operation continuePrimaryKey(any, any)
+PASS IDBCursor interface: operation update(any)
+PASS IDBCursor interface: operation delete()
+PASS IDBCursorWithValue interface: existence and properties of interface object
+PASS IDBCursorWithValue interface object length
+PASS IDBCursorWithValue interface object name
+PASS IDBCursorWithValue interface: existence and properties of interface prototype object
+PASS IDBCursorWithValue interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBCursorWithValue interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBCursorWithValue interface: attribute value
+PASS IDBTransaction interface: existence and properties of interface object
+PASS IDBTransaction interface object length
+PASS IDBTransaction interface object name
+PASS IDBTransaction interface: existence and properties of interface prototype object
+PASS IDBTransaction interface: existence and properties of interface prototype object's "constructor" property
+PASS IDBTransaction interface: existence and properties of interface prototype object's @@unscopables property
+PASS IDBTransaction interface: attribute objectStoreNames
+PASS IDBTransaction interface: attribute mode
+PASS IDBTransaction interface: attribute db
+PASS IDBTransaction interface: attribute error
+PASS IDBTransaction interface: operation objectStore(DOMString)
+PASS IDBTransaction interface: operation commit()
+PASS IDBTransaction interface: operation abort()
+PASS IDBTransaction interface: attribute onabort
+PASS IDBTransaction interface: attribute oncomplete
+PASS IDBTransaction interface: attribute onerror
+PASS Window interface: existence and properties of interface object
+PASS WorkerGlobalScope interface: attribute indexedDB
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/WebCryptoAPI/idlharness.https.any.worker-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/WebCryptoAPI/idlharness.https.any.worker-expected.txt
new file mode 100644
index 0000000..482b74a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/external/wpt/WebCryptoAPI/idlharness.https.any.worker-expected.txt
@@ -0,0 +1,74 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface mixin WindowOrWorkerGlobalScope: original interface mixin defined
+PASS Crypto interface: existence and properties of interface object
+PASS Crypto interface object length
+PASS Crypto interface object name
+PASS Crypto interface: existence and properties of interface prototype object
+PASS Crypto interface: existence and properties of interface prototype object's "constructor" property
+PASS Crypto interface: existence and properties of interface prototype object's @@unscopables property
+PASS Crypto interface: attribute subtle
+PASS Crypto interface: operation getRandomValues(ArrayBufferView)
+PASS Crypto must be primary interface of crypto
+PASS Stringification of crypto
+PASS Crypto interface: crypto must inherit property "subtle" with the proper type
+PASS Crypto interface: crypto must inherit property "getRandomValues(ArrayBufferView)" with the proper type
+PASS Crypto interface: calling getRandomValues(ArrayBufferView) on crypto with too few arguments must throw TypeError
+PASS CryptoKey interface: existence and properties of interface object
+PASS CryptoKey interface object length
+PASS CryptoKey interface object name
+PASS CryptoKey interface: existence and properties of interface prototype object
+PASS CryptoKey interface: existence and properties of interface prototype object's "constructor" property
+PASS CryptoKey interface: existence and properties of interface prototype object's @@unscopables property
+PASS CryptoKey interface: attribute type
+PASS CryptoKey interface: attribute extractable
+PASS CryptoKey interface: attribute algorithm
+PASS CryptoKey interface: attribute usages
+PASS SubtleCrypto interface: existence and properties of interface object
+PASS SubtleCrypto interface object length
+PASS SubtleCrypto interface object name
+PASS SubtleCrypto interface: existence and properties of interface prototype object
+PASS SubtleCrypto interface: existence and properties of interface prototype object's "constructor" property
+PASS SubtleCrypto interface: existence and properties of interface prototype object's @@unscopables property
+PASS SubtleCrypto interface: operation encrypt(AlgorithmIdentifier, CryptoKey, BufferSource)
+PASS SubtleCrypto interface: operation decrypt(AlgorithmIdentifier, CryptoKey, BufferSource)
+PASS SubtleCrypto interface: operation sign(AlgorithmIdentifier, CryptoKey, BufferSource)
+PASS SubtleCrypto interface: operation verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource)
+PASS SubtleCrypto interface: operation digest(AlgorithmIdentifier, BufferSource)
+PASS SubtleCrypto interface: operation generateKey(AlgorithmIdentifier, boolean, [object Object])
+PASS SubtleCrypto interface: operation deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, [object Object])
+PASS SubtleCrypto interface: operation deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long)
+PASS SubtleCrypto interface: operation importKey(KeyFormat, [object Object],[object Object], AlgorithmIdentifier, boolean, [object Object])
+PASS SubtleCrypto interface: operation exportKey(KeyFormat, CryptoKey)
+PASS SubtleCrypto interface: operation wrapKey(KeyFormat, CryptoKey, CryptoKey, AlgorithmIdentifier)
+PASS SubtleCrypto interface: operation unwrapKey(KeyFormat, BufferSource, CryptoKey, AlgorithmIdentifier, AlgorithmIdentifier, boolean, [object Object])
+PASS SubtleCrypto must be primary interface of crypto.subtle
+PASS Stringification of crypto.subtle
+PASS SubtleCrypto interface: crypto.subtle must inherit property "encrypt(AlgorithmIdentifier, CryptoKey, BufferSource)" with the proper type
+PASS SubtleCrypto interface: calling encrypt(AlgorithmIdentifier, CryptoKey, BufferSource) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "decrypt(AlgorithmIdentifier, CryptoKey, BufferSource)" with the proper type
+PASS SubtleCrypto interface: calling decrypt(AlgorithmIdentifier, CryptoKey, BufferSource) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "sign(AlgorithmIdentifier, CryptoKey, BufferSource)" with the proper type
+PASS SubtleCrypto interface: calling sign(AlgorithmIdentifier, CryptoKey, BufferSource) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource)" with the proper type
+PASS SubtleCrypto interface: calling verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "digest(AlgorithmIdentifier, BufferSource)" with the proper type
+PASS SubtleCrypto interface: calling digest(AlgorithmIdentifier, BufferSource) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "generateKey(AlgorithmIdentifier, boolean, [object Object])" with the proper type
+PASS SubtleCrypto interface: calling generateKey(AlgorithmIdentifier, boolean, [object Object]) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, [object Object])" with the proper type
+PASS SubtleCrypto interface: calling deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, [object Object]) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long)" with the proper type
+PASS SubtleCrypto interface: calling deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "importKey(KeyFormat, [object Object],[object Object], AlgorithmIdentifier, boolean, [object Object])" with the proper type
+PASS SubtleCrypto interface: calling importKey(KeyFormat, [object Object],[object Object], AlgorithmIdentifier, boolean, [object Object]) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "exportKey(KeyFormat, CryptoKey)" with the proper type
+PASS SubtleCrypto interface: calling exportKey(KeyFormat, CryptoKey) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "wrapKey(KeyFormat, CryptoKey, CryptoKey, AlgorithmIdentifier)" with the proper type
+PASS SubtleCrypto interface: calling wrapKey(KeyFormat, CryptoKey, CryptoKey, AlgorithmIdentifier) on crypto.subtle with too few arguments must throw TypeError
+PASS SubtleCrypto interface: crypto.subtle must inherit property "unwrapKey(KeyFormat, BufferSource, CryptoKey, AlgorithmIdentifier, AlgorithmIdentifier, boolean, [object Object])" with the proper type
+PASS SubtleCrypto interface: calling unwrapKey(KeyFormat, BufferSource, CryptoKey, AlgorithmIdentifier, AlgorithmIdentifier, boolean, [object Object]) on crypto.subtle with too few arguments must throw TypeError
+PASS Window interface: existence and properties of interface object
+PASS WorkerGlobalScope interface: attribute crypto
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/background-fetch/idlharness.https.any.serviceworker-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/background-fetch/idlharness.https.any.serviceworker-expected.txt
new file mode 100644
index 0000000..d0dfd483
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/external/wpt/background-fetch/idlharness.https.any.serviceworker-expected.txt
@@ -0,0 +1,61 @@
+This is a testharness.js-based test.
+Found 57 tests; 56 PASS, 1 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface ServiceWorkerGlobalScope: original interface defined
+PASS Partial interface ServiceWorkerRegistration: original interface defined
+PASS BackgroundFetchManager interface: existence and properties of interface object
+PASS BackgroundFetchManager interface object length
+PASS BackgroundFetchManager interface object name
+PASS BackgroundFetchManager interface: existence and properties of interface prototype object
+PASS BackgroundFetchManager interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchManager interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchManager interface: operation fetch(DOMString, [object Object],[object Object], BackgroundFetchOptions)
+PASS BackgroundFetchManager interface: operation get(DOMString)
+PASS BackgroundFetchManager interface: operation getIds()
+PASS BackgroundFetchRegistration interface: existence and properties of interface object
+PASS BackgroundFetchRegistration interface object length
+PASS BackgroundFetchRegistration interface object name
+PASS BackgroundFetchRegistration interface: existence and properties of interface prototype object
+PASS BackgroundFetchRegistration interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchRegistration interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchRegistration interface: attribute id
+PASS BackgroundFetchRegistration interface: attribute uploadTotal
+PASS BackgroundFetchRegistration interface: attribute uploaded
+PASS BackgroundFetchRegistration interface: attribute downloadTotal
+PASS BackgroundFetchRegistration interface: attribute downloaded
+PASS BackgroundFetchRegistration interface: attribute result
+PASS BackgroundFetchRegistration interface: attribute failureReason
+PASS BackgroundFetchRegistration interface: attribute recordsAvailable
+PASS BackgroundFetchRegistration interface: attribute onprogress
+PASS BackgroundFetchRegistration interface: operation abort()
+PASS BackgroundFetchRegistration interface: operation match(RequestInfo, CacheQueryOptions)
+PASS BackgroundFetchRegistration interface: operation matchAll(RequestInfo, CacheQueryOptions)
+PASS BackgroundFetchRecord interface: existence and properties of interface object
+PASS BackgroundFetchRecord interface object length
+PASS BackgroundFetchRecord interface object name
+PASS BackgroundFetchRecord interface: existence and properties of interface prototype object
+PASS BackgroundFetchRecord interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchRecord interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchRecord interface: attribute request
+PASS BackgroundFetchRecord interface: attribute responseReady
+PASS BackgroundFetchEvent interface: existence and properties of interface object
+PASS BackgroundFetchEvent interface object length
+PASS BackgroundFetchEvent interface object name
+PASS BackgroundFetchEvent interface: existence and properties of interface prototype object
+PASS BackgroundFetchEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchEvent interface: attribute registration
+PASS BackgroundFetchUpdateUIEvent interface: existence and properties of interface object
+PASS BackgroundFetchUpdateUIEvent interface object length
+PASS BackgroundFetchUpdateUIEvent interface object name
+PASS BackgroundFetchUpdateUIEvent interface: existence and properties of interface prototype object
+PASS BackgroundFetchUpdateUIEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchUpdateUIEvent interface: existence and properties of interface prototype object's @@unscopables property
+FAIL BackgroundFetchUpdateUIEvent interface: operation updateUI(BackgroundFetchUIOptions) assert_equals: property has wrong .length expected 0 but got 1
+PASS ServiceWorkerRegistration interface: attribute backgroundFetch
+PASS ServiceWorkerGlobalScope interface: attribute onbackgroundfetchsuccess
+PASS ServiceWorkerGlobalScope interface: attribute onbackgroundfetchfail
+PASS ServiceWorkerGlobalScope interface: attribute onbackgroundfetchabort
+PASS ServiceWorkerGlobalScope interface: attribute onbackgroundfetchclick
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/background-fetch/idlharness.https.any.worker-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/background-fetch/idlharness.https.any.worker-expected.txt
new file mode 100644
index 0000000..0b6e9e5
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/external/wpt/background-fetch/idlharness.https.any.worker-expected.txt
@@ -0,0 +1,46 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface ServiceWorkerGlobalScope: original interface defined
+PASS Partial interface ServiceWorkerRegistration: original interface defined
+PASS BackgroundFetchManager interface: existence and properties of interface object
+PASS BackgroundFetchManager interface object length
+PASS BackgroundFetchManager interface object name
+PASS BackgroundFetchManager interface: existence and properties of interface prototype object
+PASS BackgroundFetchManager interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchManager interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchManager interface: operation fetch(DOMString, [object Object],[object Object], BackgroundFetchOptions)
+PASS BackgroundFetchManager interface: operation get(DOMString)
+PASS BackgroundFetchManager interface: operation getIds()
+PASS BackgroundFetchRegistration interface: existence and properties of interface object
+PASS BackgroundFetchRegistration interface object length
+PASS BackgroundFetchRegistration interface object name
+PASS BackgroundFetchRegistration interface: existence and properties of interface prototype object
+PASS BackgroundFetchRegistration interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchRegistration interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchRegistration interface: attribute id
+PASS BackgroundFetchRegistration interface: attribute uploadTotal
+PASS BackgroundFetchRegistration interface: attribute uploaded
+PASS BackgroundFetchRegistration interface: attribute downloadTotal
+PASS BackgroundFetchRegistration interface: attribute downloaded
+PASS BackgroundFetchRegistration interface: attribute result
+PASS BackgroundFetchRegistration interface: attribute failureReason
+PASS BackgroundFetchRegistration interface: attribute recordsAvailable
+PASS BackgroundFetchRegistration interface: attribute onprogress
+PASS BackgroundFetchRegistration interface: operation abort()
+PASS BackgroundFetchRegistration interface: operation match(RequestInfo, CacheQueryOptions)
+PASS BackgroundFetchRegistration interface: operation matchAll(RequestInfo, CacheQueryOptions)
+PASS BackgroundFetchRecord interface: existence and properties of interface object
+PASS BackgroundFetchRecord interface object length
+PASS BackgroundFetchRecord interface object name
+PASS BackgroundFetchRecord interface: existence and properties of interface prototype object
+PASS BackgroundFetchRecord interface: existence and properties of interface prototype object's "constructor" property
+PASS BackgroundFetchRecord interface: existence and properties of interface prototype object's @@unscopables property
+PASS BackgroundFetchRecord interface: attribute request
+PASS BackgroundFetchRecord interface: attribute responseReady
+PASS BackgroundFetchEvent interface: existence and properties of interface object
+PASS BackgroundFetchUpdateUIEvent interface: existence and properties of interface object
+PASS ServiceWorkerRegistration interface: attribute backgroundFetch
+PASS ServiceWorkerGlobalScope interface: existence and properties of interface object
+PASS ExtendableEvent interface: existence and properties of interface object
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/css/css-masking/idlharness-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/css/css-masking/idlharness-expected.txt
new file mode 100644
index 0000000..f188afc0
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/external/wpt/css/css-masking/idlharness-expected.txt
@@ -0,0 +1,36 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+FAIL SVGClipPathElement interface: existence and properties of interface object assert_equals: prototype of SVGClipPathElement is not SVGElement expected function "function SVGElement() { [native code] }" but got function "function SVGGraphicsElement() { [native code] }"
+PASS SVGClipPathElement interface object length
+PASS SVGClipPathElement interface object name
+FAIL SVGClipPathElement interface: existence and properties of interface prototype object assert_equals: prototype of SVGClipPathElement.prototype is not SVGElement.prototype expected object "[object SVGElement]" but got object "[object SVGGraphicsElement]"
+PASS SVGClipPathElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGClipPathElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGClipPathElement interface: attribute clipPathUnits
+FAIL SVGClipPathElement interface: attribute transform assert_own_property: expected property "transform" missing
+PASS SVGClipPathElement must be primary interface of [object SVGClipPathElement]
+PASS Stringification of [object SVGClipPathElement]
+PASS SVGClipPathElement interface: [object SVGClipPathElement] must inherit property "clipPathUnits" with the proper type
+PASS SVGClipPathElement interface: [object SVGClipPathElement] must inherit property "transform" with the proper type
+PASS SVGMaskElement interface: existence and properties of interface object
+PASS SVGMaskElement interface object length
+PASS SVGMaskElement interface object name
+PASS SVGMaskElement interface: existence and properties of interface prototype object
+PASS SVGMaskElement interface: existence and properties of interface prototype object's "constructor" property
+PASS SVGMaskElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS SVGMaskElement interface: attribute maskUnits
+PASS SVGMaskElement interface: attribute maskContentUnits
+PASS SVGMaskElement interface: attribute x
+PASS SVGMaskElement interface: attribute y
+PASS SVGMaskElement interface: attribute width
+PASS SVGMaskElement interface: attribute height
+PASS SVGMaskElement must be primary interface of [object SVGMaskElement]
+PASS Stringification of [object SVGMaskElement]
+PASS SVGMaskElement interface: [object SVGMaskElement] must inherit property "maskUnits" with the proper type
+PASS SVGMaskElement interface: [object SVGMaskElement] must inherit property "maskContentUnits" with the proper type
+PASS SVGMaskElement interface: [object SVGMaskElement] must inherit property "x" with the proper type
+PASS SVGMaskElement interface: [object SVGMaskElement] must inherit property "y" with the proper type
+PASS SVGMaskElement interface: [object SVGMaskElement] must inherit property "width" with the proper type
+PASS SVGMaskElement interface: [object SVGMaskElement] must inherit property "height" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/css/cssom-view/idlharness-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/css/cssom-view/idlharness-expected.txt
new file mode 100644
index 0000000..55af6db
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/external/wpt/css/cssom-view/idlharness-expected.txt
@@ -0,0 +1,329 @@
+This is a testharness.js-based test.
+Found 325 tests; 252 PASS, 73 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface Window: original interface defined
+PASS Partial interface Document: original interface defined
+PASS Partial interface Element: original interface defined
+PASS Partial interface HTMLElement: original interface defined
+PASS Partial interface HTMLImageElement: original interface defined
+PASS Partial interface Range: original interface defined
+PASS Partial interface MouseEvent: original interface defined
+PASS Partial dictionary MouseEventInit: original dictionary defined
+PASS MediaQueryList interface: existence and properties of interface object
+PASS MediaQueryList interface object length
+PASS MediaQueryList interface object name
+PASS MediaQueryList interface: existence and properties of interface prototype object
+PASS MediaQueryList interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaQueryList interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaQueryList interface: attribute media
+PASS MediaQueryList interface: attribute matches
+PASS MediaQueryList interface: operation addListener(EventListener)
+PASS MediaQueryList interface: operation removeListener(EventListener)
+PASS MediaQueryList interface: attribute onchange
+PASS MediaQueryList must be primary interface of matchMedia("all")
+PASS Stringification of matchMedia("all")
+PASS MediaQueryList interface: matchMedia("all") must inherit property "media" with the proper type
+PASS MediaQueryList interface: matchMedia("all") must inherit property "matches" with the proper type
+PASS MediaQueryList interface: matchMedia("all") must inherit property "addListener(EventListener)" with the proper type
+PASS MediaQueryList interface: calling addListener(EventListener) on matchMedia("all") with too few arguments must throw TypeError
+PASS MediaQueryList interface: matchMedia("all") must inherit property "removeListener(EventListener)" with the proper type
+PASS MediaQueryList interface: calling removeListener(EventListener) on matchMedia("all") with too few arguments must throw TypeError
+PASS MediaQueryList interface: matchMedia("all") must inherit property "onchange" with the proper type
+PASS MediaQueryListEvent interface: existence and properties of interface object
+PASS MediaQueryListEvent interface object length
+PASS MediaQueryListEvent interface object name
+PASS MediaQueryListEvent interface: existence and properties of interface prototype object
+PASS MediaQueryListEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaQueryListEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaQueryListEvent interface: attribute media
+PASS MediaQueryListEvent interface: attribute matches
+PASS MediaQueryListEvent must be primary interface of new MediaQueryListEvent("change")
+PASS Stringification of new MediaQueryListEvent("change")
+PASS MediaQueryListEvent interface: new MediaQueryListEvent("change") must inherit property "media" with the proper type
+PASS MediaQueryListEvent interface: new MediaQueryListEvent("change") must inherit property "matches" with the proper type
+PASS Screen interface: existence and properties of interface object
+PASS Screen interface object length
+PASS Screen interface object name
+PASS Screen interface: existence and properties of interface prototype object
+PASS Screen interface: existence and properties of interface prototype object's "constructor" property
+PASS Screen interface: existence and properties of interface prototype object's @@unscopables property
+PASS Screen interface: attribute availWidth
+PASS Screen interface: attribute availHeight
+PASS Screen interface: attribute width
+PASS Screen interface: attribute height
+PASS Screen interface: attribute colorDepth
+PASS Screen interface: attribute pixelDepth
+PASS Screen must be primary interface of screen
+PASS Stringification of screen
+PASS Screen interface: screen must inherit property "availWidth" with the proper type
+PASS Screen interface: screen must inherit property "availHeight" with the proper type
+PASS Screen interface: screen must inherit property "width" with the proper type
+PASS Screen interface: screen must inherit property "height" with the proper type
+PASS Screen interface: screen must inherit property "colorDepth" with the proper type
+PASS Screen interface: screen must inherit property "pixelDepth" with the proper type
+FAIL CaretPosition interface: existence and properties of interface object assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface object length assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface object name assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: attribute offsetNode assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: attribute offset assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: operation getClientRect() assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition must be primary interface of document.caretPositionFromPoint(5, 5) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: document.caretPositionFromPoint is not a function"
+FAIL Stringification of document.caretPositionFromPoint(5, 5) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: document.caretPositionFromPoint is not a function"
+FAIL CaretPosition interface: document.caretPositionFromPoint(5, 5) must inherit property "offsetNode" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: document.caretPositionFromPoint is not a function"
+FAIL CaretPosition interface: document.caretPositionFromPoint(5, 5) must inherit property "offset" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: document.caretPositionFromPoint is not a function"
+FAIL CaretPosition interface: document.caretPositionFromPoint(5, 5) must inherit property "getClientRect()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: document.caretPositionFromPoint is not a function"
+FAIL CSSPseudoElement interface: operation getBoxQuads(BoxQuadOptions) assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+FAIL CSSPseudoElement interface: operation convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+FAIL CSSPseudoElement interface: operation convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+FAIL CSSPseudoElement interface: operation convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+PASS MouseEvent interface: attribute screenX
+PASS MouseEvent interface: attribute screenY
+PASS MouseEvent interface: attribute pageX
+PASS MouseEvent interface: attribute pageY
+PASS MouseEvent interface: attribute clientX
+PASS MouseEvent interface: attribute clientY
+PASS MouseEvent interface: attribute x
+PASS MouseEvent interface: attribute y
+PASS MouseEvent interface: attribute offsetX
+PASS MouseEvent interface: attribute offsetY
+PASS HTMLElement interface: attribute offsetParent
+PASS HTMLElement interface: attribute offsetTop
+PASS HTMLElement interface: attribute offsetLeft
+PASS HTMLElement interface: attribute offsetWidth
+PASS HTMLElement interface: attribute offsetHeight
+PASS HTMLElement interface: document.createElement("div") must inherit property "offsetParent" with the proper type
+PASS HTMLElement interface: document.createElement("div") must inherit property "offsetTop" with the proper type
+PASS HTMLElement interface: document.createElement("div") must inherit property "offsetLeft" with the proper type
+PASS HTMLElement interface: document.createElement("div") must inherit property "offsetWidth" with the proper type
+PASS HTMLElement interface: document.createElement("div") must inherit property "offsetHeight" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "getClientRects()" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "getBoundingClientRect()" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "scrollIntoView([object Object],[object Object])" with the proper type
+PASS Element interface: calling scrollIntoView([object Object],[object Object]) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scroll(ScrollToOptions)" with the proper type
+PASS Element interface: calling scroll(ScrollToOptions) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scroll(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scroll(unrestricted double, unrestricted double) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scrollTo(ScrollToOptions)" with the proper type
+PASS Element interface: calling scrollTo(ScrollToOptions) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scrollTo(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scrollTo(unrestricted double, unrestricted double) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scrollBy(ScrollToOptions)" with the proper type
+PASS Element interface: calling scrollBy(ScrollToOptions) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scrollBy(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scrollBy(unrestricted double, unrestricted double) on document.createElement("div") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("div") must inherit property "scrollTop" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "scrollLeft" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "scrollWidth" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "scrollHeight" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "clientTop" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "clientLeft" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "clientWidth" with the proper type
+PASS Element interface: document.createElement("div") must inherit property "clientHeight" with the proper type
+FAIL Element interface: document.createElement("div") must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: calling getBoxQuads(BoxQuadOptions) on document.createElement("div") with too few arguments must throw TypeError assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: document.createElement("div") must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document.createElement("div") with too few arguments must throw TypeError assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: document.createElement("div") must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document.createElement("div") with too few arguments must throw TypeError assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: document.createElement("div") must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Element interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document.createElement("div") with too few arguments must throw TypeError assert_inherits: property "convertPointFromNode" not found in prototype chain
+PASS HTMLImageElement interface: attribute x
+PASS HTMLImageElement interface: attribute y
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "x" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "y" with the proper type
+PASS HTMLElement interface: document.createElement("img") must inherit property "offsetParent" with the proper type
+PASS HTMLElement interface: document.createElement("img") must inherit property "offsetTop" with the proper type
+PASS HTMLElement interface: document.createElement("img") must inherit property "offsetLeft" with the proper type
+PASS HTMLElement interface: document.createElement("img") must inherit property "offsetWidth" with the proper type
+PASS HTMLElement interface: document.createElement("img") must inherit property "offsetHeight" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "getClientRects()" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "getBoundingClientRect()" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "scrollIntoView([object Object],[object Object])" with the proper type
+PASS Element interface: calling scrollIntoView([object Object],[object Object]) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scroll(ScrollToOptions)" with the proper type
+PASS Element interface: calling scroll(ScrollToOptions) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scroll(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scroll(unrestricted double, unrestricted double) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scrollTo(ScrollToOptions)" with the proper type
+PASS Element interface: calling scrollTo(ScrollToOptions) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scrollTo(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scrollTo(unrestricted double, unrestricted double) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scrollBy(ScrollToOptions)" with the proper type
+PASS Element interface: calling scrollBy(ScrollToOptions) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scrollBy(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scrollBy(unrestricted double, unrestricted double) on document.createElement("img") with too few arguments must throw TypeError
+PASS Element interface: document.createElement("img") must inherit property "scrollTop" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "scrollLeft" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "scrollWidth" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "scrollHeight" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "clientTop" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "clientLeft" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "clientWidth" with the proper type
+PASS Element interface: document.createElement("img") must inherit property "clientHeight" with the proper type
+FAIL Element interface: document.createElement("img") must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: calling getBoxQuads(BoxQuadOptions) on document.createElement("img") with too few arguments must throw TypeError assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: document.createElement("img") must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document.createElement("img") with too few arguments must throw TypeError assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: document.createElement("img") must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document.createElement("img") with too few arguments must throw TypeError assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: document.createElement("img") must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Element interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document.createElement("img") with too few arguments must throw TypeError assert_inherits: property "convertPointFromNode" not found in prototype chain
+PASS Window interface: operation matchMedia(CSSOMString)
+PASS Window interface: attribute screen
+PASS Window interface: operation moveTo(long, long)
+PASS Window interface: operation moveBy(long, long)
+PASS Window interface: operation resizeTo(long, long)
+PASS Window interface: operation resizeBy(long, long)
+PASS Window interface: attribute innerWidth
+PASS Window interface: attribute innerHeight
+PASS Window interface: attribute scrollX
+PASS Window interface: attribute pageXOffset
+PASS Window interface: attribute scrollY
+PASS Window interface: attribute pageYOffset
+PASS Window interface: operation scroll(ScrollToOptions)
+PASS Window interface: operation scroll(unrestricted double, unrestricted double)
+PASS Window interface: operation scrollTo(ScrollToOptions)
+PASS Window interface: operation scrollTo(unrestricted double, unrestricted double)
+PASS Window interface: operation scrollBy(ScrollToOptions)
+PASS Window interface: operation scrollBy(unrestricted double, unrestricted double)
+PASS Window interface: attribute screenX
+PASS Window interface: attribute screenLeft
+PASS Window interface: attribute screenY
+PASS Window interface: attribute screenTop
+PASS Window interface: attribute outerWidth
+PASS Window interface: attribute outerHeight
+PASS Window interface: attribute devicePixelRatio
+PASS Window interface: window must inherit property "matchMedia(CSSOMString)" with the proper type
+PASS Window interface: calling matchMedia(CSSOMString) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "screen" with the proper type
+PASS Window interface: window must inherit property "moveTo(long, long)" with the proper type
+PASS Window interface: calling moveTo(long, long) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "moveBy(long, long)" with the proper type
+PASS Window interface: calling moveBy(long, long) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "resizeTo(long, long)" with the proper type
+PASS Window interface: calling resizeTo(long, long) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "resizeBy(long, long)" with the proper type
+PASS Window interface: calling resizeBy(long, long) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "innerWidth" with the proper type
+PASS Window interface: window must inherit property "innerHeight" with the proper type
+PASS Window interface: window must inherit property "scrollX" with the proper type
+PASS Window interface: window must inherit property "pageXOffset" with the proper type
+PASS Window interface: window must inherit property "scrollY" with the proper type
+PASS Window interface: window must inherit property "pageYOffset" with the proper type
+PASS Window interface: window must inherit property "scroll(ScrollToOptions)" with the proper type
+PASS Window interface: calling scroll(ScrollToOptions) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "scroll(unrestricted double, unrestricted double)" with the proper type
+PASS Window interface: calling scroll(unrestricted double, unrestricted double) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "scrollTo(ScrollToOptions)" with the proper type
+PASS Window interface: calling scrollTo(ScrollToOptions) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "scrollTo(unrestricted double, unrestricted double)" with the proper type
+PASS Window interface: calling scrollTo(unrestricted double, unrestricted double) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "scrollBy(ScrollToOptions)" with the proper type
+PASS Window interface: calling scrollBy(ScrollToOptions) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "scrollBy(unrestricted double, unrestricted double)" with the proper type
+PASS Window interface: calling scrollBy(unrestricted double, unrestricted double) on window with too few arguments must throw TypeError
+PASS Window interface: window must inherit property "screenX" with the proper type
+PASS Window interface: window must inherit property "screenLeft" with the proper type
+PASS Window interface: window must inherit property "screenY" with the proper type
+PASS Window interface: window must inherit property "screenTop" with the proper type
+PASS Window interface: window must inherit property "outerWidth" with the proper type
+PASS Window interface: window must inherit property "outerHeight" with the proper type
+PASS Window interface: window must inherit property "devicePixelRatio" with the proper type
+PASS Document interface: operation elementFromPoint(double, double)
+PASS Document interface: operation elementsFromPoint(double, double)
+FAIL Document interface: operation caretPositionFromPoint(double, double) assert_own_property: interface prototype object missing non-static operation expected property "caretPositionFromPoint" missing
+PASS Document interface: attribute scrollingElement
+FAIL Document interface: operation getBoxQuads(BoxQuadOptions) assert_own_property: interface prototype object missing non-static operation expected property "getBoxQuads" missing
+FAIL Document interface: operation convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertQuadFromNode" missing
+FAIL Document interface: operation convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertRectFromNode" missing
+FAIL Document interface: operation convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertPointFromNode" missing
+PASS Document interface: document must inherit property "elementFromPoint(double, double)" with the proper type
+PASS Document interface: calling elementFromPoint(double, double) on document with too few arguments must throw TypeError
+PASS Document interface: document must inherit property "elementsFromPoint(double, double)" with the proper type
+PASS Document interface: calling elementsFromPoint(double, double) on document with too few arguments must throw TypeError
+FAIL Document interface: document must inherit property "caretPositionFromPoint(double, double)" with the proper type assert_inherits: property "caretPositionFromPoint" not found in prototype chain
+FAIL Document interface: calling caretPositionFromPoint(double, double) on document with too few arguments must throw TypeError assert_inherits: property "caretPositionFromPoint" not found in prototype chain
+PASS Document interface: document must inherit property "scrollingElement" with the proper type
+FAIL Document interface: document must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Document interface: calling getBoxQuads(BoxQuadOptions) on document with too few arguments must throw TypeError assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Document interface: document must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Document interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document with too few arguments must throw TypeError assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Document interface: document must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Document interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document with too few arguments must throw TypeError assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Document interface: document must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Document interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document with too few arguments must throw TypeError assert_inherits: property "convertPointFromNode" not found in prototype chain
+PASS Element interface: operation getClientRects()
+PASS Element interface: operation getBoundingClientRect()
+PASS Element interface: operation scrollIntoView([object Object],[object Object])
+PASS Element interface: operation scroll(ScrollToOptions)
+PASS Element interface: operation scroll(unrestricted double, unrestricted double)
+PASS Element interface: operation scrollTo(ScrollToOptions)
+PASS Element interface: operation scrollTo(unrestricted double, unrestricted double)
+PASS Element interface: operation scrollBy(ScrollToOptions)
+PASS Element interface: operation scrollBy(unrestricted double, unrestricted double)
+PASS Element interface: attribute scrollTop
+PASS Element interface: attribute scrollLeft
+PASS Element interface: attribute scrollWidth
+PASS Element interface: attribute scrollHeight
+PASS Element interface: attribute clientTop
+PASS Element interface: attribute clientLeft
+PASS Element interface: attribute clientWidth
+PASS Element interface: attribute clientHeight
+FAIL Element interface: operation getBoxQuads(BoxQuadOptions) assert_own_property: interface prototype object missing non-static operation expected property "getBoxQuads" missing
+FAIL Element interface: operation convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertQuadFromNode" missing
+FAIL Element interface: operation convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertRectFromNode" missing
+FAIL Element interface: operation convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertPointFromNode" missing
+PASS Element interface: document.createElementNS("x", "y") must inherit property "getClientRects()" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "getBoundingClientRect()" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollIntoView([object Object],[object Object])" with the proper type
+PASS Element interface: calling scrollIntoView([object Object],[object Object]) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scroll(ScrollToOptions)" with the proper type
+PASS Element interface: calling scroll(ScrollToOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scroll(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scroll(unrestricted double, unrestricted double) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollTo(ScrollToOptions)" with the proper type
+PASS Element interface: calling scrollTo(ScrollToOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollTo(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scrollTo(unrestricted double, unrestricted double) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollBy(ScrollToOptions)" with the proper type
+PASS Element interface: calling scrollBy(ScrollToOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollBy(unrestricted double, unrestricted double)" with the proper type
+PASS Element interface: calling scrollBy(unrestricted double, unrestricted double) on document.createElementNS("x", "y") with too few arguments must throw TypeError
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollTop" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollLeft" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollWidth" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollHeight" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "clientTop" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "clientLeft" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "clientWidth" with the proper type
+PASS Element interface: document.createElementNS("x", "y") must inherit property "clientHeight" with the proper type
+FAIL Element interface: document.createElementNS("x", "y") must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: calling getBoxQuads(BoxQuadOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: document.createElementNS("x", "y") must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: document.createElementNS("x", "y") must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: document.createElementNS("x", "y") must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Element interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Text interface: operation getBoxQuads(BoxQuadOptions) assert_own_property: interface prototype object missing non-static operation expected property "getBoxQuads" missing
+FAIL Text interface: operation convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertQuadFromNode" missing
+FAIL Text interface: operation convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertRectFromNode" missing
+FAIL Text interface: operation convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertPointFromNode" missing
+FAIL Text interface: document.createTextNode("x") must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Text interface: calling getBoxQuads(BoxQuadOptions) on document.createTextNode("x") with too few arguments must throw TypeError assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Text interface: document.createTextNode("x") must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Text interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document.createTextNode("x") with too few arguments must throw TypeError assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Text interface: document.createTextNode("x") must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Text interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document.createTextNode("x") with too few arguments must throw TypeError assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Text interface: document.createTextNode("x") must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Text interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document.createTextNode("x") with too few arguments must throw TypeError assert_inherits: property "convertPointFromNode" not found in prototype chain
+PASS Range interface: operation getClientRects()
+PASS Range interface: operation getBoundingClientRect()
+PASS Range interface: new Range() must inherit property "getClientRects()" with the proper type
+PASS Range interface: new Range() must inherit property "getBoundingClientRect()" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/dom/idlharness.window_include=Node-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/dom/idlharness.window_include=Node-expected.txt
new file mode 100644
index 0000000..60bf7dfc
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/external/wpt/dom/idlharness.window_include=Node-expected.txt
@@ -0,0 +1,616 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface Window: original interface defined
+PASS Node interface: existence and properties of interface object
+PASS Node interface object length
+PASS Node interface object name
+PASS Node interface: existence and properties of interface prototype object
+PASS Node interface: existence and properties of interface prototype object's "constructor" property
+PASS Node interface: existence and properties of interface prototype object's @@unscopables property
+PASS Node interface: constant ELEMENT_NODE on interface object
+PASS Node interface: constant ELEMENT_NODE on interface prototype object
+PASS Node interface: constant ATTRIBUTE_NODE on interface object
+PASS Node interface: constant ATTRIBUTE_NODE on interface prototype object
+PASS Node interface: constant TEXT_NODE on interface object
+PASS Node interface: constant TEXT_NODE on interface prototype object
+PASS Node interface: constant CDATA_SECTION_NODE on interface object
+PASS Node interface: constant CDATA_SECTION_NODE on interface prototype object
+PASS Node interface: constant ENTITY_REFERENCE_NODE on interface object
+PASS Node interface: constant ENTITY_REFERENCE_NODE on interface prototype object
+PASS Node interface: constant ENTITY_NODE on interface object
+PASS Node interface: constant ENTITY_NODE on interface prototype object
+PASS Node interface: constant PROCESSING_INSTRUCTION_NODE on interface object
+PASS Node interface: constant PROCESSING_INSTRUCTION_NODE on interface prototype object
+PASS Node interface: constant COMMENT_NODE on interface object
+PASS Node interface: constant COMMENT_NODE on interface prototype object
+PASS Node interface: constant DOCUMENT_NODE on interface object
+PASS Node interface: constant DOCUMENT_NODE on interface prototype object
+PASS Node interface: constant DOCUMENT_TYPE_NODE on interface object
+PASS Node interface: constant DOCUMENT_TYPE_NODE on interface prototype object
+PASS Node interface: constant DOCUMENT_FRAGMENT_NODE on interface object
+PASS Node interface: constant DOCUMENT_FRAGMENT_NODE on interface prototype object
+PASS Node interface: constant NOTATION_NODE on interface object
+PASS Node interface: constant NOTATION_NODE on interface prototype object
+PASS Node interface: attribute nodeType
+PASS Node interface: attribute nodeName
+PASS Node interface: attribute baseURI
+PASS Node interface: attribute isConnected
+PASS Node interface: attribute ownerDocument
+PASS Node interface: operation getRootNode(GetRootNodeOptions)
+PASS Node interface: attribute parentNode
+PASS Node interface: attribute parentElement
+PASS Node interface: operation hasChildNodes()
+PASS Node interface: attribute childNodes
+PASS Node interface: attribute firstChild
+PASS Node interface: attribute lastChild
+PASS Node interface: attribute previousSibling
+PASS Node interface: attribute nextSibling
+PASS Node interface: attribute nodeValue
+PASS Node interface: attribute textContent
+PASS Node interface: operation normalize()
+PASS Node interface: operation cloneNode(boolean)
+PASS Node interface: operation isEqualNode(Node)
+PASS Node interface: operation isSameNode(Node)
+PASS Node interface: constant DOCUMENT_POSITION_DISCONNECTED on interface object
+PASS Node interface: constant DOCUMENT_POSITION_DISCONNECTED on interface prototype object
+PASS Node interface: constant DOCUMENT_POSITION_PRECEDING on interface object
+PASS Node interface: constant DOCUMENT_POSITION_PRECEDING on interface prototype object
+PASS Node interface: constant DOCUMENT_POSITION_FOLLOWING on interface object
+PASS Node interface: constant DOCUMENT_POSITION_FOLLOWING on interface prototype object
+PASS Node interface: constant DOCUMENT_POSITION_CONTAINS on interface object
+PASS Node interface: constant DOCUMENT_POSITION_CONTAINS on interface prototype object
+PASS Node interface: constant DOCUMENT_POSITION_CONTAINED_BY on interface object
+PASS Node interface: constant DOCUMENT_POSITION_CONTAINED_BY on interface prototype object
+PASS Node interface: constant DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC on interface object
+PASS Node interface: constant DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC on interface prototype object
+PASS Node interface: operation compareDocumentPosition(Node)
+PASS Node interface: operation contains(Node)
+PASS Node interface: operation lookupPrefix(DOMString)
+PASS Node interface: operation lookupNamespaceURI(DOMString)
+PASS Node interface: operation isDefaultNamespace(DOMString)
+PASS Node interface: operation insertBefore(Node, Node)
+PASS Node interface: operation appendChild(Node)
+PASS Node interface: operation replaceChild(Node, Node)
+PASS Node interface: operation removeChild(Node)
+PASS Node interface: new Document() must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: new Document() must inherit property "nodeType" with the proper type
+PASS Node interface: new Document() must inherit property "nodeName" with the proper type
+PASS Node interface: new Document() must inherit property "baseURI" with the proper type
+PASS Node interface: new Document() must inherit property "isConnected" with the proper type
+PASS Node interface: new Document() must inherit property "ownerDocument" with the proper type
+PASS Node interface: new Document() must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "parentNode" with the proper type
+PASS Node interface: new Document() must inherit property "parentElement" with the proper type
+PASS Node interface: new Document() must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: new Document() must inherit property "childNodes" with the proper type
+PASS Node interface: new Document() must inherit property "firstChild" with the proper type
+PASS Node interface: new Document() must inherit property "lastChild" with the proper type
+PASS Node interface: new Document() must inherit property "previousSibling" with the proper type
+PASS Node interface: new Document() must inherit property "nextSibling" with the proper type
+PASS Node interface: new Document() must inherit property "nodeValue" with the proper type
+PASS Node interface: new Document() must inherit property "textContent" with the proper type
+PASS Node interface: new Document() must inherit property "normalize()" with the proper type
+PASS Node interface: new Document() must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: new Document() must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: new Document() must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: new Document() must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on new Document() with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: xmlDoc must inherit property "nodeType" with the proper type
+PASS Node interface: xmlDoc must inherit property "nodeName" with the proper type
+PASS Node interface: xmlDoc must inherit property "baseURI" with the proper type
+PASS Node interface: xmlDoc must inherit property "isConnected" with the proper type
+PASS Node interface: xmlDoc must inherit property "ownerDocument" with the proper type
+PASS Node interface: xmlDoc must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "parentNode" with the proper type
+PASS Node interface: xmlDoc must inherit property "parentElement" with the proper type
+PASS Node interface: xmlDoc must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: xmlDoc must inherit property "childNodes" with the proper type
+PASS Node interface: xmlDoc must inherit property "firstChild" with the proper type
+PASS Node interface: xmlDoc must inherit property "lastChild" with the proper type
+PASS Node interface: xmlDoc must inherit property "previousSibling" with the proper type
+PASS Node interface: xmlDoc must inherit property "nextSibling" with the proper type
+PASS Node interface: xmlDoc must inherit property "nodeValue" with the proper type
+PASS Node interface: xmlDoc must inherit property "textContent" with the proper type
+PASS Node interface: xmlDoc must inherit property "normalize()" with the proper type
+PASS Node interface: xmlDoc must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: xmlDoc must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: xmlDoc must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: xmlDoc must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on xmlDoc with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: document.doctype must inherit property "nodeType" with the proper type
+PASS Node interface: document.doctype must inherit property "nodeName" with the proper type
+PASS Node interface: document.doctype must inherit property "baseURI" with the proper type
+PASS Node interface: document.doctype must inherit property "isConnected" with the proper type
+PASS Node interface: document.doctype must inherit property "ownerDocument" with the proper type
+PASS Node interface: document.doctype must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "parentNode" with the proper type
+PASS Node interface: document.doctype must inherit property "parentElement" with the proper type
+PASS Node interface: document.doctype must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: document.doctype must inherit property "childNodes" with the proper type
+PASS Node interface: document.doctype must inherit property "firstChild" with the proper type
+PASS Node interface: document.doctype must inherit property "lastChild" with the proper type
+PASS Node interface: document.doctype must inherit property "previousSibling" with the proper type
+PASS Node interface: document.doctype must inherit property "nextSibling" with the proper type
+PASS Node interface: document.doctype must inherit property "nodeValue" with the proper type
+PASS Node interface: document.doctype must inherit property "textContent" with the proper type
+PASS Node interface: document.doctype must inherit property "normalize()" with the proper type
+PASS Node interface: document.doctype must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: document.doctype must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: document.doctype must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.doctype must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on document.doctype with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "nodeType" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "nodeName" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "baseURI" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "isConnected" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "ownerDocument" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "parentNode" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "parentElement" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "childNodes" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "firstChild" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "lastChild" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "previousSibling" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "nextSibling" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "nodeValue" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "textContent" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "normalize()" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: document.createDocumentFragment() must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: document.createDocumentFragment() must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on document.createDocumentFragment() with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: element must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: element must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: element must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: element must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: element must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: element must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: element must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: element must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: element must inherit property "nodeType" with the proper type
+PASS Node interface: element must inherit property "nodeName" with the proper type
+PASS Node interface: element must inherit property "baseURI" with the proper type
+PASS Node interface: element must inherit property "isConnected" with the proper type
+PASS Node interface: element must inherit property "ownerDocument" with the proper type
+PASS Node interface: element must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "parentNode" with the proper type
+PASS Node interface: element must inherit property "parentElement" with the proper type
+PASS Node interface: element must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: element must inherit property "childNodes" with the proper type
+PASS Node interface: element must inherit property "firstChild" with the proper type
+PASS Node interface: element must inherit property "lastChild" with the proper type
+PASS Node interface: element must inherit property "previousSibling" with the proper type
+PASS Node interface: element must inherit property "nextSibling" with the proper type
+PASS Node interface: element must inherit property "nodeValue" with the proper type
+PASS Node interface: element must inherit property "textContent" with the proper type
+PASS Node interface: element must inherit property "normalize()" with the proper type
+PASS Node interface: element must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: element must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: element must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on element with too few arguments must throw TypeError
+PASS Node interface: element must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on element with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "nodeType" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "nodeName" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "baseURI" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "isConnected" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "ownerDocument" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "parentNode" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "parentElement" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "childNodes" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "firstChild" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "lastChild" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "previousSibling" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "nextSibling" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "nodeValue" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "textContent" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "normalize()" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.querySelector("[id]").attributes[0] must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on document.querySelector("[id]").attributes[0] with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "nodeType" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "nodeName" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "baseURI" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "isConnected" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "ownerDocument" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "parentNode" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "parentElement" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "childNodes" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "firstChild" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "lastChild" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "previousSibling" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "nextSibling" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "nodeValue" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "textContent" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "normalize()" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: document.createTextNode("abc") must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createTextNode("abc") must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on document.createTextNode("abc") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "nodeType" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "nodeName" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "baseURI" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "isConnected" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "ownerDocument" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "parentNode" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "parentElement" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "childNodes" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "firstChild" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "lastChild" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "previousSibling" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "nextSibling" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "nodeValue" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "textContent" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "normalize()" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "ELEMENT_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "ATTRIBUTE_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "TEXT_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "CDATA_SECTION_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "ENTITY_REFERENCE_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "ENTITY_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "COMMENT_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_TYPE_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "NOTATION_NODE" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "nodeType" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "nodeName" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "baseURI" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "isConnected" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "ownerDocument" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "getRootNode(GetRootNodeOptions)" with the proper type
+PASS Node interface: calling getRootNode(GetRootNodeOptions) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "parentNode" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "parentElement" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "hasChildNodes()" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "childNodes" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "firstChild" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "lastChild" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "previousSibling" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "nextSibling" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "nodeValue" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "textContent" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "normalize()" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "cloneNode(boolean)" with the proper type
+PASS Node interface: calling cloneNode(boolean) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "isEqualNode(Node)" with the proper type
+PASS Node interface: calling isEqualNode(Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "isSameNode(Node)" with the proper type
+PASS Node interface: calling isSameNode(Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type
+PASS Node interface: document.createComment("abc") must inherit property "compareDocumentPosition(Node)" with the proper type
+PASS Node interface: calling compareDocumentPosition(Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "contains(Node)" with the proper type
+PASS Node interface: calling contains(Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "lookupPrefix(DOMString)" with the proper type
+PASS Node interface: calling lookupPrefix(DOMString) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "lookupNamespaceURI(DOMString)" with the proper type
+PASS Node interface: calling lookupNamespaceURI(DOMString) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "isDefaultNamespace(DOMString)" with the proper type
+PASS Node interface: calling isDefaultNamespace(DOMString) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "insertBefore(Node, Node)" with the proper type
+PASS Node interface: calling insertBefore(Node, Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "appendChild(Node)" with the proper type
+PASS Node interface: calling appendChild(Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "replaceChild(Node, Node)" with the proper type
+PASS Node interface: calling replaceChild(Node, Node) on document.createComment("abc") with too few arguments must throw TypeError
+PASS Node interface: document.createComment("abc") must inherit property "removeChild(Node)" with the proper type
+PASS Node interface: calling removeChild(Node) on document.createComment("abc") with too few arguments must throw TypeError
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/encrypted-media/idlharness.https-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/encrypted-media/idlharness.https-expected.txt
new file mode 100644
index 0000000..3b1c95e
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/external/wpt/encrypted-media/idlharness.https-expected.txt
@@ -0,0 +1,75 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface Navigator: original interface defined
+PASS Partial interface Navigator: valid exposure set
+PASS Partial interface HTMLMediaElement: original interface defined
+PASS Partial interface HTMLMediaElement: valid exposure set
+PASS MediaKeySystemAccess interface: existence and properties of interface object
+PASS MediaKeySystemAccess interface object length
+PASS MediaKeySystemAccess interface object name
+PASS MediaKeySystemAccess interface: existence and properties of interface prototype object
+PASS MediaKeySystemAccess interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaKeySystemAccess interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaKeySystemAccess interface: attribute keySystem
+PASS MediaKeySystemAccess interface: operation getConfiguration()
+PASS MediaKeySystemAccess interface: operation createMediaKeys()
+PASS MediaKeys interface: existence and properties of interface object
+PASS MediaKeys interface object length
+PASS MediaKeys interface object name
+PASS MediaKeys interface: existence and properties of interface prototype object
+PASS MediaKeys interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaKeys interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaKeys interface: operation createSession(MediaKeySessionType)
+PASS MediaKeys interface: operation setServerCertificate(BufferSource)
+PASS MediaKeySession interface: existence and properties of interface object
+PASS MediaKeySession interface object length
+PASS MediaKeySession interface object name
+PASS MediaKeySession interface: existence and properties of interface prototype object
+PASS MediaKeySession interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaKeySession interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaKeySession interface: attribute sessionId
+PASS MediaKeySession interface: attribute expiration
+PASS MediaKeySession interface: attribute closed
+PASS MediaKeySession interface: attribute keyStatuses
+PASS MediaKeySession interface: attribute onkeystatuseschange
+PASS MediaKeySession interface: attribute onmessage
+PASS MediaKeySession interface: operation generateRequest(DOMString, BufferSource)
+PASS MediaKeySession interface: operation load(DOMString)
+PASS MediaKeySession interface: operation update(BufferSource)
+PASS MediaKeySession interface: operation close()
+PASS MediaKeySession interface: operation remove()
+PASS MediaKeyStatusMap interface: existence and properties of interface object
+PASS MediaKeyStatusMap interface object length
+PASS MediaKeyStatusMap interface object name
+PASS MediaKeyStatusMap interface: existence and properties of interface prototype object
+PASS MediaKeyStatusMap interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaKeyStatusMap interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaKeyStatusMap interface: iterable<BufferSource, MediaKeyStatus>
+PASS MediaKeyStatusMap interface: attribute size
+PASS MediaKeyStatusMap interface: operation has(BufferSource)
+PASS MediaKeyStatusMap interface: operation get(BufferSource)
+PASS MediaKeyMessageEvent interface: existence and properties of interface object
+PASS MediaKeyMessageEvent interface object length
+PASS MediaKeyMessageEvent interface object name
+PASS MediaKeyMessageEvent interface: existence and properties of interface prototype object
+PASS MediaKeyMessageEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaKeyMessageEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaKeyMessageEvent interface: attribute messageType
+PASS MediaKeyMessageEvent interface: attribute message
+PASS MediaEncryptedEvent interface: existence and properties of interface object
+PASS MediaEncryptedEvent interface object length
+PASS MediaEncryptedEvent interface object name
+PASS MediaEncryptedEvent interface: existence and properties of interface prototype object
+PASS MediaEncryptedEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaEncryptedEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaEncryptedEvent interface: attribute initDataType
+PASS MediaEncryptedEvent interface: attribute initData
+PASS HTMLMediaElement interface: attribute mediaKeys
+PASS HTMLMediaElement interface: attribute onencrypted
+PASS HTMLMediaElement interface: attribute onwaitingforkey
+PASS HTMLMediaElement interface: operation setMediaKeys(MediaKeys)
+PASS Navigator interface: operation requestMediaKeySystemAccess(DOMString, [object Object])
+PASS Navigator interface: navigator must inherit property "requestMediaKeySystemAccess(DOMString, [object Object])" with the proper type
+PASS Navigator interface: calling requestMediaKeySystemAccess(DOMString, [object Object]) on navigator with too few arguments must throw TypeError
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/geolocation-API/idlharness.window-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/geolocation-API/idlharness.window-expected.txt
new file mode 100644
index 0000000..6fa16430
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/external/wpt/geolocation-API/idlharness.window-expected.txt
@@ -0,0 +1,14 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface Navigator: original interface defined
+PASS Stringification of navigator.geolocation
+PASS Geolocation interface: navigator.geolocation must inherit property "getCurrentPosition(PositionCallback, PositionErrorCallback, PositionOptions)" with the proper type
+PASS Geolocation interface: calling getCurrentPosition(PositionCallback, PositionErrorCallback, PositionOptions) on navigator.geolocation with too few arguments must throw TypeError
+PASS Geolocation interface: navigator.geolocation must inherit property "watchPosition(PositionCallback, PositionErrorCallback, PositionOptions)" with the proper type
+PASS Geolocation interface: calling watchPosition(PositionCallback, PositionErrorCallback, PositionOptions) on navigator.geolocation with too few arguments must throw TypeError
+PASS Geolocation interface: navigator.geolocation must inherit property "clearWatch(long)" with the proper type
+PASS Geolocation interface: calling clearWatch(long) on navigator.geolocation with too few arguments must throw TypeError
+PASS Navigator interface: attribute geolocation
+PASS Navigator interface: navigator must inherit property "geolocation" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
new file mode 100644
index 0000000..579bca6
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
@@ -0,0 +1,3593 @@
+This is a testharness.js-based test.
+Found 3589 tests; 3549 PASS, 40 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface Document: original interface defined
+PASS Partial interface mixin DocumentOrShadowRoot: original interface mixin defined
+PASS Partial interface mixin NavigatorID: original interface mixin defined
+PASS Partial interface HTMLAnchorElement: original interface defined
+PASS Partial interface HTMLAreaElement: original interface defined
+PASS Partial interface HTMLBodyElement: original interface defined
+PASS Partial interface HTMLBRElement: original interface defined
+PASS Partial interface HTMLTableCaptionElement: original interface defined
+PASS Partial interface HTMLTableColElement: original interface defined
+PASS Partial interface HTMLDivElement: original interface defined
+PASS Partial interface HTMLDListElement: original interface defined
+PASS Partial interface HTMLEmbedElement: original interface defined
+PASS Partial interface HTMLHeadingElement: original interface defined
+PASS Partial interface HTMLHRElement: original interface defined
+PASS Partial interface HTMLHtmlElement: original interface defined
+PASS Partial interface HTMLIFrameElement: original interface defined
+PASS Partial interface HTMLImageElement: original interface defined
+PASS Partial interface HTMLInputElement: original interface defined
+PASS Partial interface HTMLLegendElement: original interface defined
+PASS Partial interface HTMLLIElement: original interface defined
+PASS Partial interface HTMLLinkElement: original interface defined
+PASS Partial interface HTMLMenuElement: original interface defined
+PASS Partial interface HTMLMetaElement: original interface defined
+PASS Partial interface HTMLObjectElement: original interface defined
+PASS Partial interface HTMLOListElement: original interface defined
+PASS Partial interface HTMLParagraphElement: original interface defined
+PASS Partial interface HTMLParamElement: original interface defined
+PASS Partial interface HTMLPreElement: original interface defined
+PASS Partial interface HTMLStyleElement: original interface defined
+PASS Partial interface HTMLScriptElement: original interface defined
+PASS Partial interface HTMLTableElement: original interface defined
+PASS Partial interface HTMLTableSectionElement: original interface defined
+PASS Partial interface HTMLTableCellElement: original interface defined
+PASS Partial interface HTMLTableRowElement: original interface defined
+PASS Partial interface HTMLUListElement: original interface defined
+PASS Partial interface Document[2]: original interface defined
+PASS Partial interface Window: original interface defined
+PASS HTMLAllCollection interface: existence and properties of interface object
+PASS HTMLAllCollection interface object length
+PASS HTMLAllCollection interface object name
+PASS HTMLAllCollection interface: existence and properties of interface prototype object
+PASS HTMLAllCollection interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLAllCollection interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLAllCollection interface: attribute length
+PASS HTMLAllCollection interface: operation namedItem(DOMString)
+PASS HTMLAllCollection interface: operation item(DOMString)
+FAIL HTMLAllCollection must be primary interface of document.all assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL Stringification of document.all assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL HTMLAllCollection interface: document.all must inherit property "length" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL HTMLAllCollection interface: document.all must inherit property "namedItem(DOMString)" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL HTMLAllCollection interface: calling namedItem(DOMString) on document.all with too few arguments must throw TypeError assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL HTMLAllCollection interface: document.all must inherit property "item(DOMString)" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL HTMLAllCollection interface: calling item(DOMString) on document.all with too few arguments must throw TypeError assert_equals: wrong typeof object expected "object" but got "undefined"
+PASS HTMLFormControlsCollection interface: existence and properties of interface object
+PASS HTMLFormControlsCollection interface object length
+PASS HTMLFormControlsCollection interface object name
+PASS HTMLFormControlsCollection interface: existence and properties of interface prototype object
+PASS HTMLFormControlsCollection interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFormControlsCollection interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFormControlsCollection interface: operation namedItem(DOMString)
+PASS HTMLFormControlsCollection must be primary interface of document.createElement("form").elements
+PASS Stringification of document.createElement("form").elements
+PASS HTMLFormControlsCollection interface: document.createElement("form").elements must inherit property "namedItem(DOMString)" with the proper type
+PASS HTMLFormControlsCollection interface: calling namedItem(DOMString) on document.createElement("form").elements with too few arguments must throw TypeError
+PASS HTMLOptionsCollection interface: existence and properties of interface object
+PASS HTMLOptionsCollection interface object length
+PASS HTMLOptionsCollection interface object name
+PASS HTMLOptionsCollection interface: existence and properties of interface prototype object
+PASS HTMLOptionsCollection interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLOptionsCollection interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLOptionsCollection interface: attribute length
+PASS HTMLOptionsCollection interface: operation add([object Object],[object Object], [object Object],[object Object])
+PASS HTMLOptionsCollection interface: operation remove(long)
+PASS HTMLOptionsCollection interface: attribute selectedIndex
+PASS HTMLOptionsCollection must be primary interface of document.createElement("select").options
+PASS Stringification of document.createElement("select").options
+PASS HTMLOptionsCollection interface: document.createElement("select").options must inherit property "length" with the proper type
+PASS HTMLOptionsCollection interface: document.createElement("select").options must inherit property "add([object Object],[object Object], [object Object],[object Object])" with the proper type
+PASS HTMLOptionsCollection interface: calling add([object Object],[object Object], [object Object],[object Object]) on document.createElement("select").options with too few arguments must throw TypeError
+PASS HTMLOptionsCollection interface: document.createElement("select").options must inherit property "remove(long)" with the proper type
+PASS HTMLOptionsCollection interface: calling remove(long) on document.createElement("select").options with too few arguments must throw TypeError
+PASS HTMLOptionsCollection interface: document.createElement("select").options must inherit property "selectedIndex" with the proper type
+PASS HTMLElement interface: existence and properties of interface object
+PASS HTMLElement interface object length
+PASS HTMLElement interface object name
+PASS HTMLElement interface: existence and properties of interface prototype object
+PASS HTMLElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLElement interface: attribute title
+PASS HTMLElement interface: attribute lang
+PASS HTMLElement interface: attribute translate
+PASS HTMLElement interface: attribute dir
+PASS HTMLElement interface: attribute hidden
+PASS HTMLElement interface: operation click()
+PASS HTMLElement interface: attribute accessKey
+FAIL HTMLElement interface: attribute accessKeyLabel assert_true: The prototype object must have a property "accessKeyLabel" expected true got false
+PASS HTMLElement interface: attribute draggable
+PASS HTMLElement interface: attribute spellcheck
+PASS HTMLElement interface: attribute autocapitalize
+PASS HTMLElement interface: attribute innerText
+PASS HTMLElement interface: operation attachInternals()
+PASS HTMLElement interface: attribute onabort
+PASS HTMLElement interface: attribute onauxclick
+PASS HTMLElement interface: attribute onblur
+PASS HTMLElement interface: attribute oncancel
+PASS HTMLElement interface: attribute oncanplay
+PASS HTMLElement interface: attribute oncanplaythrough
+PASS HTMLElement interface: attribute onchange
+PASS HTMLElement interface: attribute onclick
+PASS HTMLElement interface: attribute onclose
+PASS HTMLElement interface: attribute oncontextmenu
+PASS HTMLElement interface: attribute oncuechange
+PASS HTMLElement interface: attribute ondblclick
+PASS HTMLElement interface: attribute ondrag
+PASS HTMLElement interface: attribute ondragend
+PASS HTMLElement interface: attribute ondragenter
+FAIL HTMLElement interface: attribute ondragexit assert_true: The prototype object must have a property "ondragexit" expected true got false
+PASS HTMLElement interface: attribute ondragleave
+PASS HTMLElement interface: attribute ondragover
+PASS HTMLElement interface: attribute ondragstart
+PASS HTMLElement interface: attribute ondrop
+PASS HTMLElement interface: attribute ondurationchange
+PASS HTMLElement interface: attribute onemptied
+PASS HTMLElement interface: attribute onended
+PASS HTMLElement interface: attribute onerror
+PASS HTMLElement interface: attribute onfocus
+PASS HTMLElement interface: attribute onformdata
+PASS HTMLElement interface: attribute oninput
+PASS HTMLElement interface: attribute oninvalid
+PASS HTMLElement interface: attribute onkeydown
+PASS HTMLElement interface: attribute onkeypress
+PASS HTMLElement interface: attribute onkeyup
+PASS HTMLElement interface: attribute onload
+PASS HTMLElement interface: attribute onloadeddata
+PASS HTMLElement interface: attribute onloadedmetadata
+PASS HTMLElement interface: attribute onloadstart
+PASS HTMLElement interface: attribute onmousedown
+PASS HTMLElement interface: attribute onmouseenter
+PASS HTMLElement interface: attribute onmouseleave
+PASS HTMLElement interface: attribute onmousemove
+PASS HTMLElement interface: attribute onmouseout
+PASS HTMLElement interface: attribute onmouseover
+PASS HTMLElement interface: attribute onmouseup
+PASS HTMLElement interface: attribute onwheel
+PASS HTMLElement interface: attribute onpause
+PASS HTMLElement interface: attribute onplay
+PASS HTMLElement interface: attribute onplaying
+PASS HTMLElement interface: attribute onprogress
+PASS HTMLElement interface: attribute onratechange
+PASS HTMLElement interface: attribute onreset
+PASS HTMLElement interface: attribute onresize
+PASS HTMLElement interface: attribute onscroll
+FAIL HTMLElement interface: attribute onsecuritypolicyviolation assert_true: The prototype object must have a property "onsecuritypolicyviolation" expected true got false
+PASS HTMLElement interface: attribute onseeked
+PASS HTMLElement interface: attribute onseeking
+PASS HTMLElement interface: attribute onselect
+PASS HTMLElement interface: attribute onstalled
+PASS HTMLElement interface: attribute onsubmit
+PASS HTMLElement interface: attribute onsuspend
+PASS HTMLElement interface: attribute ontimeupdate
+PASS HTMLElement interface: attribute ontoggle
+PASS HTMLElement interface: attribute onvolumechange
+PASS HTMLElement interface: attribute onwaiting
+PASS HTMLElement interface: attribute oncopy
+PASS HTMLElement interface: attribute oncut
+PASS HTMLElement interface: attribute onpaste
+PASS HTMLElement interface: attribute contentEditable
+PASS HTMLElement interface: attribute enterKeyHint
+PASS HTMLElement interface: attribute isContentEditable
+PASS HTMLElement interface: attribute inputMode
+PASS HTMLElement interface: attribute dataset
+PASS HTMLElement interface: attribute nonce
+FAIL HTMLElement interface: attribute autofocus assert_true: The prototype object must have a property "autofocus" expected true got false
+PASS HTMLElement interface: attribute tabIndex
+PASS HTMLElement interface: operation focus(FocusOptions)
+PASS HTMLElement interface: operation blur()
+PASS HTMLElement must be primary interface of document.createElement("noscript")
+PASS Stringification of document.createElement("noscript")
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "title" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "lang" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "translate" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "dir" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "hidden" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "click()" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "accessKey" with the proper type
+FAIL HTMLElement interface: document.createElement("noscript") must inherit property "accessKeyLabel" with the proper type assert_inherits: property "accessKeyLabel" not found in prototype chain
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "draggable" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "spellcheck" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "autocapitalize" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "innerText" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "attachInternals()" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onabort" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onauxclick" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onblur" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncancel" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncanplay" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncanplaythrough" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onchange" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onclick" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onclose" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncontextmenu" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncuechange" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondblclick" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondrag" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragend" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragenter" with the proper type
+FAIL HTMLElement interface: document.createElement("noscript") must inherit property "ondragexit" with the proper type assert_inherits: property "ondragexit" not found in prototype chain
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragleave" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragover" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragstart" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondrop" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondurationchange" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onemptied" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onended" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onerror" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onfocus" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onformdata" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oninput" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oninvalid" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onkeydown" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onkeypress" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onkeyup" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onload" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onloadeddata" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onloadedmetadata" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onloadstart" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmousedown" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseenter" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseleave" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmousemove" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseout" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseover" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseup" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwheel" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onpause" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onplay" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onplaying" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onprogress" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onratechange" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onreset" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onresize" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onscroll" with the proper type
+FAIL HTMLElement interface: document.createElement("noscript") must inherit property "onsecuritypolicyviolation" with the proper type assert_inherits: property "onsecuritypolicyviolation" not found in prototype chain
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onseeked" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onseeking" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onselect" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onstalled" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onsubmit" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onsuspend" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ontimeupdate" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ontoggle" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onvolumechange" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwaiting" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncopy" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncut" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onpaste" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "contentEditable" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "enterKeyHint" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "isContentEditable" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "inputMode" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "dataset" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "nonce" with the proper type
+FAIL HTMLElement interface: document.createElement("noscript") must inherit property "autofocus" with the proper type assert_inherits: property "autofocus" not found in prototype chain
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "tabIndex" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "focus(FocusOptions)" with the proper type
+PASS HTMLElement interface: calling focus(FocusOptions) on document.createElement("noscript") with too few arguments must throw TypeError
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "blur()" with the proper type
+PASS HTMLUnknownElement interface: existence and properties of interface object
+PASS HTMLUnknownElement interface object length
+PASS HTMLUnknownElement interface object name
+PASS HTMLUnknownElement interface: existence and properties of interface prototype object
+PASS HTMLUnknownElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLUnknownElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLUnknownElement must be primary interface of document.createElement("bgsound")
+PASS Stringification of document.createElement("bgsound")
+PASS HTMLHtmlElement interface: existence and properties of interface object
+PASS HTMLHtmlElement interface object length
+PASS HTMLHtmlElement interface object name
+PASS HTMLHtmlElement interface: existence and properties of interface prototype object
+PASS HTMLHtmlElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLHtmlElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLHtmlElement interface: attribute version
+PASS HTMLHtmlElement must be primary interface of document.createElement("html")
+PASS Stringification of document.createElement("html")
+PASS HTMLHtmlElement interface: document.createElement("html") must inherit property "version" with the proper type
+PASS HTMLHeadElement interface: existence and properties of interface object
+PASS HTMLHeadElement interface object length
+PASS HTMLHeadElement interface object name
+PASS HTMLHeadElement interface: existence and properties of interface prototype object
+PASS HTMLHeadElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLHeadElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLHeadElement must be primary interface of document.createElement("head")
+PASS Stringification of document.createElement("head")
+PASS HTMLTitleElement interface: existence and properties of interface object
+PASS HTMLTitleElement interface object length
+PASS HTMLTitleElement interface object name
+PASS HTMLTitleElement interface: existence and properties of interface prototype object
+PASS HTMLTitleElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTitleElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTitleElement interface: attribute text
+PASS HTMLTitleElement must be primary interface of document.createElement("title")
+PASS Stringification of document.createElement("title")
+PASS HTMLTitleElement interface: document.createElement("title") must inherit property "text" with the proper type
+PASS HTMLBaseElement interface: existence and properties of interface object
+PASS HTMLBaseElement interface object length
+PASS HTMLBaseElement interface object name
+PASS HTMLBaseElement interface: existence and properties of interface prototype object
+PASS HTMLBaseElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLBaseElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLBaseElement interface: attribute href
+PASS HTMLBaseElement interface: attribute target
+PASS HTMLBaseElement must be primary interface of document.createElement("base")
+PASS Stringification of document.createElement("base")
+PASS HTMLBaseElement interface: document.createElement("base") must inherit property "href" with the proper type
+PASS HTMLBaseElement interface: document.createElement("base") must inherit property "target" with the proper type
+PASS HTMLLinkElement interface: existence and properties of interface object
+PASS HTMLLinkElement interface object length
+PASS HTMLLinkElement interface object name
+PASS HTMLLinkElement interface: existence and properties of interface prototype object
+PASS HTMLLinkElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLLinkElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLLinkElement interface: attribute href
+PASS HTMLLinkElement interface: attribute crossOrigin
+PASS HTMLLinkElement interface: attribute rel
+PASS HTMLLinkElement interface: attribute as
+PASS HTMLLinkElement interface: attribute relList
+PASS HTMLLinkElement interface: attribute media
+PASS HTMLLinkElement interface: attribute integrity
+PASS HTMLLinkElement interface: attribute hreflang
+PASS HTMLLinkElement interface: attribute type
+PASS HTMLLinkElement interface: attribute sizes
+PASS HTMLLinkElement interface: attribute imageSrcset
+PASS HTMLLinkElement interface: attribute imageSizes
+PASS HTMLLinkElement interface: attribute referrerPolicy
+PASS HTMLLinkElement interface: attribute charset
+PASS HTMLLinkElement interface: attribute rev
+PASS HTMLLinkElement interface: attribute target
+PASS HTMLLinkElement must be primary interface of document.createElement("link")
+PASS Stringification of document.createElement("link")
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "href" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "crossOrigin" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "rel" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "as" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "relList" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "media" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "integrity" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "hreflang" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "type" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "sizes" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "imageSrcset" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "imageSizes" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "referrerPolicy" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "charset" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "rev" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "target" with the proper type
+PASS HTMLMetaElement interface: existence and properties of interface object
+PASS HTMLMetaElement interface object length
+PASS HTMLMetaElement interface object name
+PASS HTMLMetaElement interface: existence and properties of interface prototype object
+PASS HTMLMetaElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMetaElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMetaElement interface: attribute name
+PASS HTMLMetaElement interface: attribute httpEquiv
+PASS HTMLMetaElement interface: attribute content
+PASS HTMLMetaElement interface: attribute scheme
+PASS HTMLMetaElement must be primary interface of document.createElement("meta")
+PASS Stringification of document.createElement("meta")
+PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "name" with the proper type
+PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "httpEquiv" with the proper type
+PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "content" with the proper type
+PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "scheme" with the proper type
+PASS HTMLStyleElement interface: existence and properties of interface object
+PASS HTMLStyleElement interface object length
+PASS HTMLStyleElement interface object name
+PASS HTMLStyleElement interface: existence and properties of interface prototype object
+PASS HTMLStyleElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLStyleElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLStyleElement interface: attribute media
+PASS HTMLStyleElement interface: attribute type
+PASS HTMLStyleElement must be primary interface of document.createElement("style")
+PASS Stringification of document.createElement("style")
+PASS HTMLStyleElement interface: document.createElement("style") must inherit property "media" with the proper type
+PASS HTMLStyleElement interface: document.createElement("style") must inherit property "type" with the proper type
+PASS HTMLBodyElement interface: existence and properties of interface object
+PASS HTMLBodyElement interface object length
+PASS HTMLBodyElement interface object name
+PASS HTMLBodyElement interface: existence and properties of interface prototype object
+PASS HTMLBodyElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLBodyElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLBodyElement interface: attribute text
+PASS HTMLBodyElement interface: attribute link
+PASS HTMLBodyElement interface: attribute vLink
+PASS HTMLBodyElement interface: attribute aLink
+PASS HTMLBodyElement interface: attribute bgColor
+PASS HTMLBodyElement interface: attribute background
+PASS HTMLBodyElement interface: attribute onafterprint
+PASS HTMLBodyElement interface: attribute onbeforeprint
+PASS HTMLBodyElement interface: attribute onbeforeunload
+PASS HTMLBodyElement interface: attribute onhashchange
+PASS HTMLBodyElement interface: attribute onlanguagechange
+PASS HTMLBodyElement interface: attribute onmessage
+PASS HTMLBodyElement interface: attribute onmessageerror
+PASS HTMLBodyElement interface: attribute onoffline
+PASS HTMLBodyElement interface: attribute ononline
+PASS HTMLBodyElement interface: attribute onpagehide
+PASS HTMLBodyElement interface: attribute onpageshow
+PASS HTMLBodyElement interface: attribute onpopstate
+PASS HTMLBodyElement interface: attribute onrejectionhandled
+PASS HTMLBodyElement interface: attribute onstorage
+PASS HTMLBodyElement interface: attribute onunhandledrejection
+PASS HTMLBodyElement interface: attribute onunload
+PASS HTMLBodyElement must be primary interface of document.createElement("body")
+PASS Stringification of document.createElement("body")
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "text" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "link" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "vLink" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "aLink" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "bgColor" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "background" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onafterprint" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onbeforeprint" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onbeforeunload" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onhashchange" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onlanguagechange" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onmessage" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onmessageerror" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onoffline" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "ononline" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onpagehide" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onpageshow" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onpopstate" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onrejectionhandled" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onstorage" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onunhandledrejection" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onunload" with the proper type
+PASS HTMLHeadingElement interface: existence and properties of interface object
+PASS HTMLHeadingElement interface object length
+PASS HTMLHeadingElement interface object name
+PASS HTMLHeadingElement interface: existence and properties of interface prototype object
+PASS HTMLHeadingElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLHeadingElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLHeadingElement interface: attribute align
+PASS HTMLHeadingElement must be primary interface of document.createElement("h1")
+PASS Stringification of document.createElement("h1")
+PASS HTMLHeadingElement interface: document.createElement("h1") must inherit property "align" with the proper type
+PASS HTMLParagraphElement interface: existence and properties of interface object
+PASS HTMLParagraphElement interface object length
+PASS HTMLParagraphElement interface object name
+PASS HTMLParagraphElement interface: existence and properties of interface prototype object
+PASS HTMLParagraphElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLParagraphElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLParagraphElement interface: attribute align
+PASS HTMLParagraphElement must be primary interface of document.createElement("p")
+PASS Stringification of document.createElement("p")
+PASS HTMLParagraphElement interface: document.createElement("p") must inherit property "align" with the proper type
+PASS HTMLHRElement interface: existence and properties of interface object
+PASS HTMLHRElement interface object length
+PASS HTMLHRElement interface object name
+PASS HTMLHRElement interface: existence and properties of interface prototype object
+PASS HTMLHRElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLHRElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLHRElement interface: attribute align
+PASS HTMLHRElement interface: attribute color
+PASS HTMLHRElement interface: attribute noShade
+PASS HTMLHRElement interface: attribute size
+PASS HTMLHRElement interface: attribute width
+PASS HTMLHRElement must be primary interface of document.createElement("hr")
+PASS Stringification of document.createElement("hr")
+PASS HTMLHRElement interface: document.createElement("hr") must inherit property "align" with the proper type
+PASS HTMLHRElement interface: document.createElement("hr") must inherit property "color" with the proper type
+PASS HTMLHRElement interface: document.createElement("hr") must inherit property "noShade" with the proper type
+PASS HTMLHRElement interface: document.createElement("hr") must inherit property "size" with the proper type
+PASS HTMLHRElement interface: document.createElement("hr") must inherit property "width" with the proper type
+PASS HTMLPreElement interface: existence and properties of interface object
+PASS HTMLPreElement interface object length
+PASS HTMLPreElement interface object name
+PASS HTMLPreElement interface: existence and properties of interface prototype object
+PASS HTMLPreElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLPreElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLPreElement interface: attribute width
+PASS HTMLPreElement must be primary interface of document.createElement("pre")
+PASS Stringification of document.createElement("pre")
+PASS HTMLPreElement interface: document.createElement("pre") must inherit property "width" with the proper type
+PASS HTMLPreElement must be primary interface of document.createElement("listing")
+PASS Stringification of document.createElement("listing")
+PASS HTMLPreElement interface: document.createElement("listing") must inherit property "width" with the proper type
+PASS HTMLPreElement must be primary interface of document.createElement("xmp")
+PASS Stringification of document.createElement("xmp")
+PASS HTMLPreElement interface: document.createElement("xmp") must inherit property "width" with the proper type
+PASS HTMLQuoteElement interface: existence and properties of interface object
+PASS HTMLQuoteElement interface object length
+PASS HTMLQuoteElement interface object name
+PASS HTMLQuoteElement interface: existence and properties of interface prototype object
+PASS HTMLQuoteElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLQuoteElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLQuoteElement interface: attribute cite
+PASS HTMLQuoteElement must be primary interface of document.createElement("blockquote")
+PASS Stringification of document.createElement("blockquote")
+PASS HTMLQuoteElement interface: document.createElement("blockquote") must inherit property "cite" with the proper type
+PASS HTMLQuoteElement must be primary interface of document.createElement("q")
+PASS Stringification of document.createElement("q")
+PASS HTMLQuoteElement interface: document.createElement("q") must inherit property "cite" with the proper type
+PASS HTMLOListElement interface: existence and properties of interface object
+PASS HTMLOListElement interface object length
+PASS HTMLOListElement interface object name
+PASS HTMLOListElement interface: existence and properties of interface prototype object
+PASS HTMLOListElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLOListElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLOListElement interface: attribute reversed
+PASS HTMLOListElement interface: attribute start
+PASS HTMLOListElement interface: attribute type
+PASS HTMLOListElement interface: attribute compact
+PASS HTMLUListElement interface: existence and properties of interface object
+PASS HTMLUListElement interface object length
+PASS HTMLUListElement interface object name
+PASS HTMLUListElement interface: existence and properties of interface prototype object
+PASS HTMLUListElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLUListElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLUListElement interface: attribute compact
+PASS HTMLUListElement interface: attribute type
+PASS HTMLMenuElement interface: existence and properties of interface object
+PASS HTMLMenuElement interface object length
+PASS HTMLMenuElement interface object name
+PASS HTMLMenuElement interface: existence and properties of interface prototype object
+PASS HTMLMenuElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMenuElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMenuElement interface: attribute compact
+PASS HTMLMenuElement must be primary interface of document.createElement("menu")
+PASS Stringification of document.createElement("menu")
+PASS HTMLMenuElement interface: document.createElement("menu") must inherit property "compact" with the proper type
+PASS HTMLLIElement interface: existence and properties of interface object
+PASS HTMLLIElement interface object length
+PASS HTMLLIElement interface object name
+PASS HTMLLIElement interface: existence and properties of interface prototype object
+PASS HTMLLIElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLLIElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLLIElement interface: attribute value
+PASS HTMLLIElement interface: attribute type
+PASS HTMLLIElement must be primary interface of document.createElement("li")
+PASS Stringification of document.createElement("li")
+PASS HTMLLIElement interface: document.createElement("li") must inherit property "value" with the proper type
+PASS HTMLLIElement interface: document.createElement("li") must inherit property "type" with the proper type
+PASS HTMLDListElement interface: existence and properties of interface object
+PASS HTMLDListElement interface object length
+PASS HTMLDListElement interface object name
+PASS HTMLDListElement interface: existence and properties of interface prototype object
+PASS HTMLDListElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDListElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDListElement interface: attribute compact
+PASS HTMLDivElement interface: existence and properties of interface object
+PASS HTMLDivElement interface object length
+PASS HTMLDivElement interface object name
+PASS HTMLDivElement interface: existence and properties of interface prototype object
+PASS HTMLDivElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDivElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDivElement interface: attribute align
+PASS HTMLDivElement must be primary interface of document.createElement("div")
+PASS Stringification of document.createElement("div")
+PASS HTMLDivElement interface: document.createElement("div") must inherit property "align" with the proper type
+PASS HTMLAnchorElement interface: existence and properties of interface object
+PASS HTMLAnchorElement interface object length
+PASS HTMLAnchorElement interface object name
+PASS HTMLAnchorElement interface: existence and properties of interface prototype object
+PASS HTMLAnchorElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLAnchorElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLAnchorElement interface: attribute target
+PASS HTMLAnchorElement interface: attribute download
+PASS HTMLAnchorElement interface: attribute ping
+PASS HTMLAnchorElement interface: attribute rel
+PASS HTMLAnchorElement interface: attribute relList
+PASS HTMLAnchorElement interface: attribute hreflang
+PASS HTMLAnchorElement interface: attribute type
+PASS HTMLAnchorElement interface: attribute text
+PASS HTMLAnchorElement interface: attribute referrerPolicy
+PASS HTMLAnchorElement interface: attribute coords
+PASS HTMLAnchorElement interface: attribute charset
+PASS HTMLAnchorElement interface: attribute name
+PASS HTMLAnchorElement interface: attribute rev
+PASS HTMLAnchorElement interface: attribute shape
+PASS HTMLAnchorElement interface: attribute href
+PASS HTMLAnchorElement interface: stringifier
+PASS HTMLAnchorElement interface: attribute origin
+PASS HTMLAnchorElement interface: attribute protocol
+PASS HTMLAnchorElement interface: attribute username
+PASS HTMLAnchorElement interface: attribute password
+PASS HTMLAnchorElement interface: attribute host
+PASS HTMLAnchorElement interface: attribute hostname
+PASS HTMLAnchorElement interface: attribute port
+PASS HTMLAnchorElement interface: attribute pathname
+PASS HTMLAnchorElement interface: attribute search
+PASS HTMLAnchorElement interface: attribute hash
+PASS HTMLAnchorElement must be primary interface of document.createElement("a")
+PASS Stringification of document.createElement("a")
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "target" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "download" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "ping" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "rel" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "relList" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "hreflang" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "type" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "text" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "referrerPolicy" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "coords" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "charset" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "name" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "rev" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "shape" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "href" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "origin" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "protocol" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "username" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "password" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "host" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "hostname" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "port" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "pathname" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "search" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "hash" with the proper type
+PASS HTMLDataElement interface: existence and properties of interface object
+PASS HTMLDataElement interface object length
+PASS HTMLDataElement interface object name
+PASS HTMLDataElement interface: existence and properties of interface prototype object
+PASS HTMLDataElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDataElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDataElement interface: attribute value
+PASS HTMLDataElement must be primary interface of document.createElement("data")
+PASS Stringification of document.createElement("data")
+PASS HTMLDataElement interface: document.createElement("data") must inherit property "value" with the proper type
+PASS HTMLTimeElement interface: existence and properties of interface object
+PASS HTMLTimeElement interface object length
+PASS HTMLTimeElement interface object name
+PASS HTMLTimeElement interface: existence and properties of interface prototype object
+PASS HTMLTimeElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTimeElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTimeElement interface: attribute dateTime
+PASS HTMLTimeElement must be primary interface of document.createElement("time")
+PASS Stringification of document.createElement("time")
+PASS HTMLTimeElement interface: document.createElement("time") must inherit property "dateTime" with the proper type
+PASS HTMLSpanElement interface: existence and properties of interface object
+PASS HTMLSpanElement interface object length
+PASS HTMLSpanElement interface object name
+PASS HTMLSpanElement interface: existence and properties of interface prototype object
+PASS HTMLSpanElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLSpanElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLSpanElement must be primary interface of document.createElement("span")
+PASS Stringification of document.createElement("span")
+PASS HTMLBRElement interface: existence and properties of interface object
+PASS HTMLBRElement interface object length
+PASS HTMLBRElement interface object name
+PASS HTMLBRElement interface: existence and properties of interface prototype object
+PASS HTMLBRElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLBRElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLBRElement interface: attribute clear
+PASS HTMLBRElement must be primary interface of document.createElement("br")
+PASS Stringification of document.createElement("br")
+PASS HTMLBRElement interface: document.createElement("br") must inherit property "clear" with the proper type
+PASS HTMLModElement interface: existence and properties of interface object
+PASS HTMLModElement interface object length
+PASS HTMLModElement interface object name
+PASS HTMLModElement interface: existence and properties of interface prototype object
+PASS HTMLModElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLModElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLModElement interface: attribute cite
+PASS HTMLModElement interface: attribute dateTime
+PASS HTMLModElement must be primary interface of document.createElement("ins")
+PASS Stringification of document.createElement("ins")
+PASS HTMLModElement interface: document.createElement("ins") must inherit property "cite" with the proper type
+PASS HTMLModElement interface: document.createElement("ins") must inherit property "dateTime" with the proper type
+PASS HTMLModElement must be primary interface of document.createElement("del")
+PASS Stringification of document.createElement("del")
+PASS HTMLModElement interface: document.createElement("del") must inherit property "cite" with the proper type
+PASS HTMLModElement interface: document.createElement("del") must inherit property "dateTime" with the proper type
+PASS HTMLPictureElement interface: existence and properties of interface object
+PASS HTMLPictureElement interface object length
+PASS HTMLPictureElement interface object name
+PASS HTMLPictureElement interface: existence and properties of interface prototype object
+PASS HTMLPictureElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLPictureElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLPictureElement must be primary interface of document.createElement("picture")
+PASS Stringification of document.createElement("picture")
+PASS HTMLSourceElement interface: existence and properties of interface object
+PASS HTMLSourceElement interface object length
+PASS HTMLSourceElement interface object name
+PASS HTMLSourceElement interface: existence and properties of interface prototype object
+PASS HTMLSourceElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLSourceElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLSourceElement interface: attribute src
+PASS HTMLSourceElement interface: attribute type
+PASS HTMLSourceElement interface: attribute srcset
+PASS HTMLSourceElement interface: attribute sizes
+PASS HTMLSourceElement interface: attribute media
+PASS HTMLSourceElement must be primary interface of document.createElement("source")
+PASS Stringification of document.createElement("source")
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "src" with the proper type
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "type" with the proper type
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "srcset" with the proper type
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "sizes" with the proper type
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "media" with the proper type
+PASS HTMLImageElement interface: existence and properties of interface object
+PASS HTMLImageElement interface object length
+PASS HTMLImageElement interface object name
+PASS HTMLImageElement interface: named constructor
+PASS HTMLImageElement interface: named constructor object
+PASS HTMLImageElement interface: named constructor prototype property
+PASS HTMLImageElement interface: named constructor name
+PASS HTMLImageElement interface: named constructor length
+PASS HTMLImageElement interface: named constructor without 'new'
+PASS HTMLImageElement interface: existence and properties of interface prototype object
+PASS HTMLImageElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLImageElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLImageElement interface: attribute alt
+PASS HTMLImageElement interface: attribute src
+PASS HTMLImageElement interface: attribute srcset
+PASS HTMLImageElement interface: attribute sizes
+PASS HTMLImageElement interface: attribute crossOrigin
+PASS HTMLImageElement interface: attribute useMap
+PASS HTMLImageElement interface: attribute isMap
+PASS HTMLImageElement interface: attribute width
+PASS HTMLImageElement interface: attribute height
+PASS HTMLImageElement interface: attribute naturalWidth
+PASS HTMLImageElement interface: attribute naturalHeight
+PASS HTMLImageElement interface: attribute complete
+PASS HTMLImageElement interface: attribute currentSrc
+PASS HTMLImageElement interface: attribute referrerPolicy
+PASS HTMLImageElement interface: attribute decoding
+PASS HTMLImageElement interface: operation decode()
+PASS HTMLImageElement interface: attribute name
+PASS HTMLImageElement interface: attribute lowsrc
+PASS HTMLImageElement interface: attribute align
+PASS HTMLImageElement interface: attribute hspace
+PASS HTMLImageElement interface: attribute vspace
+PASS HTMLImageElement interface: attribute longDesc
+PASS HTMLImageElement interface: attribute border
+PASS HTMLImageElement must be primary interface of document.createElement("img")
+PASS Stringification of document.createElement("img")
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "alt" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "src" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "srcset" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "sizes" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "crossOrigin" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "useMap" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "isMap" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "width" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "height" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "naturalWidth" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "naturalHeight" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "complete" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "currentSrc" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "referrerPolicy" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "decoding" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "decode()" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "name" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "lowsrc" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "align" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "hspace" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "vspace" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "longDesc" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "border" with the proper type
+PASS HTMLImageElement must be primary interface of new Image()
+PASS Stringification of new Image()
+PASS HTMLImageElement interface: new Image() must inherit property "alt" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "src" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "srcset" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "sizes" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "crossOrigin" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "useMap" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "isMap" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "width" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "height" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "naturalWidth" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "naturalHeight" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "complete" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "currentSrc" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "referrerPolicy" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "decoding" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "decode()" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "name" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "lowsrc" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "align" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "hspace" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "vspace" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "longDesc" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "border" with the proper type
+PASS HTMLIFrameElement interface: existence and properties of interface object
+PASS HTMLIFrameElement interface object length
+PASS HTMLIFrameElement interface object name
+PASS HTMLIFrameElement interface: existence and properties of interface prototype object
+PASS HTMLIFrameElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLIFrameElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLIFrameElement interface: attribute src
+PASS HTMLIFrameElement interface: attribute srcdoc
+PASS HTMLIFrameElement interface: attribute name
+PASS HTMLIFrameElement interface: attribute sandbox
+PASS HTMLIFrameElement interface: attribute allow
+PASS HTMLIFrameElement interface: attribute allowFullscreen
+PASS HTMLIFrameElement interface: attribute allowPaymentRequest
+PASS HTMLIFrameElement interface: attribute width
+PASS HTMLIFrameElement interface: attribute height
+PASS HTMLIFrameElement interface: attribute referrerPolicy
+PASS HTMLIFrameElement interface: attribute contentDocument
+PASS HTMLIFrameElement interface: attribute contentWindow
+PASS HTMLIFrameElement interface: operation getSVGDocument()
+PASS HTMLIFrameElement interface: attribute align
+PASS HTMLIFrameElement interface: attribute scrolling
+PASS HTMLIFrameElement interface: attribute frameBorder
+PASS HTMLIFrameElement interface: attribute longDesc
+PASS HTMLIFrameElement interface: attribute marginHeight
+PASS HTMLIFrameElement interface: attribute marginWidth
+PASS HTMLEmbedElement interface: existence and properties of interface object
+PASS HTMLEmbedElement interface object length
+PASS HTMLEmbedElement interface object name
+PASS HTMLEmbedElement interface: existence and properties of interface prototype object
+PASS HTMLEmbedElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLEmbedElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLEmbedElement interface: attribute src
+PASS HTMLEmbedElement interface: attribute type
+PASS HTMLEmbedElement interface: attribute width
+PASS HTMLEmbedElement interface: attribute height
+PASS HTMLEmbedElement interface: operation getSVGDocument()
+PASS HTMLEmbedElement interface: attribute align
+PASS HTMLEmbedElement interface: attribute name
+PASS HTMLEmbedElement must be primary interface of document.createElement("embed")
+PASS Stringification of document.createElement("embed")
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "src" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "type" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "width" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "height" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "getSVGDocument()" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "align" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "name" with the proper type
+PASS HTMLObjectElement interface: existence and properties of interface object
+PASS HTMLObjectElement interface object length
+PASS HTMLObjectElement interface object name
+PASS HTMLObjectElement interface: existence and properties of interface prototype object
+PASS HTMLObjectElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLObjectElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLObjectElement interface: attribute data
+PASS HTMLObjectElement interface: attribute type
+PASS HTMLObjectElement interface: attribute name
+PASS HTMLObjectElement interface: attribute useMap
+PASS HTMLObjectElement interface: attribute form
+PASS HTMLObjectElement interface: attribute width
+PASS HTMLObjectElement interface: attribute height
+PASS HTMLObjectElement interface: attribute contentDocument
+PASS HTMLObjectElement interface: attribute contentWindow
+PASS HTMLObjectElement interface: operation getSVGDocument()
+PASS HTMLObjectElement interface: attribute willValidate
+PASS HTMLObjectElement interface: attribute validity
+PASS HTMLObjectElement interface: attribute validationMessage
+PASS HTMLObjectElement interface: operation checkValidity()
+PASS HTMLObjectElement interface: operation reportValidity()
+PASS HTMLObjectElement interface: operation setCustomValidity(DOMString)
+PASS HTMLObjectElement interface: attribute align
+PASS HTMLObjectElement interface: attribute archive
+PASS HTMLObjectElement interface: attribute code
+PASS HTMLObjectElement interface: attribute declare
+PASS HTMLObjectElement interface: attribute hspace
+PASS HTMLObjectElement interface: attribute standby
+PASS HTMLObjectElement interface: attribute vspace
+PASS HTMLObjectElement interface: attribute codeBase
+PASS HTMLObjectElement interface: attribute codeType
+PASS HTMLObjectElement interface: attribute border
+PASS HTMLObjectElement must be primary interface of document.createElement("object")
+PASS Stringification of document.createElement("object")
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "data" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "type" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "name" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "useMap" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "form" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "width" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "height" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "contentDocument" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "contentWindow" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "getSVGDocument()" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "willValidate" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "validity" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "validationMessage" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "checkValidity()" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "reportValidity()" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLObjectElement interface: calling setCustomValidity(DOMString) on document.createElement("object") with too few arguments must throw TypeError
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "align" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "archive" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "code" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "declare" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "hspace" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "standby" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "vspace" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "codeBase" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "codeType" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "border" with the proper type
+PASS HTMLParamElement interface: existence and properties of interface object
+PASS HTMLParamElement interface object length
+PASS HTMLParamElement interface object name
+PASS HTMLParamElement interface: existence and properties of interface prototype object
+PASS HTMLParamElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLParamElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLParamElement interface: attribute name
+PASS HTMLParamElement interface: attribute value
+PASS HTMLParamElement interface: attribute type
+PASS HTMLParamElement interface: attribute valueType
+PASS HTMLParamElement must be primary interface of document.createElement("param")
+PASS Stringification of document.createElement("param")
+PASS HTMLParamElement interface: document.createElement("param") must inherit property "name" with the proper type
+PASS HTMLParamElement interface: document.createElement("param") must inherit property "value" with the proper type
+PASS HTMLParamElement interface: document.createElement("param") must inherit property "type" with the proper type
+PASS HTMLParamElement interface: document.createElement("param") must inherit property "valueType" with the proper type
+PASS HTMLVideoElement interface: existence and properties of interface object
+PASS HTMLVideoElement interface object length
+PASS HTMLVideoElement interface object name
+PASS HTMLVideoElement interface: existence and properties of interface prototype object
+PASS HTMLVideoElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLVideoElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLVideoElement interface: attribute width
+PASS HTMLVideoElement interface: attribute height
+PASS HTMLVideoElement interface: attribute videoWidth
+PASS HTMLVideoElement interface: attribute videoHeight
+PASS HTMLVideoElement interface: attribute poster
+PASS HTMLVideoElement interface: attribute playsInline
+PASS HTMLVideoElement must be primary interface of document.createElement("video")
+PASS Stringification of document.createElement("video")
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "width" with the proper type
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "height" with the proper type
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "videoWidth" with the proper type
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "videoHeight" with the proper type
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "poster" with the proper type
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "playsInline" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "error" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "src" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("video") must inherit property "srcObject" with the proper type Unrecognized type MediaStream
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "currentSrc" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "crossOrigin" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "NETWORK_EMPTY" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "NETWORK_IDLE" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "NETWORK_LOADING" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "NETWORK_NO_SOURCE" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "networkState" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "preload" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "buffered" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "load()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "canPlayType(DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling canPlayType(DOMString) on document.createElement("video") with too few arguments must throw TypeError
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_NOTHING" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_METADATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_CURRENT_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_FUTURE_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_ENOUGH_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "readyState" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "seeking" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "currentTime" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("video") must inherit property "fastSeek(double)" with the proper type assert_inherits: property "fastSeek" not found in prototype chain
+FAIL HTMLMediaElement interface: calling fastSeek(double) on document.createElement("video") with too few arguments must throw TypeError assert_inherits: property "fastSeek" not found in prototype chain
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "duration" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("video") must inherit property "getStartDate()" with the proper type assert_inherits: property "getStartDate" not found in prototype chain
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "paused" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "defaultPlaybackRate" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "playbackRate" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "played" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "seekable" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "ended" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "autoplay" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "loop" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "play()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "pause()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "controls" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "volume" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "muted" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "defaultMuted" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "audioTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "videoTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "textTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "addTextTrack(TextTrackKind, DOMString, DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, DOMString, DOMString) on document.createElement("video") with too few arguments must throw TypeError
+PASS HTMLAudioElement interface: existence and properties of interface object
+PASS HTMLAudioElement interface object length
+PASS HTMLAudioElement interface object name
+PASS HTMLAudioElement interface: named constructor
+PASS HTMLAudioElement interface: named constructor object
+PASS HTMLAudioElement interface: named constructor prototype property
+PASS HTMLAudioElement interface: named constructor name
+PASS HTMLAudioElement interface: named constructor length
+PASS HTMLAudioElement interface: named constructor without 'new'
+PASS HTMLAudioElement interface: existence and properties of interface prototype object
+PASS HTMLAudioElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLAudioElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLAudioElement must be primary interface of document.createElement("audio")
+PASS Stringification of document.createElement("audio")
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "error" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "src" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("audio") must inherit property "srcObject" with the proper type Unrecognized type MediaStream
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "currentSrc" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "crossOrigin" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "NETWORK_EMPTY" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "NETWORK_IDLE" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "NETWORK_LOADING" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "NETWORK_NO_SOURCE" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "networkState" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "preload" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "buffered" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "load()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "canPlayType(DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling canPlayType(DOMString) on document.createElement("audio") with too few arguments must throw TypeError
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_NOTHING" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_METADATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_CURRENT_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_FUTURE_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_ENOUGH_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "readyState" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "seeking" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "currentTime" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("audio") must inherit property "fastSeek(double)" with the proper type assert_inherits: property "fastSeek" not found in prototype chain
+FAIL HTMLMediaElement interface: calling fastSeek(double) on document.createElement("audio") with too few arguments must throw TypeError assert_inherits: property "fastSeek" not found in prototype chain
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "duration" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("audio") must inherit property "getStartDate()" with the proper type assert_inherits: property "getStartDate" not found in prototype chain
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "paused" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "defaultPlaybackRate" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "playbackRate" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "played" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "seekable" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "ended" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "autoplay" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "loop" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "play()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "pause()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "controls" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "volume" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "muted" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "defaultMuted" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "audioTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "videoTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "textTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "addTextTrack(TextTrackKind, DOMString, DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, DOMString, DOMString) on document.createElement("audio") with too few arguments must throw TypeError
+PASS HTMLAudioElement must be primary interface of new Audio()
+PASS Stringification of new Audio()
+PASS HTMLMediaElement interface: new Audio() must inherit property "error" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "src" with the proper type
+FAIL HTMLMediaElement interface: new Audio() must inherit property "srcObject" with the proper type Unrecognized type MediaStream
+PASS HTMLMediaElement interface: new Audio() must inherit property "currentSrc" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "crossOrigin" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "NETWORK_EMPTY" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "NETWORK_IDLE" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "NETWORK_LOADING" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "NETWORK_NO_SOURCE" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "networkState" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "preload" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "buffered" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "load()" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "canPlayType(DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling canPlayType(DOMString) on new Audio() with too few arguments must throw TypeError
+PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_NOTHING" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_METADATA" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_CURRENT_DATA" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_FUTURE_DATA" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_ENOUGH_DATA" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "readyState" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "seeking" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "currentTime" with the proper type
+FAIL HTMLMediaElement interface: new Audio() must inherit property "fastSeek(double)" with the proper type assert_inherits: property "fastSeek" not found in prototype chain
+FAIL HTMLMediaElement interface: calling fastSeek(double) on new Audio() with too few arguments must throw TypeError assert_inherits: property "fastSeek" not found in prototype chain
+PASS HTMLMediaElement interface: new Audio() must inherit property "duration" with the proper type
+FAIL HTMLMediaElement interface: new Audio() must inherit property "getStartDate()" with the proper type assert_inherits: property "getStartDate" not found in prototype chain
+PASS HTMLMediaElement interface: new Audio() must inherit property "paused" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "defaultPlaybackRate" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "playbackRate" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "played" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "seekable" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "ended" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "autoplay" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "loop" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "play()" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "pause()" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "controls" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "volume" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "muted" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "defaultMuted" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "audioTracks" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "videoTracks" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "textTracks" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "addTextTrack(TextTrackKind, DOMString, DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, DOMString, DOMString) on new Audio() with too few arguments must throw TypeError
+PASS HTMLTrackElement interface: existence and properties of interface object
+PASS HTMLTrackElement interface object length
+PASS HTMLTrackElement interface object name
+PASS HTMLTrackElement interface: existence and properties of interface prototype object
+PASS HTMLTrackElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTrackElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTrackElement interface: attribute kind
+PASS HTMLTrackElement interface: attribute src
+PASS HTMLTrackElement interface: attribute srclang
+PASS HTMLTrackElement interface: attribute label
+PASS HTMLTrackElement interface: attribute default
+PASS HTMLTrackElement interface: constant NONE on interface object
+PASS HTMLTrackElement interface: constant NONE on interface prototype object
+PASS HTMLTrackElement interface: constant LOADING on interface object
+PASS HTMLTrackElement interface: constant LOADING on interface prototype object
+PASS HTMLTrackElement interface: constant LOADED on interface object
+PASS HTMLTrackElement interface: constant LOADED on interface prototype object
+PASS HTMLTrackElement interface: constant ERROR on interface object
+PASS HTMLTrackElement interface: constant ERROR on interface prototype object
+PASS HTMLTrackElement interface: attribute readyState
+PASS HTMLTrackElement interface: attribute track
+PASS HTMLTrackElement must be primary interface of document.createElement("track")
+PASS Stringification of document.createElement("track")
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "kind" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "src" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "srclang" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "label" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "default" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "NONE" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "LOADING" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "LOADED" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "ERROR" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "readyState" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "track" with the proper type
+PASS HTMLMediaElement interface: existence and properties of interface object
+PASS HTMLMediaElement interface object length
+PASS HTMLMediaElement interface object name
+PASS HTMLMediaElement interface: existence and properties of interface prototype object
+PASS HTMLMediaElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMediaElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMediaElement interface: attribute error
+PASS HTMLMediaElement interface: attribute src
+PASS HTMLMediaElement interface: attribute srcObject
+PASS HTMLMediaElement interface: attribute currentSrc
+PASS HTMLMediaElement interface: attribute crossOrigin
+PASS HTMLMediaElement interface: constant NETWORK_EMPTY on interface object
+PASS HTMLMediaElement interface: constant NETWORK_EMPTY on interface prototype object
+PASS HTMLMediaElement interface: constant NETWORK_IDLE on interface object
+PASS HTMLMediaElement interface: constant NETWORK_IDLE on interface prototype object
+PASS HTMLMediaElement interface: constant NETWORK_LOADING on interface object
+PASS HTMLMediaElement interface: constant NETWORK_LOADING on interface prototype object
+PASS HTMLMediaElement interface: constant NETWORK_NO_SOURCE on interface object
+PASS HTMLMediaElement interface: constant NETWORK_NO_SOURCE on interface prototype object
+PASS HTMLMediaElement interface: attribute networkState
+PASS HTMLMediaElement interface: attribute preload
+PASS HTMLMediaElement interface: attribute buffered
+PASS HTMLMediaElement interface: operation load()
+PASS HTMLMediaElement interface: operation canPlayType(DOMString)
+PASS HTMLMediaElement interface: constant HAVE_NOTHING on interface object
+PASS HTMLMediaElement interface: constant HAVE_NOTHING on interface prototype object
+PASS HTMLMediaElement interface: constant HAVE_METADATA on interface object
+PASS HTMLMediaElement interface: constant HAVE_METADATA on interface prototype object
+PASS HTMLMediaElement interface: constant HAVE_CURRENT_DATA on interface object
+PASS HTMLMediaElement interface: constant HAVE_CURRENT_DATA on interface prototype object
+PASS HTMLMediaElement interface: constant HAVE_FUTURE_DATA on interface object
+PASS HTMLMediaElement interface: constant HAVE_FUTURE_DATA on interface prototype object
+PASS HTMLMediaElement interface: constant HAVE_ENOUGH_DATA on interface object
+PASS HTMLMediaElement interface: constant HAVE_ENOUGH_DATA on interface prototype object
+PASS HTMLMediaElement interface: attribute readyState
+PASS HTMLMediaElement interface: attribute seeking
+PASS HTMLMediaElement interface: attribute currentTime
+FAIL HTMLMediaElement interface: operation fastSeek(double) assert_own_property: interface prototype object missing non-static operation expected property "fastSeek" missing
+PASS HTMLMediaElement interface: attribute duration
+FAIL HTMLMediaElement interface: operation getStartDate() assert_own_property: interface prototype object missing non-static operation expected property "getStartDate" missing
+PASS HTMLMediaElement interface: attribute paused
+PASS HTMLMediaElement interface: attribute defaultPlaybackRate
+PASS HTMLMediaElement interface: attribute playbackRate
+PASS HTMLMediaElement interface: attribute played
+PASS HTMLMediaElement interface: attribute seekable
+PASS HTMLMediaElement interface: attribute ended
+PASS HTMLMediaElement interface: attribute autoplay
+PASS HTMLMediaElement interface: attribute loop
+PASS HTMLMediaElement interface: operation play()
+PASS HTMLMediaElement interface: operation pause()
+PASS HTMLMediaElement interface: attribute controls
+PASS HTMLMediaElement interface: attribute volume
+PASS HTMLMediaElement interface: attribute muted
+PASS HTMLMediaElement interface: attribute defaultMuted
+PASS HTMLMediaElement interface: attribute audioTracks
+PASS HTMLMediaElement interface: attribute videoTracks
+PASS HTMLMediaElement interface: attribute textTracks
+PASS HTMLMediaElement interface: operation addTextTrack(TextTrackKind, DOMString, DOMString)
+PASS HTMLMapElement interface: existence and properties of interface object
+PASS HTMLMapElement interface object length
+PASS HTMLMapElement interface object name
+PASS HTMLMapElement interface: existence and properties of interface prototype object
+PASS HTMLMapElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMapElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMapElement interface: attribute name
+PASS HTMLMapElement interface: attribute areas
+PASS HTMLMapElement must be primary interface of document.createElement("map")
+PASS Stringification of document.createElement("map")
+PASS HTMLMapElement interface: document.createElement("map") must inherit property "name" with the proper type
+PASS HTMLMapElement interface: document.createElement("map") must inherit property "areas" with the proper type
+PASS HTMLAreaElement interface: existence and properties of interface object
+PASS HTMLAreaElement interface object length
+PASS HTMLAreaElement interface object name
+PASS HTMLAreaElement interface: existence and properties of interface prototype object
+PASS HTMLAreaElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLAreaElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLAreaElement interface: attribute alt
+PASS HTMLAreaElement interface: attribute coords
+PASS HTMLAreaElement interface: attribute shape
+PASS HTMLAreaElement interface: attribute target
+PASS HTMLAreaElement interface: attribute download
+PASS HTMLAreaElement interface: attribute ping
+PASS HTMLAreaElement interface: attribute rel
+PASS HTMLAreaElement interface: attribute relList
+PASS HTMLAreaElement interface: attribute referrerPolicy
+PASS HTMLAreaElement interface: attribute noHref
+PASS HTMLAreaElement interface: attribute href
+PASS HTMLAreaElement interface: stringifier
+PASS HTMLAreaElement interface: attribute origin
+PASS HTMLAreaElement interface: attribute protocol
+PASS HTMLAreaElement interface: attribute username
+PASS HTMLAreaElement interface: attribute password
+PASS HTMLAreaElement interface: attribute host
+PASS HTMLAreaElement interface: attribute hostname
+PASS HTMLAreaElement interface: attribute port
+PASS HTMLAreaElement interface: attribute pathname
+PASS HTMLAreaElement interface: attribute search
+PASS HTMLAreaElement interface: attribute hash
+PASS HTMLAreaElement must be primary interface of document.createElement("area")
+PASS Stringification of document.createElement("area")
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "alt" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "coords" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "shape" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "target" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "download" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "ping" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "rel" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "relList" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "referrerPolicy" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "noHref" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "href" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "origin" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "protocol" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "username" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "password" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "host" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "hostname" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "port" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "pathname" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "search" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "hash" with the proper type
+PASS HTMLTableElement interface: existence and properties of interface object
+PASS HTMLTableElement interface object length
+PASS HTMLTableElement interface object name
+PASS HTMLTableElement interface: existence and properties of interface prototype object
+PASS HTMLTableElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableElement interface: attribute caption
+PASS HTMLTableElement interface: operation createCaption()
+PASS HTMLTableElement interface: operation deleteCaption()
+PASS HTMLTableElement interface: attribute tHead
+PASS HTMLTableElement interface: operation createTHead()
+PASS HTMLTableElement interface: operation deleteTHead()
+PASS HTMLTableElement interface: attribute tFoot
+PASS HTMLTableElement interface: operation createTFoot()
+PASS HTMLTableElement interface: operation deleteTFoot()
+PASS HTMLTableElement interface: attribute tBodies
+PASS HTMLTableElement interface: operation createTBody()
+PASS HTMLTableElement interface: attribute rows
+PASS HTMLTableElement interface: operation insertRow(long)
+PASS HTMLTableElement interface: operation deleteRow(long)
+PASS HTMLTableElement interface: attribute align
+PASS HTMLTableElement interface: attribute border
+PASS HTMLTableElement interface: attribute frame
+PASS HTMLTableElement interface: attribute rules
+PASS HTMLTableElement interface: attribute summary
+PASS HTMLTableElement interface: attribute width
+PASS HTMLTableElement interface: attribute bgColor
+PASS HTMLTableElement interface: attribute cellPadding
+PASS HTMLTableElement interface: attribute cellSpacing
+PASS HTMLTableElement must be primary interface of document.createElement("table")
+PASS Stringification of document.createElement("table")
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "caption" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "createCaption()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "deleteCaption()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "tHead" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "createTHead()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "deleteTHead()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "tFoot" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "createTFoot()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "deleteTFoot()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "tBodies" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "createTBody()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "rows" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "insertRow(long)" with the proper type
+PASS HTMLTableElement interface: calling insertRow(long) on document.createElement("table") with too few arguments must throw TypeError
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "deleteRow(long)" with the proper type
+PASS HTMLTableElement interface: calling deleteRow(long) on document.createElement("table") with too few arguments must throw TypeError
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "align" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "border" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "frame" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "rules" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "summary" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "width" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "bgColor" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "cellPadding" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "cellSpacing" with the proper type
+PASS HTMLTableCaptionElement interface: existence and properties of interface object
+PASS HTMLTableCaptionElement interface object length
+PASS HTMLTableCaptionElement interface object name
+PASS HTMLTableCaptionElement interface: existence and properties of interface prototype object
+PASS HTMLTableCaptionElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableCaptionElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableCaptionElement interface: attribute align
+PASS HTMLTableCaptionElement must be primary interface of document.createElement("caption")
+PASS Stringification of document.createElement("caption")
+PASS HTMLTableCaptionElement interface: document.createElement("caption") must inherit property "align" with the proper type
+PASS HTMLTableColElement interface: existence and properties of interface object
+PASS HTMLTableColElement interface object length
+PASS HTMLTableColElement interface object name
+PASS HTMLTableColElement interface: existence and properties of interface prototype object
+PASS HTMLTableColElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableColElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableColElement interface: attribute span
+PASS HTMLTableColElement interface: attribute align
+PASS HTMLTableColElement interface: attribute ch
+PASS HTMLTableColElement interface: attribute chOff
+PASS HTMLTableColElement interface: attribute vAlign
+PASS HTMLTableColElement interface: attribute width
+PASS HTMLTableColElement must be primary interface of document.createElement("colgroup")
+PASS Stringification of document.createElement("colgroup")
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "span" with the proper type
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "align" with the proper type
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "ch" with the proper type
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "chOff" with the proper type
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "vAlign" with the proper type
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "width" with the proper type
+PASS HTMLTableColElement must be primary interface of document.createElement("col")
+PASS Stringification of document.createElement("col")
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "span" with the proper type
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "align" with the proper type
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "ch" with the proper type
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "chOff" with the proper type
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "vAlign" with the proper type
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "width" with the proper type
+PASS HTMLTableSectionElement interface: existence and properties of interface object
+PASS HTMLTableSectionElement interface object length
+PASS HTMLTableSectionElement interface object name
+PASS HTMLTableSectionElement interface: existence and properties of interface prototype object
+PASS HTMLTableSectionElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableSectionElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableSectionElement interface: attribute rows
+PASS HTMLTableSectionElement interface: operation insertRow(long)
+PASS HTMLTableSectionElement interface: operation deleteRow(long)
+PASS HTMLTableSectionElement interface: attribute align
+PASS HTMLTableSectionElement interface: attribute ch
+PASS HTMLTableSectionElement interface: attribute chOff
+PASS HTMLTableSectionElement interface: attribute vAlign
+PASS HTMLTableSectionElement must be primary interface of document.createElement("tbody")
+PASS Stringification of document.createElement("tbody")
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "rows" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "insertRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(long) on document.createElement("tbody") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "deleteRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling deleteRow(long) on document.createElement("tbody") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "align" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "ch" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "chOff" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "vAlign" with the proper type
+PASS HTMLTableSectionElement must be primary interface of document.createElement("thead")
+PASS Stringification of document.createElement("thead")
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "rows" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "insertRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(long) on document.createElement("thead") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "deleteRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling deleteRow(long) on document.createElement("thead") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "align" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "ch" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "chOff" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "vAlign" with the proper type
+PASS HTMLTableSectionElement must be primary interface of document.createElement("tfoot")
+PASS Stringification of document.createElement("tfoot")
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "rows" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "insertRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(long) on document.createElement("tfoot") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "deleteRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling deleteRow(long) on document.createElement("tfoot") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "align" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "ch" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "chOff" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "vAlign" with the proper type
+PASS HTMLTableRowElement interface: existence and properties of interface object
+PASS HTMLTableRowElement interface object length
+PASS HTMLTableRowElement interface object name
+PASS HTMLTableRowElement interface: existence and properties of interface prototype object
+PASS HTMLTableRowElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableRowElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableRowElement interface: attribute rowIndex
+PASS HTMLTableRowElement interface: attribute sectionRowIndex
+PASS HTMLTableRowElement interface: attribute cells
+PASS HTMLTableRowElement interface: operation insertCell(long)
+PASS HTMLTableRowElement interface: operation deleteCell(long)
+PASS HTMLTableRowElement interface: attribute align
+PASS HTMLTableRowElement interface: attribute ch
+PASS HTMLTableRowElement interface: attribute chOff
+PASS HTMLTableRowElement interface: attribute vAlign
+PASS HTMLTableRowElement interface: attribute bgColor
+PASS HTMLTableRowElement must be primary interface of document.createElement("tr")
+PASS Stringification of document.createElement("tr")
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "rowIndex" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "sectionRowIndex" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "cells" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "insertCell(long)" with the proper type
+PASS HTMLTableRowElement interface: calling insertCell(long) on document.createElement("tr") with too few arguments must throw TypeError
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "deleteCell(long)" with the proper type
+PASS HTMLTableRowElement interface: calling deleteCell(long) on document.createElement("tr") with too few arguments must throw TypeError
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "align" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "ch" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "chOff" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "vAlign" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "bgColor" with the proper type
+PASS HTMLTableCellElement interface: existence and properties of interface object
+PASS HTMLTableCellElement interface object length
+PASS HTMLTableCellElement interface object name
+PASS HTMLTableCellElement interface: existence and properties of interface prototype object
+PASS HTMLTableCellElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableCellElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableCellElement interface: attribute colSpan
+PASS HTMLTableCellElement interface: attribute rowSpan
+PASS HTMLTableCellElement interface: attribute headers
+PASS HTMLTableCellElement interface: attribute cellIndex
+PASS HTMLTableCellElement interface: attribute scope
+PASS HTMLTableCellElement interface: attribute abbr
+PASS HTMLTableCellElement interface: attribute align
+PASS HTMLTableCellElement interface: attribute axis
+PASS HTMLTableCellElement interface: attribute height
+PASS HTMLTableCellElement interface: attribute width
+PASS HTMLTableCellElement interface: attribute ch
+PASS HTMLTableCellElement interface: attribute chOff
+PASS HTMLTableCellElement interface: attribute noWrap
+PASS HTMLTableCellElement interface: attribute vAlign
+PASS HTMLTableCellElement interface: attribute bgColor
+PASS HTMLTableCellElement must be primary interface of document.createElement("td")
+PASS Stringification of document.createElement("td")
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "colSpan" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "rowSpan" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "headers" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "cellIndex" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "scope" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "abbr" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "align" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "axis" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "height" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "width" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "ch" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "chOff" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "noWrap" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "vAlign" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "bgColor" with the proper type
+PASS HTMLTableCellElement must be primary interface of document.createElement("th")
+PASS Stringification of document.createElement("th")
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "colSpan" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "rowSpan" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "headers" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "cellIndex" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "scope" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "abbr" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "align" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "axis" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "height" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "width" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "ch" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "chOff" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "noWrap" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "vAlign" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "bgColor" with the proper type
+PASS HTMLFormElement interface: existence and properties of interface object
+PASS HTMLFormElement interface object length
+PASS HTMLFormElement interface object name
+PASS HTMLFormElement interface: existence and properties of interface prototype object
+PASS HTMLFormElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFormElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFormElement interface: attribute acceptCharset
+PASS HTMLFormElement interface: attribute action
+PASS HTMLFormElement interface: attribute autocomplete
+PASS HTMLFormElement interface: attribute enctype
+PASS HTMLFormElement interface: attribute encoding
+PASS HTMLFormElement interface: attribute method
+PASS HTMLFormElement interface: attribute name
+PASS HTMLFormElement interface: attribute noValidate
+PASS HTMLFormElement interface: attribute target
+FAIL HTMLFormElement interface: attribute rel assert_true: The prototype object must have a property "rel" expected true got false
+FAIL HTMLFormElement interface: attribute relList assert_true: The prototype object must have a property "relList" expected true got false
+PASS HTMLFormElement interface: attribute elements
+PASS HTMLFormElement interface: attribute length
+PASS HTMLFormElement interface: operation submit()
+PASS HTMLFormElement interface: operation requestSubmit(HTMLElement)
+PASS HTMLFormElement interface: operation reset()
+PASS HTMLFormElement interface: operation checkValidity()
+PASS HTMLFormElement interface: operation reportValidity()
+PASS HTMLFormElement must be primary interface of document.createElement("form")
+PASS Stringification of document.createElement("form")
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "acceptCharset" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "action" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "autocomplete" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "enctype" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "encoding" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "method" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "name" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "noValidate" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "target" with the proper type
+FAIL HTMLFormElement interface: document.createElement("form") must inherit property "rel" with the proper type assert_inherits: property "rel" not found in prototype chain
+FAIL HTMLFormElement interface: document.createElement("form") must inherit property "relList" with the proper type assert_inherits: property "relList" not found in prototype chain
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "elements" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "length" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "submit()" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "requestSubmit(HTMLElement)" with the proper type
+PASS HTMLFormElement interface: calling requestSubmit(HTMLElement) on document.createElement("form") with too few arguments must throw TypeError
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "reset()" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "checkValidity()" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "reportValidity()" with the proper type
+PASS HTMLLabelElement interface: existence and properties of interface object
+PASS HTMLLabelElement interface object length
+PASS HTMLLabelElement interface object name
+PASS HTMLLabelElement interface: existence and properties of interface prototype object
+PASS HTMLLabelElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLLabelElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLLabelElement interface: attribute form
+PASS HTMLLabelElement interface: attribute htmlFor
+PASS HTMLLabelElement interface: attribute control
+PASS HTMLLabelElement must be primary interface of document.createElement("label")
+PASS Stringification of document.createElement("label")
+PASS HTMLLabelElement interface: document.createElement("label") must inherit property "form" with the proper type
+PASS HTMLLabelElement interface: document.createElement("label") must inherit property "htmlFor" with the proper type
+PASS HTMLLabelElement interface: document.createElement("label") must inherit property "control" with the proper type
+PASS HTMLInputElement interface: existence and properties of interface object
+PASS HTMLInputElement interface object length
+PASS HTMLInputElement interface object name
+PASS HTMLInputElement interface: existence and properties of interface prototype object
+PASS HTMLInputElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLInputElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLInputElement interface: attribute accept
+PASS HTMLInputElement interface: attribute alt
+PASS HTMLInputElement interface: attribute autocomplete
+PASS HTMLInputElement interface: attribute defaultChecked
+PASS HTMLInputElement interface: attribute checked
+PASS HTMLInputElement interface: attribute dirName
+PASS HTMLInputElement interface: attribute disabled
+PASS HTMLInputElement interface: attribute form
+PASS HTMLInputElement interface: attribute files
+PASS HTMLInputElement interface: attribute formAction
+PASS HTMLInputElement interface: attribute formEnctype
+PASS HTMLInputElement interface: attribute formMethod
+PASS HTMLInputElement interface: attribute formNoValidate
+PASS HTMLInputElement interface: attribute formTarget
+PASS HTMLInputElement interface: attribute height
+PASS HTMLInputElement interface: attribute indeterminate
+PASS HTMLInputElement interface: attribute list
+PASS HTMLInputElement interface: attribute max
+PASS HTMLInputElement interface: attribute maxLength
+PASS HTMLInputElement interface: attribute min
+PASS HTMLInputElement interface: attribute minLength
+PASS HTMLInputElement interface: attribute multiple
+PASS HTMLInputElement interface: attribute name
+PASS HTMLInputElement interface: attribute pattern
+PASS HTMLInputElement interface: attribute placeholder
+PASS HTMLInputElement interface: attribute readOnly
+PASS HTMLInputElement interface: attribute required
+PASS HTMLInputElement interface: attribute size
+PASS HTMLInputElement interface: attribute src
+PASS HTMLInputElement interface: attribute step
+PASS HTMLInputElement interface: attribute type
+PASS HTMLInputElement interface: attribute defaultValue
+PASS HTMLInputElement interface: attribute value
+PASS HTMLInputElement interface: attribute valueAsDate
+PASS HTMLInputElement interface: attribute valueAsNumber
+PASS HTMLInputElement interface: attribute width
+PASS HTMLInputElement interface: operation stepUp(long)
+PASS HTMLInputElement interface: operation stepDown(long)
+PASS HTMLInputElement interface: attribute willValidate
+PASS HTMLInputElement interface: attribute validity
+PASS HTMLInputElement interface: attribute validationMessage
+PASS HTMLInputElement interface: operation checkValidity()
+PASS HTMLInputElement interface: operation reportValidity()
+PASS HTMLInputElement interface: operation setCustomValidity(DOMString)
+PASS HTMLInputElement interface: attribute labels
+PASS HTMLInputElement interface: operation select()
+PASS HTMLInputElement interface: attribute selectionStart
+PASS HTMLInputElement interface: attribute selectionEnd
+PASS HTMLInputElement interface: attribute selectionDirection
+PASS HTMLInputElement interface: operation setRangeText(DOMString)
+PASS HTMLInputElement interface: operation setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)
+PASS HTMLInputElement interface: operation setSelectionRange(unsigned long, unsigned long, DOMString)
+PASS HTMLInputElement interface: attribute align
+PASS HTMLInputElement interface: attribute useMap
+PASS HTMLInputElement must be primary interface of document.createElement("input")
+PASS Stringification of document.createElement("input")
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("text")
+PASS Stringification of createInput("text")
+PASS HTMLInputElement interface: createInput("text") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("hidden")
+PASS Stringification of createInput("hidden")
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("search")
+PASS Stringification of createInput("search")
+PASS HTMLInputElement interface: createInput("search") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("tel")
+PASS Stringification of createInput("tel")
+PASS HTMLInputElement interface: createInput("tel") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("url")
+PASS Stringification of createInput("url")
+PASS HTMLInputElement interface: createInput("url") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("email")
+PASS Stringification of createInput("email")
+PASS HTMLInputElement interface: createInput("email") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("password")
+PASS Stringification of createInput("password")
+PASS HTMLInputElement interface: createInput("password") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("date")
+PASS Stringification of createInput("date")
+PASS HTMLInputElement interface: createInput("date") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("month")
+PASS Stringification of createInput("month")
+PASS HTMLInputElement interface: createInput("month") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("week")
+PASS Stringification of createInput("week")
+PASS HTMLInputElement interface: createInput("week") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("time")
+PASS Stringification of createInput("time")
+PASS HTMLInputElement interface: createInput("time") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("datetime-local")
+PASS Stringification of createInput("datetime-local")
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("number")
+PASS Stringification of createInput("number")
+PASS HTMLInputElement interface: createInput("number") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("range")
+PASS Stringification of createInput("range")
+PASS HTMLInputElement interface: createInput("range") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("color")
+PASS Stringification of createInput("color")
+PASS HTMLInputElement interface: createInput("color") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("checkbox")
+PASS Stringification of createInput("checkbox")
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("radio")
+PASS Stringification of createInput("radio")
+PASS HTMLInputElement interface: createInput("radio") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("file")
+PASS Stringification of createInput("file")
+PASS HTMLInputElement interface: createInput("file") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("submit")
+PASS Stringification of createInput("submit")
+PASS HTMLInputElement interface: createInput("submit") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("image")
+PASS Stringification of createInput("image")
+PASS HTMLInputElement interface: createInput("image") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("reset")
+PASS Stringification of createInput("reset")
+PASS HTMLInputElement interface: createInput("reset") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("button")
+PASS Stringification of createInput("button")
+PASS HTMLInputElement interface: createInput("button") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "stepUp(long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(long) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "stepDown(long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(long) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "useMap" with the proper type
+PASS HTMLButtonElement interface: existence and properties of interface object
+PASS HTMLButtonElement interface object length
+PASS HTMLButtonElement interface object name
+PASS HTMLButtonElement interface: existence and properties of interface prototype object
+PASS HTMLButtonElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLButtonElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLButtonElement interface: attribute disabled
+PASS HTMLButtonElement interface: attribute form
+PASS HTMLButtonElement interface: attribute formAction
+PASS HTMLButtonElement interface: attribute formEnctype
+PASS HTMLButtonElement interface: attribute formMethod
+PASS HTMLButtonElement interface: attribute formNoValidate
+PASS HTMLButtonElement interface: attribute formTarget
+PASS HTMLButtonElement interface: attribute name
+PASS HTMLButtonElement interface: attribute type
+PASS HTMLButtonElement interface: attribute value
+PASS HTMLButtonElement interface: attribute willValidate
+PASS HTMLButtonElement interface: attribute validity
+PASS HTMLButtonElement interface: attribute validationMessage
+PASS HTMLButtonElement interface: operation checkValidity()
+PASS HTMLButtonElement interface: operation reportValidity()
+PASS HTMLButtonElement interface: operation setCustomValidity(DOMString)
+PASS HTMLButtonElement interface: attribute labels
+PASS HTMLButtonElement must be primary interface of document.createElement("button")
+PASS Stringification of document.createElement("button")
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "disabled" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "form" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formAction" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formEnctype" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formMethod" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formNoValidate" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formTarget" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "name" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "type" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "value" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "willValidate" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "validity" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "validationMessage" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "checkValidity()" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "reportValidity()" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLButtonElement interface: calling setCustomValidity(DOMString) on document.createElement("button") with too few arguments must throw TypeError
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "labels" with the proper type
+PASS HTMLSelectElement interface: existence and properties of interface object
+PASS HTMLSelectElement interface object length
+PASS HTMLSelectElement interface object name
+PASS HTMLSelectElement interface: existence and properties of interface prototype object
+PASS HTMLSelectElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLSelectElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLSelectElement interface: attribute autocomplete
+PASS HTMLSelectElement interface: attribute disabled
+PASS HTMLSelectElement interface: attribute form
+PASS HTMLSelectElement interface: attribute multiple
+PASS HTMLSelectElement interface: attribute name
+PASS HTMLSelectElement interface: attribute required
+PASS HTMLSelectElement interface: attribute size
+PASS HTMLSelectElement interface: attribute type
+PASS HTMLSelectElement interface: attribute options
+PASS HTMLSelectElement interface: attribute length
+PASS HTMLSelectElement interface: operation item(unsigned long)
+PASS HTMLSelectElement interface: operation namedItem(DOMString)
+PASS HTMLSelectElement interface: operation add([object Object],[object Object], [object Object],[object Object])
+PASS HTMLSelectElement interface: operation remove()
+PASS HTMLSelectElement interface: operation remove(long)
+PASS HTMLSelectElement interface: attribute selectedOptions
+PASS HTMLSelectElement interface: attribute selectedIndex
+PASS HTMLSelectElement interface: attribute value
+PASS HTMLSelectElement interface: attribute willValidate
+PASS HTMLSelectElement interface: attribute validity
+PASS HTMLSelectElement interface: attribute validationMessage
+PASS HTMLSelectElement interface: operation checkValidity()
+PASS HTMLSelectElement interface: operation reportValidity()
+PASS HTMLSelectElement interface: operation setCustomValidity(DOMString)
+PASS HTMLSelectElement interface: attribute labels
+PASS HTMLSelectElement must be primary interface of document.createElement("select")
+PASS Stringification of document.createElement("select")
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "autocomplete" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "disabled" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "form" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "multiple" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "name" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "required" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "size" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "type" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "options" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "length" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "item(unsigned long)" with the proper type
+PASS HTMLSelectElement interface: calling item(unsigned long) on document.createElement("select") with too few arguments must throw TypeError
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "namedItem(DOMString)" with the proper type
+PASS HTMLSelectElement interface: calling namedItem(DOMString) on document.createElement("select") with too few arguments must throw TypeError
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "add([object Object],[object Object], [object Object],[object Object])" with the proper type
+PASS HTMLSelectElement interface: calling add([object Object],[object Object], [object Object],[object Object]) on document.createElement("select") with too few arguments must throw TypeError
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "remove()" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "remove(long)" with the proper type
+PASS HTMLSelectElement interface: calling remove(long) on document.createElement("select") with too few arguments must throw TypeError
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "selectedOptions" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "selectedIndex" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "value" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "willValidate" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "validity" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "validationMessage" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "checkValidity()" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "reportValidity()" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLSelectElement interface: calling setCustomValidity(DOMString) on document.createElement("select") with too few arguments must throw TypeError
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "labels" with the proper type
+PASS HTMLDataListElement interface: existence and properties of interface object
+PASS HTMLDataListElement interface object length
+PASS HTMLDataListElement interface object name
+PASS HTMLDataListElement interface: existence and properties of interface prototype object
+PASS HTMLDataListElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDataListElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDataListElement interface: attribute options
+PASS HTMLDataListElement must be primary interface of document.createElement("datalist")
+PASS Stringification of document.createElement("datalist")
+PASS HTMLDataListElement interface: document.createElement("datalist") must inherit property "options" with the proper type
+PASS HTMLOptGroupElement interface: existence and properties of interface object
+PASS HTMLOptGroupElement interface object length
+PASS HTMLOptGroupElement interface object name
+PASS HTMLOptGroupElement interface: existence and properties of interface prototype object
+PASS HTMLOptGroupElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLOptGroupElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLOptGroupElement interface: attribute disabled
+PASS HTMLOptGroupElement interface: attribute label
+PASS HTMLOptGroupElement must be primary interface of document.createElement("optgroup")
+PASS Stringification of document.createElement("optgroup")
+PASS HTMLOptGroupElement interface: document.createElement("optgroup") must inherit property "disabled" with the proper type
+PASS HTMLOptGroupElement interface: document.createElement("optgroup") must inherit property "label" with the proper type
+PASS HTMLOptionElement interface: existence and properties of interface object
+PASS HTMLOptionElement interface object length
+PASS HTMLOptionElement interface object name
+PASS HTMLOptionElement interface: named constructor
+PASS HTMLOptionElement interface: named constructor object
+PASS HTMLOptionElement interface: named constructor prototype property
+PASS HTMLOptionElement interface: named constructor name
+PASS HTMLOptionElement interface: named constructor length
+PASS HTMLOptionElement interface: named constructor without 'new'
+PASS HTMLOptionElement interface: existence and properties of interface prototype object
+PASS HTMLOptionElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLOptionElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLOptionElement interface: attribute disabled
+PASS HTMLOptionElement interface: attribute form
+PASS HTMLOptionElement interface: attribute label
+PASS HTMLOptionElement interface: attribute defaultSelected
+PASS HTMLOptionElement interface: attribute selected
+PASS HTMLOptionElement interface: attribute value
+PASS HTMLOptionElement interface: attribute text
+PASS HTMLOptionElement interface: attribute index
+PASS HTMLOptionElement must be primary interface of document.createElement("option")
+PASS Stringification of document.createElement("option")
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "disabled" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "form" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "label" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "defaultSelected" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "selected" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "value" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "text" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "index" with the proper type
+PASS HTMLOptionElement must be primary interface of new Option()
+PASS Stringification of new Option()
+PASS HTMLOptionElement interface: new Option() must inherit property "disabled" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "form" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "label" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "defaultSelected" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "selected" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "value" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "text" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "index" with the proper type
+PASS HTMLTextAreaElement interface: existence and properties of interface object
+PASS HTMLTextAreaElement interface object length
+PASS HTMLTextAreaElement interface object name
+PASS HTMLTextAreaElement interface: existence and properties of interface prototype object
+PASS HTMLTextAreaElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTextAreaElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTextAreaElement interface: attribute autocomplete
+PASS HTMLTextAreaElement interface: attribute cols
+PASS HTMLTextAreaElement interface: attribute dirName
+PASS HTMLTextAreaElement interface: attribute disabled
+PASS HTMLTextAreaElement interface: attribute form
+PASS HTMLTextAreaElement interface: attribute maxLength
+PASS HTMLTextAreaElement interface: attribute minLength
+PASS HTMLTextAreaElement interface: attribute name
+PASS HTMLTextAreaElement interface: attribute placeholder
+PASS HTMLTextAreaElement interface: attribute readOnly
+PASS HTMLTextAreaElement interface: attribute required
+PASS HTMLTextAreaElement interface: attribute rows
+PASS HTMLTextAreaElement interface: attribute wrap
+PASS HTMLTextAreaElement interface: attribute type
+PASS HTMLTextAreaElement interface: attribute defaultValue
+PASS HTMLTextAreaElement interface: attribute value
+PASS HTMLTextAreaElement interface: attribute textLength
+PASS HTMLTextAreaElement interface: attribute willValidate
+PASS HTMLTextAreaElement interface: attribute validity
+PASS HTMLTextAreaElement interface: attribute validationMessage
+PASS HTMLTextAreaElement interface: operation checkValidity()
+PASS HTMLTextAreaElement interface: operation reportValidity()
+PASS HTMLTextAreaElement interface: operation setCustomValidity(DOMString)
+PASS HTMLTextAreaElement interface: attribute labels
+PASS HTMLTextAreaElement interface: operation select()
+PASS HTMLTextAreaElement interface: attribute selectionStart
+PASS HTMLTextAreaElement interface: attribute selectionEnd
+PASS HTMLTextAreaElement interface: attribute selectionDirection
+PASS HTMLTextAreaElement interface: operation setRangeText(DOMString)
+PASS HTMLTextAreaElement interface: operation setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)
+PASS HTMLTextAreaElement interface: operation setSelectionRange(unsigned long, unsigned long, DOMString)
+PASS HTMLTextAreaElement must be primary interface of document.createElement("textarea")
+PASS Stringification of document.createElement("textarea")
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "autocomplete" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "cols" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "dirName" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "disabled" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "form" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "maxLength" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "minLength" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "name" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "placeholder" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "readOnly" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "required" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "rows" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "wrap" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "type" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "defaultValue" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "value" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "textLength" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "willValidate" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "validity" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "validationMessage" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "checkValidity()" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "reportValidity()" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLTextAreaElement interface: calling setCustomValidity(DOMString) on document.createElement("textarea") with too few arguments must throw TypeError
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "labels" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "select()" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "selectionStart" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "selectionEnd" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "selectionDirection" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLTextAreaElement interface: calling setRangeText(DOMString) on document.createElement("textarea") with too few arguments must throw TypeError
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, SelectionMode)" with the proper type
+PASS HTMLTextAreaElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, SelectionMode) on document.createElement("textarea") with too few arguments must throw TypeError
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setSelectionRange(unsigned long, unsigned long, DOMString)" with the proper type
+PASS HTMLTextAreaElement interface: calling setSelectionRange(unsigned long, unsigned long, DOMString) on document.createElement("textarea") with too few arguments must throw TypeError
+PASS HTMLOutputElement interface: existence and properties of interface object
+PASS HTMLOutputElement interface object length
+PASS HTMLOutputElement interface object name
+PASS HTMLOutputElement interface: existence and properties of interface prototype object
+PASS HTMLOutputElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLOutputElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLOutputElement interface: attribute htmlFor
+PASS HTMLOutputElement interface: attribute form
+PASS HTMLOutputElement interface: attribute name
+PASS HTMLOutputElement interface: attribute type
+PASS HTMLOutputElement interface: attribute defaultValue
+PASS HTMLOutputElement interface: attribute value
+PASS HTMLOutputElement interface: attribute willValidate
+PASS HTMLOutputElement interface: attribute validity
+PASS HTMLOutputElement interface: attribute validationMessage
+PASS HTMLOutputElement interface: operation checkValidity()
+PASS HTMLOutputElement interface: operation reportValidity()
+PASS HTMLOutputElement interface: operation setCustomValidity(DOMString)
+PASS HTMLOutputElement interface: attribute labels
+PASS HTMLOutputElement must be primary interface of document.createElement("output")
+PASS Stringification of document.createElement("output")
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "htmlFor" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "form" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "name" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "type" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "defaultValue" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "value" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "willValidate" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "validity" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "validationMessage" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "checkValidity()" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "reportValidity()" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLOutputElement interface: calling setCustomValidity(DOMString) on document.createElement("output") with too few arguments must throw TypeError
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "labels" with the proper type
+PASS HTMLProgressElement interface: existence and properties of interface object
+PASS HTMLProgressElement interface object length
+PASS HTMLProgressElement interface object name
+PASS HTMLProgressElement interface: existence and properties of interface prototype object
+PASS HTMLProgressElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLProgressElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLProgressElement interface: attribute value
+PASS HTMLProgressElement interface: attribute max
+PASS HTMLProgressElement interface: attribute position
+PASS HTMLProgressElement interface: attribute labels
+PASS HTMLProgressElement must be primary interface of document.createElement("progress")
+PASS Stringification of document.createElement("progress")
+PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "value" with the proper type
+PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "max" with the proper type
+PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "position" with the proper type
+PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "labels" with the proper type
+PASS HTMLMeterElement interface: existence and properties of interface object
+PASS HTMLMeterElement interface object length
+PASS HTMLMeterElement interface object name
+PASS HTMLMeterElement interface: existence and properties of interface prototype object
+PASS HTMLMeterElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMeterElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMeterElement interface: attribute value
+PASS HTMLMeterElement interface: attribute min
+PASS HTMLMeterElement interface: attribute max
+PASS HTMLMeterElement interface: attribute low
+PASS HTMLMeterElement interface: attribute high
+PASS HTMLMeterElement interface: attribute optimum
+PASS HTMLMeterElement interface: attribute labels
+PASS HTMLMeterElement must be primary interface of document.createElement("meter")
+PASS Stringification of document.createElement("meter")
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "value" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "min" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "max" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "low" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "high" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "optimum" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "labels" with the proper type
+PASS HTMLFieldSetElement interface: existence and properties of interface object
+PASS HTMLFieldSetElement interface object length
+PASS HTMLFieldSetElement interface object name
+PASS HTMLFieldSetElement interface: existence and properties of interface prototype object
+PASS HTMLFieldSetElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFieldSetElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFieldSetElement interface: attribute disabled
+PASS HTMLFieldSetElement interface: attribute form
+PASS HTMLFieldSetElement interface: attribute name
+PASS HTMLFieldSetElement interface: attribute type
+PASS HTMLFieldSetElement interface: attribute elements
+PASS HTMLFieldSetElement interface: attribute willValidate
+PASS HTMLFieldSetElement interface: attribute validity
+PASS HTMLFieldSetElement interface: attribute validationMessage
+PASS HTMLFieldSetElement interface: operation checkValidity()
+PASS HTMLFieldSetElement interface: operation reportValidity()
+PASS HTMLFieldSetElement interface: operation setCustomValidity(DOMString)
+PASS HTMLLegendElement interface: existence and properties of interface object
+PASS HTMLLegendElement interface object length
+PASS HTMLLegendElement interface object name
+PASS HTMLLegendElement interface: existence and properties of interface prototype object
+PASS HTMLLegendElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLLegendElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLLegendElement interface: attribute form
+PASS HTMLLegendElement interface: attribute align
+PASS HTMLLegendElement must be primary interface of document.createElement("legend")
+PASS Stringification of document.createElement("legend")
+PASS HTMLLegendElement interface: document.createElement("legend") must inherit property "form" with the proper type
+PASS HTMLLegendElement interface: document.createElement("legend") must inherit property "align" with the proper type
+PASS HTMLDetailsElement interface: existence and properties of interface object
+PASS HTMLDetailsElement interface object length
+PASS HTMLDetailsElement interface object name
+PASS HTMLDetailsElement interface: existence and properties of interface prototype object
+PASS HTMLDetailsElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDetailsElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDetailsElement interface: attribute open
+PASS HTMLDetailsElement must be primary interface of document.createElement("details")
+PASS Stringification of document.createElement("details")
+PASS HTMLDetailsElement interface: document.createElement("details") must inherit property "open" with the proper type
+PASS HTMLDialogElement interface: existence and properties of interface object
+PASS HTMLDialogElement interface object length
+PASS HTMLDialogElement interface object name
+PASS HTMLDialogElement interface: existence and properties of interface prototype object
+PASS HTMLDialogElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDialogElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDialogElement interface: attribute open
+PASS HTMLDialogElement interface: attribute returnValue
+PASS HTMLDialogElement interface: operation show()
+PASS HTMLDialogElement interface: operation showModal()
+PASS HTMLDialogElement interface: operation close(DOMString)
+PASS HTMLScriptElement interface: existence and properties of interface object
+PASS HTMLScriptElement interface object length
+PASS HTMLScriptElement interface object name
+PASS HTMLScriptElement interface: existence and properties of interface prototype object
+PASS HTMLScriptElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLScriptElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLScriptElement interface: attribute src
+PASS HTMLScriptElement interface: attribute type
+PASS HTMLScriptElement interface: attribute noModule
+PASS HTMLScriptElement interface: attribute async
+PASS HTMLScriptElement interface: attribute defer
+PASS HTMLScriptElement interface: attribute crossOrigin
+PASS HTMLScriptElement interface: attribute text
+PASS HTMLScriptElement interface: attribute integrity
+PASS HTMLScriptElement interface: attribute referrerPolicy
+PASS HTMLScriptElement interface: attribute charset
+PASS HTMLScriptElement interface: attribute event
+PASS HTMLScriptElement interface: attribute htmlFor
+PASS HTMLScriptElement must be primary interface of document.createElement("script")
+PASS Stringification of document.createElement("script")
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "src" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "type" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "noModule" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "async" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "defer" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "crossOrigin" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "text" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "integrity" with the proper type
+FAIL HTMLScriptElement interface: document.createElement("script") must inherit property "referrerPolicy" with the proper type assert_equals: expected "string" but got "object"
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "charset" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "event" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "htmlFor" with the proper type
+PASS HTMLTemplateElement interface: existence and properties of interface object
+PASS HTMLTemplateElement interface object length
+PASS HTMLTemplateElement interface object name
+PASS HTMLTemplateElement interface: existence and properties of interface prototype object
+PASS HTMLTemplateElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTemplateElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTemplateElement interface: attribute content
+PASS HTMLTemplateElement must be primary interface of document.createElement("template")
+PASS Stringification of document.createElement("template")
+PASS HTMLTemplateElement interface: document.createElement("template") must inherit property "content" with the proper type
+PASS HTMLSlotElement interface: existence and properties of interface object
+PASS HTMLSlotElement interface object length
+PASS HTMLSlotElement interface object name
+PASS HTMLSlotElement interface: existence and properties of interface prototype object
+PASS HTMLSlotElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLSlotElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLSlotElement interface: attribute name
+PASS HTMLSlotElement interface: operation assignedNodes(AssignedNodesOptions)
+PASS HTMLSlotElement interface: operation assignedElements(AssignedNodesOptions)
+PASS HTMLSlotElement must be primary interface of document.createElement("slot")
+PASS Stringification of document.createElement("slot")
+PASS HTMLSlotElement interface: document.createElement("slot") must inherit property "name" with the proper type
+PASS HTMLSlotElement interface: document.createElement("slot") must inherit property "assignedNodes(AssignedNodesOptions)" with the proper type
+PASS HTMLSlotElement interface: calling assignedNodes(AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError
+PASS HTMLSlotElement interface: document.createElement("slot") must inherit property "assignedElements(AssignedNodesOptions)" with the proper type
+PASS HTMLSlotElement interface: calling assignedElements(AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: existence and properties of interface object
+PASS HTMLCanvasElement interface object length
+PASS HTMLCanvasElement interface object name
+PASS HTMLCanvasElement interface: existence and properties of interface prototype object
+PASS HTMLCanvasElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLCanvasElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLCanvasElement interface: attribute width
+PASS HTMLCanvasElement interface: attribute height
+PASS HTMLCanvasElement interface: operation getContext(DOMString, any)
+PASS HTMLCanvasElement interface: operation toDataURL(DOMString, any)
+PASS HTMLCanvasElement interface: operation toBlob(BlobCallback, DOMString, any)
+PASS HTMLCanvasElement interface: operation transferControlToOffscreen()
+PASS HTMLCanvasElement must be primary interface of document.createElement("canvas")
+PASS Stringification of document.createElement("canvas")
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "width" with the proper type
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "height" with the proper type
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "getContext(DOMString, any)" with the proper type
+PASS HTMLCanvasElement interface: calling getContext(DOMString, any) on document.createElement("canvas") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toDataURL(DOMString, any)" with the proper type
+PASS HTMLCanvasElement interface: calling toDataURL(DOMString, any) on document.createElement("canvas") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toBlob(BlobCallback, DOMString, any)" with the proper type
+PASS HTMLCanvasElement interface: calling toBlob(BlobCallback, DOMString, any) on document.createElement("canvas") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "transferControlToOffscreen()" with the proper type
+PASS HTMLMarqueeElement interface: existence and properties of interface object
+PASS HTMLMarqueeElement interface object length
+PASS HTMLMarqueeElement interface object name
+PASS HTMLMarqueeElement interface: existence and properties of interface prototype object
+PASS HTMLMarqueeElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMarqueeElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMarqueeElement interface: attribute behavior
+PASS HTMLMarqueeElement interface: attribute bgColor
+PASS HTMLMarqueeElement interface: attribute direction
+PASS HTMLMarqueeElement interface: attribute height
+PASS HTMLMarqueeElement interface: attribute hspace
+PASS HTMLMarqueeElement interface: attribute loop
+PASS HTMLMarqueeElement interface: attribute scrollAmount
+PASS HTMLMarqueeElement interface: attribute scrollDelay
+PASS HTMLMarqueeElement interface: attribute trueSpeed
+PASS HTMLMarqueeElement interface: attribute vspace
+PASS HTMLMarqueeElement interface: attribute width
+FAIL HTMLMarqueeElement interface: attribute onbounce assert_true: The prototype object must have a property "onbounce" expected true got false
+FAIL HTMLMarqueeElement interface: attribute onfinish assert_true: The prototype object must have a property "onfinish" expected true got false
+FAIL HTMLMarqueeElement interface: attribute onstart assert_true: The prototype object must have a property "onstart" expected true got false
+PASS HTMLMarqueeElement interface: operation start()
+PASS HTMLMarqueeElement interface: operation stop()
+PASS HTMLMarqueeElement must be primary interface of document.createElement("marquee")
+PASS Stringification of document.createElement("marquee")
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "behavior" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "bgColor" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "direction" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "height" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "hspace" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "loop" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "scrollAmount" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "scrollDelay" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "trueSpeed" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "vspace" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "width" with the proper type
+FAIL HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onbounce" with the proper type assert_inherits: property "onbounce" not found in prototype chain
+FAIL HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onfinish" with the proper type assert_inherits: property "onfinish" not found in prototype chain
+FAIL HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onstart" with the proper type assert_inherits: property "onstart" not found in prototype chain
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "start()" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "stop()" with the proper type
+PASS HTMLFrameSetElement interface: existence and properties of interface object
+PASS HTMLFrameSetElement interface object length
+PASS HTMLFrameSetElement interface object name
+PASS HTMLFrameSetElement interface: existence and properties of interface prototype object
+PASS HTMLFrameSetElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFrameSetElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFrameSetElement interface: attribute cols
+PASS HTMLFrameSetElement interface: attribute rows
+PASS HTMLFrameSetElement interface: attribute onafterprint
+PASS HTMLFrameSetElement interface: attribute onbeforeprint
+PASS HTMLFrameSetElement interface: attribute onbeforeunload
+PASS HTMLFrameSetElement interface: attribute onhashchange
+PASS HTMLFrameSetElement interface: attribute onlanguagechange
+PASS HTMLFrameSetElement interface: attribute onmessage
+PASS HTMLFrameSetElement interface: attribute onmessageerror
+PASS HTMLFrameSetElement interface: attribute onoffline
+PASS HTMLFrameSetElement interface: attribute ononline
+PASS HTMLFrameSetElement interface: attribute onpagehide
+PASS HTMLFrameSetElement interface: attribute onpageshow
+PASS HTMLFrameSetElement interface: attribute onpopstate
+PASS HTMLFrameSetElement interface: attribute onrejectionhandled
+PASS HTMLFrameSetElement interface: attribute onstorage
+PASS HTMLFrameSetElement interface: attribute onunhandledrejection
+PASS HTMLFrameSetElement interface: attribute onunload
+PASS HTMLFrameSetElement must be primary interface of document.createElement("frameset")
+PASS Stringification of document.createElement("frameset")
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "cols" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "rows" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onafterprint" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onbeforeprint" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onbeforeunload" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onhashchange" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onlanguagechange" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onmessage" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onmessageerror" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onoffline" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "ononline" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpagehide" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpageshow" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpopstate" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onrejectionhandled" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onstorage" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onunhandledrejection" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onunload" with the proper type
+PASS HTMLFrameElement interface: existence and properties of interface object
+PASS HTMLFrameElement interface object length
+PASS HTMLFrameElement interface object name
+PASS HTMLFrameElement interface: existence and properties of interface prototype object
+PASS HTMLFrameElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFrameElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFrameElement interface: attribute name
+PASS HTMLFrameElement interface: attribute scrolling
+PASS HTMLFrameElement interface: attribute src
+PASS HTMLFrameElement interface: attribute frameBorder
+PASS HTMLFrameElement interface: attribute longDesc
+PASS HTMLFrameElement interface: attribute noResize
+PASS HTMLFrameElement interface: attribute contentDocument
+PASS HTMLFrameElement interface: attribute contentWindow
+PASS HTMLFrameElement interface: attribute marginHeight
+PASS HTMLFrameElement interface: attribute marginWidth
+PASS HTMLFrameElement must be primary interface of document.createElement("frame")
+PASS Stringification of document.createElement("frame")
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "name" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "scrolling" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "src" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "frameBorder" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "longDesc" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "noResize" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "contentDocument" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "contentWindow" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "marginHeight" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "marginWidth" with the proper type
+PASS HTMLDirectoryElement interface: existence and properties of interface object
+PASS HTMLDirectoryElement interface object length
+PASS HTMLDirectoryElement interface object name
+PASS HTMLDirectoryElement interface: existence and properties of interface prototype object
+PASS HTMLDirectoryElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDirectoryElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDirectoryElement interface: attribute compact
+PASS HTMLDirectoryElement must be primary interface of document.createElement("dir")
+PASS Stringification of document.createElement("dir")
+PASS HTMLDirectoryElement interface: document.createElement("dir") must inherit property "compact" with the proper type
+PASS HTMLFontElement interface: existence and properties of interface object
+PASS HTMLFontElement interface object length
+PASS HTMLFontElement interface object name
+PASS HTMLFontElement interface: existence and properties of interface prototype object
+PASS HTMLFontElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFontElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFontElement interface: attribute color
+PASS HTMLFontElement interface: attribute face
+PASS HTMLFontElement interface: attribute size
+PASS HTMLFontElement must be primary interface of document.createElement("font")
+PASS Stringification of document.createElement("font")
+PASS HTMLFontElement interface: document.createElement("font") must inherit property "color" with the proper type
+PASS HTMLFontElement interface: document.createElement("font") must inherit property "face" with the proper type
+PASS HTMLFontElement interface: document.createElement("font") must inherit property "size" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/html/webappapis/scripting/events/event-handler-attributes-windowless-body-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/html/webappapis/scripting/events/event-handler-attributes-windowless-body-expected.txt
new file mode 100644
index 0000000..9ce3c84
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/external/wpt/html/webappapis/scripting/events/event-handler-attributes-windowless-body-expected.txt
@@ -0,0 +1,210 @@
+This is a testharness.js-based test.
+Found 206 tests; 202 PASS, 4 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Return null when getting the blur event handler of a windowless body
+PASS Ignore setting of blur window event handlers on windowless body
+PASS Return null when getting the error event handler of a windowless body
+PASS Ignore setting of error window event handlers on windowless body
+PASS Return null when getting the focus event handler of a windowless body
+PASS Ignore setting of focus window event handlers on windowless body
+PASS Return null when getting the load event handler of a windowless body
+PASS Ignore setting of load window event handlers on windowless body
+PASS Return null when getting the resize event handler of a windowless body
+PASS Ignore setting of resize window event handlers on windowless body
+PASS Return null when getting the scroll event handler of a windowless body
+PASS Ignore setting of scroll window event handlers on windowless body
+PASS Return null when getting the afterprint event handler of a windowless body
+PASS Ignore setting of afterprint window event handlers on windowless body
+PASS Return null when getting the beforeprint event handler of a windowless body
+PASS Ignore setting of beforeprint window event handlers on windowless body
+PASS Return null when getting the beforeunload event handler of a windowless body
+PASS Ignore setting of beforeunload window event handlers on windowless body
+PASS Return null when getting the hashchange event handler of a windowless body
+PASS Ignore setting of hashchange window event handlers on windowless body
+PASS Return null when getting the languagechange event handler of a windowless body
+PASS Ignore setting of languagechange window event handlers on windowless body
+PASS Return null when getting the message event handler of a windowless body
+PASS Ignore setting of message window event handlers on windowless body
+PASS Return null when getting the messageerror event handler of a windowless body
+PASS Ignore setting of messageerror window event handlers on windowless body
+PASS Return null when getting the offline event handler of a windowless body
+PASS Ignore setting of offline window event handlers on windowless body
+PASS Return null when getting the online event handler of a windowless body
+PASS Ignore setting of online window event handlers on windowless body
+PASS Return null when getting the pagehide event handler of a windowless body
+PASS Ignore setting of pagehide window event handlers on windowless body
+PASS Return null when getting the pageshow event handler of a windowless body
+PASS Ignore setting of pageshow window event handlers on windowless body
+PASS Return null when getting the popstate event handler of a windowless body
+PASS Ignore setting of popstate window event handlers on windowless body
+PASS Return null when getting the rejectionhandled event handler of a windowless body
+PASS Ignore setting of rejectionhandled window event handlers on windowless body
+PASS Return null when getting the storage event handler of a windowless body
+PASS Ignore setting of storage window event handlers on windowless body
+PASS Return null when getting the unhandledrejection event handler of a windowless body
+PASS Ignore setting of unhandledrejection window event handlers on windowless body
+PASS Return null when getting the unload event handler of a windowless body
+PASS Ignore setting of unload window event handlers on windowless body
+PASS abort is unaffected on a windowless body
+PASS auxclick is unaffected on a windowless body
+PASS cancel is unaffected on a windowless body
+PASS canplay is unaffected on a windowless body
+PASS canplaythrough is unaffected on a windowless body
+PASS change is unaffected on a windowless body
+PASS click is unaffected on a windowless body
+PASS close is unaffected on a windowless body
+PASS contextmenu is unaffected on a windowless body
+PASS cuechange is unaffected on a windowless body
+PASS dblclick is unaffected on a windowless body
+PASS drag is unaffected on a windowless body
+PASS dragend is unaffected on a windowless body
+PASS dragenter is unaffected on a windowless body
+FAIL dragexit is unaffected on a windowless body assert_equals: expected (object) null but got (undefined) undefined
+PASS dragleave is unaffected on a windowless body
+PASS dragover is unaffected on a windowless body
+PASS dragstart is unaffected on a windowless body
+PASS drop is unaffected on a windowless body
+PASS durationchange is unaffected on a windowless body
+PASS emptied is unaffected on a windowless body
+PASS ended is unaffected on a windowless body
+PASS formdata is unaffected on a windowless body
+PASS input is unaffected on a windowless body
+PASS invalid is unaffected on a windowless body
+PASS keydown is unaffected on a windowless body
+PASS keypress is unaffected on a windowless body
+PASS keyup is unaffected on a windowless body
+PASS loadeddata is unaffected on a windowless body
+PASS loadedmetadata is unaffected on a windowless body
+PASS loadstart is unaffected on a windowless body
+PASS mousedown is unaffected on a windowless body
+PASS mouseenter is unaffected on a windowless body
+PASS mouseleave is unaffected on a windowless body
+PASS mousemove is unaffected on a windowless body
+PASS mouseout is unaffected on a windowless body
+PASS mouseover is unaffected on a windowless body
+PASS mouseup is unaffected on a windowless body
+PASS wheel is unaffected on a windowless body
+PASS pause is unaffected on a windowless body
+PASS play is unaffected on a windowless body
+PASS playing is unaffected on a windowless body
+PASS progress is unaffected on a windowless body
+PASS ratechange is unaffected on a windowless body
+PASS reset is unaffected on a windowless body
+FAIL securitypolicyviolation is unaffected on a windowless body assert_equals: expected (object) null but got (undefined) undefined
+PASS seeked is unaffected on a windowless body
+PASS seeking is unaffected on a windowless body
+PASS select is unaffected on a windowless body
+PASS stalled is unaffected on a windowless body
+PASS submit is unaffected on a windowless body
+PASS suspend is unaffected on a windowless body
+PASS timeupdate is unaffected on a windowless body
+PASS toggle is unaffected on a windowless body
+PASS volumechange is unaffected on a windowless body
+PASS waiting is unaffected on a windowless body
+PASS copy is unaffected on a windowless body
+PASS cut is unaffected on a windowless body
+PASS paste is unaffected on a windowless body
+PASS Return null when getting the blur event handler of a windowless frameset
+PASS Ignore setting of blur window event handlers on windowless frameset
+PASS Return null when getting the error event handler of a windowless frameset
+PASS Ignore setting of error window event handlers on windowless frameset
+PASS Return null when getting the focus event handler of a windowless frameset
+PASS Ignore setting of focus window event handlers on windowless frameset
+PASS Return null when getting the load event handler of a windowless frameset
+PASS Ignore setting of load window event handlers on windowless frameset
+PASS Return null when getting the resize event handler of a windowless frameset
+PASS Ignore setting of resize window event handlers on windowless frameset
+PASS Return null when getting the scroll event handler of a windowless frameset
+PASS Ignore setting of scroll window event handlers on windowless frameset
+PASS Return null when getting the afterprint event handler of a windowless frameset
+PASS Ignore setting of afterprint window event handlers on windowless frameset
+PASS Return null when getting the beforeprint event handler of a windowless frameset
+PASS Ignore setting of beforeprint window event handlers on windowless frameset
+PASS Return null when getting the beforeunload event handler of a windowless frameset
+PASS Ignore setting of beforeunload window event handlers on windowless frameset
+PASS Return null when getting the hashchange event handler of a windowless frameset
+PASS Ignore setting of hashchange window event handlers on windowless frameset
+PASS Return null when getting the languagechange event handler of a windowless frameset
+PASS Ignore setting of languagechange window event handlers on windowless frameset
+PASS Return null when getting the message event handler of a windowless frameset
+PASS Ignore setting of message window event handlers on windowless frameset
+PASS Return null when getting the messageerror event handler of a windowless frameset
+PASS Ignore setting of messageerror window event handlers on windowless frameset
+PASS Return null when getting the offline event handler of a windowless frameset
+PASS Ignore setting of offline window event handlers on windowless frameset
+PASS Return null when getting the online event handler of a windowless frameset
+PASS Ignore setting of online window event handlers on windowless frameset
+PASS Return null when getting the pagehide event handler of a windowless frameset
+PASS Ignore setting of pagehide window event handlers on windowless frameset
+PASS Return null when getting the pageshow event handler of a windowless frameset
+PASS Ignore setting of pageshow window event handlers on windowless frameset
+PASS Return null when getting the popstate event handler of a windowless frameset
+PASS Ignore setting of popstate window event handlers on windowless frameset
+PASS Return null when getting the rejectionhandled event handler of a windowless frameset
+PASS Ignore setting of rejectionhandled window event handlers on windowless frameset
+PASS Return null when getting the storage event handler of a windowless frameset
+PASS Ignore setting of storage window event handlers on windowless frameset
+PASS Return null when getting the unhandledrejection event handler of a windowless frameset
+PASS Ignore setting of unhandledrejection window event handlers on windowless frameset
+PASS Return null when getting the unload event handler of a windowless frameset
+PASS Ignore setting of unload window event handlers on windowless frameset
+PASS abort is unaffected on a windowless frameset
+PASS auxclick is unaffected on a windowless frameset
+PASS cancel is unaffected on a windowless frameset
+PASS canplay is unaffected on a windowless frameset
+PASS canplaythrough is unaffected on a windowless frameset
+PASS change is unaffected on a windowless frameset
+PASS click is unaffected on a windowless frameset
+PASS close is unaffected on a windowless frameset
+PASS contextmenu is unaffected on a windowless frameset
+PASS cuechange is unaffected on a windowless frameset
+PASS dblclick is unaffected on a windowless frameset
+PASS drag is unaffected on a windowless frameset
+PASS dragend is unaffected on a windowless frameset
+PASS dragenter is unaffected on a windowless frameset
+FAIL dragexit is unaffected on a windowless frameset assert_equals: expected (object) null but got (undefined) undefined
+PASS dragleave is unaffected on a windowless frameset
+PASS dragover is unaffected on a windowless frameset
+PASS dragstart is unaffected on a windowless frameset
+PASS drop is unaffected on a windowless frameset
+PASS durationchange is unaffected on a windowless frameset
+PASS emptied is unaffected on a windowless frameset
+PASS ended is unaffected on a windowless frameset
+PASS formdata is unaffected on a windowless frameset
+PASS input is unaffected on a windowless frameset
+PASS invalid is unaffected on a windowless frameset
+PASS keydown is unaffected on a windowless frameset
+PASS keypress is unaffected on a windowless frameset
+PASS keyup is unaffected on a windowless frameset
+PASS loadeddata is unaffected on a windowless frameset
+PASS loadedmetadata is unaffected on a windowless frameset
+PASS loadstart is unaffected on a windowless frameset
+PASS mousedown is unaffected on a windowless frameset
+PASS mouseenter is unaffected on a windowless frameset
+PASS mouseleave is unaffected on a windowless frameset
+PASS mousemove is unaffected on a windowless frameset
+PASS mouseout is unaffected on a windowless frameset
+PASS mouseover is unaffected on a windowless frameset
+PASS mouseup is unaffected on a windowless frameset
+PASS wheel is unaffected on a windowless frameset
+PASS pause is unaffected on a windowless frameset
+PASS play is unaffected on a windowless frameset
+PASS playing is unaffected on a windowless frameset
+PASS progress is unaffected on a windowless frameset
+PASS ratechange is unaffected on a windowless frameset
+PASS reset is unaffected on a windowless frameset
+FAIL securitypolicyviolation is unaffected on a windowless frameset assert_equals: expected (object) null but got (undefined) undefined
+PASS seeked is unaffected on a windowless frameset
+PASS seeking is unaffected on a windowless frameset
+PASS select is unaffected on a windowless frameset
+PASS stalled is unaffected on a windowless frameset
+PASS submit is unaffected on a windowless frameset
+PASS suspend is unaffected on a windowless frameset
+PASS timeupdate is unaffected on a windowless frameset
+PASS toggle is unaffected on a windowless frameset
+PASS volumechange is unaffected on a windowless frameset
+PASS waiting is unaffected on a windowless frameset
+PASS copy is unaffected on a windowless frameset
+PASS cut is unaffected on a windowless frameset
+PASS paste is unaffected on a windowless frameset
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/idle-detection/idlharness.https.any-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/idle-detection/idlharness.https.any-expected.txt
new file mode 100644
index 0000000..41bb15de
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/external/wpt/idle-detection/idlharness.https.any-expected.txt
@@ -0,0 +1,32 @@
+This is a testharness.js-based test.
+PASS Test IDL implementation of Idle Detection API
+PASS IdleDetector interface: existence and properties of interface object
+PASS IdleDetector interface object length
+PASS IdleDetector interface object name
+PASS IdleDetector interface: existence and properties of interface prototype object
+PASS IdleDetector interface: existence and properties of interface prototype object's "constructor" property
+PASS IdleDetector interface: existence and properties of interface prototype object's @@unscopables property
+PASS IdleDetector interface: attribute state
+PASS IdleDetector interface: attribute onchange
+PASS IdleDetector interface: operation start()
+PASS IdleDetector interface: operation stop()
+PASS IdleDetector must be primary interface of idle
+PASS Stringification of idle
+PASS IdleDetector interface: idle must inherit property "state" with the proper type
+PASS IdleDetector interface: idle must inherit property "onchange" with the proper type
+PASS IdleDetector interface: idle must inherit property "start()" with the proper type
+PASS IdleDetector interface: idle must inherit property "stop()" with the proper type
+PASS IdleState interface: existence and properties of interface object
+PASS IdleState interface object length
+PASS IdleState interface object name
+PASS IdleState interface: existence and properties of interface prototype object
+PASS IdleState interface: existence and properties of interface prototype object's "constructor" property
+PASS IdleState interface: existence and properties of interface prototype object's @@unscopables property
+PASS IdleState interface: attribute user
+PASS IdleState interface: attribute screen
+PASS IdleState must be primary interface of idle.state
+PASS Stringification of idle.state
+PASS IdleState interface: idle.state must inherit property "user" with the proper type
+PASS IdleState interface: idle.state must inherit property "screen" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/notifications/idlharness.https.any.serviceworker-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/notifications/idlharness.https.any.serviceworker-expected.txt
new file mode 100644
index 0000000..860bff6
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/external/wpt/notifications/idlharness.https.any.serviceworker-expected.txt
@@ -0,0 +1,49 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface ServiceWorkerRegistration: original interface defined
+PASS Partial interface ServiceWorkerGlobalScope: original interface defined
+PASS Notification interface: existence and properties of interface object
+PASS Notification interface object length
+PASS Notification interface object name
+PASS Notification interface: existence and properties of interface prototype object
+PASS Notification interface: existence and properties of interface prototype object's "constructor" property
+PASS Notification interface: existence and properties of interface prototype object's @@unscopables property
+PASS Notification interface: attribute permission
+PASS Notification interface: member requestPermission
+PASS Notification interface: attribute maxActions
+PASS Notification interface: attribute onclick
+PASS Notification interface: attribute onshow
+PASS Notification interface: attribute onerror
+PASS Notification interface: attribute onclose
+PASS Notification interface: attribute title
+PASS Notification interface: attribute dir
+PASS Notification interface: attribute lang
+PASS Notification interface: attribute body
+PASS Notification interface: attribute tag
+PASS Notification interface: attribute image
+PASS Notification interface: attribute icon
+PASS Notification interface: attribute badge
+PASS Notification interface: attribute vibrate
+PASS Notification interface: attribute timestamp
+PASS Notification interface: attribute renotify
+PASS Notification interface: attribute silent
+PASS Notification interface: attribute requireInteraction
+PASS Notification interface: attribute data
+PASS Notification interface: attribute actions
+PASS Notification interface: operation close()
+PASS NotificationEvent interface: existence and properties of interface object
+PASS NotificationEvent interface object length
+PASS NotificationEvent interface object name
+PASS NotificationEvent interface: existence and properties of interface prototype object
+PASS NotificationEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS NotificationEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS NotificationEvent interface: attribute notification
+PASS NotificationEvent interface: attribute action
+PASS ServiceWorkerRegistration interface: operation showNotification(DOMString, NotificationOptions)
+PASS ServiceWorkerRegistration interface: operation getNotifications(GetNotificationOptions)
+PASS ServiceWorkerGlobalScope interface: attribute onnotificationclick
+PASS ServiceWorkerGlobalScope interface: attribute onnotificationclose
+PASS ServiceWorkerGlobalScope interface: self must inherit property "onnotificationclick" with the proper type
+PASS ServiceWorkerGlobalScope interface: self must inherit property "onnotificationclose" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/push-api/idlharness.https.any.worker-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/push-api/idlharness.https.any.worker-expected.txt
new file mode 100644
index 0000000..b62d5df3
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/external/wpt/push-api/idlharness.https.any.worker-expected.txt
@@ -0,0 +1,43 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface ServiceWorkerRegistration: original interface defined
+PASS Partial interface ServiceWorkerGlobalScope: original interface defined
+PASS Partial interface ServiceWorkerGlobalScope: valid exposure set
+PASS PushManager interface: existence and properties of interface object
+PASS PushManager interface object length
+PASS PushManager interface object name
+PASS PushManager interface: existence and properties of interface prototype object
+PASS PushManager interface: existence and properties of interface prototype object's "constructor" property
+PASS PushManager interface: existence and properties of interface prototype object's @@unscopables property
+PASS PushManager interface: attribute supportedContentEncodings
+PASS PushManager interface: operation subscribe(PushSubscriptionOptionsInit)
+PASS PushManager interface: operation getSubscription()
+PASS PushManager interface: operation permissionState(PushSubscriptionOptionsInit)
+PASS PushSubscriptionOptions interface: existence and properties of interface object
+PASS PushSubscriptionOptions interface object length
+PASS PushSubscriptionOptions interface object name
+PASS PushSubscriptionOptions interface: existence and properties of interface prototype object
+PASS PushSubscriptionOptions interface: existence and properties of interface prototype object's "constructor" property
+PASS PushSubscriptionOptions interface: existence and properties of interface prototype object's @@unscopables property
+PASS PushSubscriptionOptions interface: attribute userVisibleOnly
+PASS PushSubscriptionOptions interface: attribute applicationServerKey
+PASS PushSubscription interface: existence and properties of interface object
+PASS PushSubscription interface object length
+PASS PushSubscription interface object name
+PASS PushSubscription interface: existence and properties of interface prototype object
+PASS PushSubscription interface: existence and properties of interface prototype object's "constructor" property
+PASS PushSubscription interface: existence and properties of interface prototype object's @@unscopables property
+PASS PushSubscription interface: attribute endpoint
+PASS PushSubscription interface: attribute expirationTime
+PASS PushSubscription interface: attribute options
+PASS PushSubscription interface: operation getKey(PushEncryptionKeyName)
+PASS PushSubscription interface: operation unsubscribe()
+PASS PushSubscription interface: operation toJSON()
+PASS PushMessageData interface: existence and properties of interface object
+PASS PushEvent interface: existence and properties of interface object
+PASS PushSubscriptionChangeEvent interface: existence and properties of interface object
+PASS ServiceWorkerRegistration interface: attribute pushManager
+PASS ServiceWorkerGlobalScope interface: existence and properties of interface object
+PASS ExtendableEvent interface: existence and properties of interface object
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/virtual/forced-colors/fast/css/forced-colors-mode/backplate/forced-colors-mode-backplate-11-expected.png b/third_party/blink/web_tests/virtual/forced-colors/fast/css/forced-colors-mode/backplate/forced-colors-mode-backplate-11-expected.png
new file mode 100644
index 0000000..07e17e6
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/forced-colors/fast/css/forced-colors-mode/backplate/forced-colors-mode-backplate-11-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/forced-colors/fast/css/forced-colors-mode/backplate/forced-colors-mode-backplate-11.html b/third_party/blink/web_tests/virtual/forced-colors/fast/css/forced-colors-mode/backplate/forced-colors-mode-backplate-11.html
new file mode 100644
index 0000000..450c941
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/forced-colors/fast/css/forced-colors-mode/backplate/forced-colors-mode-backplate-11.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<title>
+  Forced colors mode - backplate.
+  Tests backplate is drawn behind SVG text.
+</title>
+<style>
+  body {
+    background-image: url("../resources/test-image.jpg");
+    font-size: 10px;
+  }
+</style>
+<body>
+  <div>
+    <svg>
+      <text x="50" y="50" width="226" height="11" font-family="Ahem">
+        This text should have a backplate in <tspan>forced colors mode.</tspan>
+      </text>
+    </svg>
+  </div>
+</body>
diff --git a/third_party/blink/web_tests/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/idlharness.https.window-expected.txt b/third_party/blink/web_tests/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/idlharness.https.window-expected.txt
new file mode 100644
index 0000000..38d3332b
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/idlharness.https.window-expected.txt
@@ -0,0 +1,520 @@
+This is a testharness.js-based test.
+Found 508 tests; 400 PASS, 108 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Test driver for asyncInitCertificate
+FAIL Test driver for asyncInitTransports assert_unreached: Failed to run asyncInitTransports: Error: assert_true: Expect pc.sctp to be instance of RTCSctpTransport expected true got false Reached unreachable code
+PASS Test driver for asyncInitMediaStreamTrack
+PASS Partial interface RTCPeerConnection: original interface defined
+PASS Partial dictionary RTCOfferOptions: original dictionary defined
+PASS Partial interface RTCPeerConnection[2]: original interface defined
+PASS Partial interface RTCPeerConnection[3]: original interface defined
+PASS Partial interface RTCPeerConnection[4]: original interface defined
+PASS Partial interface RTCRtpSender: original interface defined
+PASS Partial interface RTCPeerConnection[5]: original interface defined
+PASS RTCPeerConnection interface: existence and properties of interface object
+PASS RTCPeerConnection interface object length
+PASS RTCPeerConnection interface object name
+PASS RTCPeerConnection interface: existence and properties of interface prototype object
+PASS RTCPeerConnection interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCPeerConnection interface: existence and properties of interface prototype object's @@unscopables property
+PASS RTCPeerConnection interface: operation createOffer(RTCOfferOptions)
+PASS RTCPeerConnection interface: operation createAnswer(RTCAnswerOptions)
+FAIL RTCPeerConnection interface: operation setLocalDescription(RTCSessionDescriptionInit) assert_equals: property has wrong .length expected 0 but got 1
+PASS RTCPeerConnection interface: attribute localDescription
+PASS RTCPeerConnection interface: attribute currentLocalDescription
+PASS RTCPeerConnection interface: attribute pendingLocalDescription
+FAIL RTCPeerConnection interface: operation setRemoteDescription(RTCSessionDescriptionInit) assert_equals: property has wrong .length expected 0 but got 1
+PASS RTCPeerConnection interface: attribute remoteDescription
+PASS RTCPeerConnection interface: attribute currentRemoteDescription
+PASS RTCPeerConnection interface: attribute pendingRemoteDescription
+FAIL RTCPeerConnection interface: operation addIceCandidate(RTCIceCandidateInit) assert_equals: property has wrong .length expected 0 but got 1
+PASS RTCPeerConnection interface: attribute signalingState
+PASS RTCPeerConnection interface: attribute iceGatheringState
+PASS RTCPeerConnection interface: attribute iceConnectionState
+PASS RTCPeerConnection interface: attribute connectionState
+FAIL RTCPeerConnection interface: attribute canTrickleIceCandidates assert_true: The prototype object must have a property "canTrickleIceCandidates" expected true got false
+PASS RTCPeerConnection interface: operation restartIce()
+FAIL RTCPeerConnection interface: operation getDefaultIceServers() assert_own_property: interface object missing static operation expected property "getDefaultIceServers" missing
+PASS RTCPeerConnection interface: operation getConfiguration()
+PASS RTCPeerConnection interface: operation setConfiguration(RTCConfiguration)
+PASS RTCPeerConnection interface: operation close()
+PASS RTCPeerConnection interface: attribute onnegotiationneeded
+PASS RTCPeerConnection interface: attribute onicecandidate
+PASS RTCPeerConnection interface: attribute onicecandidateerror
+PASS RTCPeerConnection interface: attribute onsignalingstatechange
+PASS RTCPeerConnection interface: attribute oniceconnectionstatechange
+PASS RTCPeerConnection interface: attribute onicegatheringstatechange
+PASS RTCPeerConnection interface: attribute onconnectionstatechange
+PASS RTCPeerConnection interface: operation createOffer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback, RTCOfferOptions)
+FAIL RTCPeerConnection interface: operation setLocalDescription(RTCSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) assert_equals: property has wrong .length expected 0 but got 1
+PASS RTCPeerConnection interface: operation createAnswer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback)
+FAIL RTCPeerConnection interface: operation setRemoteDescription(RTCSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) assert_equals: property has wrong .length expected 0 but got 1
+FAIL RTCPeerConnection interface: operation addIceCandidate(RTCIceCandidateInit, VoidFunction, RTCPeerConnectionErrorCallback) assert_equals: property has wrong .length expected 0 but got 1
+PASS RTCPeerConnection interface: operation generateCertificate(AlgorithmIdentifier)
+PASS RTCPeerConnection interface: operation getSenders()
+PASS RTCPeerConnection interface: operation getReceivers()
+PASS RTCPeerConnection interface: operation getTransceivers()
+PASS RTCPeerConnection interface: operation addTrack(MediaStreamTrack, MediaStream)
+PASS RTCPeerConnection interface: operation removeTrack(RTCRtpSender)
+PASS RTCPeerConnection interface: operation addTransceiver([object Object],[object Object], RTCRtpTransceiverInit)
+PASS RTCPeerConnection interface: attribute ontrack
+PASS RTCPeerConnection interface: attribute sctp
+PASS RTCPeerConnection interface: operation createDataChannel(USVString, RTCDataChannelInit)
+PASS RTCPeerConnection interface: attribute ondatachannel
+PASS RTCPeerConnection interface: operation getStats(MediaStreamTrack)
+FAIL RTCPeerConnection interface: attribute onstatsended assert_true: The prototype object must have a property "onstatsended" expected true got false
+PASS RTCPeerConnection must be primary interface of new RTCPeerConnection()
+PASS Stringification of new RTCPeerConnection()
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createOffer(RTCOfferOptions)" with the proper type
+PASS RTCPeerConnection interface: calling createOffer(RTCOfferOptions) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createAnswer(RTCAnswerOptions)" with the proper type
+PASS RTCPeerConnection interface: calling createAnswer(RTCAnswerOptions) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setLocalDescription(RTCSessionDescriptionInit)" with the proper type
+PASS RTCPeerConnection interface: calling setLocalDescription(RTCSessionDescriptionInit) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "localDescription" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "currentLocalDescription" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "pendingLocalDescription" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setRemoteDescription(RTCSessionDescriptionInit)" with the proper type
+PASS RTCPeerConnection interface: calling setRemoteDescription(RTCSessionDescriptionInit) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "remoteDescription" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "currentRemoteDescription" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "pendingRemoteDescription" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "addIceCandidate(RTCIceCandidateInit)" with the proper type
+PASS RTCPeerConnection interface: calling addIceCandidate(RTCIceCandidateInit) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "signalingState" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "iceGatheringState" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "iceConnectionState" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "connectionState" with the proper type
+FAIL RTCPeerConnection interface: new RTCPeerConnection() must inherit property "canTrickleIceCandidates" with the proper type assert_inherits: property "canTrickleIceCandidates" not found in prototype chain
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "restartIce()" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getDefaultIceServers()" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getConfiguration()" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setConfiguration(RTCConfiguration)" with the proper type
+PASS RTCPeerConnection interface: calling setConfiguration(RTCConfiguration) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "close()" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onnegotiationneeded" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicecandidate" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicecandidateerror" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onsignalingstatechange" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "oniceconnectionstatechange" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicegatheringstatechange" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onconnectionstatechange" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createOffer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback, RTCOfferOptions)" with the proper type
+PASS RTCPeerConnection interface: calling createOffer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback, RTCOfferOptions) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setLocalDescription(RTCSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback)" with the proper type
+PASS RTCPeerConnection interface: calling setLocalDescription(RTCSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createAnswer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback)" with the proper type
+PASS RTCPeerConnection interface: calling createAnswer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setRemoteDescription(RTCSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback)" with the proper type
+PASS RTCPeerConnection interface: calling setRemoteDescription(RTCSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "addIceCandidate(RTCIceCandidateInit, VoidFunction, RTCPeerConnectionErrorCallback)" with the proper type
+PASS RTCPeerConnection interface: calling addIceCandidate(RTCIceCandidateInit, VoidFunction, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "generateCertificate(AlgorithmIdentifier)" with the proper type
+PASS RTCPeerConnection interface: calling generateCertificate(AlgorithmIdentifier) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getSenders()" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getReceivers()" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getTransceivers()" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "addTrack(MediaStreamTrack, MediaStream)" with the proper type
+PASS RTCPeerConnection interface: calling addTrack(MediaStreamTrack, MediaStream) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "removeTrack(RTCRtpSender)" with the proper type
+PASS RTCPeerConnection interface: calling removeTrack(RTCRtpSender) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "addTransceiver([object Object],[object Object], RTCRtpTransceiverInit)" with the proper type
+PASS RTCPeerConnection interface: calling addTransceiver([object Object],[object Object], RTCRtpTransceiverInit) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "ontrack" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "sctp" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createDataChannel(USVString, RTCDataChannelInit)" with the proper type
+PASS RTCPeerConnection interface: calling createDataChannel(USVString, RTCDataChannelInit) on new RTCPeerConnection() with too few arguments must throw TypeError
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "ondatachannel" with the proper type
+PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getStats(MediaStreamTrack)" with the proper type
+PASS RTCPeerConnection interface: calling getStats(MediaStreamTrack) on new RTCPeerConnection() with too few arguments must throw TypeError
+FAIL RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onstatsended" with the proper type assert_inherits: property "onstatsended" not found in prototype chain
+PASS RTCSessionDescription interface: existence and properties of interface object
+PASS RTCSessionDescription interface object length
+PASS RTCSessionDescription interface object name
+PASS RTCSessionDescription interface: existence and properties of interface prototype object
+PASS RTCSessionDescription interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCSessionDescription interface: existence and properties of interface prototype object's @@unscopables property
+FAIL RTCSessionDescription interface: attribute type assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function set type() { [native code] }"
+FAIL RTCSessionDescription interface: attribute sdp assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function set sdp() { [native code] }"
+PASS RTCSessionDescription interface: operation toJSON()
+PASS RTCSessionDescription must be primary interface of new RTCSessionDescription({ type: 'offer' })
+PASS Stringification of new RTCSessionDescription({ type: 'offer' })
+PASS RTCSessionDescription interface: new RTCSessionDescription({ type: 'offer' }) must inherit property "type" with the proper type
+FAIL RTCSessionDescription interface: new RTCSessionDescription({ type: 'offer' }) must inherit property "sdp" with the proper type assert_equals: expected "string" but got "object"
+PASS RTCSessionDescription interface: new RTCSessionDescription({ type: 'offer' }) must inherit property "toJSON()" with the proper type
+FAIL RTCSessionDescription interface: default toJSON operation on new RTCSessionDescription({ type: 'offer' }) assert_equals: expected "string" but got "object"
+PASS RTCIceCandidate interface: existence and properties of interface object
+PASS RTCIceCandidate interface object length
+PASS RTCIceCandidate interface object name
+PASS RTCIceCandidate interface: existence and properties of interface prototype object
+PASS RTCIceCandidate interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCIceCandidate interface: existence and properties of interface prototype object's @@unscopables property
+PASS RTCIceCandidate interface: attribute candidate
+PASS RTCIceCandidate interface: attribute sdpMid
+PASS RTCIceCandidate interface: attribute sdpMLineIndex
+PASS RTCIceCandidate interface: attribute foundation
+PASS RTCIceCandidate interface: attribute component
+PASS RTCIceCandidate interface: attribute priority
+PASS RTCIceCandidate interface: attribute address
+PASS RTCIceCandidate interface: attribute protocol
+PASS RTCIceCandidate interface: attribute port
+PASS RTCIceCandidate interface: attribute type
+PASS RTCIceCandidate interface: attribute tcpType
+PASS RTCIceCandidate interface: attribute relatedAddress
+PASS RTCIceCandidate interface: attribute relatedPort
+PASS RTCIceCandidate interface: attribute usernameFragment
+PASS RTCIceCandidate interface: operation toJSON()
+PASS RTCIceCandidate must be primary interface of new RTCIceCandidate({ sdpMid: 1 })
+PASS Stringification of new RTCIceCandidate({ sdpMid: 1 })
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "candidate" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "sdpMid" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "sdpMLineIndex" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "foundation" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "component" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "priority" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "address" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "protocol" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "port" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "type" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "tcpType" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "relatedAddress" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "relatedPort" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "usernameFragment" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "toJSON()" with the proper type
+PASS RTCIceCandidate interface: toJSON operation on new RTCIceCandidate({ sdpMid: 1 })
+PASS RTCPeerConnectionIceEvent interface: existence and properties of interface object
+PASS RTCPeerConnectionIceEvent interface object length
+PASS RTCPeerConnectionIceEvent interface object name
+PASS RTCPeerConnectionIceEvent interface: existence and properties of interface prototype object
+PASS RTCPeerConnectionIceEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCPeerConnectionIceEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS RTCPeerConnectionIceEvent interface: attribute candidate
+FAIL RTCPeerConnectionIceEvent interface: attribute url assert_true: The prototype object must have a property "url" expected true got false
+PASS RTCPeerConnectionIceEvent must be primary interface of new RTCPeerConnectionIceEvent('ice')
+PASS Stringification of new RTCPeerConnectionIceEvent('ice')
+PASS RTCPeerConnectionIceEvent interface: new RTCPeerConnectionIceEvent('ice') must inherit property "candidate" with the proper type
+FAIL RTCPeerConnectionIceEvent interface: new RTCPeerConnectionIceEvent('ice') must inherit property "url" with the proper type assert_inherits: property "url" not found in prototype chain
+PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface object
+PASS RTCPeerConnectionIceErrorEvent interface object length
+PASS RTCPeerConnectionIceErrorEvent interface object name
+PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object
+PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS RTCPeerConnectionIceErrorEvent interface: attribute hostCandidate
+PASS RTCPeerConnectionIceErrorEvent interface: attribute url
+PASS RTCPeerConnectionIceErrorEvent interface: attribute errorCode
+PASS RTCPeerConnectionIceErrorEvent interface: attribute errorText
+PASS RTCPeerConnectionIceErrorEvent must be primary interface of new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 });
+PASS Stringification of new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 });
+PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "hostCandidate" with the proper type
+PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "url" with the proper type
+PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "errorCode" with the proper type
+PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "errorText" with the proper type
+PASS RTCCertificate interface: existence and properties of interface object
+PASS RTCCertificate interface object length
+PASS RTCCertificate interface object name
+PASS RTCCertificate interface: existence and properties of interface prototype object
+PASS RTCCertificate interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCCertificate interface: existence and properties of interface prototype object's @@unscopables property
+PASS RTCCertificate interface: attribute expires
+FAIL RTCCertificate interface: operation getSupportedAlgorithms() assert_own_property: interface object missing static operation expected property "getSupportedAlgorithms" missing
+PASS RTCCertificate interface: operation getFingerprints()
+PASS RTCCertificate must be primary interface of idlTestObjects.certificate
+PASS Stringification of idlTestObjects.certificate
+PASS RTCCertificate interface: idlTestObjects.certificate must inherit property "expires" with the proper type
+PASS RTCCertificate interface: idlTestObjects.certificate must inherit property "getSupportedAlgorithms()" with the proper type
+PASS RTCCertificate interface: idlTestObjects.certificate must inherit property "getFingerprints()" with the proper type
+PASS RTCRtpSender interface: existence and properties of interface object
+PASS RTCRtpSender interface object length
+PASS RTCRtpSender interface object name
+PASS RTCRtpSender interface: existence and properties of interface prototype object
+PASS RTCRtpSender interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCRtpSender interface: existence and properties of interface prototype object's @@unscopables property
+PASS RTCRtpSender interface: attribute track
+PASS RTCRtpSender interface: attribute transport
+PASS RTCRtpSender interface: attribute rtcpTransport
+PASS RTCRtpSender interface: operation getCapabilities(DOMString)
+FAIL RTCRtpSender interface: operation setParameters(RTCRtpSendParameters) assert_equals: property has wrong .length expected 1 but got 0
+PASS RTCRtpSender interface: operation getParameters()
+PASS RTCRtpSender interface: operation replaceTrack(MediaStreamTrack)
+PASS RTCRtpSender interface: operation setStreams(MediaStream)
+PASS RTCRtpSender interface: operation getStats()
+PASS RTCRtpSender interface: attribute dtmf
+FAIL RTCRtpSender must be primary interface of new RTCPeerConnection().addTransceiver('audio').sender assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL Stringification of new RTCPeerConnection().addTransceiver('audio').sender assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "track" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "transport" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "rtcpTransport" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "getCapabilities(DOMString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpSender interface: calling getCapabilities(DOMString) on new RTCPeerConnection().addTransceiver('audio').sender with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "setParameters(RTCRtpSendParameters)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpSender interface: calling setParameters(RTCRtpSendParameters) on new RTCPeerConnection().addTransceiver('audio').sender with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "getParameters()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "replaceTrack(MediaStreamTrack)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpSender interface: calling replaceTrack(MediaStreamTrack) on new RTCPeerConnection().addTransceiver('audio').sender with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "setStreams(MediaStream)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpSender interface: calling setStreams(MediaStream) on new RTCPeerConnection().addTransceiver('audio').sender with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "getStats()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "dtmf" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+PASS RTCRtpReceiver interface: existence and properties of interface object
+PASS RTCRtpReceiver interface object length
+PASS RTCRtpReceiver interface object name
+PASS RTCRtpReceiver interface: existence and properties of interface prototype object
+PASS RTCRtpReceiver interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCRtpReceiver interface: existence and properties of interface prototype object's @@unscopables property
+PASS RTCRtpReceiver interface: attribute track
+PASS RTCRtpReceiver interface: attribute transport
+PASS RTCRtpReceiver interface: attribute rtcpTransport
+PASS RTCRtpReceiver interface: operation getCapabilities(DOMString)
+PASS RTCRtpReceiver interface: operation getParameters()
+PASS RTCRtpReceiver interface: operation getContributingSources()
+PASS RTCRtpReceiver interface: operation getSynchronizationSources()
+PASS RTCRtpReceiver interface: operation getStats()
+FAIL RTCRtpReceiver must be primary interface of new RTCPeerConnection().addTransceiver('audio').receiver assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL Stringification of new RTCPeerConnection().addTransceiver('audio').receiver assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "track" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "transport" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "rtcpTransport" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "getCapabilities(DOMString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpReceiver interface: calling getCapabilities(DOMString) on new RTCPeerConnection().addTransceiver('audio').receiver with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "getParameters()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "getContributingSources()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "getSynchronizationSources()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "getStats()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+PASS RTCRtpTransceiver interface: existence and properties of interface object
+PASS RTCRtpTransceiver interface object length
+PASS RTCRtpTransceiver interface object name
+PASS RTCRtpTransceiver interface: existence and properties of interface prototype object
+PASS RTCRtpTransceiver interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCRtpTransceiver interface: existence and properties of interface prototype object's @@unscopables property
+PASS RTCRtpTransceiver interface: attribute mid
+PASS RTCRtpTransceiver interface: attribute sender
+PASS RTCRtpTransceiver interface: attribute receiver
+PASS RTCRtpTransceiver interface: attribute direction
+PASS RTCRtpTransceiver interface: attribute currentDirection
+FAIL RTCRtpTransceiver interface: operation stop() assert_own_property: interface prototype object missing non-static operation expected property "stop" missing
+PASS RTCRtpTransceiver interface: operation setCodecPreferences([object Object])
+FAIL RTCRtpTransceiver must be primary interface of new RTCPeerConnection().addTransceiver('audio') assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL Stringification of new RTCPeerConnection().addTransceiver('audio') assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "mid" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "sender" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "receiver" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "direction" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "currentDirection" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "stop()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "setCodecPreferences([object Object])" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCRtpTransceiver interface: calling setCodecPreferences([object Object]) on new RTCPeerConnection().addTransceiver('audio') with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+PASS RTCDtlsTransport interface: existence and properties of interface object
+PASS RTCDtlsTransport interface object length
+PASS RTCDtlsTransport interface object name
+PASS RTCDtlsTransport interface: existence and properties of interface prototype object
+PASS RTCDtlsTransport interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCDtlsTransport interface: existence and properties of interface prototype object's @@unscopables property
+PASS RTCDtlsTransport interface: attribute iceTransport
+PASS RTCDtlsTransport interface: attribute state
+PASS RTCDtlsTransport interface: operation getRemoteCertificates()
+PASS RTCDtlsTransport interface: attribute onstatechange
+PASS RTCDtlsTransport interface: attribute onerror
+FAIL RTCDtlsTransport must be primary interface of idlTestObjects.dtlsTransport assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL Stringification of idlTestObjects.dtlsTransport assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "iceTransport" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "state" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "getRemoteCertificates()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "onstatechange" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "onerror" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCIceTransport interface: existence and properties of interface object assert_throws: interface object didn't throw TypeError when called as a constructor function "function() {
+                new interface_object();
+            }" did not throw
+PASS RTCIceTransport interface object length
+PASS RTCIceTransport interface object name
+PASS RTCIceTransport interface: existence and properties of interface prototype object
+PASS RTCIceTransport interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCIceTransport interface: existence and properties of interface prototype object's @@unscopables property
+PASS RTCIceTransport interface: attribute role
+FAIL RTCIceTransport interface: attribute component assert_true: The prototype object must have a property "component" expected true got false
+PASS RTCIceTransport interface: attribute state
+PASS RTCIceTransport interface: attribute gatheringState
+PASS RTCIceTransport interface: operation getLocalCandidates()
+PASS RTCIceTransport interface: operation getRemoteCandidates()
+PASS RTCIceTransport interface: operation getSelectedCandidatePair()
+PASS RTCIceTransport interface: operation getLocalParameters()
+PASS RTCIceTransport interface: operation getRemoteParameters()
+PASS RTCIceTransport interface: attribute onstatechange
+PASS RTCIceTransport interface: attribute ongatheringstatechange
+PASS RTCIceTransport interface: attribute onselectedcandidatepairchange
+FAIL RTCIceTransport must be primary interface of idlTestObjects.iceTransport assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL Stringification of idlTestObjects.iceTransport assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "role" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "component" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "state" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "gatheringState" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getLocalCandidates()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getRemoteCandidates()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getSelectedCandidatePair()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getLocalParameters()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getRemoteParameters()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "onstatechange" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "ongatheringstatechange" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "onselectedcandidatepairchange" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+PASS RTCTrackEvent interface: existence and properties of interface object
+PASS RTCTrackEvent interface object length
+PASS RTCTrackEvent interface object name
+PASS RTCTrackEvent interface: existence and properties of interface prototype object
+PASS RTCTrackEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCTrackEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS RTCTrackEvent interface: attribute receiver
+PASS RTCTrackEvent interface: attribute track
+PASS RTCTrackEvent interface: attribute streams
+PASS RTCTrackEvent interface: attribute transceiver
+FAIL RTCTrackEvent must be primary interface of initTrackEvent() assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL Stringification of initTrackEvent() assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCTrackEvent interface: initTrackEvent() must inherit property "receiver" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCTrackEvent interface: initTrackEvent() must inherit property "track" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCTrackEvent interface: initTrackEvent() must inherit property "streams" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+FAIL RTCTrackEvent interface: initTrackEvent() must inherit property "transceiver" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'."
+PASS RTCSctpTransport interface: existence and properties of interface object
+PASS RTCSctpTransport interface object length
+PASS RTCSctpTransport interface object name
+PASS RTCSctpTransport interface: existence and properties of interface prototype object
+PASS RTCSctpTransport interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCSctpTransport interface: existence and properties of interface prototype object's @@unscopables property
+PASS RTCSctpTransport interface: attribute transport
+PASS RTCSctpTransport interface: attribute state
+PASS RTCSctpTransport interface: attribute maxMessageSize
+PASS RTCSctpTransport interface: attribute maxChannels
+PASS RTCSctpTransport interface: attribute onstatechange
+FAIL RTCSctpTransport must be primary interface of idlTestObjects.sctpTransport assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL Stringification of idlTestObjects.sctpTransport assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "transport" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "state" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "maxMessageSize" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "maxChannels" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+FAIL RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "onstatechange" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined"
+PASS RTCDataChannel interface: existence and properties of interface object
+PASS RTCDataChannel interface object length
+PASS RTCDataChannel interface object name
+PASS RTCDataChannel interface: existence and properties of interface prototype object
+PASS RTCDataChannel interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCDataChannel interface: existence and properties of interface prototype object's @@unscopables property
+PASS RTCDataChannel interface: attribute label
+PASS RTCDataChannel interface: attribute ordered
+PASS RTCDataChannel interface: attribute maxPacketLifeTime
+PASS RTCDataChannel interface: attribute maxRetransmits
+PASS RTCDataChannel interface: attribute protocol
+PASS RTCDataChannel interface: attribute negotiated
+PASS RTCDataChannel interface: attribute id
+FAIL RTCDataChannel interface: attribute priority assert_true: The prototype object must have a property "priority" expected true got false
+PASS RTCDataChannel interface: attribute readyState
+PASS RTCDataChannel interface: attribute bufferedAmount
+PASS RTCDataChannel interface: attribute bufferedAmountLowThreshold
+PASS RTCDataChannel interface: attribute onopen
+PASS RTCDataChannel interface: attribute onbufferedamountlow
+PASS RTCDataChannel interface: attribute onerror
+FAIL RTCDataChannel interface: attribute onclosing assert_true: The prototype object must have a property "onclosing" expected true got false
+PASS RTCDataChannel interface: attribute onclose
+PASS RTCDataChannel interface: operation close()
+PASS RTCDataChannel interface: attribute onmessage
+PASS RTCDataChannel interface: attribute binaryType
+PASS RTCDataChannel interface: operation send(USVString)
+PASS RTCDataChannel interface: operation send(Blob)
+PASS RTCDataChannel interface: operation send(ArrayBuffer)
+PASS RTCDataChannel interface: operation send(ArrayBufferView)
+PASS RTCDataChannel must be primary interface of new RTCPeerConnection().createDataChannel('')
+PASS Stringification of new RTCPeerConnection().createDataChannel('')
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "label" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "ordered" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "maxPacketLifeTime" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "maxRetransmits" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "protocol" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "negotiated" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "id" with the proper type
+FAIL RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "priority" with the proper type assert_inherits: property "priority" not found in prototype chain
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "readyState" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "bufferedAmount" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "bufferedAmountLowThreshold" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onopen" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onbufferedamountlow" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onerror" with the proper type
+FAIL RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onclosing" with the proper type assert_inherits: property "onclosing" not found in prototype chain
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onclose" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "close()" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onmessage" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "binaryType" with the proper type
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "send(USVString)" with the proper type
+PASS RTCDataChannel interface: calling send(USVString) on new RTCPeerConnection().createDataChannel('') with too few arguments must throw TypeError
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "send(Blob)" with the proper type
+PASS RTCDataChannel interface: calling send(Blob) on new RTCPeerConnection().createDataChannel('') with too few arguments must throw TypeError
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "send(ArrayBuffer)" with the proper type
+PASS RTCDataChannel interface: calling send(ArrayBuffer) on new RTCPeerConnection().createDataChannel('') with too few arguments must throw TypeError
+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "send(ArrayBufferView)" with the proper type
+PASS RTCDataChannel interface: calling send(ArrayBufferView) on new RTCPeerConnection().createDataChannel('') with too few arguments must throw TypeError
+PASS RTCDataChannelEvent interface: existence and properties of interface object
+PASS RTCDataChannelEvent interface object length
+PASS RTCDataChannelEvent interface object name
+PASS RTCDataChannelEvent interface: existence and properties of interface prototype object
+PASS RTCDataChannelEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCDataChannelEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS RTCDataChannelEvent interface: attribute channel
+PASS RTCDataChannelEvent must be primary interface of new RTCDataChannelEvent('channel', {
+          channel: new RTCPeerConnection().createDataChannel('')
+        })
+PASS Stringification of new RTCDataChannelEvent('channel', {
+          channel: new RTCPeerConnection().createDataChannel('')
+        })
+PASS RTCDataChannelEvent interface: new RTCDataChannelEvent('channel', {
+          channel: new RTCPeerConnection().createDataChannel('')
+        }) must inherit property "channel" with the proper type
+PASS RTCDTMFSender interface: existence and properties of interface object
+PASS RTCDTMFSender interface object length
+PASS RTCDTMFSender interface object name
+PASS RTCDTMFSender interface: existence and properties of interface prototype object
+PASS RTCDTMFSender interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCDTMFSender interface: existence and properties of interface prototype object's @@unscopables property
+PASS RTCDTMFSender interface: operation insertDTMF(DOMString, unsigned long, unsigned long)
+PASS RTCDTMFSender interface: attribute ontonechange
+PASS RTCDTMFSender interface: attribute canInsertDTMF
+PASS RTCDTMFSender interface: attribute toneBuffer
+PASS RTCDTMFToneChangeEvent interface: existence and properties of interface object
+PASS RTCDTMFToneChangeEvent interface object length
+PASS RTCDTMFToneChangeEvent interface object name
+PASS RTCDTMFToneChangeEvent interface: existence and properties of interface prototype object
+PASS RTCDTMFToneChangeEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCDTMFToneChangeEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS RTCDTMFToneChangeEvent interface: attribute tone
+PASS RTCStatsReport interface: existence and properties of interface object
+PASS RTCStatsReport interface object length
+PASS RTCStatsReport interface object name
+PASS RTCStatsReport interface: existence and properties of interface prototype object
+PASS RTCStatsReport interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCStatsReport interface: existence and properties of interface prototype object's @@unscopables property
+FAIL RTCStatsEvent interface: existence and properties of interface object assert_own_property: self does not have own property "RTCStatsEvent" expected property "RTCStatsEvent" missing
+FAIL RTCStatsEvent interface object length assert_own_property: self does not have own property "RTCStatsEvent" expected property "RTCStatsEvent" missing
+FAIL RTCStatsEvent interface object name assert_own_property: self does not have own property "RTCStatsEvent" expected property "RTCStatsEvent" missing
+FAIL RTCStatsEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "RTCStatsEvent" expected property "RTCStatsEvent" missing
+FAIL RTCStatsEvent interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "RTCStatsEvent" expected property "RTCStatsEvent" missing
+FAIL RTCStatsEvent interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "RTCStatsEvent" expected property "RTCStatsEvent" missing
+FAIL RTCStatsEvent interface: attribute report assert_own_property: self does not have own property "RTCStatsEvent" expected property "RTCStatsEvent" missing
+PASS RTCError interface: existence and properties of interface object
+PASS RTCError interface object length
+PASS RTCError interface object name
+PASS RTCError interface: existence and properties of interface prototype object
+PASS RTCError interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCError interface: existence and properties of interface prototype object's @@unscopables property
+PASS RTCError interface: attribute errorDetail
+PASS RTCError interface: attribute sdpLineNumber
+PASS RTCError interface: attribute httpRequestStatusCode
+PASS RTCError interface: attribute sctpCauseCode
+PASS RTCError interface: attribute receivedAlert
+PASS RTCError interface: attribute sentAlert
+PASS RTCErrorEvent interface: existence and properties of interface object
+PASS RTCErrorEvent interface object length
+PASS RTCErrorEvent interface object name
+PASS RTCErrorEvent interface: existence and properties of interface prototype object
+PASS RTCErrorEvent interface: existence and properties of interface prototype object's "constructor" property
+PASS RTCErrorEvent interface: existence and properties of interface prototype object's @@unscopables property
+PASS RTCErrorEvent interface: attribute error
+FAIL RTCErrorEvent must be primary interface of new RTCErrorEvent('error') assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCErrorEvent': 2 arguments required, but only 1 present."
+FAIL Stringification of new RTCErrorEvent('error') assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCErrorEvent': 2 arguments required, but only 1 present."
+FAIL RTCErrorEvent interface: new RTCErrorEvent('error') must inherit property "error" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCErrorEvent': 2 arguments required, but only 1 present."
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/vr/getEyeParameters_match.html b/third_party/blink/web_tests/vr/getEyeParameters_match.html
index 1523a90..b120c6ed 100644
--- a/third_party/blink/web_tests/vr/getEyeParameters_match.html
+++ b/third_party/blink/web_tests/vr/getEyeParameters_match.html
@@ -21,12 +21,11 @@
 
     function compareEyes(actual, expected) {
       t.step( () => {
-        assert_equals(actual.offset.length, 3);
-        assert_approx_equals(actual.offset[0], expected.offset.x,
+        assert_approx_equals(actual.offset[0], expected.headFromEye.matrix[12],
             FLOAT_EPSILON);
-        assert_approx_equals(actual.offset[1], expected.offset.y,
+        assert_approx_equals(actual.offset[1], expected.headFromEye.matrix[13],
             FLOAT_EPSILON);
-        assert_approx_equals(actual.offset[2], expected.offset.z,
+        assert_approx_equals(actual.offset[2], expected.headFromEye.matrix[14],
             FLOAT_EPSILON);
         assert_equals(actual.renderWidth, expected.renderWidth * scale);
         assert_equals(actual.renderHeight, expected.renderHeight * scale);
diff --git a/third_party/blink/web_tests/vr/resources/vr-test-utils.js b/third_party/blink/web_tests/vr/resources/vr-test-utils.js
index 25f83a8..496c1a71 100644
--- a/third_party/blink/web_tests/vr/resources/vr-test-utils.js
+++ b/third_party/blink/web_tests/vr/resources/vr-test-utils.js
@@ -48,6 +48,15 @@
   this.displayClient_.onActivate(reason);
 };
 
+function getGFXTransformFromPosition(x, y, z) {
+  let transform = new gfx.mojom.Transform();
+  transform.matrix = getMatrixFromTransform({
+    position: [x, y, z],
+    orientation: [0, 0, 0, 1]
+  });
+  return transform;
+}
+
 function vr_test(func, vrDisplays, name, properties) {
   let chain = Promise.resolve();
   let firstDeviceController;
@@ -86,14 +95,14 @@
 
   let generic_left_eye = {
     fieldOfView : generic_left_fov,
-    offset : { x: -0.03, y: 0, z: 0 },
+    headFromEye : getGFXTransformFromPosition(-0.03, 0, 0),
     renderWidth : 1024,
     renderHeight : 1024
   };
 
   let generic_right_eye = {
-    fieldOfView :generic_right_fov,
-    offset : { x: 0.03, y: 0, z: 0 },
+    fieldOfView : generic_right_fov,
+    headFromEye : getGFXTransformFromPosition(0.03, 0, 0),
     renderWidth : 1024,
     renderHeight : 1024
   };
@@ -152,7 +161,7 @@
           leftDegrees : 35.197,
           rightDegrees : 50.899,
         },
-        offset : { x: -0.032, y: 0, z: 0 },
+        headFromEye : getGFXTransformFromPosition(-0.032, 0, 0),
         renderWidth : 1920,
         renderHeight : 2160
       },
@@ -163,7 +172,7 @@
           leftDegrees: 50.899,
           rightDegrees: 35.197
         },
-        offset : { x: 0.032, y: 0, z: 0 },
+        headFromEye : getGFXTransformFromPosition(0.032, 0, 0),
         renderWidth : 1920,
         renderHeight : 2160
       },
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-001-ref.html b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-001-ref.html
new file mode 100644
index 0000000..bb3c0e7
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-001-ref.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<meta charset="utf8">
+<title>CSS content-size: unsized div</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="http://tabatkins.github.io/specs/css-content-size/">
+
+<style>
+#target {
+  background: lightblue;
+}
+#target > div {
+  width: 111px;
+  height: 222px;
+}
+</style>
+
+<div id=target><div></div></div>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-001.html b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-001.html
new file mode 100644
index 0000000..35f51145
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-001.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf8">
+<title>CSS content-size: unsized div</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="http://tabatkins.github.io/specs/css-content-size/">
+<link rel="match" href="content-size-001-ref.html">
+
+<style>
+#target {
+  background: lightblue;
+  content-size: 111px 222px;
+  contain: size;
+}
+</style>
+
+<div id=target></div>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-002-ref.html b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-002-ref.html
new file mode 100644
index 0000000..dfd49b9d
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-002-ref.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<meta charset="utf8">
+<title>CSS content-size: unsized div with max-content parent</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="http://tabatkins.github.io/specs/css-content-size/">
+
+<style>
+#border {
+  width: max-content;
+  border: 1px solid black;
+}
+#target {
+  background: lightblue;
+}
+#target > div {
+  width: 111px;
+  height: 222px;
+}
+</style>
+
+<div id=border>
+  <div id=target><div></div></div>
+</div>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-002.html b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-002.html
new file mode 100644
index 0000000..7fa01b6
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-002.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf8">
+<title>CSS content-size: unsized div</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="http://tabatkins.github.io/specs/css-content-size/">
+<link rel="match" href="content-size-002-ref.html">
+
+<style>
+#border {
+  width: max-content;
+  border: 1px solid black;
+}
+#target {
+  background: lightblue;
+  content-size: 111px 222px;
+  contain: size;
+}
+</style>
+
+<div id=border>
+  <div id=target></div>
+</div>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-003-ref.html b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-003-ref.html
new file mode 100644
index 0000000..9acd81d
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-003-ref.html
@@ -0,0 +1,18 @@
+<!doctype html>
+<meta charset="utf8">
+<title>CSS content-size: width specified</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="http://tabatkins.github.io/specs/css-content-size/">
+
+<style>
+#target {
+  background: lightblue;
+  width: 50px;
+}
+#target > div {
+  height: 222px;
+  contain: size;
+}
+</style>
+
+<div id=target><div></div></div>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-003.html b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-003.html
new file mode 100644
index 0000000..d1017b3
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-003.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<meta charset="utf8">
+<title>CSS content-size: width specified</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="http://tabatkins.github.io/specs/css-content-size/">
+<link rel="match" href="content-size-003-ref.html">
+
+<style>
+#target {
+  background: lightblue;
+  content-size: 111px 222px;
+  width: 50px;
+  contain: size;
+}
+</style>
+
+<div id=target></div>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-004-ref.html b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-004-ref.html
new file mode 100644
index 0000000..43475f74
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-004-ref.html
@@ -0,0 +1,18 @@
+<!doctype html>
+<meta charset="utf8">
+<title>CSS content-size: width is min-content</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="http://tabatkins.github.io/specs/css-content-size/">
+
+<style>
+#target {
+  background: lightblue;
+  width: min-content;
+}
+#target > div {
+  width: 111px;
+  height: 222px;
+}
+</style>
+
+<div id=target><div></div></div>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-004.html b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-004.html
new file mode 100644
index 0000000..ca684c2
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-004.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<meta charset="utf8">
+<title>CSS content-size: width is min-content</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="http://tabatkins.github.io/specs/css-content-size/">
+<link rel="match" href="content-size-004-ref.html">
+
+<style>
+#target {
+  background: lightblue;
+  content-size: 111px 222px;
+  width: min-content;
+  contain: size;
+}
+</style>
+
+<div id=target></div>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-005-ref.html b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-005-ref.html
new file mode 100644
index 0000000..eb7e2c7
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-005-ref.html
@@ -0,0 +1,18 @@
+<!doctype html>
+<meta charset="utf8">
+<title>CSS content-size: width is max-content</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="http://tabatkins.github.io/specs/css-content-size/">
+
+<style>
+#target {
+  background: lightblue;
+  width: max-content;
+}
+#target > div {
+  width: 111px;
+  height: 222px;
+}
+</style>
+
+<div id=target><div></div></div>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-005.html b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-005.html
new file mode 100644
index 0000000..a72e6d7
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-005.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<meta charset="utf8">
+<title>CSS content-size: width is max-content</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="http://tabatkins.github.io/specs/css-content-size/">
+<link rel="match" href="content-size-004-ref.html">
+
+<style>
+#target {
+  background: lightblue;
+  content-size: 111px 222px;
+  width: max-content;
+  contain: size;
+}
+</style>
+
+<div id=target></div>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-006-ref.html b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-006-ref.html
new file mode 100644
index 0000000..1214c842a
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-006-ref.html
@@ -0,0 +1,18 @@
+<!doctype html>
+<meta charset="utf8">
+<title>CSS content-size: unsized div, content-size is small</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="http://tabatkins.github.io/specs/css-content-size/">
+
+<style>
+#target {
+  background: lightblue;
+}
+#target > div {
+  height: 6px;
+  contain: size;
+}
+</style>
+
+<div id=target><div>Lorem ipsum</div></div>
+
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-006.html b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-006.html
new file mode 100644
index 0000000..3688f55
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-006.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf8">
+<title>CSS content-size: unsized div, content-size is small</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="http://tabatkins.github.io/specs/css-content-size/">
+<link rel="match" href="content-size-006-ref.html">
+
+<style>
+#target {
+  background: lightblue;
+  content-size: 5px 6px;
+  contain: size;
+}
+</style>
+
+<div id=target>Lorem ipsum</div>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-007-ref.html b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-007-ref.html
new file mode 100644
index 0000000..4ad3f1b
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-007-ref.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<meta charset="utf8">
+<title>CSS content-size: unsized div, content-size is small</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="http://tabatkins.github.io/specs/css-content-size/">
+
+<style>
+#border {
+  border: 1px solid blue;
+  width: max-content;
+}
+
+#target {
+  background: lightblue;
+  box-sizing: content-box;
+  width: 55px;
+  height: 66px;
+
+  border-style: solid;
+  border-color: black;
+  border-width: 2px 3px 5px 7px;
+}
+</style>
+
+<div id=border>
+  <div id=target></div>
+</div>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-007.html b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-007.html
new file mode 100644
index 0000000..a998be5
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-007.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<meta charset="utf8">
+<title>CSS content-size: div with border and scrollbars</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="http://tabatkins.github.io/specs/css-content-size/">
+<link rel="match" href="content-size-007-ref.html">
+
+<style>
+#border {
+  border: 1px solid blue;
+  width: max-content;
+}
+
+#target {
+  background: lightblue;
+  content-size: 55px 66px;
+  contain: size;
+  border-style: solid;
+  border-color: black;
+  border-width: 2px 3px 5px 7px;
+}
+</style>
+
+<div id=border>
+  <div id=target></div>
+</div>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-008-ref.html b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-008-ref.html
new file mode 100644
index 0000000..874518b5
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-008-ref.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<meta charset="utf8">
+<title>CSS content-size: writing modes</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="http://tabatkins.github.io/specs/css-content-size/">
+
+<style>
+.border {
+  border: 1px solid blue;
+  width: max-content;
+  margin: 5px;
+}
+
+.box {
+  background: lightblue;
+  box-sizing: content-box;
+  width: 55px;
+  height: 66px;
+  contain: size;
+  border-style: solid;
+  border-color: black;
+  border-width: 2px 3px 5px 7px;
+  padding: 11px 13px 17px 19px;
+}
+.verticalrl {
+  writing-mode: vertical-rl;
+}
+.verticallr {
+  writing-mode: vertical-lr;
+}
+.horizontaltb {
+  writing-mode: horizontal-tb;
+}
+</style>
+
+<div class=border><div class="box verticalrl">Lorem</div></div>
+<div class=border><div class="box verticallr">Ipsum</div></div>
+<div class=border><div class="box horizontaltb">Dolor</div></div>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-008.html b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-008.html
new file mode 100644
index 0000000..f802feb
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-008.html
@@ -0,0 +1,37 @@
+<!doctype html>
+<meta charset="utf8">
+<title>CSS content-size: writing modes</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="http://tabatkins.github.io/specs/css-content-size/">
+<link rel="match" href="content-size-008-ref.html">
+
+<style>
+.border {
+  border: 1px solid blue;
+  width: max-content;
+  margin: 5px;
+}
+
+.box {
+  background: lightblue;
+  content-size: 55px 66px;
+  contain: size;
+  border-style: solid;
+  border-color: black;
+  border-width: 2px 3px 5px 7px;
+  padding: 11px 13px 17px 19px;
+}
+.verticalrl {
+  writing-mode: vertical-rl;
+}
+.verticallr {
+  writing-mode: vertical-lr;
+}
+.horizontaltb {
+  writing-mode: horizontal-tb;
+}
+</style>
+
+<div class=border><div class="box verticalrl">Lorem</div></div>
+<div class=border><div class="box verticallr">Ipsum</div></div>
+<div class=border><div class="box horizontaltb">Dolor</div></div>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-no-containment-001-ref.html b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-no-containment-001-ref.html
new file mode 100644
index 0000000..bc9da395
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-no-containment-001-ref.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<meta charset="utf8">
+<title>CSS content-size: no size containment</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="http://tabatkins.github.io/specs/css-content-size/">
+
+<style>
+#target {
+  background: lightblue;
+}
+</style>
+
+<div id=target>Lorem ipsum</div>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-no-containment-001.html b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-no-containment-001.html
new file mode 100644
index 0000000..4e6594e
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-no-containment-001.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<meta charset="utf8">
+<title>CSS content-size: no size containment</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="http://tabatkins.github.io/specs/css-content-size/">
+<link rel="match" href="content-size-no-containment-001-ref.html">
+
+<style>
+#target {
+  background: lightblue;
+  content-size: 111px 222px;
+}
+</style>
+
+<div id=target>Lorem ipsum</div>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-no-containment-002-ref.html b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-no-containment-002-ref.html
new file mode 100644
index 0000000..dba75e3
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-no-containment-002-ref.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<meta charset="utf8">
+<title>CSS content-size: no size containment</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="http://tabatkins.github.io/specs/css-content-size/">
+
+<style>
+#flex {
+  display: flex;
+  flex-direction: column;
+  height: 500px;
+}
+#one {
+  background: lightblue;
+  flex-grow: 3;
+}
+#two {
+  background: lightgreen;
+  flex-grow: 2;
+}
+#three {
+  background: lightgrey;
+  flex-grow: 1;
+}
+</style>
+
+<div id=flex>
+  <div id=one>Lorem ipsum</div>
+  <div id=two>dolor sit amet</div>
+  <div id=three>consectetur adipiscing elit</div>
+</div>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-no-containment-002.html b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-no-containment-002.html
new file mode 100644
index 0000000..521c3fc
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/css/css-content-size/content-size-no-containment-002.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<meta charset="utf8">
+<title>CSS content-size: no size containment</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="http://tabatkins.github.io/specs/css-content-size/">
+<link rel="match" href="content-size-no-containment-002-ref.html">
+
+<style>
+#flex {
+  display: flex;
+  flex-direction: column;
+  height: 500px;
+}
+
+#one {
+  background: lightblue;
+  content-size: 111px 222px;
+  flex-grow: 3;
+}
+#two {
+  background: lightgreen;
+  content-size: 333px 1px;
+  flex-grow: 2;
+}
+#three {
+  background: lightgrey;
+  content-size: 1px 444px;
+  flex-grow: 1;
+}
+</style>
+
+<div id=flex>
+  <div id=one>Lorem ipsum</div>
+  <div id=two>dolor sit amet</div>
+  <div id=three>consectetur adipiscing elit</div>
+</div>
diff --git a/third_party/blink/web_tests/wpt_internal/std-switch/tentative/interface-expected.txt b/third_party/blink/web_tests/wpt_internal/std-switch/tentative/interface-expected.txt
deleted file mode 100644
index 26f5cad9..0000000
--- a/third_party/blink/web_tests/wpt_internal/std-switch/tentative/interface-expected.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This is a testharness.js-based test.
-FAIL interface promise_test: Unhandled rejection with value: object "WebIDLParseError: Syntax error at line 1471, since `interface CustomElementRegistry`:
- define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions
-                        ^ Trailing comma in arguments list"
-Harness: the test ran to completion.
-
diff --git a/third_party/libphonenumber/BUILD.gn b/third_party/libphonenumber/BUILD.gn
index f66ffe0..5b4863e 100644
--- a/third_party/libphonenumber/BUILD.gn
+++ b/third_party/libphonenumber/BUILD.gn
@@ -47,6 +47,7 @@
     "dist/cpp/src/phonenumbers/phonenumbermatch.cc",
     "dist/cpp/src/phonenumbers/phonenumbermatcher.cc",
     "dist/cpp/src/phonenumbers/phonenumberutil.cc",
+    "dist/cpp/src/phonenumbers/regex_based_matcher.cc",
     "dist/cpp/src/phonenumbers/regexp_adapter_icu.cc",
     "dist/cpp/src/phonenumbers/regexp_cache.cc",
     "dist/cpp/src/phonenumbers/string_byte_sink.cc",
diff --git a/third_party/libphonenumber/README.chromium b/third_party/libphonenumber/README.chromium
index 329072ec..e506866 100644
--- a/third_party/libphonenumber/README.chromium
+++ b/third_party/libphonenumber/README.chromium
@@ -2,7 +2,7 @@
 Short Name: libphonenumber
 URL: https://github.com/googlei18n/libphonenumber/
 Version: unknown
-Revision: a4da30df63a097d67e3c429ead6790ad91d36cf4
+Revision: 68eba9d6ee8b11fb58ece36b6c46d07965d7f7ff
 License: Apache 2.0
 License File: LICENSE
 Security Critical: yes
@@ -16,19 +16,16 @@
 - third_party/protobuf Lite version.
 
 Additional files, not in the original library:
-  libphonenumber.gyp
+  BUILD.gn
   README.chromium
   LICENSE # Taken from https://github.com/googlei18n/libphonenumber/
   phonenumber_api.h
 
-The library is mapped through the DEPS file into dist/ folder. To update:
+The library is mapped through the DEPS file into the Chromium sources root
+folder. To update:
 1. Get the latest commit hash from
    https://github.com/googlei18n/libphonenumber/
-2. Locally update this file and DEPS.
+2. Locally update this file and src/DEPS.
 3. run 'gclient sync'
-4. Adjust libphonenumber.gyp/BUILD.gn if necessary.
+4. Adjust BUILD.gn if necessary.
 5. Verify that all compiles and all of the tests are successfull.
-
-WARNING: This library is only thread-safe on POSIX. This means that
-PhoneNumberUtil and the other singletons should be accessed from a single
-thread.
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index e262cce..8af7f44a 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -35613,6 +35613,7 @@
   <int value="-705746939" label="ChromeDuet:enabled"/>
   <int value="-704232562" label="UseMonitorColorSpace:enabled"/>
   <int value="-702477233" label="ContentFullscreen:enabled"/>
+  <int value="-700300613" label="use-fake-device-for-media-stream:disabled"/>
   <int value="-699767107" label="enable-sync-app-list"/>
   <int value="-699198009" label="KeyboardShortcutViewer:enabled"/>
   <int value="-697887799"
@@ -37300,6 +37301,7 @@
   <int value="1677167062" label="AutomaticPasswordGeneration:enabled"/>
   <int value="1677258310" label="DragAppsInTabletMode:disabled"/>
   <int value="1679558835" label="ArcAvailableForChildAccount:enabled"/>
+  <int value="1680248931" label="use-fake-device-for-media-stream:enabled"/>
   <int value="1684043382" label="AssistantKeyRemapping:enabled"/>
   <int value="1685280468" label="AppServiceShelf:enabled"/>
   <int value="1688075820" label="OmniboxExperimentalKeywordMode:disabled"/>
@@ -52510,6 +52512,7 @@
   <int value="0" label="Safety Tip status unknown/not applicable"/>
   <int value="1" label="No Safety Tip"/>
   <int value="2" label="Safety Tip for bad reputation"/>
+  <int value="3" label="Safety Tip for lookalike URL"/>
 </enum>
 
 <enum name="SamlInSessionPasswordChangeEvent">
@@ -55858,6 +55861,11 @@
   <int value="5" label="Authenticated channel dropped"/>
 </enum>
 
+<enum name="SMSReceiverInfobarAction">
+  <int value="0" label="Baseline: InfobarShown"/>
+  <int value="1" label="KeyboardDismissed"/>
+</enum>
+
 <enum name="SMSReceiverOutcome">
   <int value="0" label="Success"/>
   <int value="1" label="Timed out"/>
@@ -58647,6 +58655,8 @@
   <int value="16" label="Updates"/>
   <int value="17" label="Click To Call"/>
   <int value="18" label="Shared Clipboard"/>
+  <int value="19" label="Permission Requests"/>
+  <int value="20" label="Permission Requests High"/>
 </enum>
 
 <enum name="TabBackgroundLoadStatus">
@@ -65444,6 +65454,9 @@
 </enum>
 
 <enum name="WMIRefresherInitStatus">
+  <obsolete>
+    Removed from code 08/2019.
+  </obsolete>
   <int value="0" label="Success"/>
   <int value="1" label="Local WMI Connection error"/>
   <int value="2" label="Refresher creation error"/>
@@ -65452,6 +65465,9 @@
 </enum>
 
 <enum name="WMIRefresherRefreshStatus">
+  <obsolete>
+    Removed from code 08/2019.
+  </obsolete>
   <int value="0" label="Success"/>
   <int value="1" label="Call to Refresh failed"/>
   <int value="2" label="Call to GetObjects failed"/>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index c6fe45a..7b02d238 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -7774,6 +7774,9 @@
 
 <histogram name="Ash.Wallpaper.ColorExtraction.Durations" units="ms"
     expires_after="M77">
+  <obsolete>
+    Deprecated as of 8/2018.
+  </obsolete>
   <owner>bruthig@chromium.org</owner>
   <owner>tbuckley@chromium.org</owner>
   <summary>
@@ -7784,6 +7787,9 @@
 
 <histogram name="Ash.Wallpaper.ColorExtraction.UserDelay" units="ms"
     expires_after="M77">
+  <obsolete>
+    Deprecated as of 8/2018.
+  </obsolete>
   <owner>bruthig@chromium.org</owner>
   <owner>tbuckley@chromium.org</owner>
   <summary>
@@ -7864,6 +7870,9 @@
 
 <histogram name="Ash.Wallpaper.TimeSpentResizing" units="ms"
     expires_after="M77">
+  <obsolete>
+    Deprecated as of 8/2018.
+  </obsolete>
   <owner>bruthig@chromium.org</owner>
   <owner>tbuckley@chromium.org</owner>
   <summary>
@@ -12776,7 +12785,7 @@
 </histogram>
 
 <histogram name="BackgroundSync.LaunchTask.CancelSuccess" enum="BooleanSuccess"
-    expires_after="M80">
+    expires_after="M86">
   <owner>nator@chromium.org</owner>
   <owner>rayankans@chromium.org</owner>
   <summary>
@@ -12786,7 +12795,7 @@
 </histogram>
 
 <histogram name="BackgroundSync.LaunchTask.PlayServicesAvailable"
-    enum="Boolean" expires_after="M80">
+    enum="Boolean" expires_after="M86">
   <owner>nator@chromium.org</owner>
   <owner>rayankans@chromium.org</owner>
   <summary>
@@ -12797,7 +12806,7 @@
 </histogram>
 
 <histogram name="BackgroundSync.LaunchTask.ScheduleSuccess"
-    enum="BooleanSuccess">
+    enum="BooleanSuccess" expires_after="M86">
   <owner>nator@chromium.org</owner>
   <owner>rayankans@chromium.org</owner>
   <summary>
@@ -15217,6 +15226,16 @@
   </summary>
 </histogram>
 
+<histogram name="Blink.Sms.Receive.Infobar" enum="SMSReceiverInfobarAction">
+  <owner>goto@chromium.org</owner>
+  <owner>reillyg@chromium.org</owner>
+  <owner>ayui@chromium.org</owner>
+  <summary>
+    Records how many times the infobar was called and how many times the infobar
+    replaced a keyboard.
+  </summary>
+</histogram>
+
 <histogram name="Blink.Sms.Receive.Outcome" enum="SMSReceiverOutcome">
   <owner>goto@chromium.org</owner>
   <owner>reillyg@chromium.org</owner>
@@ -15245,6 +15264,17 @@
   </summary>
 </histogram>
 
+<histogram name="Blink.Sms.Receive.TimeCancelOnKeyboardDismissal" units="ms">
+  <owner>goto@chromium.org</owner>
+  <owner>reillyg@chromium.org</owner>
+  <owner>juncai@chromium.org</owner>
+  <owner>ayui@chromium.org</owner>
+  <summary>
+    Records the duration from when the keyboard was replaced with an infobar
+    until when the user clicked the cancel button.
+  </summary>
+</histogram>
+
 <histogram name="Blink.Sms.Receive.TimeCancelOnSuccess" units="ms">
   <owner>goto@chromium.org</owner>
   <owner>reillyg@chromium.org</owner>
@@ -47327,7 +47357,7 @@
 </histogram>
 
 <histogram name="GCM.Crypto.GCMDatabaseUpgradeResult" enum="Boolean"
-    expires_after="M80">
+    expires_after="M86">
   <owner>nator@chromium.org</owner>
   <owner>peter@chromium.org</owner>
   <owner>rayankans@chromium.org</owner>
@@ -47539,7 +47569,7 @@
 </histogram>
 
 <histogram name="GCM.RegistrationCacheStatus" enum="GCMRegistrationCacheStatus"
-    expires_after="M80">
+    expires_after="M86">
   <owner>nator@chromium.org</owner>
   <owner>peter@chromium.org</owner>
   <owner>rayankans@chromium.org</owner>
@@ -65188,6 +65218,9 @@
 
 <histogram name="Memory.Experimental.WMIRefresher.Init.AddEnumDuration2"
     units="ms" expires_after="2019-09-30">
+  <obsolete>
+    Obsolete as of 08/2019
+  </obsolete>
   <owner>sebmarchand@chromium.org</owner>
   <summary>
     The time it takes for the call to |AddEnum| to complete during the
@@ -65198,6 +65231,9 @@
 <histogram
     name="Memory.Experimental.WMIRefresher.Init.CoCreateInstanceDuration"
     units="ms" expires_after="2019-09-30">
+  <obsolete>
+    Obsolete as of 08/2019
+  </obsolete>
   <owner>sebmarchand@chromium.org</owner>
   <summary>
     The time it takes for the call to |CoCreateInstance| to complete during the
@@ -65208,6 +65244,9 @@
 <histogram
     name="Memory.Experimental.WMIRefresher.Init.CreateLocalWmiConnectionDuration"
     units="ms" expires_after="2019-09-30">
+  <obsolete>
+    Obsolete as of 08/2019
+  </obsolete>
   <owner>sebmarchand@chromium.org</owner>
   <summary>
     The time it takes for the call to |CreateLocalWmiConnection| to complete
@@ -65240,6 +65279,9 @@
 <histogram
     name="Memory.Experimental.WMIRefresher.InitializeDiskIdleTimeConfigDuration2"
     units="ms" expires_after="2019-09-30">
+  <obsolete>
+    Obsolete as of 08/2019
+  </obsolete>
   <owner>sebmarchand@chromium.org</owner>
   <summary>
     The time it takes to initialize the disk idle config in the WMI Refresher.
@@ -65248,6 +65290,9 @@
 
 <histogram name="Memory.Experimental.WMIRefresher.RefreshDiskIdleTimeDuration"
     units="ms" expires_after="2019-09-30">
+  <obsolete>
+    Obsolete as of 08/2019
+  </obsolete>
   <owner>sebmarchand@chromium.org</owner>
   <summary>
     The time it takes to do a refresh of the disk idle time value in the WMI
@@ -65257,6 +65302,9 @@
 
 <histogram name="Memory.Experimental.WMIRefresher.RefreshDiskIdleTimeStatus"
     enum="WMIRefresherRefreshStatus" expires_after="2019-09-30">
+  <obsolete>
+    Obsolete as of 08/2019
+  </obsolete>
   <owner>sebmarchand@chromium.org</owner>
   <summary>
     The result of refreshing the disk idle time value in the WMIRefresher.
@@ -124628,6 +124676,24 @@
   </summary>
 </histogram>
 
+<histogram name="Security.SafetyTips.SafetyTipIgnoredPageLoad"
+    enum="SafetyTipStatus">
+  <owner>jdeblasio@chromium.org</owner>
+  <owner>livvielin@chromium.org</owner>
+  <summary>
+    Records the Safety Tip status of a page after navigation commit for a page
+    where the Safety Tip has previously been ignored.
+  </summary>
+</histogram>
+
+<histogram name="Security.SafetyTips.SafetyTipShown" enum="SafetyTipStatus">
+  <owner>jdeblasio@chromium.org</owner>
+  <owner>livvielin@chromium.org</owner>
+  <summary>
+    Records the Safety Tip status of a page after navigation commit.
+  </summary>
+</histogram>
+
 <histogram name="Security.SecurityLevel.CryptographicScheme"
     enum="SecurityLevel">
   <owner>estark@chromium.org</owner>
@@ -129068,6 +129134,16 @@
   </summary>
 </histogram>
 
+<histogram name="Sharing.ClickToCallHelpTextClicked" enum="SharingDialogType"
+    expires_after="2020-02-02">
+  <owner>mvanouwerkerk@chromium.org</owner>
+  <owner>knollr@chromium.org</owner>
+  <summary>
+    Logged whenever a user clicks on the help text in a Click to Call dialog.
+    The value is used to distinguish which dialog type was shown. Desktop only.
+  </summary>
+</histogram>
+
 <histogram name="Sharing.ClickToCallPhoneCall" units="ms" expires_after="M80">
   <owner>mvanouwerkerk@chromium.org</owner>
   <owner>knollr@chromium.org</owner>
@@ -173871,7 +173947,7 @@
       label="Recorded with between 5 and 7 tabs open in the browser."/>
   <suffix name="ByTabCount.8To19Tabs"
       label="Recorded with between 8 and 19 tabs open in the browser."/>
-  <suffix name="ByTabCount.8To19Tabs"
+  <suffix name="ByTabCount.20To39Tabs"
       label="Recorded with between 20 and 39 tabs open in the browser."/>
   <suffix name="ByTabCount.40OrMoreTabs"
       label="Recorded with 40 or more tabs open in the browser."/>
diff --git a/tools/perf/expectations.config b/tools/perf/expectations.config
index fa1883c..fbac672 100644
--- a/tools/perf/expectations.config
+++ b/tools/perf/expectations.config
@@ -225,6 +225,9 @@
 # Benchmark: rendering.desktop
 crbug.com/755556 [ mac ] rendering.desktop/mix_blend_mode_animation_difference [ Skip ]
 crbug.com/755556 [ mac ] rendering.desktop/mix_blend_mode_animation_hue [ Skip ]
+crbug.com/1000473 [ linux ] rendering.desktop/balls_svg_animations [ Skip ]
+crbug.com/1000473 [ mac ] rendering.desktop/balls_svg_animations [ Skip ]
+crbug.com/1000473 [ win ] rendering.desktop/balls_svg_animations [ Skip ]
 
 # Benchmark: rendering.mobile
 crbug.com/785485 [ android-webview ] rendering.mobile/kevs_3d [ Skip ]
@@ -267,6 +270,7 @@
 crbug.com/954948 [ android-webview ] rendering.mobile/cnn_mobile_pinch_2018 [ Skip ]
 crbug.com/966637 [ android-pixel-2 android-webview ] rendering.mobile/google_news_mobile_2018 [ Skip ]
 crbug.com/967809 [ android-webview ] rendering.mobile/microsoft_video_city [ Skip ]
+crbug.com/1000473 [ android-webview ] rendering.mobile/balls_svg_animations [ Skip ]
 
 # Benchmark: rasterize_and_record_micro.top_25
 crbug.com/764543 rasterize_and_record_micro.top_25/file://static_top_25/wikipedia.html [ Skip ]
diff --git a/ui/accessibility/platform/test_ax_node_wrapper.cc b/ui/accessibility/platform/test_ax_node_wrapper.cc
index 602f83b..7b4fc90 100644
--- a/ui/accessibility/platform/test_ax_node_wrapper.cc
+++ b/ui/accessibility/platform/test_ax_node_wrapper.cc
@@ -587,6 +587,9 @@
     case ax::mojom::Role::kColorWell:
       return base::ASCIIToUTF16("color picker");
 
+    case ax::mojom::Role::kContentInfo:
+      return base::ASCIIToUTF16("content information");
+
     case ax::mojom::Role::kDate:
       return base::ASCIIToUTF16("date picker");
 
diff --git a/ui/aura/window_tree_host_platform.cc b/ui/aura/window_tree_host_platform.cc
index fe1dc9ac..98b04fa 100644
--- a/ui/aura/window_tree_host_platform.cc
+++ b/ui/aura/window_tree_host_platform.cc
@@ -74,7 +74,7 @@
 #elif defined(OS_WIN)
   platform_window_.reset(new ui::WinWindow(this, properties.bounds));
 #elif defined(USE_X11)
-  auto x11_window = std::make_unique<ui::X11Window>(this, nullptr);
+  auto x11_window = std::make_unique<ui::X11Window>(this);
   x11_window->Initialize(std::move(properties));
   SetPlatformWindow(std::move(x11_window));
 #else
diff --git a/ui/base/ui_base_features.cc b/ui/base/ui_base_features.cc
index 835d14a..a2e985a 100644
--- a/ui/base/ui_base_features.cc
+++ b/ui/base/ui_base_features.cc
@@ -140,17 +140,6 @@
 #endif
 }
 
-#if defined(OS_MACOSX)
-// When enabled, the NSWindows for apps will be created in the app's process,
-// and will forward input to the browser process.
-const base::Feature kHostWindowsInAppShimProcess{
-    "HostWindowsInAppShimProcess", base::FEATURE_ENABLED_BY_DEFAULT};
-
-bool HostWindowsInAppShimProcess() {
-  return base::FeatureList::IsEnabled(kHostWindowsInAppShimProcess);
-}
-#endif  //  defined(OS_MACOSX)
-
 const base::Feature kEnableOzoneDrmMojo = {"OzoneDrmMojo",
                                            base::FEATURE_DISABLED_BY_DEFAULT};
 
diff --git a/ui/base/ui_base_features.h b/ui/base/ui_base_features.h
index e7deb66..8fa392e 100644
--- a/ui/base/ui_base_features.h
+++ b/ui/base/ui_base_features.h
@@ -75,15 +75,6 @@
 COMPONENT_EXPORT(UI_BASE_FEATURES)
 bool IsAutomaticUiAdjustmentsForTouchEnabled();
 
-#if defined(OS_MACOSX)
-COMPONENT_EXPORT(UI_BASE_FEATURES)
-extern const base::Feature kHostWindowsInAppShimProcess;
-
-// Returns true if the NSWindows for apps will be created in the app's process,
-// and will forward input to the browser process.
-COMPONENT_EXPORT(UI_BASE_FEATURES) bool HostWindowsInAppShimProcess();
-#endif  //  defined(OS_MACOSX)
-
 // Use mojo communication in the drm platform instead of paramtraits. Remove
 // this switch (and associated code) when the drm platform always uses mojo
 // communication.
diff --git a/ui/ozone/platform/x11/x11_window_ozone.cc b/ui/ozone/platform/x11/x11_window_ozone.cc
index f62b39e..b88ce99 100644
--- a/ui/ozone/platform/x11/x11_window_ozone.cc
+++ b/ui/ozone/platform/x11/x11_window_ozone.cc
@@ -25,7 +25,7 @@
 
 X11WindowOzone::X11WindowOzone(PlatformWindowDelegate* delegate,
                                X11WindowManagerOzone* window_manager)
-    : X11Window(delegate, nullptr), window_manager_(window_manager) {
+    : X11Window(delegate), window_manager_(window_manager) {
   DCHECK(window_manager_);
 
   // Set a class property key, which allows |this| to be used for interactive
diff --git a/ui/platform_window/platform_window_init_properties.h b/ui/platform_window/platform_window_init_properties.h
index 38e5382..eeb06608 100644
--- a/ui/platform_window/platform_window_init_properties.h
+++ b/ui/platform_window/platform_window_init_properties.h
@@ -73,18 +73,18 @@
   bool remove_standard_frame = false;
   std::string workspace;
 
-#if defined(USE_X11)
-  // Only used by X11:
+#if defined(OS_LINUX)
   bool prefer_dark_theme = false;
   gfx::ImageSkia* icon = nullptr;
   base::Optional<int> background_color;
-#endif
+
   // Specifies the res_name and res_class fields,
   // respectively, of the WM_CLASS window property. Controls window grouping
   // and desktop file matching in Linux window managers.
   std::string wm_role_name;
   std::string wm_class_name;
   std::string wm_class_class;
+#endif
 };
 
 }  // namespace ui
diff --git a/ui/platform_window/x11/x11_window.cc b/ui/platform_window/x11/x11_window.cc
index b0a7365..c181b69 100644
--- a/ui/platform_window/x11/x11_window.cc
+++ b/ui/platform_window/x11/x11_window.cc
@@ -71,10 +71,8 @@
 
 }  // namespace
 
-X11Window::X11Window(PlatformWindowDelegateLinux* platform_window_delegate,
-                     XEventDelegate* x_event_delegate)
-    : platform_window_delegate_(platform_window_delegate),
-      x_event_delegate_(x_event_delegate) {}
+X11Window::X11Window(PlatformWindowDelegateLinux* platform_window_delegate)
+    : platform_window_delegate_(platform_window_delegate) {}
 
 X11Window::~X11Window() {
   PrepareForShutdown();
@@ -87,6 +85,11 @@
   Init(config);
 }
 
+void X11Window::SetXEventDelegate(XEventDelegate* delegate) {
+  DCHECK(!x_event_delegate_);
+  x_event_delegate_ = delegate;
+}
+
 void X11Window::Show() {
   // TODO(msisov): pass inactivity to PlatformWindow::Show.
   XWindow::Map(false /* inactive */);
diff --git a/ui/platform_window/x11/x11_window.h b/ui/platform_window/x11/x11_window.h
index 62ae8fb..f094d650 100644
--- a/ui/platform_window/x11/x11_window.h
+++ b/ui/platform_window/x11/x11_window.h
@@ -14,8 +14,6 @@
 
 namespace ui {
 
-class PlatformWindowDelegateLinux;
-
 // Delegate interface used to communicate the X11PlatformWindow API client about
 // XEvents of interest.
 class X11_WINDOW_EXPORT XEventDelegate {
@@ -38,12 +36,13 @@
                                     public XWindow,
                                     public PlatformEventDispatcher {
  public:
-  X11Window(PlatformWindowDelegateLinux* platform_window_delegate,
-            XEventDelegate* x_event_delegate);
+  explicit X11Window(PlatformWindowDelegateLinux* platform_window_delegate);
   ~X11Window() override;
 
   void Initialize(PlatformWindowInitProperties properties);
 
+  void SetXEventDelegate(XEventDelegate* delegate);
+
   // PlatformWindow:
   void Show() override;
   void Hide() override;
@@ -110,7 +109,7 @@
 
   PlatformWindowDelegateLinux* const platform_window_delegate_;
 
-  XEventDelegate* const x_event_delegate_;
+  XEventDelegate* x_event_delegate_ = nullptr;
 
   // Tells if the window got a ::Close call.
   bool is_shutting_down_ = false;
diff --git a/ui/views/BUILD.gn b/ui/views/BUILD.gn
index 7872cc6..6ddc8fb 100644
--- a/ui/views/BUILD.gn
+++ b/ui/views/BUILD.gn
@@ -756,8 +756,10 @@
         ]
       }
       if (is_linux) {
+        public += [ "widget/desktop_aura/desktop_window_tree_host_linux.h" ]
         sources += [
           "style/platform_style_linux.cc",
+          "widget/desktop_aura/desktop_window_tree_host_linux.cc",
           "widget/desktop_aura/window_event_filter.cc",
           "widget/desktop_aura/window_event_filter.h",
         ]
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host.h b/ui/views/widget/desktop_aura/desktop_window_tree_host.h
index c4fa6859..da8caf2 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host.h
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host.h
@@ -19,13 +19,13 @@
 namespace client {
 class DragDropClient;
 class ScreenPositionClient;
-}
+}  // namespace client
 }  // namespace aura
 
 namespace gfx {
 class ImageSkia;
 class Rect;
-}
+}  // namespace gfx
 
 namespace views {
 namespace corewm {
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc
new file mode 100644
index 0000000..da40153
--- /dev/null
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc
@@ -0,0 +1,83 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h"
+
+#include "ui/display/display.h"
+#include "ui/display/screen.h"
+#include "ui/platform_window/platform_window_init_properties.h"
+#include "ui/views/linux_ui/linux_ui.h"
+#include "ui/views/views_delegate.h"
+#include "ui/views/widget/widget.h"
+
+namespace views {
+
+DesktopWindowTreeHostLinux::DesktopWindowTreeHostLinux(
+    internal::NativeWidgetDelegate* native_widget_delegate,
+    DesktopNativeWidgetAura* desktop_native_widget_aura)
+    : DesktopWindowTreeHostPlatform(native_widget_delegate,
+                                    desktop_native_widget_aura) {}
+
+DesktopWindowTreeHostLinux::~DesktopWindowTreeHostLinux() = default;
+
+gfx::Size DesktopWindowTreeHostLinux::AdjustSizeForDisplay(
+    const gfx::Size& requested_size_in_pixels) {
+  std::vector<display::Display> displays =
+      display::Screen::GetScreen()->GetAllDisplays();
+  // Compare against all monitor sizes. The window manager can move the window
+  // to whichever monitor it wants.
+  for (const auto& display : displays) {
+    if (requested_size_in_pixels == display.GetSizeInPixel()) {
+      return gfx::Size(requested_size_in_pixels.width() - 1,
+                       requested_size_in_pixels.height() - 1);
+    }
+  }
+
+  // Do not request a 0x0 window size. It causes an XError.
+  gfx::Size size_in_pixels = requested_size_in_pixels;
+  size_in_pixels.SetToMax(gfx::Size(1, 1));
+  return size_in_pixels;
+}
+
+void DesktopWindowTreeHostLinux::AddAdditionalInitProperties(
+    const Widget::InitParams& params,
+    ui::PlatformWindowInitProperties* properties) {
+  // Calculate initial bounds
+  gfx::Rect bounds_in_pixels = ToPixelRect(properties->bounds);
+  gfx::Size adjusted_size = AdjustSizeForDisplay(bounds_in_pixels.size());
+  bounds_in_pixels.set_size(adjusted_size);
+  properties->bounds = bounds_in_pixels;
+
+  // Set the background color on startup to make the initial flickering
+  // happening between the XWindow is mapped and the first expose event
+  // is completely handled less annoying. If possible, we use the content
+  // window's background color, otherwise we fallback to white.
+  base::Optional<int> background_color;
+  const views::LinuxUI* linux_ui = views::LinuxUI::instance();
+  if (linux_ui && content_window()) {
+    ui::NativeTheme::ColorId target_color;
+    switch (properties->type) {
+      case ui::PlatformWindowType::kBubble:
+        target_color = ui::NativeTheme::kColorId_BubbleBackground;
+        break;
+      case ui::PlatformWindowType::kTooltip:
+        target_color = ui::NativeTheme::kColorId_TooltipBackground;
+        break;
+      default:
+        target_color = ui::NativeTheme::kColorId_WindowBackground;
+        break;
+    }
+    ui::NativeTheme* theme = linux_ui->GetNativeTheme(content_window());
+    background_color = theme->GetSystemColor(target_color);
+  }
+  properties->prefer_dark_theme = linux_ui && linux_ui->PreferDarkTheme();
+  properties->background_color = background_color;
+  properties->icon = ViewsDelegate::GetInstance()->GetDefaultWindowIcon();
+
+  properties->wm_class_name = params.wm_class_name;
+  properties->wm_class_class = params.wm_class_class;
+  properties->wm_role_name = params.wm_role_name;
+}
+
+}  // namespace views
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h b/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h
new file mode 100644
index 0000000..eee9ef64
--- /dev/null
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h
@@ -0,0 +1,44 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_WINDOW_TREE_HOST_LINUX_H_
+#define UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_WINDOW_TREE_HOST_LINUX_H_
+
+#include "base/macros.h"
+#include "ui/views/views_export.h"
+#include "ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h"
+
+namespace views {
+
+// Contains Linux specific implementation.
+class VIEWS_EXPORT DesktopWindowTreeHostLinux
+    : public DesktopWindowTreeHostPlatform {
+ public:
+  DesktopWindowTreeHostLinux(
+      internal::NativeWidgetDelegate* native_widget_delegate,
+      DesktopNativeWidgetAura* desktop_native_widget_aura);
+  ~DesktopWindowTreeHostLinux() override;
+
+ protected:
+  // Adjusts |requested_size| to avoid the WM "feature" where setting the
+  // window size to the monitor size causes the WM to set the EWMH for
+  // fullscreen.
+  //
+  // TODO(https://crbug.com/990756)): this method is mainly for X11
+  // impl (Wayland does not need this workaround). Move this to X11Window
+  // instead. We can't do it now as there are some methods that depend on this.
+  gfx::Size AdjustSizeForDisplay(const gfx::Size& requested_size_in_pixels);
+
+ private:
+  // DesktopWindowTreeHostPlatform overrides:
+  void AddAdditionalInitProperties(
+      const Widget::InitParams& params,
+      ui::PlatformWindowInitProperties* properties) override;
+
+  DISALLOW_COPY_AND_ASSIGN(DesktopWindowTreeHostLinux);
+};
+
+}  // namespace views
+
+#endif  // UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_WINDOW_TREE_HOST_LINUX_H_
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
index f494d1f..2c02111 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
@@ -7,6 +7,7 @@
 #include "base/bind.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/time/time.h"
+#include "ui/aura/client/aura_constants.h"
 #include "ui/aura/client/drag_drop_client.h"
 #include "ui/aura/client/transient_window_client.h"
 #include "ui/base/hit_test.h"
@@ -26,6 +27,68 @@
 
 namespace views {
 
+namespace {
+
+ui::PlatformWindowInitProperties ConvertWidgetInitParamsToInitProperties(
+    const Widget::InitParams& params) {
+  ui::PlatformWindowInitProperties properties;
+
+  switch (params.type) {
+    case Widget::InitParams::TYPE_WINDOW:
+      properties.type = ui::PlatformWindowType::kWindow;
+      break;
+
+    case Widget::InitParams::TYPE_MENU:
+      properties.type = ui::PlatformWindowType::kMenu;
+      break;
+
+    case Widget::InitParams::TYPE_TOOLTIP:
+      properties.type = ui::PlatformWindowType::kTooltip;
+      break;
+
+    case Widget::InitParams::TYPE_DRAG:
+      properties.type = ui::PlatformWindowType::kDrag;
+      break;
+
+    case Widget::InitParams::TYPE_BUBBLE:
+      properties.type = ui::PlatformWindowType::kBubble;
+      break;
+
+    default:
+      properties.type = ui::PlatformWindowType::kPopup;
+      break;
+  }
+
+  properties.bounds = params.bounds;
+  properties.activatable =
+      params.activatable == Widget::InitParams::ACTIVATABLE_YES;
+  properties.force_show_in_taskbar = params.force_show_in_taskbar;
+  properties.keep_on_top =
+      params.EffectiveZOrderLevel() != ui::ZOrderLevel::kNormal;
+  properties.visible_on_all_workspaces = params.visible_on_all_workspaces;
+  properties.remove_standard_frame = params.remove_standard_frame;
+  properties.workspace = params.workspace;
+
+  if (params.parent && params.parent->GetHost())
+    properties.parent_widget = params.parent->GetHost()->GetAcceleratedWidget();
+
+  switch (params.opacity) {
+    case Widget::InitParams::WindowOpacity::INFER_OPACITY:
+      properties.opacity = ui::PlatformWindowOpacity::kInferOpacity;
+      break;
+    case Widget::InitParams::WindowOpacity::OPAQUE_WINDOW:
+      properties.opacity = ui::PlatformWindowOpacity::kOpaqueWindow;
+      break;
+    case Widget::InitParams::WindowOpacity::TRANSLUCENT_WINDOW:
+      properties.opacity = ui::PlatformWindowOpacity::kTranslucentWindow;
+      break;
+  }
+
+  return properties;
+}
+
+}  // namespace
+
 ////////////////////////////////////////////////////////////////////////////////
 // DesktopWindowTreeHostPlatform:
 
@@ -46,15 +109,22 @@
 }
 
 void DesktopWindowTreeHostPlatform::Init(const Widget::InitParams& params) {
+  if (params.type == Widget::InitParams::TYPE_WINDOW)
+    content_window()->SetProperty(aura::client::kAnimationsDisabledKey, true);
+
   ui::PlatformWindowInitProperties properties =
       ConvertWidgetInitParamsToInitProperties(params);
+  AddAdditionalInitProperties(params, &properties);
 
   CreateAndSetPlatformWindow(std::move(properties));
-  CreateCompositor(viz::FrameSinkId(), params.force_software_compositing);
-  aura::WindowTreeHost::OnAcceleratedWidgetAvailable();
+  // Disable compositing on tooltips as a workaround for
+  // https://crbug.com/442111.
+  CreateCompositor(viz::FrameSinkId(),
+                   params.force_software_compositing ||
+                       params.type == Widget::InitParams::TYPE_TOOLTIP);
+
+  WindowTreeHost::OnAcceleratedWidgetAvailable();
   InitHost();
-  if (!params.bounds.IsEmpty())
-    SetBoundsInDIP(params.bounds);
   window()->Show();
 }
 
@@ -86,18 +156,6 @@
 
 void DesktopWindowTreeHostPlatform::OnActiveWindowChanged(bool active) {}
 
-base::Optional<gfx::Size>
-DesktopWindowTreeHostPlatform::GetMinimumSizeForWindow() {
-  return ToPixelRect(gfx::Rect(native_widget_delegate()->GetMinimumSize()))
-      .size();
-}
-
-base::Optional<gfx::Size>
-DesktopWindowTreeHostPlatform::GetMaximumSizeForWindow() {
-  return ToPixelRect(gfx::Rect(native_widget_delegate()->GetMaximumSize()))
-      .size();
-}
-
 std::unique_ptr<corewm::Tooltip>
 DesktopWindowTreeHostPlatform::CreateTooltip() {
   return std::make_unique<corewm::TooltipAura>();
@@ -479,6 +537,19 @@
   return true;
 }
 
+gfx::Transform DesktopWindowTreeHostPlatform::GetRootTransform() const {
+  display::Display display = display::Screen::GetScreen()->GetPrimaryDisplay();
+  if (IsVisible()) {
+    display = display::Screen::GetScreen()->GetDisplayNearestWindow(
+        GetWidget()->GetNativeWindow());
+  }
+
+  float scale = display.device_scale_factor();
+  gfx::Transform transform;
+  transform.Scale(scale, scale);
+  return transform;
+}
+
 void DesktopWindowTreeHostPlatform::DispatchEvent(ui::Event* event) {
 #if defined(USE_OZONE)
   // Make sure the |event| is marked as a non-client if it's a non-client
@@ -537,72 +608,36 @@
   desktop_native_widget_aura_->HandleActivationChanged(active);
 }
 
-ui::PlatformWindowInitProperties
-DesktopWindowTreeHostPlatform::ConvertWidgetInitParamsToInitProperties(
-    const Widget::InitParams& params) {
-  ui::PlatformWindowInitProperties properties;
+base::Optional<gfx::Size>
+DesktopWindowTreeHostPlatform::GetMinimumSizeForWindow() {
+  return ToPixelRect(gfx::Rect(native_widget_delegate()->GetMinimumSize()))
+      .size();
+}
 
-  switch (params.type) {
-    case Widget::InitParams::TYPE_WINDOW:
-      properties.type = ui::PlatformWindowType::kWindow;
-      break;
-
-    case Widget::InitParams::TYPE_MENU:
-      properties.type = ui::PlatformWindowType::kMenu;
-      break;
-
-    case Widget::InitParams::TYPE_TOOLTIP:
-      properties.type = ui::PlatformWindowType::kTooltip;
-      break;
-
-    case Widget::InitParams::TYPE_DRAG:
-      properties.type = ui::PlatformWindowType::kDrag;
-      break;
-
-    case Widget::InitParams::TYPE_BUBBLE:
-      properties.type = ui::PlatformWindowType::kBubble;
-      break;
-
-    default:
-      properties.type = ui::PlatformWindowType::kPopup;
-      break;
-  }
-
-  properties.bounds = params.bounds;
-  properties.activatable =
-      params.activatable == Widget::InitParams::ACTIVATABLE_YES;
-  properties.force_show_in_taskbar = params.force_show_in_taskbar;
-  properties.keep_on_top =
-      params.EffectiveZOrderLevel() != ui::ZOrderLevel::kNormal;
-  properties.visible_on_all_workspaces = params.visible_on_all_workspaces;
-  properties.remove_standard_frame = params.remove_standard_frame;
-  properties.workspace = params.workspace;
-  properties.wm_class_name = params.wm_class_name;
-  properties.wm_class_class = params.wm_class_class;
-  properties.wm_role_name = params.wm_role_name;
-
-  if (params.parent && params.parent->GetHost())
-    properties.parent_widget = params.parent->GetHost()->GetAcceleratedWidget();
-
-  switch (params.opacity) {
-    case Widget::InitParams::WindowOpacity::INFER_OPACITY:
-      properties.opacity = ui::PlatformWindowOpacity::kInferOpacity;
-      break;
-    case Widget::InitParams::WindowOpacity::OPAQUE_WINDOW:
-      properties.opacity = ui::PlatformWindowOpacity::kOpaqueWindow;
-      break;
-    case Widget::InitParams::WindowOpacity::TRANSLUCENT_WINDOW:
-      properties.opacity = ui::PlatformWindowOpacity::kTranslucentWindow;
-      break;
-  }
-
-  return properties;
+base::Optional<gfx::Size>
+DesktopWindowTreeHostPlatform::GetMaximumSizeForWindow() {
+  return ToPixelRect(gfx::Rect(native_widget_delegate()->GetMaximumSize()))
+      .size();
 }
 
 aura::Window* DesktopWindowTreeHostPlatform::content_window() {
   return desktop_native_widget_aura_->content_window();
 }
 
+gfx::Rect DesktopWindowTreeHostPlatform::ToDIPRect(
+    const gfx::Rect& rect_in_pixels) const {
+  gfx::RectF rect_in_dip = gfx::RectF(rect_in_pixels);
+  GetRootTransform().TransformRectReverse(&rect_in_dip);
+  return gfx::ToEnclosingRect(rect_in_dip);
+}
+
+gfx::Rect DesktopWindowTreeHostPlatform::ToPixelRect(
+    const gfx::Rect& rect_in_dip) const {
+  gfx::RectF rect_in_pixels = gfx::RectF(rect_in_dip);
+  GetRootTransform().TransformRect(&rect_in_pixels);
+  return gfx::ToEnclosingRect(rect_in_pixels);
+}
+
 void DesktopWindowTreeHostPlatform::Relayout() {
   Widget* widget = native_widget_delegate_->AsWidget();
   NonClientView* non_client_view = widget->non_client_view();
@@ -627,19 +662,13 @@
   return native_widget_delegate_->AsWidget();
 }
 
-gfx::Rect DesktopWindowTreeHostPlatform::ToDIPRect(
-    const gfx::Rect& rect_in_pixels) const {
-  gfx::RectF rect_in_dip = gfx::RectF(rect_in_pixels);
-  GetRootTransform().TransformRectReverse(&rect_in_dip);
-  return gfx::ToEnclosingRect(rect_in_dip);
+const Widget* DesktopWindowTreeHostPlatform::GetWidget() const {
+  return native_widget_delegate_->AsWidget();
 }
 
-gfx::Rect DesktopWindowTreeHostPlatform::ToPixelRect(
-    const gfx::Rect& rect_in_dip) const {
-  gfx::RectF rect_in_pixels = gfx::RectF(rect_in_dip);
-  GetRootTransform().TransformRect(&rect_in_pixels);
-  return gfx::ToEnclosingRect(rect_in_pixels);
-}
+void DesktopWindowTreeHostPlatform::AddAdditionalInitProperties(
+    const Widget::InitParams& params,
+    ui::PlatformWindowInitProperties* properties) {}
 
 ////////////////////////////////////////////////////////////////////////////////
 // DesktopWindowTreeHost:
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h
index f3f9ace..00ff41a21 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h
@@ -90,6 +90,9 @@
   bool ShouldUseDesktopNativeCursorManager() const override;
   bool ShouldCreateVisibilityController() const override;
 
+  // WindowTreeHost:
+  gfx::Transform GetRootTransform() const override;
+
   // PlatformWindowDelegateBase:
   void DispatchEvent(ui::Event* event) override;
   void OnClosed() override;
@@ -100,11 +103,8 @@
   base::Optional<gfx::Size> GetMaximumSizeForWindow() override;
 
  protected:
-  // TODO(https://crbug.com/990756): move this back to unnamed namespace, when
-  // DWTHX11 stops initialization of the PlatformWindow. Also, remove these
-  // accessor methods.
-  ui::PlatformWindowInitProperties ConvertWidgetInitParamsToInitProperties(
-      const Widget::InitParams& params);
+  // TODO(https://crbug.com/990756): move these methods back to private
+  // once DWTHX11 stops using them.
   internal::NativeWidgetDelegate* native_widget_delegate() {
     return native_widget_delegate_;
   }
@@ -114,6 +114,11 @@
   // Accessor for DesktopNativeWidgetAura::content_window().
   aura::Window* content_window();
 
+  // These are not general purpose methods and must be used with care. Please
+  // make sure you understand the rounding direction before using.
+  gfx::Rect ToDIPRect(const gfx::Rect& rect_in_pixels) const;
+  gfx::Rect ToPixelRect(const gfx::Rect& rect_in_dip) const;
+
  private:
   FRIEND_TEST_ALL_PREFIXES(DesktopWindowTreeHostPlatformTest, HitTest);
 
@@ -122,9 +127,12 @@
   void RemoveNonClientEventFilter();
 
   Widget* GetWidget();
+  const Widget* GetWidget() const;
 
-  gfx::Rect ToDIPRect(const gfx::Rect& rect_in_pixels) const;
-  gfx::Rect ToPixelRect(const gfx::Rect& rect_in_dip) const;
+  // There are platform specific properties that Linux may want to add.
+  virtual void AddAdditionalInitProperties(
+      const Widget::InitParams& params,
+      ui::PlatformWindowInitProperties* properties);
 
   internal::NativeWidgetDelegate* const native_widget_delegate_;
   DesktopNativeWidgetAura* const desktop_native_widget_aura_;
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
index 312df3e9..ab974862 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
@@ -53,10 +53,8 @@
 #include "ui/gfx/path_x11.h"
 #include "ui/gfx/x/x11.h"
 #include "ui/gfx/x/x11_atom_cache.h"
-#include "ui/platform_window/x11/x11_window.h"
 #include "ui/views/corewm/tooltip_aura.h"
 #include "ui/views/linux_ui/linux_ui.h"
-#include "ui/views/views_delegate.h"
 #include "ui/views/views_switches.h"
 #include "ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.h"
 #include "ui/views/widget/desktop_aura/desktop_native_cursor_manager.h"
@@ -155,9 +153,8 @@
 DesktopWindowTreeHostX11::DesktopWindowTreeHostX11(
     internal::NativeWidgetDelegate* native_widget_delegate,
     DesktopNativeWidgetAura* desktop_native_widget_aura)
-    : DesktopWindowTreeHostPlatform(native_widget_delegate,
-                                    desktop_native_widget_aura),
-      x11_window_(std::make_unique<ui::X11Window>(this, this)) {}
+    : DesktopWindowTreeHostLinux(native_widget_delegate,
+                                 desktop_native_widget_aura) {}
 
 DesktopWindowTreeHostX11::~DesktopWindowTreeHostX11() {
   window()->ClearProperty(kHostForRootWindow);
@@ -189,15 +186,15 @@
 }
 
 gfx::Rect DesktopWindowTreeHostX11::GetX11RootWindowBounds() const {
-  return x11_window_->bounds();
+  return GetBoundsInPixels();
 }
 
 gfx::Rect DesktopWindowTreeHostX11::GetX11RootWindowOuterBounds() const {
-  return x11_window_->GetOutterBounds();
+  return GetXWindow()->GetOutterBounds();
 }
 
 ::Region DesktopWindowTreeHostX11::GetWindowShape() const {
-  return x11_window_->shape();
+  return GetXWindow()->shape();
 }
 
 void DesktopWindowTreeHostX11::AddObserver(
@@ -230,9 +227,9 @@
   if (!open_windows_)
     return;
   while (!open_windows_->empty()) {
-    XID xid = open_windows_->front();
-    func(GetContentWindowForXID(xid));
-    if (!open_windows_->empty() && open_windows_->front() == xid)
+    gfx::AcceleratedWidget widget = open_windows_->front();
+    func(GetContentWindowForXID(widget));
+    if (!open_windows_->empty() && open_windows_->front() == widget)
       open_windows_->erase(open_windows_->begin());
   }
 
@@ -244,12 +241,34 @@
 // DesktopWindowTreeHostX11, DesktopWindowTreeHost implementation:
 
 void DesktopWindowTreeHostX11::Init(const Widget::InitParams& params) {
-  if (params.type == Widget::InitParams::TYPE_WINDOW)
-    content_window()->SetProperty(aura::client::kAnimationsDisabledKey, true);
+  // If we have a parent, record the parent/child relationship. We use this
+  // data during destruction to make sure that when we try to close a parent
+  // window, we also destroy all child windows.
+  if (params.parent && params.parent->GetHost()) {
+    window_parent_ =
+        static_cast<DesktopWindowTreeHostX11*>(params.parent->GetHost());
+    DCHECK(window_parent_);
+    window_parent_->window_children_.insert(this);
+  }
 
-  InitX11Window(params);
-  InitHost();
-  window()->Show();
+  DesktopWindowTreeHostPlatform::Init(params);
+
+  // Set XEventDelegate to receive selection, drag&drop and raw key events.
+  //
+  // TODO(https://crbug.com/990756): There are two cases of this delegate:
+  // XEvents for DragAndDrop client and raw key events. DragAndDrop could be
+  // unified so that DragAndrDropClientOzone is used and XEvent are handled on
+  // platform level.
+  static_cast<ui::X11Window*>(platform_window())->SetXEventDelegate(this);
+
+  // Can it be unified and will Ozone benefit from this? Check comment above
+  // where this class is defined and declared.
+  if (ui::IsSyncExtensionAvailable()) {
+    compositor_observer_ = std::make_unique<SwapWithNewSizeObserverHelper>(
+        compositor(), base::BindRepeating(
+                          &DesktopWindowTreeHostX11::OnCompleteSwapWithNewSize,
+                          base::Unretained(this)));
+  }
 }
 
 void DesktopWindowTreeHostX11::OnNativeWidgetCreated(
@@ -284,8 +303,9 @@
 std::unique_ptr<aura::client::DragDropClient>
 DesktopWindowTreeHostX11::CreateDragDropClient(
     DesktopNativeCursorManager* cursor_manager) {
-  drag_drop_client_ = new DesktopDragDropClientAuraX11(
-      window(), cursor_manager, x11_window_->display(), x11_window_->window());
+  drag_drop_client_ = new DesktopDragDropClientAuraX11(window(), cursor_manager,
+                                                       GetXWindow()->display(),
+                                                       GetXWindow()->window());
   drag_drop_client_->Init();
   return base::WrapUnique(drag_drop_client_);
 }
@@ -294,7 +314,7 @@
   content_window()->Hide();
 
   // TODO(erg): Might need to do additional hiding tasks here.
-  x11_window_->CancelResize();
+  GetXWindow()->CancelResize();
 
   if (!close_widget_factory_.HasWeakPtrs()) {
     // And we delay the close so that if we are called from an ATL callback,
@@ -308,9 +328,9 @@
 }
 
 void DesktopWindowTreeHostX11::CloseNow() {
-  if (x11_window_->window() == x11::None)
+  if (GetXWindow()->window() == x11::None)
     return;
-  x11_window_->PrepareForShutdown();
+  platform_window()->PrepareForShutdown();
 
   ReleaseCapture();
   RemoveNonClientEventFilter();
@@ -334,9 +354,9 @@
   // causes a crash with in-process renderer.
   DestroyCompositor();
 
-  open_windows().remove(x11_window_->window());
+  open_windows().remove(GetAcceleratedWidget());
 
-  x11_window_->Close();
+  platform_window()->Close();
 }
 
 aura::WindowTreeHost* DesktopWindowTreeHostX11::AsWindowTreeHost() {
@@ -348,7 +368,7 @@
   if (compositor())
     SetVisible(true);
 
-  if (!x11_window_->mapped_in_client() || IsMinimized())
+  if (!GetXWindow()->mapped_in_client() || IsMinimized())
     MapWindow(show_state);
 
   switch (show_state) {
@@ -376,16 +396,16 @@
 }
 
 bool DesktopWindowTreeHostX11::IsVisible() const {
-  return x11_window_->IsVisible();
+  return platform_window() ? GetXWindow()->IsVisible() : false;
 }
 
 void DesktopWindowTreeHostX11::SetSize(const gfx::Size& requested_size) {
   gfx::Size size_in_pixels = ToPixelRect(gfx::Rect(requested_size)).size();
-  size_in_pixels = AdjustSize(size_in_pixels);
+  size_in_pixels = AdjustSizeForDisplay(size_in_pixels);
 
-  bool size_changed = x11_window_->bounds().size() != size_in_pixels;
+  bool size_changed = GetBoundsInPixels().size() != size_in_pixels;
 
-  x11_window_->SetSize(size_in_pixels);
+  GetXWindow()->SetSize(size_in_pixels);
 
   if (size_changed) {
     OnHostResizedInPixels(size_in_pixels);
@@ -394,8 +414,8 @@
 }
 
 void DesktopWindowTreeHostX11::StackAbove(aura::Window* window) {
-  XDisplay* display = x11_window_->display();
-  ::Window xwindow = x11_window_->window();
+  XDisplay* display = GetXWindow()->display();
+  ::Window xwindow = GetXWindow()->window();
 
   if (window && window->GetRootWindow()) {
     ::Window window_below = window->GetHost()->GetAcceleratedWidget();
@@ -428,7 +448,7 @@
 }
 
 void DesktopWindowTreeHostX11::StackAtTop() {
-  x11_window_->StackAtTop();
+  GetXWindow()->StackAtTop();
 }
 
 void DesktopWindowTreeHostX11::CenterWindow(const gfx::Size& size) {
@@ -478,8 +498,7 @@
 }
 
 gfx::Rect DesktopWindowTreeHostX11::GetWindowBoundsInScreen() const {
-  gfx::Rect bounds_in_pixels = x11_window_->bounds();
-  return ToDIPRect(bounds_in_pixels);
+  return ToDIPRect(GetBoundsInPixels());
 }
 
 gfx::Rect DesktopWindowTreeHostX11::GetClientAreaBoundsInScreen() const {
@@ -506,7 +525,7 @@
 }
 
 std::string DesktopWindowTreeHostX11::GetWorkspace() const {
-  base::Optional<int> workspace = x11_window_->workspace();
+  base::Optional<int> workspace = GetXWindow()->workspace();
   return workspace ? base::NumberToString(workspace.value()) : std::string();
 }
 
@@ -537,37 +556,37 @@
       xregion = gfx::CreateRegionFromSkRegion(native_region);
     }
   }
-  x11_window_->SetShape(xregion);
+  GetXWindow()->SetShape(xregion);
   ResetWindowRegion();
 }
 
 void DesktopWindowTreeHostX11::Activate() {
-  x11_window_->Activate();
+  GetXWindow()->Activate();
 }
 
 void DesktopWindowTreeHostX11::Deactivate() {
   ReleaseCapture();
-  x11_window_->Deactivate();
+  GetXWindow()->Deactivate();
 }
 
 bool DesktopWindowTreeHostX11::IsActive() const {
-  return x11_window_->IsActive();
+  return GetXWindow()->IsActive();
 }
 
 void DesktopWindowTreeHostX11::Maximize() {
   // TODO(nickdiego): Move into XWindow. For now, it is kept outside
-  // it due to |AdjustSize|, which depends on display::Display, which is not
-  // accessible at Ozone layer.
-  if (x11_window_->IsFullscreen()) {
+  // it due to |AdjustSizeForDisplay|, which depends on display::Display, which
+  // is not accessible at Ozone layer.
+  if (GetXWindow()->IsFullscreen()) {
     // Unfullscreen the window if it is fullscreen.
-    x11_window_->SetFullscreen(false);
+    GetXWindow()->SetFullscreen(false);
 
     // Resize the window so that it does not have the same size as a monitor.
     // (Otherwise, some window managers immediately put the window back in
     // fullscreen mode).
-    gfx::Rect bounds = x11_window_->bounds();
+    gfx::Rect bounds = GetBoundsInPixels();
     gfx::Rect adjusted_bounds_in_pixels(bounds.origin(),
-                                        AdjustSize(bounds.size()));
+                                        AdjustSizeForDisplay(bounds.size()));
     if (adjusted_bounds_in_pixels != bounds)
       SetBoundsInPixels(adjusted_bounds_in_pixels);
   }
@@ -575,30 +594,30 @@
   // When we are in the process of requesting to maximize a window, we can
   // accurately keep track of our restored bounds instead of relying on the
   // heuristics that are in the PropertyNotify and ConfigureNotify handlers.
-  restored_bounds_in_pixels_ = x11_window_->bounds();
+  restored_bounds_in_pixels_ = GetBoundsInPixels();
 
-  x11_window_->Maximize();
+  GetXWindow()->Maximize();
   if (IsMinimized())
     Show(ui::SHOW_STATE_NORMAL, gfx::Rect());
 }
 
 void DesktopWindowTreeHostX11::Minimize() {
   ReleaseCapture();
-  x11_window_->Minimize();
+  GetXWindow()->Minimize();
 }
 
 void DesktopWindowTreeHostX11::Restore() {
-  x11_window_->Unmaximize();
+  GetXWindow()->Unmaximize();
   Show(ui::SHOW_STATE_NORMAL, gfx::Rect());
-  x11_window_->Unhide();
+  GetXWindow()->Unhide();
 }
 
 bool DesktopWindowTreeHostX11::IsMaximized() const {
-  return x11_window_->IsMaximized();
+  return GetXWindow()->IsMaximized();
 }
 
 bool DesktopWindowTreeHostX11::IsMinimized() const {
-  return x11_window_->IsMinimized();
+  return GetXWindow()->IsMinimized();
 }
 
 bool DesktopWindowTreeHostX11::HasCapture() const {
@@ -611,11 +630,11 @@
   // Emulate the multiple window levels provided by other platforms by
   // collapsing the z-order enum into kNormal = normal, everything else = always
   // on top.
-  x11_window_->SetAlwaysOnTop(order != ui::ZOrderLevel::kNormal);
+  GetXWindow()->SetAlwaysOnTop(order != ui::ZOrderLevel::kNormal);
 }
 
 ui::ZOrderLevel DesktopWindowTreeHostX11::GetZOrderLevel() const {
-  bool window_always_on_top = x11_window_->is_always_on_top();
+  bool window_always_on_top = GetXWindow()->is_always_on_top();
   bool level_always_on_top = z_order_ != ui::ZOrderLevel::kNormal;
 
   if (window_always_on_top == level_always_on_top)
@@ -639,17 +658,15 @@
 }
 
 void DesktopWindowTreeHostX11::SetVisibleOnAllWorkspaces(bool always_visible) {
-  x11_window_->SetVisibleOnAllWorkspaces(always_visible);
+  GetXWindow()->SetVisibleOnAllWorkspaces(always_visible);
 }
 
 bool DesktopWindowTreeHostX11::IsVisibleOnAllWorkspaces() const {
-  return x11_window_->IsVisibleOnAllWorkspaces();
+  return GetXWindow()->IsVisibleOnAllWorkspaces();
 }
 
 bool DesktopWindowTreeHostX11::SetWindowTitle(const base::string16& title) {
-  auto* x_window = static_cast<ui::XWindow*>(x11_window_.get());
-  DCHECK(x_window);
-  return x_window->SetTitle(title);
+  return GetXWindow()->SetTitle(title);
 }
 
 void DesktopWindowTreeHostX11::ClearNativeFocus() {
@@ -695,11 +712,11 @@
 }
 
 bool DesktopWindowTreeHostX11::ShouldUseNativeFrame() const {
-  return x11_window_->use_native_frame();
+  return GetXWindow()->use_native_frame();
 }
 
 bool DesktopWindowTreeHostX11::ShouldWindowContentsBeTransparent() const {
-  return x11_window_->has_alpha();
+  return GetXWindow()->has_alpha();
 }
 
 void DesktopWindowTreeHostX11::FrameTypeChanged() {
@@ -727,7 +744,7 @@
 
   is_fullscreen_ = fullscreen;
   if (is_fullscreen_)
-    x11_window_->CancelResize();
+    GetXWindow()->CancelResize();
 
   // Work around a bug where if we try to unfullscreen, metacity immediately
   // fullscreens us again. This is a little flickery and not necessary if
@@ -739,7 +756,7 @@
   if (unmaximize_and_remaximize)
     Restore();
 
-  x11_window_->SetFullscreen(fullscreen);
+  GetXWindow()->SetFullscreen(fullscreen);
 
   if (unmaximize_and_remaximize)
     Maximize();
@@ -749,7 +766,7 @@
   // - works around Flash content which expects to have the size updated
   //   synchronously.
   // See https://crbug.com/361408
-  gfx::Rect bounds = x11_window_->bounds();
+  gfx::Rect bounds = GetXWindow()->bounds();
   if (fullscreen) {
     display::Screen* screen = display::Screen::GetScreen();
     const display::Display display = screen->GetDisplayNearestWindow(window());
@@ -758,12 +775,12 @@
   } else {
     bounds = restored_bounds_in_pixels_;
   }
-  x11_window_->set_bounds(bounds);
+  GetXWindow()->set_bounds(bounds);
 
   OnHostMovedInPixels(bounds.origin());
   OnHostResizedInPixels(bounds.size());
 
-  if (x11_window_->IsFullscreen() == fullscreen) {
+  if (GetXWindow()->IsFullscreen() == fullscreen) {
     Relayout();
     ResetWindowRegion();
   }
@@ -776,16 +793,16 @@
 }
 
 void DesktopWindowTreeHostX11::SetOpacity(float opacity) {
-  x11_window_->SetOpacity(opacity);
+  GetXWindow()->SetOpacity(opacity);
 }
 
 void DesktopWindowTreeHostX11::SetAspectRatio(const gfx::SizeF& aspect_ratio) {
-  x11_window_->SetAspectRatio(aspect_ratio);
+  GetXWindow()->SetAspectRatio(aspect_ratio);
 }
 
 void DesktopWindowTreeHostX11::SetWindowIcons(const gfx::ImageSkia& window_icon,
                                               const gfx::ImageSkia& app_icon) {
-  x11_window_->SetWindowIcons(window_icon, app_icon);
+  GetXWindow()->SetWindowIcons(window_icon, app_icon);
 }
 
 void DesktopWindowTreeHostX11::InitModalType(ui::ModalType modal_type) {
@@ -801,7 +818,7 @@
 }
 
 void DesktopWindowTreeHostX11::FlashFrame(bool flash_frame) {
-  x11_window_->FlashFrame(flash_frame);
+  GetXWindow()->FlashFrame(flash_frame);
 }
 
 bool DesktopWindowTreeHostX11::IsAnimatingClosed() const {
@@ -816,7 +833,7 @@
 }
 
 void DesktopWindowTreeHostX11::SizeConstraintsChanged() {
-  x11_window_->UpdateMinAndMaxSize();
+  GetXWindow()->UpdateMinAndMaxSize();
 }
 
 bool DesktopWindowTreeHostX11::ShouldUpdateWindowTransparency() const {
@@ -832,63 +849,45 @@
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-// DesktopWindowTreeHostX11, aura::WindowTreeHost implementation:
-
-gfx::Transform DesktopWindowTreeHostX11::GetRootTransform() const {
-  display::Display display = display::Screen::GetScreen()->GetPrimaryDisplay();
-  if (IsVisible()) {
-    aura::Window* win = const_cast<aura::Window*>(window());
-    display = display::Screen::GetScreen()->GetDisplayNearestWindow(win);
-  }
-
-  float scale = display.device_scale_factor();
-  gfx::Transform transform;
-  transform.Scale(scale, scale);
-  return transform;
-}
+// DesktopWindowTreeHostX11, aura::WindowTreeHost implementatio
 
 ui::EventSource* DesktopWindowTreeHostX11::GetEventSource() {
   return this;
 }
 
-gfx::AcceleratedWidget DesktopWindowTreeHostX11::GetAcceleratedWidget() {
-  return x11_window_->window();
-}
-
 void DesktopWindowTreeHostX11::ShowImpl() {
   Show(ui::SHOW_STATE_NORMAL, gfx::Rect());
 }
 
 void DesktopWindowTreeHostX11::HideImpl() {
-  auto* x_window = static_cast<ui::XWindow*>(x11_window_.get());
-  DCHECK(x_window);
-  if (x_window->Hide())
+  if (GetXWindow()->Hide())
     SetVisible(false);
 }
 
 gfx::Rect DesktopWindowTreeHostX11::GetBoundsInPixels() const {
-  return x11_window_->bounds();
+  return GetXWindow()->bounds();
 }
 
 void DesktopWindowTreeHostX11::SetBoundsInPixels(
     const gfx::Rect& requested_bounds_in_pixel) {
-  gfx::Rect bounds = x11_window_->bounds();
-  gfx::Rect bounds_in_pixels(requested_bounds_in_pixel.origin(),
-                             AdjustSize(requested_bounds_in_pixel.size()));
+  gfx::Rect bounds = GetXWindow()->bounds();
+  gfx::Rect bounds_in_pixels(
+      requested_bounds_in_pixel.origin(),
+      AdjustSizeForDisplay(requested_bounds_in_pixel.size()));
 
   bool size_changed = bounds.size() != bounds_in_pixels.size();
 
   if (size_changed) {
     // Only cancel the delayed resize task if we're already about to call
     // OnHostResized in this function.
-    x11_window_->CancelResize();
+    GetXWindow()->CancelResize();
   }
 
-  x11_window_->SetBounds(bounds_in_pixels);
+  platform_window()->SetBounds(bounds_in_pixels);
 }
 
 gfx::Point DesktopWindowTreeHostX11::GetLocationOnScreenInPixels() const {
-  return x11_window_->bounds().origin();
+  return GetXWindow()->bounds().origin();
 }
 
 void DesktopWindowTreeHostX11::SetCapture() {
@@ -910,7 +909,7 @@
   if (old_capturer)
     old_capturer->OnHostLostWindowCapture();
 
-  x11_window_->GrabPointer();
+  GetXWindow()->GrabPointer();
 }
 
 void DesktopWindowTreeHostX11::ReleaseCapture() {
@@ -919,7 +918,7 @@
     // the topmost window underneath the mouse so the capture release being
     // asynchronous is likely inconsequential.
     g_current_capture = nullptr;
-    x11_window_->ReleasePointerGrab();
+    GetXWindow()->ReleasePointerGrab();
 
     OnHostLostWindowCapture();
   }
@@ -948,12 +947,12 @@
 }
 
 void DesktopWindowTreeHostX11::SetCursorNative(gfx::NativeCursor cursor) {
-  x11_window_->SetCursor(cursor.platform());
+  GetXWindow()->SetCursor(cursor.platform());
 }
 
 void DesktopWindowTreeHostX11::MoveCursorToScreenLocationInPixels(
     const gfx::Point& location_in_pixels) {
-  x11_window_->MoveCursorTo(location_in_pixels);
+  GetXWindow()->MoveCursorTo(location_in_pixels);
 }
 
 void DesktopWindowTreeHostX11::OnCursorVisibilityChangedNative(bool show) {
@@ -977,92 +976,21 @@
     // compositor redraw will be scheduled.  This is weird, but works.
     // TODO(thomasanderson): Figure out a more direct way of doing
     // this.
-    x11_window_->DispatchResize();
+    GetXWindow()->DispatchResize();
   }
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 // DesktopWindowTreeHostX11, private:
 
-void DesktopWindowTreeHostX11::InitX11Window(const Widget::InitParams& params) {
-  // Disable compositing on tooltips as a workaround for
-  // https://crbug.com/442111.
-  CreateCompositor(viz::FrameSinkId(),
-                   params.force_software_compositing ||
-                       params.type == Widget::InitParams::TYPE_TOOLTIP);
-
-  // Calculate initial bounds
-  gfx::Rect bounds_in_pixels = ToPixelRect(params.bounds);
-  gfx::Size adjusted_size = AdjustSize(bounds_in_pixels.size());
-  bounds_in_pixels.set_size(adjusted_size);
-
-  // Set the background color on startup to make the initial flickering
-  // happening between the XWindow is mapped and the first expose event
-  // is completely handled less annoying. If possible, we use the content
-  // window's background color, otherwise we fallback to white.
-  base::Optional<int> background_color;
-  const views::LinuxUI* linux_ui = views::LinuxUI::instance();
-  if (linux_ui && content_window()) {
-    ui::NativeTheme::ColorId target_color;
-    switch (params.type) {
-      case Widget::InitParams::TYPE_BUBBLE:
-        target_color = ui::NativeTheme::kColorId_BubbleBackground;
-        break;
-      case Widget::InitParams::TYPE_TOOLTIP:
-        target_color = ui::NativeTheme::kColorId_TooltipBackground;
-        break;
-      default:
-        target_color = ui::NativeTheme::kColorId_WindowBackground;
-        break;
-    }
-    ui::NativeTheme* theme = linux_ui->GetNativeTheme(content_window());
-    background_color = theme->GetSystemColor(target_color);
-  }
-
-  // Create PlatformWindowInitProperties and initialize it
-  ui::PlatformWindowInitProperties properties =
-      ConvertWidgetInitParamsToInitProperties(params);
-  properties.bounds = bounds_in_pixels;
-  properties.background_color = background_color;
-  properties.prefer_dark_theme = linux_ui && linux_ui->PreferDarkTheme();
-  properties.icon = ViewsDelegate::GetInstance()->GetDefaultWindowIcon();
-  x11_window_->Initialize(std::move(properties));
-
-  if (ui::IsSyncExtensionAvailable()) {
-    compositor_observer_ = std::make_unique<SwapWithNewSizeObserverHelper>(
-        compositor(), base::BindRepeating(
-                          &DesktopWindowTreeHostX11::OnCompleteSwapWithNewSize,
-                          base::Unretained(this)));
-  }
-}
-
 void DesktopWindowTreeHostX11::DispatchHostWindowDragMovement(
     int hittest,
     const gfx::Point& pointer_location) {
-  x11_window_->WmMoveResize(hittest, pointer_location);
-}
-
-gfx::Size DesktopWindowTreeHostX11::AdjustSize(
-    const gfx::Size& requested_size_in_pixels) {
-  std::vector<display::Display> displays =
-      display::Screen::GetScreen()->GetAllDisplays();
-  // Compare against all monitor sizes. The window manager can move the window
-  // to whichever monitor it wants.
-  for (const auto& display : displays) {
-    if (requested_size_in_pixels == display.GetSizeInPixel()) {
-      return gfx::Size(requested_size_in_pixels.width() - 1,
-                       requested_size_in_pixels.height() - 1);
-    }
-  }
-
-  // Do not request a 0x0 window size. It causes an XError.
-  gfx::Size size_in_pixels = requested_size_in_pixels;
-  size_in_pixels.SetToMax(gfx::Size(1, 1));
-  return size_in_pixels;
+  GetXWindow()->WmMoveResize(hittest, pointer_location);
 }
 
 void DesktopWindowTreeHostX11::SetUseNativeFrame(bool use_native_frame) {
-  x11_window_->SetUseNativeFrame(use_native_frame);
+  GetXWindow()->SetUseNativeFrame(use_native_frame);
   ResetWindowRegion();
 }
 
@@ -1134,25 +1062,25 @@
 
 void DesktopWindowTreeHostX11::ResetWindowRegion() {
   _XRegion* xregion = nullptr;
-  if (!x11_window_->use_custom_shape() && !IsMaximized() && !IsFullscreen()) {
+  if (!GetXWindow()->use_custom_shape() && !IsMaximized() && !IsFullscreen()) {
     SkPath window_mask;
     Widget* widget = native_widget_delegate()->AsWidget();
     if (widget->non_client_view()) {
       // Some frame views define a custom (non-rectangular) window mask. If
       // so, use it to define the window shape. If not, fall through.
-      widget->non_client_view()->GetWindowMask(x11_window_->bounds().size(),
+      widget->non_client_view()->GetWindowMask(GetXWindow()->bounds().size(),
                                                &window_mask);
       if (window_mask.countPoints() > 0) {
         xregion = gfx::CreateRegionFromSkPath(window_mask);
       }
     }
   }
-  x11_window_->UpdateWindowRegion(xregion);
+  GetXWindow()->UpdateWindowRegion(xregion);
 }
 
-std::list<XID>& DesktopWindowTreeHostX11::open_windows() {
+std::list<gfx::AcceleratedWidget>& DesktopWindowTreeHostX11::open_windows() {
   if (!open_windows_)
-    open_windows_ = new std::list<XID>();
+    open_windows_ = new std::list<gfx::AcceleratedWidget>();
   return *open_windows_;
 }
 
@@ -1170,11 +1098,11 @@
   // http://standards.freedesktop.org/wm-spec/latest/ar01s05.html
   bool inactive = show_state == ui::SHOW_STATE_INACTIVE;
 
-  x11_window_->Map(inactive);
+  GetXWindow()->Map(inactive);
 }
 
 void DesktopWindowTreeHostX11::SetWindowTransparency() {
-  bool has_alpha = x11_window_->has_alpha();
+  bool has_alpha = GetXWindow()->has_alpha();
   compositor()->SetBackgroundColor(has_alpha ? SK_ColorTRANSPARENT
                                              : SK_ColorWHITE);
   window()->SetTransparent(has_alpha);
@@ -1202,20 +1130,6 @@
   native_widget_delegate()->AsWidget()->non_client_view()->UpdateFrame();
 }
 
-gfx::Rect DesktopWindowTreeHostX11::ToDIPRect(
-    const gfx::Rect& rect_in_pixels) const {
-  gfx::RectF rect_in_dip = gfx::RectF(rect_in_pixels);
-  GetRootTransform().TransformRectReverse(&rect_in_dip);
-  return gfx::ToEnclosingRect(rect_in_dip);
-}
-
-gfx::Rect DesktopWindowTreeHostX11::ToPixelRect(
-    const gfx::Rect& rect_in_dip) const {
-  gfx::RectF rect_in_pixels = gfx::RectF(rect_in_dip);
-  GetRootTransform().TransformRect(&rect_in_pixels);
-  return gfx::ToEnclosingRect(rect_in_pixels);
-}
-
 base::OnceClosure DesktopWindowTreeHostX11::DisableEventListening() {
   // Allows to open multiple file-pickers. See https://crbug.com/678982
   modal_dialog_counter_++;
@@ -1238,7 +1152,7 @@
 
 void DesktopWindowTreeHostX11::OnCompleteSwapWithNewSize(
     const gfx::Size& size) {
-  x11_window_->NotifySwapAfterResize();
+  GetXWindow()->NotifySwapAfterResize();
 }
 
 base::flat_map<std::string, std::string>
@@ -1249,8 +1163,8 @@
 }
 
 void DesktopWindowTreeHostX11::SetVisualId(VisualID visual_id) {
-  DCHECK_EQ(x11_window_->window(), x11::None);
-  x11_window_->set_visual_id(visual_id);
+  DCHECK_EQ(GetXWindow()->window(), x11::None);
+  GetXWindow()->set_visual_id(visual_id);
 }
 
 void DesktopWindowTreeHostX11::OnBoundsChanged(const gfx::Rect& new_bounds) {
@@ -1275,7 +1189,7 @@
 
 void DesktopWindowTreeHostX11::OnWindowStateChanged(
     ui::PlatformWindowState new_state) {
-  bool was_minimized = x11_window_->was_minimized();
+  bool was_minimized = GetXWindow()->was_minimized();
   bool is_minimized = IsMinimized();
 
   // Propagate the window minimization information to the content window, so
@@ -1307,7 +1221,7 @@
       // a best effort attempt to get restored bounds by setting it to our
       // previously set bounds (and if we get this wrong, we aren't any worse
       // off since we'd otherwise be returning our maximized bounds).
-      restored_bounds_in_pixels_ = x11_window_->previous_bounds();
+      restored_bounds_in_pixels_ = GetXWindow()->previous_bounds();
     }
   } else if (!IsMaximized() && !IsFullscreen()) {
     // If we have restored bounds, but WM_STATE no longer claims to be
@@ -1324,8 +1238,8 @@
 
 void DesktopWindowTreeHostX11::OnAcceleratedWidgetAvailable(
     gfx::AcceleratedWidget widget) {
-  open_windows().push_front(x11_window_->window());
-  WindowTreeHost::OnAcceleratedWidgetAvailable();
+  open_windows().push_front(widget);
+  WindowTreeHostPlatform::OnAcceleratedWidgetAvailable(widget);
 }
 
 void DesktopWindowTreeHostX11::OnAcceleratedWidgetDestroyed() {}
@@ -1334,9 +1248,9 @@
   if (active) {
     // TODO(thomasanderson): Remove this window shuffling and use XWindowCache
     // instead.
-    ::Window xwindow = x11_window_->window();
-    open_windows().remove(xwindow);
-    open_windows().insert(open_windows().begin(), xwindow);
+    auto widget = GetAcceleratedWidget();
+    open_windows().remove(widget);
+    open_windows().insert(open_windows().begin(), widget);
   }
   desktop_native_widget_aura()->HandleActivationChanged(active);
   native_widget_delegate()->AsWidget()->GetRootView()->SchedulePaint();
@@ -1344,12 +1258,12 @@
 
 void DesktopWindowTreeHostX11::OnXWindowMapped() {
   for (DesktopWindowTreeHostObserverX11& observer : observer_list_)
-    observer.OnWindowMapped(x11_window_->window());
+    observer.OnWindowMapped(GetXWindow()->window());
 }
 
 void DesktopWindowTreeHostX11::OnXWindowUnmapped() {
   for (DesktopWindowTreeHostObserverX11& observer : observer_list_)
-    observer.OnWindowUnmapped(x11_window_->window());
+    observer.OnWindowUnmapped(GetXWindow()->window());
 }
 
 void DesktopWindowTreeHostX11::OnLostMouseGrab() {
@@ -1412,6 +1326,20 @@
   }
 }
 
+ui::XWindow* DesktopWindowTreeHostX11::GetXWindow() {
+  DCHECK(platform_window());
+  // ui::X11Window inherits both PlatformWindow and ui::XWindow.
+  return static_cast<ui::XWindow*>(
+      static_cast<ui::X11Window*>(platform_window()));
+}
+
+const ui::XWindow* DesktopWindowTreeHostX11::GetXWindow() const {
+  DCHECK(platform_window());
+  // ui::X11Window inherits both PlatformWindow and ui::XWindow.
+  return static_cast<const ui::XWindow*>(
+      static_cast<const ui::X11Window*>(platform_window()));
+}
+
 ////////////////////////////////////////////////////////////////////////////////
 // DesktopWindowTreeHost, public:
 
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h
index 4a9949a..431ac85 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h
@@ -19,7 +19,6 @@
 #include "base/memory/weak_ptr.h"
 #include "base/observer_list.h"
 #include "ui/aura/scoped_window_targeter.h"
-#include "ui/aura/window_tree_host.h"
 #include "ui/gfx/geometry/rect.h"
 #include "ui/gfx/geometry/size.h"
 #include "ui/gfx/x/x11_types.h"
@@ -27,7 +26,7 @@
 #include "ui/platform_window/platform_window_handler/wm_move_resize_handler.h"
 #include "ui/platform_window/x11/x11_window.h"
 #include "ui/views/views_export.h"
-#include "ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h"
+#include "ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h"
 
 namespace gfx {
 class ImageSkia;
@@ -49,10 +48,9 @@
 class X11DesktopWindowMoveClient;
 class WindowEventFilter;
 
-class VIEWS_EXPORT DesktopWindowTreeHostX11
-    : public DesktopWindowTreeHostPlatform,
-      public ui::WmMoveResizeHandler,
-      public ui::XEventDelegate {
+class VIEWS_EXPORT DesktopWindowTreeHostX11 : public DesktopWindowTreeHostLinux,
+                                              public ui::WmMoveResizeHandler,
+                                              public ui::XEventDelegate {
  public:
   DesktopWindowTreeHostX11(
       internal::NativeWidgetDelegate* native_widget_delegate,
@@ -170,9 +168,7 @@
   bool ShouldCreateVisibilityController() const override;
 
   // Overridden from aura::WindowTreeHost:
-  gfx::Transform GetRootTransform() const override;
   ui::EventSource* GetEventSource() override;
-  gfx::AcceleratedWidget GetAcceleratedWidget() override;
   void ShowImpl() override;
   void HideImpl() override;
   gfx::Rect GetBoundsInPixels() const override;
@@ -209,11 +205,6 @@
   // along with all aura client objects that direct behavior.
   aura::WindowEventDispatcher* InitDispatcher(const Widget::InitParams& params);
 
-  // Adjusts |requested_size| to avoid the WM "feature" where setting the
-  // window size to the monitor size causes the WM to set the EWMH for
-  // fullscreen.
-  gfx::Size AdjustSize(const gfx::Size& requested_size);
-
   // Sets whether the window's borders are provided by the window manager.
   void SetUseNativeFrame(bool use_native_frame);
 
@@ -246,9 +237,6 @@
 
   void DelayedChangeFrameType(Widget::FrameType new_type);
 
-  gfx::Rect ToDIPRect(const gfx::Rect& rect_in_pixels) const;
-  gfx::Rect ToPixelRect(const gfx::Rect& rect_in_dip) const;
-
   // Enables event listening after closing |dialog|.
   void EnableEventListening();
 
@@ -280,6 +268,13 @@
   void OnXWindowDragDropEvent(XEvent* xev) override;
   void OnXWindowRawKeyEvent(XEvent* xev) override;
 
+  // Casts PlatformWindow into XWindow and returns the result. This is a temp
+  // solution to access XWindow, which is subclassed by the X11Window, which is
+  // PlatformWindow. This will be removed once we no longer to access XWindow
+  // directly. See https://crbug.com/990756.
+  ui::XWindow* GetXWindow();
+  const ui::XWindow* GetXWindow() const;
+
   // The bounds of our window before we were maximized.
   gfx::Rect restored_bounds_in_pixels_;
 
@@ -309,7 +304,7 @@
 
   // A list of all (top-level) windows that have been created but not yet
   // destroyed.
-  static std::list<XID>* open_windows_;
+  static std::list<gfx::AcceleratedWidget>* open_windows_;
 
   // Cached value for SetVisible.  Not the same as the IsVisible public API.
   bool is_compositor_set_visible_ = false;
@@ -323,8 +318,6 @@
 
   std::unique_ptr<CompositorObserver> compositor_observer_;
 
-  std::unique_ptr<ui::X11Window> x11_window_;
-
   // The display and the native X window hosting the root window.
   base::WeakPtrFactory<DesktopWindowTreeHostX11> close_widget_factory_{this};
   base::WeakPtrFactory<DesktopWindowTreeHostX11> weak_factory_{this};
diff --git a/ui/webui/resources/cr_elements/BUILD.gn b/ui/webui/resources/cr_elements/BUILD.gn
index 5f4ede61..09192e95 100644
--- a/ui/webui/resources/cr_elements/BUILD.gn
+++ b/ui/webui/resources/cr_elements/BUILD.gn
@@ -4,6 +4,7 @@
 
 import("//third_party/closure_compiler/compile_js.gni")
 import("//tools/polymer/polymer.gni")
+import("//ui/webui/resources/tools/js_modulizer.gni")
 
 group("closure_compile") {
   deps = [
@@ -29,13 +30,16 @@
     "policy:closure_compile",
 
     # Targets for auto-generated Polymer 3 JS Modules
+    ":cr_elements_module_resources",
     "cr_button:closure_compile_module",
     "cr_checkbox:closure_compile_module",
+    "cr_dialog:closure_compile_module",
     "cr_drawer:closure_compile_module",
     "cr_icon_button:closure_compile_module",
     "cr_input:closure_compile_module",
     "cr_radio_button:closure_compile_module",
     "cr_radio_group:closure_compile_module",
+    "cr_tabs:closure_compile_module",
     "cr_toast:closure_compile_module",
     "cr_toggle:closure_compile_module",
     "cr_view_manager:closure_compile_module",
@@ -109,16 +113,23 @@
   html_type = "iron-iconset"
 }
 
+js_modulizer("modulize") {
+  input_files = [ "cr_container_shadow_behavior.js" ]
+  deps = []
+}
+
 group("polymer3_elements") {
   deps = [
     ":cr_icons_css_module",
     ":hidden_style_css_module",
     ":icons_module",
     ":md_select_css_module",
+    ":modulize",
     ":shared_style_css_module",
     ":shared_vars_css_module",
     "cr_button:cr_button_module",
     "cr_checkbox:cr_checkbox_module",
+    "cr_dialog:cr_dialog_module",
     "cr_drawer:cr_drawer_module",
     "cr_icon_button:cr_icon_button_module",
     "cr_input:cr_input_module",
@@ -127,8 +138,25 @@
     "cr_radio_button:cr_radio_button_style_css_module",
     "cr_radio_button:modulize",
     "cr_radio_group:cr_radio_group_module",
+    "cr_tabs:cr_tabs_module",
     "cr_toast:cr_toast_module",
     "cr_toggle:cr_toggle_module",
     "cr_view_manager:cr_view_manager_module",
   ]
 }
+
+js_type_check("cr_elements_module_resources") {
+  deps = [
+    ":cr_container_shadow_behavior.m",
+  ]
+}
+
+js_library("cr_container_shadow_behavior.m") {
+  sources = [
+    "$root_gen_dir/ui/webui/resources/cr_elements/cr_container_shadow_behavior.m.js",
+  ]
+  deps = [
+    "//ui/webui/resources/js:assert.m",
+  ]
+  extra_deps = [ ":modulize" ]
+}
diff --git a/ui/webui/resources/cr_elements/cr_container_shadow_behavior.js b/ui/webui/resources/cr_elements/cr_container_shadow_behavior.js
index 7bfd3a6..c37b2baa 100644
--- a/ui/webui/resources/cr_elements/cr_container_shadow_behavior.js
+++ b/ui/webui/resources/cr_elements/cr_container_shadow_behavior.js
@@ -31,14 +31,18 @@
  * '#cr-container-shadow-[top/bottom].has-shadow', or define their own styles.
  */
 
+// clang-format off
+// #import {assert} from 'chrome://resources/js/assert.m.js'
+// clang-format on
+
 /** @enum {string} */
-const CrContainerShadowSide = {
+/* #export */ const CrContainerShadowSide = {
   TOP: 'top',
   BOTTOM: 'bottom',
 };
 
 /** @polymerBehavior */
-const CrContainerShadowBehavior = {
+/* #export */ const CrContainerShadowBehavior = {
   /** @private {?IntersectionObserver} */
   intersectionObserver_: null,
 
diff --git a/ui/webui/resources/cr_elements/cr_dialog/BUILD.gn b/ui/webui/resources/cr_elements/cr_dialog/BUILD.gn
index bd196d5e..a99afac 100644
--- a/ui/webui/resources/cr_elements/cr_dialog/BUILD.gn
+++ b/ui/webui/resources/cr_elements/cr_dialog/BUILD.gn
@@ -3,6 +3,7 @@
 # found in the LICENSE file.
 
 import("//third_party/closure_compiler/compile_js.gni")
+import("//tools/polymer/polymer.gni")
 
 js_type_check("closure_compile") {
   deps = [
@@ -17,3 +18,33 @@
   ]
   externs_list = [ "$externs_path/web_animations.js" ]
 }
+
+polymer_modulizer("cr_dialog") {
+  js_file = "cr_dialog.js"
+  html_file = "cr_dialog.html"
+  html_type = "dom-module"
+  auto_imports = [
+    "ui/webui/resources/cr_elements/cr_container_shadow_behavior.html|CrContainerShadowBehavior",
+    "ui/webui/resources/html/assert.html|assert",
+  ]
+}
+
+js_type_check("closure_compile_module") {
+  is_polymer3 = true
+  deps = [
+    ":cr_dialog.m",
+  ]
+}
+
+js_library("cr_dialog.m") {
+  sources = [
+    "$root_gen_dir/ui/webui/resources/cr_elements/cr_dialog/cr_dialog.m.js",
+  ]
+  deps = [
+    "..:cr_container_shadow_behavior.m",
+    "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
+    "//ui/webui/resources/js:assert.m",
+  ]
+  extra_deps = [ ":cr_dialog_module" ]
+  externs_list = [ "$externs_path/web_animations.js" ]
+}
diff --git a/ui/webui/resources/cr_elements/cr_dialog/cr_dialog.js b/ui/webui/resources/cr_elements/cr_dialog/cr_dialog.js
index 71b2649..ddc9f58 100644
--- a/ui/webui/resources/cr_elements/cr_dialog/cr_dialog.js
+++ b/ui/webui/resources/cr_elements/cr_dialog/cr_dialog.js
@@ -253,7 +253,7 @@
    * @return {!HTMLDialogElement}
    */
   getNative: function() {
-    return this.$.dialog;
+    return /** @type {!HTMLDialogElement} */ (this.$.dialog);
   },
 
   /**
@@ -318,7 +318,7 @@
           {transform: 'scale(1.02)', offset: 0.6},
           {transform: 'scale(1)', offset: 1},
         ],
-        /** @type {!KeyframeEffectOptions} */ ({
+        /** @type {!KeyframeAnimationOptions} */ ({
           duration: 180,
           easing: 'ease-in-out',
           iterations: 1,
diff --git a/ui/webui/resources/cr_elements/cr_tabs/BUILD.gn b/ui/webui/resources/cr_elements/cr_tabs/BUILD.gn
index d94b8cae..2174f73 100644
--- a/ui/webui/resources/cr_elements/cr_tabs/BUILD.gn
+++ b/ui/webui/resources/cr_elements/cr_tabs/BUILD.gn
@@ -3,6 +3,7 @@
 # found in the LICENSE file.
 
 import("//third_party/closure_compiler/compile_js.gni")
+import("//tools/polymer/polymer.gni")
 
 js_type_check("closure_compile") {
   deps = [
@@ -12,3 +13,26 @@
 
 js_library("cr_tabs") {
 }
+
+polymer_modulizer("cr_tabs") {
+  js_file = "cr_tabs.js"
+  html_file = "cr_tabs.html"
+  html_type = "dom-module"
+}
+
+js_type_check("closure_compile_module") {
+  is_polymer3 = true
+  deps = [
+    ":cr_tabs.m",
+  ]
+}
+
+js_library("cr_tabs.m") {
+  sources = [
+    "$root_gen_dir/ui/webui/resources/cr_elements/cr_tabs/cr_tabs.m.js",
+  ]
+  deps = [
+    "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
+  ]
+  extra_deps = [ ":cr_tabs_module" ]
+}
diff --git a/ui/webui/resources/cr_elements_resources_v3.grdp b/ui/webui/resources/cr_elements_resources_v3.grdp
index ab75a23..f889770 100644
--- a/ui/webui/resources/cr_elements_resources_v3.grdp
+++ b/ui/webui/resources/cr_elements_resources_v3.grdp
@@ -11,6 +11,16 @@
          use_base_dir="false"
          type="BINDATA"
          compress="gzip" />
+  <include name="IDR_CR_ELEMENTS_CR_CONTAINER_SHADOW_BEHAVIOR_M_JS"
+         file="${root_gen_dir}/ui/webui/resources/cr_elements/cr_container_shadow_behavior.m.js"
+         use_base_dir="false"
+         type="BINDATA"
+         compress="gzip" />
+  <include name="IDR_CR_ELEMENTS_CR_DIALOG_M_JS"
+         file="${root_gen_dir}/ui/webui/resources/cr_elements/cr_dialog/cr_dialog.m.js"
+         use_base_dir="false"
+         type="BINDATA"
+         compress="gzip" />
   <include name="IDR_CR_ELEMENTS_CR_DRAWER_M_JS"
          file="${root_gen_dir}/ui/webui/resources/cr_elements/cr_drawer/cr_drawer.m.js"
          use_base_dir="false"
@@ -66,6 +76,11 @@
          use_base_dir="false"
          type="BINDATA"
          compress="gzip" />
+  <include name="IDR_CR_ELEMENTS_CR_TABS_M_JS"
+         file="${root_gen_dir}/ui/webui/resources/cr_elements/cr_tabs/cr_tabs.m.js"
+         use_base_dir="false"
+         type="BINDATA"
+         compress="gzip" />
   <include name="IDR_CR_ELEMENTS_CR_TOAST_M_JS"
          file="${root_gen_dir}/ui/webui/resources/cr_elements/cr_toast/cr_toast.m.js"
          use_base_dir="false"