diff --git a/DEPS b/DEPS
index 1ecb475a..57decd58 100644
--- a/DEPS
+++ b/DEPS
@@ -209,11 +209,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': '7f17d36c2c7b8ba7bdb6eade58fb114f5b2fffe6',
+  'skia_revision': '4987c4af499d712fcc9ad4a816f939d9da2b6a9a',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
-  'v8_revision': '329091a1ea44e643cc946d0f3c96e05072753950',
+  'v8_revision': '18f678862cf43f1312bbd0cf9314bd95f322ce36',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
   # and whatever else without interference from each other.
@@ -221,7 +221,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ANGLE
   # and whatever else without interference from each other.
-  'angle_revision': '75b9ac3084a94c85d465da78735a4f9b18f430b6',
+  'angle_revision': 'efd8da4dfa6581f2394cc4e040c6c52b591be1ef',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
@@ -280,7 +280,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': '9c5e41e7872db9471693953b10c99c4a0b241141',
+  'catapult_revision': '74a278f9bb47d71f8850e6aa94021612fab22997',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -288,7 +288,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling devtools-frontend
   # and whatever else without interference from each other.
-  'devtools_frontend_revision': 'c3472f4064f8b4977dd0bdea81738cfbc0782d3a',
+  'devtools_frontend_revision': '54728dd97bd237c30557246dc901d226a1031bb1',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libprotobuf-mutator
   # and whatever else without interference from each other.
@@ -328,11 +328,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'dawn_revision': '10a7f78815e2c838d6f79982a619aa43807034ce',
+  'dawn_revision': 'e2f39f8361fb70f2bde9bc64bdc771e2d4911e2a',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'quiche_revision': '38ba3e4c8ebdd7f7605e9f6f3d7e3c41e2c593c4',
+  'quiche_revision': 'ce1c3ade2bcd5857c469c8f3a1d536ce894724a5',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ios_webkit
   # and whatever else without interference from each other.
@@ -372,7 +372,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.
-  'libcxxabi_revision':    '8b015a79820b89c26297264e3bc3ec409567ae65',
+  'libcxxabi_revision':    'da3e6cbc62dd1e3df45f522ba313d1c581867094',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -573,7 +573,7 @@
   },
 
   'src/ios/third_party/material_components_ios/src': {
-      'url': Var('chromium_git') + '/external/github.com/material-components/material-components-ios.git' + '@' + 'ddb161b1691443763d83506fccefd582056531d9',
+      'url': Var('chromium_git') + '/external/github.com/material-components/material-components-ios.git' + '@' + '8ebb509555666645a4bc7b64e5c83408be80fe2e',
       'condition': 'checkout_ios',
   },
 
@@ -966,7 +966,7 @@
   },
 
   'src/third_party/depot_tools':
-    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '7fc02e848aaadc5750286aaac421c2bbe358de36',
+    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '6d45691f606fd3cc6464da44fe872c3b337ba4c3',
 
   'src/third_party/devtools-frontend/src':
     Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'),
@@ -1349,7 +1349,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' + '70fc3006adbce543ead4e3c85cadd6bb1e65d044',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' + '78af063a636c83fbaafa05a1af2b6a41dc6bc40e',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3',
@@ -1571,10 +1571,10 @@
     Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + 'a0b8774ce8cec1dc8f4308810bf05eb8867c62de',
 
   'src/third_party/webgpu-cts/src':
-    Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '0c95613c1111e1e8e7f5aba23343ff552d26352b',
+    Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '43c0f51e87ddec8a014a48428e485b07a3be46f2',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '2ab4764b9e305b7427b97e1c4a30d73975fc19e7',
+    Var('webrtc_git') + '/src.git' + '@' + '238da9a57eb9eb45c8ee356d4f334fe797fcaa42',
 
   'src/third_party/libgifcodec':
      Var('skia_git') + '/libgifcodec' + '@'+  Var('libgifcodec_revision'),
@@ -1635,7 +1635,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@f91bc3e41f7edb924fce097bf81cc34c5e14c94b',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@bb24cd045259da27a6141140d58245512f73d65b',
     'condition': 'checkout_src_internal',
   },
 
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwAutofillTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwAutofillTest.java
index fbe7645..45a4293 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/AwAutofillTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwAutofillTest.java
@@ -15,6 +15,7 @@
 import android.content.Context;
 import android.graphics.Matrix;
 import android.graphics.Rect;
+import android.net.Uri;
 import android.os.Build;
 import android.os.Build.VERSION;
 import android.os.Bundle;
@@ -2764,6 +2765,144 @@
         assertEquals("\"password\"", value1);
     }
 
+    @Test
+    @SmallTest
+    @Feature({"AndroidWebView"})
+    public void testFrameDetachedOnFormSubmission() throws Throwable {
+        final String mainFrame = "<html><body>"
+                + "<script>"
+                + "function receiveMessage(event) {"
+                + "  var address_iframe = document.getElementById('address_iframe');"
+                + "  address_iframe.parentNode.removeChild(address_iframe);"
+                + "  setTimeout(delayedUpload, 0);"
+                + "}"
+                + "window.addEventListener('message', receiveMessage, false);"
+                + "</script>"
+                + "<iframe src='inner_frame_address_form.html' id='address_iframe'"
+                + "    name='address_iframe'>"
+                + "</iframe>"
+                + "</body></html>";
+        final String url = mWebServer.setResponse(FILE, mainFrame, null);
+        final String subFrame = "<html><body>"
+                + "<script>"
+                + "function send_post() {"
+                + "  window.parent.postMessage('SubmitComplete', '*');"
+                + "}"
+                + "</script>"
+                + "<form action='inner_frame_address_form.html' id='deleting_form'"
+                + "    onsubmit='send_post(); return false;'>"
+                + "  <input type='text' id='address_field' name='address' autocomplete='on'>"
+                + "   <input type='submit' id='submit_button' name='submit_button'>"
+                + "</form>"
+                + "</body></html>";
+        final String subFrameURL =
+                mWebServer.setResponse("/inner_frame_address_form.html", subFrame, null);
+        assertTrue(Uri.parse(subFrameURL).getPath().equals("/inner_frame_address_form.html"));
+        int cnt = 0;
+        loadUrlSync(url);
+        pollJavascriptResult("var iframe = document.getElementById('address_iframe');"
+                        + "var frame_doc = iframe.contentDocument;"
+                        + "frame_doc.getElementById('address_field').focus();"
+                        + "frame_doc.activeElement.id;",
+                "\"address_field\"");
+        dispatchDownAndUpKeyEvents(KeyEvent.KEYCODE_A);
+        cnt += waitForCallbackAndVerifyTypes(cnt,
+                new Integer[] {AUTOFILL_CANCEL, AUTOFILL_VIEW_ENTERED, AUTOFILL_SESSION_STARTED,
+                        AUTOFILL_VALUE_CHANGED});
+        executeJavaScriptAndWaitForResult("var iframe = document.getElementById('address_iframe');"
+                + "var frame_doc = iframe.contentDocument;"
+                + "frame_doc.getElementById('submit_button').click();");
+        waitForCallbackAndVerifyTypes(cnt, new Integer[] {AUTOFILL_VALUE_CHANGED, AUTOFILL_COMMIT});
+        assertEquals(SubmissionSource.FORM_SUBMISSION, mSubmissionSource);
+    }
+
+    @Test
+    @SmallTest
+    @Feature({"AndroidWebView"})
+    public void testFrameDetachedOnFormlessSubmission() throws Throwable {
+        final String mainFrame = "<html><body>"
+                + "<script>"
+                + "function receiveMessage(event) {"
+                + "  var address_iframe = document.getElementById('address_iframe');"
+                + "  address_iframe.parentNode.removeChild(address_iframe);"
+                + "}"
+                + "window.addEventListener('message', receiveMessage, false);"
+                + "</script>"
+                + "<iframe src='inner_frame_address_formless.html' id='address_iframe'"
+                + "    name='address_iframe'>"
+                + "</iframe>"
+                + "</body></html>";
+        final String url = mWebServer.setResponse(FILE, mainFrame, null);
+        final String subFrame = "<html><body>"
+                + "<script>"
+                + "function send_post() {"
+                + "  window.parent.postMessage('SubmitComplete', '*');"
+                + "}"
+                + "</script>"
+                + "<input type='text' id='address_field' name='address' autocomplete='on'>"
+                + "<input type='button' id='submit_button' name='submit_button'"
+                + "    onclick='send_post()'>"
+                + "</body></html>";
+        final String subFrameURL =
+                mWebServer.setResponse("/inner_frame_address_formless.html", subFrame, null);
+        assertTrue(Uri.parse(subFrameURL).getPath().equals("/inner_frame_address_formless.html"));
+        int cnt = 0;
+        loadUrlSync(url);
+        pollJavascriptResult("var iframe = document.getElementById('address_iframe');"
+                        + "var frame_doc = iframe.contentDocument;"
+                        + "frame_doc.getElementById('address_field').focus();"
+                        + "frame_doc.activeElement.id;",
+                "\"address_field\"");
+        dispatchDownAndUpKeyEvents(KeyEvent.KEYCODE_A);
+        cnt += waitForCallbackAndVerifyTypes(cnt,
+                new Integer[] {AUTOFILL_CANCEL, AUTOFILL_VIEW_ENTERED, AUTOFILL_SESSION_STARTED,
+                        AUTOFILL_VALUE_CHANGED});
+        executeJavaScriptAndWaitForResult("var iframe = document.getElementById('address_iframe');"
+                + "var frame_doc = iframe.contentDocument;"
+                + "frame_doc.getElementById('submit_button').click();");
+        // The additional AUTOFILL_VIEW_EXITED event caused by 'click' of the button.
+        waitForCallbackAndVerifyTypes(
+                cnt, new Integer[] {AUTOFILL_VIEW_EXITED, AUTOFILL_VALUE_CHANGED, AUTOFILL_COMMIT});
+        assertEquals(SubmissionSource.FRAME_DETACHED, mSubmissionSource);
+    }
+
+    @Test
+    @SmallTest
+    @Feature({"AndroidWebView"})
+    public void testLabelChange() throws Throwable {
+        final String data = "<html><head></head><body>"
+                + "<form action='a.html'>"
+                + "<label id='label_id'> Address </label>"
+                + "<input type='text' id='address' name='address' autocomplete='on'/>"
+                + "<p id='p_id'>Address 1</p>"
+                + "<input type='text' name='address1' autocomplete='on'/>"
+                + "<input type='submit' id='submit_button' name='submit_button'/>"
+                + "</form>"
+                + "</body></html>";
+        int cnt = 0;
+        final String url = mWebServer.setResponse(FILE, data, null);
+        loadUrlSync(url);
+        executeJavaScriptAndWaitForResult("document.getElementById('address').focus();");
+        dispatchDownAndUpKeyEvents(KeyEvent.KEYCODE_A);
+        cnt += waitForCallbackAndVerifyTypes(cnt,
+                new Integer[] {AUTOFILL_CANCEL, AUTOFILL_VIEW_ENTERED, AUTOFILL_SESSION_STARTED,
+                        AUTOFILL_VALUE_CHANGED});
+        // Verify label change shall trigger new session.
+        executeJavaScriptAndWaitForResult(
+                "document.getElementById('label_id').innerHTML='address change';");
+        executeJavaScriptAndWaitForResult("document.getElementById('address').focus();");
+        dispatchDownAndUpKeyEvents(KeyEvent.KEYCODE_B);
+        cnt += waitForCallbackAndVerifyTypes(cnt,
+                new Integer[] {AUTOFILL_VIEW_EXITED, AUTOFILL_CANCEL, AUTOFILL_VIEW_ENTERED,
+                        AUTOFILL_SESSION_STARTED, AUTOFILL_VALUE_CHANGED});
+        // Verify inferred label change won't trigger new session.
+        executeJavaScriptAndWaitForResult(
+                "document.getElementById('p_id').innerHTML='address change';");
+        executeJavaScriptAndWaitForResult("document.getElementById('address').focus();");
+        dispatchDownAndUpKeyEvents(KeyEvent.KEYCODE_B);
+        cnt += waitForCallbackAndVerifyTypes(cnt, new Integer[] {AUTOFILL_VALUE_CHANGED});
+    }
+
     private void pollJavascriptResult(String script, String expectedResult) throws Throwable {
         AwActivityTestRule.pollInstrumentationThread(() -> {
             try {
diff --git a/ash/app_list/app_list_controller_impl_unittest.cc b/ash/app_list/app_list_controller_impl_unittest.cc
index e1060ce..f8dc1d8 100644
--- a/ash/app_list/app_list_controller_impl_unittest.cc
+++ b/ash/app_list/app_list_controller_impl_unittest.cc
@@ -502,8 +502,9 @@
 // Verifiy that when showing the launcher, the virtual keyboard dismissed before
 // will not show automatically due to the feature called "transient blur" (see
 // https://crbug.com/1057320).
+// Disabled for flaky timeouts. https://crbug.com/1213226
 TEST_F(AppListControllerImplTest,
-       TransientBlurIsNotTriggeredWhenShowingLauncher) {
+       DISABLED_TransientBlurIsNotTriggeredWhenShowingLauncher) {
   // Enable animation.
   ui::ScopedAnimationDurationScaleMode non_zero_duration(
       ui::ScopedAnimationDurationScaleMode::NORMAL_DURATION);
diff --git a/ash/components/os_feedback_ui/OWNERS b/ash/components/os_feedback_ui/OWNERS
index 220e699..17b2f60 100644
--- a/ash/components/os_feedback_ui/OWNERS
+++ b/ash/components/os_feedback_ui/OWNERS
@@ -1 +1,6 @@
-file://components/feedback/OWNERS
+# Primary OWNERS
+jimmyxgong@chromium.org
+joonbug@chromium.org
+
+# Backup OWNERS
+zentaro@chromium.org
diff --git a/ash/public/cpp/wallpaper_controller.h b/ash/public/cpp/wallpaper_controller.h
index 863505f..a7bb193 100644
--- a/ash/public/cpp/wallpaper_controller.h
+++ b/ash/public/cpp/wallpaper_controller.h
@@ -61,17 +61,18 @@
                                   const gfx::ImageSkia& image,
                                   bool preview_mode) = 0;
 
-  // Sets the wallpaper at |url| as the active wallpaper for the user at
-  // |account_id|. The first time this is called, will download the wallpaper
-  // and cache on disk. Subsequent calls with the same url will use the stored
-  // wallpaper. If |preview_mode| is true, the visible background wallpaper will
-  // change, but that change will not be persisted in preferences. Call
-  // |ConfirmPreviewMode| or |CancelPreviewMode| to finalize. |callback| is
-  // required and will be called after the image is fetched (from network or
-  // disk) and decoded.
+  // Sets the wallpaper at |url| and |collection_id| as the active wallpaper for
+  // the user at |account_id|. The first time this is called, will download the
+  // wallpaper and cache on disk. Subsequent calls with the same url will use
+  // the stored wallpaper. If |preview_mode| is true, the visible background
+  // wallpaper will change, but that change will not be persisted in
+  // preferences. Call |ConfirmPreviewMode| or |CancelPreviewMode| to finalize.
+  // |callback| is required and will be called after the image is fetched (from
+  // network or disk) and decoded.
   using SetOnlineWallpaperCallback = base::OnceCallback<void(bool success)>;
   virtual void SetOnlineWallpaper(const AccountId& account_id,
                                   const GURL& url,
+                                  const std::string& collection_id,
                                   WallpaperLayout layout,
                                   bool preview_mode,
                                   SetOnlineWallpaperCallback callback) = 0;
@@ -84,6 +85,7 @@
   // returns true and sets wallpaper for the user, otherwise returns false.
   // |account_id|: The user's account id.
   // |url|: The wallpaper url.
+  // |collection_id|: The wallpaper collection id .e.g. city_for_chromebook.
   // |layout|: The layout of the wallpaper, used for wallpaper resizing.
   // |preview_mode|: If true, show the wallpaper immediately but doesn't change
   //                 the user wallpaper info until |ConfirmPreviewWallpaper| is
@@ -92,6 +94,7 @@
   virtual void SetOnlineWallpaperIfExists(
       const AccountId& account_id,
       const std::string& url,
+      const std::string& collection_id,
       WallpaperLayout layout,
       bool preview_mode,
       SetOnlineWallpaperCallback callback) = 0;
diff --git a/ash/services/recording/recording_service.cc b/ash/services/recording/recording_service.cc
index f98205a..36fc860 100644
--- a/ash/services/recording/recording_service.cc
+++ b/ash/services/recording/recording_service.cc
@@ -362,8 +362,10 @@
                                 std::move(audio_data), audio_capture_time));
 }
 
-void RecordingService::OnCaptureError(const std::string& message) {
-  LOG(ERROR) << message;
+void RecordingService::OnCaptureError(
+    media::AudioCapturerSource::ErrorCode code,
+    const std::string& message) {
+  LOG(ERROR) << static_cast<uint32_t>(code) << ", " << message;
 }
 
 void RecordingService::OnCaptureMuted(bool is_muted) {}
diff --git a/ash/services/recording/recording_service.h b/ash/services/recording/recording_service.h
index b1ab8ae6..77c542cc 100644
--- a/ash/services/recording/recording_service.h
+++ b/ash/services/recording/recording_service.h
@@ -97,7 +97,8 @@
                base::TimeTicks audio_capture_time,
                double volume,
                bool key_pressed) override;
-  void OnCaptureError(const std::string& message) override;
+  void OnCaptureError(media::AudioCapturerSource::ErrorCode code,
+                      const std::string& message) override;
   void OnCaptureMuted(bool is_muted) override;
 
  private:
diff --git a/ash/shelf/shelf_layout_manager_unittest.cc b/ash/shelf/shelf_layout_manager_unittest.cc
index 2c3fcb6..7cbde90 100644
--- a/ash/shelf/shelf_layout_manager_unittest.cc
+++ b/ash/shelf/shelf_layout_manager_unittest.cc
@@ -73,6 +73,7 @@
 #include "base/containers/contains.h"
 #include "base/i18n/rtl.h"
 #include "base/run_loop.h"
+#include "base/test/icu_test_util.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/metrics/user_action_tester.h"
 #include "chromeos/ui/base/window_properties.h"
@@ -3910,69 +3911,6 @@
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
 }
 
-TEST_F(ShelfLayoutManagerTest, VerifyHomeButtonBounds) {
-  Shell::Get()
-      ->accessibility_controller()
-      ->SetTabletModeShelfNavigationButtonsEnabled(true);
-  TabletModeControllerTestApi().EnterTabletMode();
-
-  ASSERT_EQ(HotseatState::kShownHomeLauncher,
-            GetShelfLayoutManager()->hotseat_state());
-
-  const gfx::Rect display_bounds = GetPrimaryDisplay().bounds();
-  Shelf* shelf = GetPrimaryShelf();
-  ShelfNavigationWidget* navigation_widget = shelf->navigation_widget();
-  const gfx::Size widget_size_in_home_launcher =
-      navigation_widget->GetWindowBoundsInScreen().size();
-
-  auto fetch_home_button_screen_bounds =
-      [](const ShelfNavigationWidget* navigation_widget) -> gfx::Rect {
-    gfx::Rect home_button_bounds_in_screen =
-        navigation_widget->bounds_animator_for_test()->GetTargetBounds(
-            navigation_widget->GetHomeButton());
-    const gfx::Rect navigation_widget_bounds_in_screen =
-        navigation_widget->GetWindowBoundsInScreen();
-    home_button_bounds_in_screen.Offset(
-        navigation_widget_bounds_in_screen.OffsetFromOrigin());
-    return home_button_bounds_in_screen;
-  };
-
-  // Verify home button bounds in home launcher.
-  {
-    const gfx::Rect home_button_bounds_in_screen =
-        fetch_home_button_screen_bounds(navigation_widget);
-    const int horizontal_edge_spacing =
-        ShelfConfig::Get()->control_button_edge_spacing(
-            /*is_primary_axis_edge=*/true);
-    EXPECT_EQ(horizontal_edge_spacing, home_button_bounds_in_screen.x());
-    const int vertical_edge_spacing =
-        ShelfConfig::Get()->control_button_edge_spacing(
-            /*is_primary_axis_edge=*/false);
-    EXPECT_EQ(display_bounds.bottom(),
-              home_button_bounds_in_screen.bottom() + vertical_edge_spacing);
-  }
-
-  // Activate a window and wait for the navigation widget animation to finish.
-  views::WidgetAnimationWaiter waiter(shelf->navigation_widget());
-  std::unique_ptr<aura::Window> window =
-      AshTestBase::CreateTestWindow(gfx::Rect(0, 0, 400, 400));
-  wm::ActivateWindow(window.get());
-  waiter.WaitForAnimation();
-
-  ASSERT_EQ(HotseatState::kHidden, GetShelfLayoutManager()->hotseat_state());
-
-  const gfx::Size widget_size_in_hidden_state =
-      navigation_widget->GetWindowBoundsInScreen().size();
-  EXPECT_EQ(widget_size_in_home_launcher, widget_size_in_hidden_state);
-
-  // Verify home button bounds in the hidden state.
-  {
-    const gfx::Rect home_button_bounds_in_screen =
-        fetch_home_button_screen_bounds(navigation_widget);
-    EXPECT_EQ(display_bounds.bottom(), home_button_bounds_in_screen.bottom());
-  }
-}
-
 // Tests that pinned app icons are visible on non-primary displays.
 TEST_F(ShelfLayoutManagerTest, ShelfShowsPinnedAppsOnOtherDisplays) {
   // Create three displays.
@@ -4494,4 +4432,114 @@
   ASSERT_FALSE(ShelfDimmed());
 }
 
+class NavigationWidgetRTLTest
+    : public ShelfLayoutManagerTest,
+      public testing::WithParamInterface<
+          std::tuple</*in_tablet=*/bool, /*in_rtl=*/bool>> {
+ public:
+  NavigationWidgetRTLTest()
+      : in_tablet_(std::get<0>(GetParam())),
+        in_rtl_(std::get<1>(GetParam())),
+        scoped_locale_(in_rtl_ ? "ar" : "") {}
+  ~NavigationWidgetRTLTest() override = default;
+
+  // Indicates whether the test should run in the tablet mode.
+  const bool in_tablet_;
+
+  // Indicates whether the test should run under RTL.
+  const bool in_rtl_;
+
+  base::test::ScopedRestoreICUDefaultLocale scoped_locale_;
+};
+
+INSTANTIATE_TEST_SUITE_P(ALL,
+                         NavigationWidgetRTLTest,
+                         testing::Combine(testing::Bool(), testing::Bool()));
+
+TEST_P(NavigationWidgetRTLTest, VerifyHomeButtonBounds) {
+  if (in_tablet_) {
+    Shell::Get()
+        ->accessibility_controller()
+        ->SetTabletModeShelfNavigationButtonsEnabled(true);
+    TabletModeControllerTestApi().EnterTabletMode();
+    ASSERT_EQ(HotseatState::kShownHomeLauncher,
+              GetShelfLayoutManager()->hotseat_state());
+  } else {
+    ASSERT_EQ(HotseatState::kShownClamshell,
+              GetShelfLayoutManager()->hotseat_state());
+  }
+
+  const gfx::Rect display_bounds = GetPrimaryDisplay().bounds();
+  Shelf* shelf = GetPrimaryShelf();
+  ShelfNavigationWidget* navigation_widget = shelf->navigation_widget();
+  const gfx::Size widget_size_in_home_launcher =
+      navigation_widget->GetWindowBoundsInScreen().size();
+
+  auto fetch_home_button_screen_bounds =
+      [](const ShelfNavigationWidget* navigation_widget,
+         bool in_rtl) -> gfx::Rect {
+    gfx::Rect home_button_bounds_in_widget =
+        navigation_widget->bounds_animator_for_test()->GetTargetBounds(
+            navigation_widget->GetHomeButton());
+    if (in_rtl) {
+      home_button_bounds_in_widget =
+          navigation_widget->GetRootView()->GetMirroredRect(
+              home_button_bounds_in_widget);
+    }
+    gfx::Rect home_button_bounds_in_screen = home_button_bounds_in_widget;
+    home_button_bounds_in_screen.Offset(
+        navigation_widget->GetWindowBoundsInScreen().OffsetFromOrigin());
+    return home_button_bounds_in_screen;
+  };
+
+  // Verify home button bounds in home launcher.
+  {
+    const gfx::Rect home_button_bounds_in_screen =
+        fetch_home_button_screen_bounds(navigation_widget, in_rtl_);
+    const int horizontal_edge_spacing =
+        ShelfConfig::Get()->control_button_edge_spacing(
+            /*is_primary_axis_edge=*/true);
+    EXPECT_EQ(
+        horizontal_edge_spacing,
+        in_rtl_ ? display_bounds.right() - home_button_bounds_in_screen.right()
+                : home_button_bounds_in_screen.x());
+    const int vertical_edge_spacing =
+        ShelfConfig::Get()->control_button_edge_spacing(
+            /*is_primary_axis_edge=*/false);
+    EXPECT_EQ(display_bounds.bottom(),
+              home_button_bounds_in_screen.bottom() + vertical_edge_spacing);
+
+    auto* home_button = navigation_widget->GetHomeButton();
+    ASSERT_EQ(views::Button::STATE_NORMAL, home_button->GetState());
+    GetEventGenerator()->MoveMouseTo(
+        home_button_bounds_in_screen.CenterPoint());
+    EXPECT_EQ(views::Button::STATE_HOVERED, home_button->GetState());
+  }
+
+  if (!in_tablet_)
+    return;
+
+  // The test code below is only for the tablet mode.
+
+  // Activate a window and wait for the navigation widget animation to finish.
+  views::WidgetAnimationWaiter waiter(shelf->navigation_widget());
+  std::unique_ptr<aura::Window> window =
+      AshTestBase::CreateTestWindow(gfx::Rect(0, 0, 400, 400));
+  wm::ActivateWindow(window.get());
+  waiter.WaitForAnimation();
+
+  ASSERT_EQ(HotseatState::kHidden, GetShelfLayoutManager()->hotseat_state());
+
+  const gfx::Size widget_size_in_hidden_state =
+      navigation_widget->GetWindowBoundsInScreen().size();
+  EXPECT_EQ(widget_size_in_home_launcher, widget_size_in_hidden_state);
+
+  // Verify home button bounds in the hidden state.
+  {
+    const gfx::Rect home_button_bounds_in_screen =
+        fetch_home_button_screen_bounds(navigation_widget, in_rtl_);
+    EXPECT_EQ(display_bounds.bottom(), home_button_bounds_in_screen.bottom());
+  }
+}
+
 }  // namespace ash
diff --git a/ash/shelf/shelf_navigation_widget.cc b/ash/shelf/shelf_navigation_widget.cc
index 792d444..79d5fcc 100644
--- a/ash/shelf/shelf_navigation_widget.cc
+++ b/ash/shelf/shelf_navigation_widget.cc
@@ -531,7 +531,7 @@
                      nav_size.width());
   }
   target_bounds_ = gfx::Rect(nav_origin, nav_size);
-  clip_rect_ = CalculateClipRect();
+  clip_rect_after_rtl_ = CalculateClipRectAfterRTL();
 }
 
 gfx::Rect ShelfNavigationWidget::GetTargetBounds() const {
@@ -599,7 +599,7 @@
   }
 
   if (update_bounds)
-    GetLayer()->SetClipRect(clip_rect_);
+    GetLayer()->SetClipRect(clip_rect_after_rtl_);
 
   views::View* const back_button = delegate_->back_button();
   UpdateButtonVisibility(back_button, back_button_shown, animate,
@@ -657,7 +657,7 @@
 }
 
 gfx::Rect ShelfNavigationWidget::GetVisibleBounds() const {
-  return gfx::Rect(target_bounds_.origin(), clip_rect_.size());
+  return gfx::Rect(target_bounds_.origin(), clip_rect_after_rtl_.size());
 }
 
 void ShelfNavigationWidget::PrepareForGettingFocus(bool last_element) {
@@ -716,11 +716,16 @@
   button->layer()->SetOpacity(visible ? 1.0f : 0.0f);
 }
 
-gfx::Rect ShelfNavigationWidget::CalculateClipRect() const {
-  if (Shell::Get()->IsInTabletMode())
-    return gfx::Rect(CalculateIdealSize(/*only_visible_area=*/true));
+gfx::Rect ShelfNavigationWidget::CalculateClipRectAfterRTL() const {
+  gfx::Rect bounds_before_rtl;
+  if (Shell::Get()->IsInTabletMode()) {
+    bounds_before_rtl =
+        gfx::Rect(CalculateIdealSize(/*only_visible_area=*/true));
+  } else {
+    bounds_before_rtl = gfx::Rect(target_bounds_.size());
+  }
 
-  return gfx::Rect(target_bounds_.size());
+  return GetRootView()->GetMirroredRect(bounds_before_rtl);
 }
 
 gfx::Size ShelfNavigationWidget::CalculateIdealSize(
diff --git a/ash/shelf/shelf_navigation_widget.h b/ash/shelf/shelf_navigation_widget.h
index af6c1b2..9b2ce490 100644
--- a/ash/shelf/shelf_navigation_widget.h
+++ b/ash/shelf/shelf_navigation_widget.h
@@ -105,8 +105,9 @@
       NavigationButtonAnimationMetricsReporter* metrics_reporter,
       HotseatState target_hotseat_state);
 
-  // Returns the clip rectangle.
-  gfx::Rect CalculateClipRect() const;
+  // Returns the clip rectangle in the shelf navigation widget's coordinates.
+  // The returned rectangle is mirrored under RTL.
+  gfx::Rect CalculateClipRectAfterRTL() const;
 
   // Returns the ideal size of the whole widget or the visible area only when
   // |only_visible_area| is true.
@@ -118,9 +119,11 @@
   Shelf* shelf_ = nullptr;
   Delegate* delegate_ = nullptr;
 
-  // In tablet mode with hotseat enabled, |clip_rect_| is used to hide the
-  // invisible widget part.
-  gfx::Rect clip_rect_;
+  // In tablet mode with hotseat enabled, `clip_rect_after_rtl_` is used to hide
+  // the invisible widget part. We try best to avoid changing the widget's
+  // bounds and use layer clip instead. `clip_rect_after_rtl_` is mirrored under
+  // RTL.
+  gfx::Rect clip_rect_after_rtl_;
 
   // The target widget bounds in screen coordinates.
   gfx::Rect target_bounds_;
diff --git a/ash/wallpaper/wallpaper_controller_impl.cc b/ash/wallpaper/wallpaper_controller_impl.cc
index e204f3a..82ed7e1 100644
--- a/ash/wallpaper/wallpaper_controller_impl.cc
+++ b/ash/wallpaper/wallpaper_controller_impl.cc
@@ -41,7 +41,9 @@
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
 #include "base/memory/ref_counted_memory.h"
+#include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/metrics/metrics_hashes.h"
 #include "base/no_destructor.h"
 #include "base/numerics/safe_conversions.h"
 #include "base/path_service.h"
@@ -1011,12 +1013,13 @@
 void WallpaperControllerImpl::SetOnlineWallpaper(
     const AccountId& account_id,
     const GURL& url,
+    const std::string& collection_id,
     WallpaperLayout layout,
     bool preview_mode,
     SetOnlineWallpaperCallback callback) {
   DCHECK(callback);
   SetOnlineWallpaperIfExists(
-      account_id, url.spec(), layout, preview_mode,
+      account_id, url.spec(), collection_id, layout, preview_mode,
       base::BindOnce(&WallpaperControllerImpl::OnAttemptSetOnlineWallpaper,
                      weak_factory_.GetWeakPtr(), account_id, url, layout,
                      preview_mode, std::move(callback)));
@@ -1025,12 +1028,22 @@
 void WallpaperControllerImpl::SetOnlineWallpaperIfExists(
     const AccountId& account_id,
     const std::string& url,
+    const std::string& collection_id,
     WallpaperLayout layout,
     bool preview_mode,
     SetOnlineWallpaperCallback callback) {
   DCHECK(Shell::Get()->session_controller()->IsActiveUserSessionStarted());
   DCHECK(CanSetUserWallpaper(account_id));
 
+  // |collection_id| is empty when the wallpaper is automatically set with
+  // daily refresh.
+  if (!collection_id.empty()) {
+    const int collection_id_hash = base::PersistentHash(collection_id);
+    base::UmaHistogramSparse("Ash.Wallpaper.Collection", collection_id_hash);
+    DVLOG(1) << "SetOnlineWallpaperIfExists: collection_id=" << collection_id
+             << " collection_id_hash=" << collection_id_hash;
+  }
+
   const OnlineWallpaperParams params = {account_id, url, layout, preview_mode};
   base::PostTaskAndReplyWithResult(
       sequenced_task_runner_.get(), FROM_HERE,
@@ -2296,7 +2309,10 @@
       break;
     case DAILY:
     case ONLINE:
-      SetOnlineWallpaper(account_id, GURL(info.location), info.layout,
+      // Skip setting collection id when wallpaper is synced acrossed devices.
+      // We don't want to log a collection impression when wallpaper is synced.
+      SetOnlineWallpaper(account_id, GURL(info.location),
+                         /*collection_id=*/std::string(), info.layout,
                          /*preview_mode=*/false, base::DoNothing());
       break;
     case POLICY:
diff --git a/ash/wallpaper/wallpaper_controller_impl.h b/ash/wallpaper/wallpaper_controller_impl.h
index 6caf848..207e4ec7 100644
--- a/ash/wallpaper/wallpaper_controller_impl.h
+++ b/ash/wallpaper/wallpaper_controller_impl.h
@@ -239,11 +239,13 @@
                           bool preview_mode) override;
   void SetOnlineWallpaper(const AccountId& account_id,
                           const GURL& url,
+                          const std::string& collection_id,
                           WallpaperLayout layout,
                           bool preview_mode,
                           SetOnlineWallpaperCallback callback) override;
   void SetOnlineWallpaperIfExists(const AccountId& account_id,
                                   const std::string& url,
+                                  const std::string& collection_id,
                                   WallpaperLayout layout,
                                   bool preview_mode,
                                   SetOnlineWallpaperCallback callback) override;
diff --git a/ash/wallpaper/wallpaper_controller_unittest.cc b/ash/wallpaper/wallpaper_controller_unittest.cc
index 7174e14b..be0bf37 100644
--- a/ash/wallpaper/wallpaper_controller_unittest.cc
+++ b/ash/wallpaper/wallpaper_controller_unittest.cc
@@ -32,6 +32,7 @@
 #include "base/command_line.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
+#include "base/metrics/metrics_hashes.h"
 #include "base/run_loop.h"
 #include "base/strings/stringprintf.h"
 #include "base/task/current_thread.h"
@@ -39,6 +40,7 @@
 #include "base/task/task_observer.h"
 #include "base/task/thread_pool/thread_pool_instance.h"
 #include "base/test/bind.h"
+#include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/threading/thread_restrictions.h"
 #include "base/time/time_override.h"
@@ -112,6 +114,8 @@
 const std::string kDummyUrl = "https://best_wallpaper/1";
 const std::string kDummyUrl2 = "https://best_wallpaper/2";
 
+const std::string kDummyCollectionId = "testCollectionId";
+
 // Creates an image of size |size|.
 gfx::ImageSkia CreateImage(int width, int height, SkColor color) {
   SkBitmap bitmap;
@@ -539,6 +543,7 @@
       const AccountId& account_id,
       const gfx::ImageSkia& image,
       const std::string& url,
+      const std::string& collection_id,
       WallpaperLayout layout,
       bool save_file,
       bool preview_mode,
@@ -585,12 +590,17 @@
     return controller_->GetWallpaperContainerId(controller_->locked_);
   }
 
+  const base::HistogramTester& histogram_tester() const {
+    return histogram_tester_;
+  }
+
   WallpaperControllerImpl* controller_ = nullptr;  // Not owned.
 
   base::ScopedTempDir user_data_dir_;
   base::ScopedTempDir online_wallpaper_dir_;
   base::ScopedTempDir custom_wallpaper_dir_;
   base::ScopedTempDir default_wallpaper_dir_;
+  base::HistogramTester histogram_tester_;
 
   user_manager::FakeUserManager* fake_user_manager_ = nullptr;
   std::unique_ptr<user_manager::ScopedUserManager> scoped_user_manager_;
@@ -983,7 +993,8 @@
   std::unique_ptr<base::RunLoop> run_loop = std::make_unique<base::RunLoop>();
   ClearWallpaperCount();
   controller_->SetOnlineWallpaperIfExists(
-      account_id_1, kDummyUrl, layout, /*preview_mode=*/false,
+      account_id_1, kDummyUrl, kDummyCollectionId, layout,
+      /*preview_mode=*/false,
       base::BindLambdaForTesting([&run_loop](bool file_exists) {
         EXPECT_FALSE(file_exists);
         run_loop->Quit();
@@ -1025,7 +1036,8 @@
   ClearWallpaperCount();
   run_loop = std::make_unique<base::RunLoop>();
   controller_->SetOnlineWallpaperIfExists(
-      account_id_1, kDummyUrl, layout, /*preview_mode=*/false,
+      account_id_1, kDummyUrl, kDummyCollectionId, layout,
+      /*preview_mode=*/false,
       base::BindLambdaForTesting([&run_loop](bool file_exists) {
         EXPECT_TRUE(file_exists);
         run_loop->Quit();
@@ -1122,7 +1134,8 @@
   auto run_loop = std::make_unique<base::RunLoop>();
   ClearWallpaperCount();
   controller_->SetOnlineWallpaper(
-      account_id_1, GURL(kDummyUrl), layout, /*preview_mode=*/false,
+      account_id_1, GURL(kDummyUrl), kDummyCollectionId, layout,
+      /*preview_mode=*/false,
       base::BindLambdaForTesting([&run_loop](bool success) {
         EXPECT_TRUE(success);
         run_loop->Quit();
@@ -1136,6 +1149,10 @@
   WallpaperInfo expected_wallpaper_info(kDummyUrl, layout, ONLINE,
                                         base::Time::Now().LocalMidnight());
   EXPECT_EQ(wallpaper_info, expected_wallpaper_info);
+  // Verify that collection metric is logged.
+  histogram_tester().ExpectBucketCount(
+      "Ash.Wallpaper.Collection",
+      static_cast<int>(base::PersistentHash(kDummyCollectionId)), 1);
 
   // Verify that the wallpaper with |url| is available offline, and the returned
   // file name should not contain the small wallpaper suffix.
@@ -1577,7 +1594,7 @@
   ClearWallpaperCount();
   controller_->SetOnlineWallpaperFromData(
       account_id_1, std::string() /*image_data=*/, kDummyUrl,
-      WALLPAPER_LAYOUT_CENTER, false /*preview_mode=*/,
+      WALLPAPER_LAYOUT_CENTER, /*preview_mode=*/false,
       base::BindLambdaForTesting([&run_loop](bool success) {
         EXPECT_FALSE(success);
         run_loop->Quit();
@@ -1638,7 +1655,8 @@
   ClearWallpaperCount();
   controller_->SetOnlineWallpaperFromData(
       account_id_1, std::string() /*image_data=*/, kDummyUrl,
-      WALLPAPER_LAYOUT_CENTER_CROPPED, false /*preview_mode=*/,
+      WALLPAPER_LAYOUT_CENTER_CROPPED,
+      /*preview_mode=*/false,
       base::BindLambdaForTesting([&run_loop](bool success) {
         EXPECT_FALSE(success);
         run_loop->Quit();
@@ -1673,8 +1691,8 @@
 
   // Verify |SetOnlineWallpaperFromData| updates wallpaper cache for |user1|.
   controller_->SetOnlineWallpaperFromData(
-      account_id_1, std::string() /*image_data=*/, kDummyUrl,
-      WALLPAPER_LAYOUT_CENTER, false /*preview_mode=*/,
+      account_id_1, /*image_data=*/std::string(), kDummyUrl,
+      WALLPAPER_LAYOUT_CENTER, /*preview_mode=*/false,
       WallpaperControllerImpl::SetOnlineWallpaperCallback());
   RunAllTasksUntilIdle();
   EXPECT_TRUE(
@@ -1907,8 +1925,8 @@
   image = CreateImage(640, 480, kWallpaperColor);
   ClearWallpaperCount();
   controller_->SetOnlineWallpaperFromData(
-      account_id_1, std::string() /*image_data=*/, kDummyUrl, layout,
-      false /*preview_mode=*/,
+      account_id_1, /*image_data=*/std::string(), kDummyUrl, layout,
+      /*preview_mode=*/false,
       WallpaperControllerImpl::SetOnlineWallpaperCallback());
   RunAllTasksUntilIdle();
   EXPECT_EQ(1, GetWallpaperCount());
@@ -2396,8 +2414,8 @@
   ClearWallpaperCount();
   std::unique_ptr<base::RunLoop> run_loop = std::make_unique<base::RunLoop>();
   SetOnlineWallpaperFromImage(
-      account_id_1, gfx::ImageSkia(), kDummyUrl, layout, false /*save_file=*/,
-      true /*preview_mode=*/,
+      account_id_1, gfx::ImageSkia(), kDummyUrl, kDummyCollectionId, layout,
+      /*save_file=*/false, /*preview_mode=*/true,
       base::BindLambdaForTesting([&run_loop](bool success) {
         EXPECT_FALSE(success);
         run_loop->Quit();
@@ -2413,8 +2431,8 @@
   EXPECT_NE(online_wallpaper_color, GetWallpaperColor());
   run_loop = std::make_unique<base::RunLoop>();
   SetOnlineWallpaperFromImage(
-      account_id_1, online_wallpaper, kDummyUrl, layout, false /*save_file=*/,
-      true /*preview_mode=*/,
+      account_id_1, online_wallpaper, kDummyUrl, kDummyCollectionId, layout,
+      /*save_file=*/false, /*preview_mode=*/true,
       base::BindLambdaForTesting([&run_loop](bool success) {
         EXPECT_TRUE(success);
         run_loop->Quit();
@@ -2499,8 +2517,8 @@
   EXPECT_NE(online_wallpaper_color, GetWallpaperColor());
   ClearWallpaperCount();
   SetOnlineWallpaperFromImage(
-      account_id_1, online_wallpaper, kDummyUrl, layout, false /*save_file=*/,
-      true /*preview_mode=*/,
+      account_id_1, online_wallpaper, kDummyUrl, kDummyCollectionId, layout,
+      /*save_file=*/false, /*preview_mode=*/true,
       WallpaperControllerImpl::SetOnlineWallpaperCallback());
   RunAllTasksUntilIdle();
   EXPECT_EQ(1, GetWallpaperCount());
@@ -2601,8 +2619,8 @@
 
   ClearWallpaperCount();
   SetOnlineWallpaperFromImage(
-      account_id_1, online_wallpaper, kDummyUrl, layout, false /*save_file=*/,
-      true /*preview_mode=*/,
+      account_id_1, online_wallpaper, kDummyUrl, kDummyCollectionId, layout,
+      /*save_file=*/false, /*preview_mode=*/true,
       WallpaperControllerImpl::SetOnlineWallpaperCallback());
   RunAllTasksUntilIdle();
   EXPECT_EQ(1, GetWallpaperCount());
@@ -2619,8 +2637,8 @@
       CreateImage(640, 480, synced_online_wallpaper_color);
   ClearWallpaperCount();
   SetOnlineWallpaperFromImage(
-      account_id_1, synced_online_wallpaper, kDummyUrl2, layout,
-      false /*save_file=*/, false /*preview_mode=*/,
+      account_id_1, synced_online_wallpaper, kDummyUrl2, kDummyCollectionId,
+      layout, /*save_file=*/false, /*preview_mode=*/false,
       WallpaperControllerImpl::SetOnlineWallpaperCallback());
   RunAllTasksUntilIdle();
   EXPECT_EQ(0, GetWallpaperCount());
@@ -3089,8 +3107,9 @@
   // successfully.
   ClearWallpaperCount();
   controller_->SetOnlineWallpaperFromData(
-      account_id_1, std::string() /*image_data=*/, kDummyUrl,
-      WALLPAPER_LAYOUT_CENTER_CROPPED, false /*preview_mode=*/,
+      account_id_1, /*image_data=*/std::string(), kDummyUrl,
+      WALLPAPER_LAYOUT_CENTER_CROPPED,
+      /*preview_mode=*/false,
       WallpaperControllerImpl::SetOnlineWallpaperCallback());
   RunAllTasksUntilIdle();
 
diff --git a/ash/wm/desks/desks_unittests.cc b/ash/wm/desks/desks_unittests.cc
index 4bb787b9..be15f46 100644
--- a/ash/wm/desks/desks_unittests.cc
+++ b/ash/wm/desks/desks_unittests.cc
@@ -4224,6 +4224,35 @@
   EXPECT_EQ(std::u16string(), desk_name_view_2->GetText());
 }
 
+// Tests that when a user has a `DeskNameView` focused and clicks within the
+// overview grid, the `DeskNameView` loses focus and the overview grid is not
+// closed.
+TEST_F(DesksTest, ClickingOverviewGridUnfocusesDeskNameView) {
+  // Create a second desk so we don't start in zero state.
+  NewDesk();
+
+  // Start overview.
+  auto* overview_controller = Shell::Get()->overview_controller();
+  overview_controller->StartOverview();
+  EXPECT_TRUE(overview_controller->InOverviewSession());
+
+  // Focus on a `DeskNameView`.
+  auto* overview_grid = GetOverviewGridForRoot(Shell::GetPrimaryRootWindow());
+  const auto* desks_bar_view = overview_grid->desks_bar_view();
+  ASSERT_EQ(2u, desks_bar_view->mini_views().size());
+  auto* desk_name_view = desks_bar_view->mini_views()[0]->desk_name_view();
+  desk_name_view->RequestFocus();
+  ASSERT_TRUE(desk_name_view->HasFocus());
+
+  // Click the center of the overview grid. This should not close overview mode
+  // and should remove focus from the focused `desk_name_view`.
+  auto* event_generator = GetEventGenerator();
+  event_generator->MoveMouseTo(overview_grid->bounds().CenterPoint());
+  event_generator->ClickLeftButton();
+  EXPECT_FALSE(desk_name_view->HasFocus());
+  EXPECT_TRUE(overview_controller->InOverviewSession());
+}
+
 TEST_F(DesksTest, ScrollableDesks) {
   UpdateDisplay("201x400");
   auto* overview_controller = Shell::Get()->overview_controller();
diff --git a/ash/wm/full_restore/full_restore_controller.cc b/ash/wm/full_restore/full_restore_controller.cc
index 9cc11d3..2777a01 100644
--- a/ash/wm/full_restore/full_restore_controller.cc
+++ b/ash/wm/full_restore/full_restore_controller.cc
@@ -212,7 +212,7 @@
   if (window->GetProperty(full_restore::kParentToHiddenContainerKey))
     return;
 
-  UpdateAndObserveWindow(widget->GetNativeWindow());
+  UpdateAndObserveWindow(window);
 }
 
 void FullRestoreController::OnARCTaskReadyForUnparentedWindow(
@@ -256,22 +256,22 @@
 
 void FullRestoreController::OnWindowVisibilityChanged(aura::Window* window,
                                                       bool visible) {
-  if (!windows_observation_.IsObservingSource(window) &&
-      !to_be_shown_windows_.contains(window)) {
+  // `OnWindowVisibilityChanged` fires for children of a window as well, but we
+  // are only interested in the window we originally observed.
+  if (!windows_observation_.IsObservingSource(window))
     return;
-  }
+
+  if (!visible || !to_be_shown_windows_.contains(window))
+    return;
 
   to_be_shown_windows_.erase(window);
 
-  // Arc app geometry is ready at this point so restore state type.
-  if (IsArcWindow(window))
-    RestoreStateTypeAndClearLaunchedKey(window);
+  RestoreStateTypeAndClearLaunchedKey(window);
 
-  // Early return if `window` isn't visible, we're not in tablet mode, or the
-  // app list is null.
+  // Early return if we're not in tablet mode, or the app list is null.
   aura::Window* app_list_window =
       Shell::Get()->app_list_controller()->GetWindow();
-  if (!visible || !Shell::Get()->tablet_mode_controller()->InTabletMode() ||
+  if (!Shell::Get()->tablet_mode_controller()->InTabletMode() ||
       !app_list_window) {
     return;
   }
@@ -291,9 +291,12 @@
   DCHECK(window->parent());
   windows_observation_.AddObservation(window);
 
-  // Only restore state type for arc apps once their geometry is ready.
-  if (!IsArcWindow(window))
-    RestoreStateTypeAndClearLaunchedKey(window);
+  // Unless minimized, snap state and activation unblock are done when the
+  // window is first shown, which will be async for exo apps.
+  if (WindowState::Get(window)->IsMinimized())
+    window->SetProperty(full_restore::kLaunchedFromFullRestoreKey, false);
+  else
+    to_be_shown_windows_.insert(window);
 
   int32_t* activation_index =
       window->GetProperty(full_restore::kActivationIndexKey);
diff --git a/ash/wm/overview/overview_grid_event_handler.cc b/ash/wm/overview/overview_grid_event_handler.cc
index 127e213..ff9214c 100644
--- a/ash/wm/overview/overview_grid_event_handler.cc
+++ b/ash/wm/overview/overview_grid_event_handler.cc
@@ -134,6 +134,14 @@
 void OverviewGridEventHandler::HandleClickOrTap(ui::Event* event) {
   CHECK_EQ(ui::EP_PRETARGET, event->phase());
 
+  // If the user is renaming a desk, rather than closing overview the focused
+  // `DeskNameView` should lose focus.
+  if (grid_->IsDeskNameBeingModified()) {
+    grid_->CommitDeskNameChanges();
+    event->StopPropagation();
+    return;
+  }
+
   if (Shell::Get()->tablet_mode_controller()->InTabletMode()) {
     aura::Window* window = static_cast<views::View*>(event->target())
                                ->GetWidget()
diff --git a/base/allocator/partition_allocator/partition_alloc_unittest.cc b/base/allocator/partition_allocator/partition_alloc_unittest.cc
index 03b8083d..0bd0a3c 100644
--- a/base/allocator/partition_allocator/partition_alloc_unittest.cc
+++ b/base/allocator/partition_allocator/partition_alloc_unittest.cc
@@ -1021,12 +1021,7 @@
 #endif  // BUILDFLAG(USE_BACKUP_REF_PTR)
 
 // Test the realloc() contract.
-#if defined(OS_ANDROID)
-#define MAYBE_Realloc DISABLED_Realloc
-#else
-#define MAYBE_Realloc Realloc
-#endif
-TEST_F(PartitionAllocTest, MAYBE_Realloc) {
+TEST_F(PartitionAllocTest, Realloc) {
   // realloc(0, size) should be equivalent to malloc().
   void* ptr = allocator.root()->Realloc(nullptr, kTestAllocSize, type_name);
   memset(ptr, 'A', kTestAllocSize);
@@ -1385,12 +1380,7 @@
 }
 
 // Basic tests to ensure that allocations work for partial page buckets.
-#if defined(OS_ANDROID)
-#define MAYBE_PartialPages DISABLED_PartialPages
-#else
-#define MAYBE_PartialPages PartialPages
-#endif
-TEST_F(PartitionAllocTest, MAYBE_PartialPages) {
+TEST_F(PartitionAllocTest, PartialPages) {
   // Find a size that is backed by a partial partition page.
   size_t size = sizeof(void*);
   size_t bucket_index;
@@ -2099,12 +2089,7 @@
 }
 
 // Tests the API to purge freeable memory.
-#if defined(OS_ANDROID)
-#define MAYBE_Purge DISABLED_Purge
-#else
-#define MAYBE_Purge Purge
-#endif
-TEST_F(PartitionAllocTest, MAYBE_Purge) {
+TEST_F(PartitionAllocTest, Purge) {
   char* ptr = reinterpret_cast<char*>(
       allocator.root()->Alloc(2048 - kExtraAllocSize, type_name));
   allocator.root()->Free(ptr);
@@ -2708,12 +2693,7 @@
     PartitionRoot<ThreadSafe>::Free(ptr);
 }
 
-#if defined(OS_ANDROID)
-#define MAYBE_AlignedAllocations DISABLED_AlignedAllocations
-#else
-#define MAYBE_AlignedAllocations AlignedAllocations
-#endif
-TEST_F(PartitionAllocTest, MAYBE_AlignedAllocations) {
+TEST_F(PartitionAllocTest, AlignedAllocations) {
   size_t alloc_sizes[] = {1,     10,    100,    1000,   10000,
                           60000, 70000, 130000, 500000, 900000};
   size_t max_alignment = 1048576;
@@ -3079,12 +3059,7 @@
 #endif  // BUILDFLAG(ENABLE_BRP_DIRECTMAP_SUPPORT)
 
 // Test for crash http://crbug.com/1169003.
-#if defined(OS_ANDROID)
-#define MAYBE_CrossPartitionRootRealloc DISABLED_CrossPartitionRootRealloc
-#else
-#define MAYBE_CrossPartitionRootRealloc CrossPartitionRootRealloc
-#endif
-TEST_F(PartitionAllocTest, MAYBE_CrossPartitionRootRealloc) {
+TEST_F(PartitionAllocTest, CrossPartitionRootRealloc) {
   // Size is large enough to satisfy it from a single-slot slot span
   size_t test_size =
       SystemPageSize() * MaxSystemPagesPerSlotSpan() - kExtraAllocSize;
diff --git a/base/debug/crash_logging.h b/base/debug/crash_logging.h
index fb9651bf..4d7eb4c 100644
--- a/base/debug/crash_logging.h
+++ b/base/debug/crash_logging.h
@@ -25,13 +25,43 @@
 //
 // The preferred API is //components/crash/core/common:crash_key, however not
 // all clients can hold a direct dependency on that target. The API provided
-// in this file indirects the dependency.
+// in this file indirects the dependency and adds some convenience helpers that
+// make the API a bit less clunky.
 //
-// Example usage:
-//   static CrashKeyString* crash_key =
-//       AllocateCrashKeyString("name", CrashKeySize::Size32);
-//   SetCrashKeyString(crash_key, "value");
-//   ClearCrashKeyString(crash_key);
+// TODO(dcheng): Some of the nicer APIs should probably be upstreamed into
+// //components/crash.
+//
+// Preferred usage when a crash key value only needs to be set within a scope:
+//
+//   SCOPED_CRASH_KEY_STRING32("category", "name", "value");
+//   base::debug::DumpWithoutCrashing();
+//
+// If the crash key is pre-allocated elsewhere, but the value only needs to be
+// set within a scope:
+//
+//   base::debug::ScopedCrashKeyString scoper(
+//       GetCrashKeyForComponent(),
+//       "value");
+//
+// Otherwise, if the crash key needs to persist (e.g. the actual crash dump is
+// triggered some time later asynchronously):
+//
+//   static auto* const crash_key = base::debug::AllocateCrashKeyString(
+//       "name", base::debug::CrashKeySize::Size32);
+//   base::debug::SetCrashKeyString(crash_key);
+//
+//   // Do other work before calling `base::debug::DumpWithoutCrashing()` later.
+//
+// ***WARNING***
+//
+// Do *not* write this:
+//
+//   base::debug::SetCrashKeyString(
+//       base::debug::AllocateCrashKeyString(
+//           "name", base::debug::CrashKeySize::Size32),
+//       "value");
+//
+// As this will leak a heap allocation every time the crash key is set!
 
 // The maximum length for a crash key's value must be one of the following
 // pre-determined values.
@@ -46,6 +76,10 @@
 // Allocates a new crash key with the specified |name| with storage for a
 // value up to length |size|. This will return null if the crash key system is
 // not initialized.
+//
+// Note: this internally allocates, so the returned pointer should always
+// be cached in a variable with static storage duration, e.g.:
+//   static auto* const crash_key = base::debug::AllocateCrashKeyString(...);
 BASE_EXPORT CrashKeyString* AllocateCrashKeyString(const char name[],
                                                    CrashKeySize size);
 
diff --git a/base/task/sequence_manager/sequence_manager_impl.cc b/base/task/sequence_manager/sequence_manager_impl.cc
index b33440fa..e5265e6 100644
--- a/base/task/sequence_manager/sequence_manager_impl.cc
+++ b/base/task/sequence_manager/sequence_manager_impl.cc
@@ -109,6 +109,9 @@
   if (time_domain_now->find(time_domain) == time_domain_now->end())
     time_domain_now->insert(std::make_pair(time_domain, time_domain->Now()));
   queue->ReclaimMemory(time_domain_now->at(time_domain));
+  // If the queue was shut down as a side-effect of reclaiming memory, |queue|
+  // will still be valid but the work queues will have been removed by
+  // TaskQueueImpl::UnregisterTaskQueue.
   if (queue->delayed_work_queue()) {
     queue->delayed_work_queue()->RemoveAllCanceledTasksFromFront();
     queue->immediate_work_queue()->RemoveAllCanceledTasksFromFront();
diff --git a/base/task/sequence_manager/task_queue_impl.cc b/base/task/sequence_manager/task_queue_impl.cc
index cc3cc89..396827d3 100644
--- a/base/task/sequence_manager/task_queue_impl.cc
+++ b/base/task/sequence_manager/task_queue_impl.cc
@@ -9,6 +9,7 @@
 #include <memory>
 #include <utility>
 
+#include "base/containers/stack_container.h"
 #include "base/logging.h"
 #include "base/ranges/algorithm.h"
 #include "base/strings/stringprintf.h"
@@ -1048,7 +1049,9 @@
   main_thread_only().delayed_incoming_queue.SweepCancelledTasks(
       sequence_manager_);
 
-  // If deleting one of the cancelled tasks shut down this queue, bail out.
+  // If deleting one of the cancelled tasks shut down this queue, bail out. Note
+  // that in this scenario |this| is still valid, but some fields of the queue
+  // have been cleared out by |UnregisterTaskQueue|.
   if (!main_thread_only().delayed_work_queue)
     return;
 
@@ -1389,15 +1392,16 @@
   // move all the cancelled tasks into a temporary container before deleting
   // them. This is to avoid |c| from changing while c.erase() is running.
   auto delete_start = std::stable_partition(c.begin(), c.end(), keep_task);
-  std::vector<Task> tasks_to_delete;
-  std::move(delete_start, c.end(), std::back_inserter(tasks_to_delete));
+  StackVector<Task, 8> tasks_to_delete;
+  std::move(delete_start, c.end(),
+            std::back_inserter(tasks_to_delete.container()));
   c.erase(delete_start, c.end());
 
   // stable_partition ensures order was not changed if there was nothing to
   // delete.
-  if (!tasks_to_delete.empty()) {
+  if (!tasks_to_delete->empty()) {
     ranges::make_heap(c, comp);
-    tasks_to_delete.clear();
+    tasks_to_delete->clear();
   }
   return num_high_res_tasks_swept;
 }
diff --git a/base/task/sequence_manager/work_queue.cc b/base/task/sequence_manager/work_queue.cc
index b4bccca..5459de8 100644
--- a/base/task/sequence_manager/work_queue.cc
+++ b/base/task/sequence_manager/work_queue.cc
@@ -4,6 +4,7 @@
 
 #include "base/task/sequence_manager/work_queue.h"
 
+#include "base/containers/stack_container.h"
 #include "base/debug/alias.h"
 #include "base/task/sequence_manager/sequence_manager_impl.h"
 #include "base/task/sequence_manager/work_queue_sets.h"
@@ -205,7 +206,7 @@
   // Since task destructors could have a side-effect of deleting this task queue
   // we move cancelled tasks into a temporary container which can be emptied
   // without accessing |this|.
-  std::vector<Task> tasks_to_delete;
+  StackVector<Task, 8> tasks_to_delete;
 
   while (!tasks_.empty()) {
     const auto& pending_task = tasks_.front();
@@ -232,10 +233,10 @@
 #endif  // !defined(OS_NACL)
     if (pending_task.task && !pending_task.task.IsCancelled())
       break;
-    tasks_to_delete.push_back(std::move(tasks_.front()));
+    tasks_to_delete->push_back(std::move(tasks_.front()));
     tasks_.pop_front();
   }
-  if (!tasks_to_delete.empty()) {
+  if (!tasks_to_delete->empty()) {
     if (tasks_.empty()) {
       // NB delayed tasks are inserted via Push, no don't need to reload those.
       if (queue_type_ == QueueType::kImmediate) {
@@ -253,7 +254,7 @@
       work_queue_sets_->OnQueuesFrontTaskChanged(this);
     task_queue_->TraceQueueSize();
   }
-  return !tasks_to_delete.empty();
+  return !tasks_to_delete->empty();
 }
 
 void WorkQueue::AssignToWorkQueueSets(WorkQueueSets* work_queue_sets) {
diff --git a/base/values.h b/base/values.h
index 7198dc48..4d0ffe0 100644
--- a/base/values.h
+++ b/base/values.h
@@ -650,10 +650,6 @@
   // DEPRECATED, use `Value::FindKey(key)` instead.
   bool HasKey(StringPiece key) const;
 
-  // Returns the number of Values in this dictionary.
-  // DEPRECATED, use `Value::DictSize()` instead.
-  size_t size() const { return dict().size(); }
-
   // Returns whether the dictionary is empty.
   // DEPRECATED, use `Value::DictEmpty()` instead.
   bool empty() const { return dict().empty(); }
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPersonalDataManagerTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPersonalDataManagerTest.java
index dc90986f..b68f109 100644
--- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPersonalDataManagerTest.java
+++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPersonalDataManagerTest.java
@@ -813,6 +813,7 @@
      */
     @Test
     @MediumTest
+    @FlakyTest(message = "https://crbug.com/1213197")
     public void testEditOfServerCard() throws Exception {
         String profileId = mHelper.addDummyProfile("Adam West", "adamwest@google.com");
         mHelper.addServerCreditCard(mHelper.createDummyCreditCard(
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java
index 4441a1c..ce7962c 100644
--- a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java
+++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java
@@ -462,6 +462,7 @@
     @Test
     @MediumTest
     @Feature({"StartSurface"})
+    @FlakyTest(message = "https://crbug.com/1169673")
     // clang-format off
     @CommandLineFlags.Add({BASE_PARAMS + "/single"})
     public void testShow_SingleAsHomepage_FromResumeShowStart() throws Exception {
@@ -1658,6 +1659,7 @@
         }
         StartSurfaceTestUtils.waitForOverviewVisible(
                 mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        StartSurfaceTestUtils.waitForTabModel(mActivityTestRule.getActivity());
 
         SiteSuggestion siteToDismiss = mMostVisitedSites.getCurrentSites().get(1);
         final View tileView = getTileViewFor(siteToDismiss);
@@ -1690,18 +1692,19 @@
         }
         StartSurfaceTestUtils.waitForOverviewVisible(
                 mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForTabModel(cta);
 
         SiteSuggestion siteToOpen = mMostVisitedSites.getCurrentSites().get(1);
         final View tileView = getTileViewFor(siteToOpen);
 
         // Open the tile using the context menu.
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
         TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
         OverviewModeBehaviorWatcher hideWatcher = TabUiTestHelper.createOverviewHideWatcher(cta);
         invokeContextMenu(tileView, ContextMenuManager.ContextMenuItemId.OPEN_IN_NEW_TAB);
         hideWatcher.waitForBehavior();
         CriteriaHelper.pollUiThread(() -> !cta.getLayoutManager().overviewVisible());
-        // Verifies a new Tab is created.
+        // Verifies a new tab is created.
         TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
     }
 
@@ -1716,18 +1719,19 @@
         }
         StartSurfaceTestUtils.waitForOverviewVisible(
                 mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForTabModel(cta);
 
         SiteSuggestion siteToOpen = mMostVisitedSites.getCurrentSites().get(1);
         final View tileView = getTileViewFor(siteToOpen);
 
-        // Open the tile using the context menu.
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        // Open the incognito tile using the context menu.
         TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
         OverviewModeBehaviorWatcher hideWatcher = TabUiTestHelper.createOverviewHideWatcher(cta);
         invokeContextMenu(tileView, ContextMenuManager.ContextMenuItemId.OPEN_IN_INCOGNITO_TAB);
         hideWatcher.waitForBehavior();
         CriteriaHelper.pollUiThread(() -> !cta.getLayoutManager().overviewVisible());
-        // Verifies a new Tab is created.
+        // Verifies a new incognito tab is created.
         TabUiTestHelper.verifyTabModelTabCount(cta, 1, 1);
     }
 
@@ -1740,6 +1744,8 @@
     }
 
     private View getTileViewFor(SiteSuggestion suggestion) {
+        onViewWaiting(
+                allOf(withId(org.chromium.chrome.tab_ui.R.id.mv_tiles_layout), isDisplayed()));
         View tileView = getMvTilesLayout().getTileViewForTesting(suggestion);
         Assert.assertNotNull("Tile not found for suggestion " + suggestion.url, tileView);
 
diff --git a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingDialogTest.java b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingDialogTest.java
index 6441640..e20b77aad 100644
--- a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingDialogTest.java
+++ b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingDialogTest.java
@@ -46,6 +46,7 @@
 import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.CriteriaHelper;
 import org.chromium.base.test.util.Feature;
+import org.chromium.base.test.util.FlakyTest;
 import org.chromium.base.test.util.Restriction;
 import org.chromium.chrome.browser.ChromeTabbedActivity;
 import org.chromium.chrome.browser.app.ChromeActivity;
@@ -113,6 +114,7 @@
     @Test
     @MediumTest
     @CommandLineFlags.Add({BASE_PARAMS})
+    @FlakyTest(message = "https://crbug.com/1213194")
     public void testShowAndHidePriceTrackingDialog() {
         final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java
index 18b9459a..9423b8f 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java
@@ -97,12 +97,6 @@
     /** The {@link LayoutManagerHost}, who is responsible for showing the active {@link Layout}. */
     protected final LayoutManagerHost mHost;
 
-    /**
-     * A means of notifying features that the browser controls' android view is being forced to
-     * hide.
-     */
-    private final ObservableSupplierImpl<Boolean> mAndroidViewShownSupplier;
-
     /** The last X coordinate of the last {@link MotionEvent#ACTION_DOWN} event. */
     protected int mLastTapX;
 
@@ -274,8 +268,6 @@
             Supplier<TopUiThemeColorProvider> topUiThemeColorProvider) {
         mHost = host;
         mPxToDp = 1.f / mHost.getContext().getResources().getDisplayMetrics().density;
-        mAndroidViewShownSupplier = new ObservableSupplierImpl<>();
-        mAndroidViewShownSupplier.set(true);
         mTabContentManagerSupplier = tabContentManagerSupplier;
         mLayoutStateProviderOneshotSupplier = layoutStateProviderOneshotSupplier;
         mLayerTitleCacheSupplier = layerTitleCacheSupplier;
@@ -651,10 +643,8 @@
         if (overlayHidesControls || mActiveLayout.forceHideBrowserControlsAndroidView()) {
             mControlsHidingToken = controlsVisibilityManager.hideAndroidControlsAndClearOldToken(
                     mControlsHidingToken);
-            mAndroidViewShownSupplier.set(false);
         } else {
             controlsVisibilityManager.releaseAndroidControlsHidingToken(mControlsHidingToken);
-            mAndroidViewShownSupplier.set(true);
         }
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java
index 0015ab37..f9191ab 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java
@@ -393,6 +393,7 @@
      * @see AutocompleteController#onVoiceResults(List)
      */
     void onVoiceResults(@Nullable List<VoiceRecognitionHandler.VoiceResult> results) {
+        if (!mNativeInitialized || mAutocomplete == null) return;
         mAutocomplete.onVoiceResults(results);
     }
 
@@ -438,7 +439,8 @@
     @Override
     public void onSuggestionClicked(
             @NonNull AutocompleteMatch suggestion, int position, @NonNull GURL url) {
-        if (mAutocompleteResult.isFromCachedResult() && !mNativeInitialized) {
+        if (mAutocompleteResult.isFromCachedResult()
+                && (!mNativeInitialized || mAutocomplete == null)) {
             // clang-format off
             mDeferredLoadAction = () -> loadUrlForOmniboxMatch(
                             position, suggestion, url, mLastActionUpTimestamp, true);
@@ -584,10 +586,7 @@
      */
     private GURL updateSuggestionUrlIfNeeded(@NonNull AutocompleteMatch suggestion,
             int selectedIndex, @NonNull GURL url, boolean skipCheck) {
-        // Only called once we have suggestions, and don't have a listener though which we can
-        // receive suggestions until the native side is ready, so this is safe
-        assert mNativeInitialized
-            : "updateSuggestionUrlIfNeeded called before native initialization";
+        if (!mNativeInitialized || mAutocomplete == null) return url;
         if (suggestion.getType() == OmniboxSuggestionType.VOICE_SUGGEST
                 || suggestion.getType() == OmniboxSuggestionType.TILE_SUGGESTION
                 || suggestion.getType() == OmniboxSuggestionType.TILE_NAVSUGGEST) {
@@ -651,7 +650,8 @@
         mIgnoreOmniboxItemSelection = true;
         cancelAutocompleteRequests();
 
-        if (mEditSessionState == EditSessionState.INACTIVE && mNativeInitialized) {
+        if (mEditSessionState == EditSessionState.INACTIVE && mNativeInitialized
+                && mAutocomplete != null) {
             mAutocomplete.resetSession();
             mNewOmniboxEditSessionTimestamp = SystemClock.elapsedRealtime();
             mEditSessionState = EditSessionState.ACTIVATED_BY_USER_INPUT;
@@ -742,7 +742,7 @@
     void loadTypedOmniboxText(long eventTime) {
         final String urlText = mUrlBarEditingTextProvider.getTextWithAutocomplete();
         cancelAutocompleteRequests();
-        if (mNativeInitialized) {
+        if (mNativeInitialized && mAutocomplete != null) {
             findMatchAndLoadUrl(urlText, eventTime);
         } else {
             mDeferredLoadAction = () -> findMatchAndLoadUrl(urlText, eventTime);
@@ -769,6 +769,7 @@
             // user tapped the URL bar to dismiss the suggestions, then pressed enter. This can
             // also happen if the user presses enter before any suggestions have been received
             // from the autocomplete controller.
+            if (!mNativeInitialized || mAutocomplete == null) return;
             suggestionMatch = mAutocomplete.classify(urlText, mDelegate.didFocusUrlFromFakebox());
             // Classify matches don't propagate to java, so skip the OOB check.
             inSuggestionList = false;
@@ -886,8 +887,7 @@
      * @see AutocompleteController#stop(boolean)
      */
     private void hideSuggestions() {
-        if (mAutocomplete == null || !mNativeInitialized) return;
-
+        if (!mNativeInitialized || mAutocomplete == null) return;
         stopAutocomplete(true);
 
         mDropdownViewInfoListManager.clear();
@@ -902,7 +902,7 @@
      * @param clear Whether to clear the most recent autocomplete results.
      */
     private void stopAutocomplete(boolean clear) {
-        if (mAutocomplete != null) mAutocomplete.stop(clear);
+        if (mNativeInitialized && mAutocomplete != null) mAutocomplete.stop(clear);
         cancelAutocompleteRequests();
     }
 
@@ -910,6 +910,7 @@
      * Trigger autocomplete for the given query.
      */
     void startAutocompleteForQuery(String query) {
+        if (!mNativeInitialized || mAutocomplete == null) return;
         stopAutocomplete(false);
         if (mDataProvider.hasTab()) {
             mAutocomplete.start(mDataProvider.getProfile(), mDataProvider.getCurrentUrl(),
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/media/ui/PictureInPictureControllerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/media/ui/PictureInPictureControllerTest.java
index c8b74418..a377d54 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/media/ui/PictureInPictureControllerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/media/ui/PictureInPictureControllerTest.java
@@ -19,7 +19,6 @@
 
 import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.CriteriaHelper;
-import org.chromium.base.test.util.DisableIf;
 import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.FlakyTest;
 import org.chromium.base.test.util.MinAndroidSdkLevel;
@@ -113,7 +112,7 @@
     @MediumTest
     @CommandLineFlags.Add({"enable-features=Portals"})
     @MinAndroidSdkLevel(Build.VERSION_CODES.O)
-    @DisableIf.Build(supported_abis_includes = "x86", message = "https://crbug.com/1211930")
+    @FlakyTest(message = "https://crbug.com/1211930")
     public void testExitPipOnPortalActivation() throws Throwable {
         testExitOn(()
                            -> JavaScriptUtils.executeJavaScript(getWebContents(),
@@ -124,7 +123,7 @@
     @Test
     @MediumTest
     @MinAndroidSdkLevel(Build.VERSION_CODES.O)
-    @DisableIf.Build(supported_abis_includes = "x86", message = "https://crbug.com/1211930")
+    @FlakyTest(message = "https://crbug.com/1211930")
     public void testExitOnLeaveFullscreen() throws Throwable {
         testExitOn(() -> DOMUtils.exitFullscreen(getWebContents()));
     }
@@ -133,7 +132,7 @@
     @Test
     @MediumTest
     @MinAndroidSdkLevel(Build.VERSION_CODES.O)
-    @DisableIf.Build(supported_abis_includes = "x86", message = "https://crbug.com/1211930")
+    @FlakyTest(message = "https://crbug.com/1211930")
     public void testExitOnCloseTab() throws Throwable {
         // We want 2 Tabs so we can close the first without any special behaviour.
         mActivityTestRule.loadUrlInNewTab(mTestServer.getURL(TEST_PATH));
@@ -145,7 +144,7 @@
     @Test
     @MediumTest
     @MinAndroidSdkLevel(Build.VERSION_CODES.O)
-    @DisableIf.Build(supported_abis_includes = "x86", message = "https://crbug.com/1211930")
+    @FlakyTest(message = "https://crbug.com/1211930")
     public void testExitOnCrash() throws Throwable {
         testExitOn(() -> WebContentsUtils.simulateRendererKilled(getWebContents(), false));
     }
@@ -154,7 +153,7 @@
     @Test
     @MediumTest
     @MinAndroidSdkLevel(Build.VERSION_CODES.O)
-    @DisableIf.Build(supported_abis_includes = "x86", message = "https://crbug.com/1211930")
+    @FlakyTest(message = "https://crbug.com/1211930")
     public void testExitOnNewForegroundTab() throws Throwable {
         testExitOn(new Runnable() {
             @Override
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninCheckerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninCheckerTest.java
index df1d53f..79980a5 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninCheckerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninCheckerTest.java
@@ -25,6 +25,7 @@
 import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.CriteriaHelper;
 import org.chromium.base.test.util.DisableIf;
+import org.chromium.base.test.util.FlakyTest;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.flags.ChromeSwitches;
 import org.chromium.chrome.browser.profiles.Profile;
@@ -82,6 +83,7 @@
 
     @Test
     @MediumTest
+    @FlakyTest(message = "https://crbug.com/1205346")
     public void signinWhenPrimaryAccountIsRenamedToAKnownAccount() {
         mActivityTestRule.startMainActivityOnBlankPage();
         mAccountManagerTestRule.addAccountAndWaitForSeeding("the.second.account@gmail.com");
@@ -103,6 +105,7 @@
 
     @Test
     @MediumTest
+    @FlakyTest(message = "https://crbug.com/1205346")
     public void signoutWhenPrimaryAccountIsRenamedToAnUnknownAccount() {
         mActivityTestRule.startMainActivityOnBlankPage();
         mAccountManagerTestRule.addAccountAndWaitForSeeding("the.second.account@gmail.com");
@@ -124,6 +127,7 @@
 
     @Test
     @MediumTest
+    @FlakyTest(message = "https://crbug.com/1205346")
     public void signoutWhenPrimaryAccountIsRemoved() {
         mActivityTestRule.startMainActivityOnBlankPage();
         mAccountManagerTestRule.addAccountAndWaitForSeeding("the.second.account@gmail.com");
diff --git a/chrome/app/profiles_strings.grdp b/chrome/app/profiles_strings.grdp
index b5b231e..c3f1a1a 100644
--- a/chrome/app/profiles_strings.grdp
+++ b/chrome/app/profiles_strings.grdp
@@ -64,9 +64,6 @@
   </message>
 
   <!-- Multi-profile -->
-  <message name="IDS_PROFILES_OPTIONS_GROUP_NAME" desc="The name of the sync group in the options dialog when using the new Profiles UI.">
-    People
-  </message>
   <message name="IDS_PROFILES_MENU_NAME" desc="The name of menu for profiles (Mac and linux) and name for the launcher menu section (Mac).">
     Profiles
   </message>
@@ -138,9 +135,6 @@
     Addresses and more
   </message>
   <if expr="not use_titlecase">
-    <message name="IDS_PROFILES_OTHER_PROFILES_TITLE" desc="Title in the profile menu of the 'other profiles' section.">
-      Other people
-    </message>
     <message name="IDS_PROFILES_LIST_PROFILES_TITLE" desc="Title in the profile menu for the list of 'other profiles'.">
       Other profiles
     </message>
@@ -150,14 +144,8 @@
     <message name="IDS_PROFILES_PROFILE_HIDE_MANAGE_ACCOUNTS_BUTTON" desc="Button in the avatar menu bubble view used to hide the accounts for a profile.">
       Hide accounts
     </message>
-    <message name="IDS_PROFILES_MANAGE_USERS_BUTTON" desc="Button in the avatar menu bubble view for launching the user manager.">
-      Manage people
-    </message>
   </if>
   <if expr="use_titlecase">
-    <message name="IDS_PROFILES_OTHER_PROFILES_TITLE" desc="Title in the profile menu of the 'other profiles' section.">
-      Other People
-    </message>
     <message name="IDS_PROFILES_LIST_PROFILES_TITLE" desc="Title in the profile menu for the list of 'other profiles'.">
       Other Profiles
     </message>
@@ -167,9 +155,6 @@
     <message name="IDS_PROFILES_PROFILE_HIDE_MANAGE_ACCOUNTS_BUTTON" desc="Button in the avatar menu bubble view used to hide the accounts for a profile.">
       Hide Accounts
     </message>
-    <message name="IDS_PROFILES_MANAGE_USERS_BUTTON" desc="Button in the avatar menu bubble view for launching the user manager.">
-      Manage People
-    </message>
   </if>
   <message name="IDS_PROFILES_MANAGE_PROFILES_BUTTON_TOOLTIP" desc="Button in the avatar menu bubble view for launching the profile picker.">
     Manage profiles
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
index 04329eee..a1de6d88 100644
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -3202,9 +3202,6 @@
   <message name="IDS_SETTINGS_SYNC_DISCONNECT_MANAGED_PROFILE_EXPLANATION" desc="The text to display in the 'Sign out of Chrome' dialog to stop syncing for managed profiles.">
     Because this account is managed by <ph name="DOMAIN">$1<ex>example.com</ex></ph>, your bookmarks, history, passwords, and other settings will be cleared from this device. However, your data will remain stored in your Google Account and can be managed on <ph name="BEGIN_LINK">&lt;a href="$2" target=&quot;_blank&quot;&gt;<ex>&lt;a href="$2" target=&quot;_blank&quot;&gt;</ex></ph>Google Dashboard<ph name="END_LINK">&lt;/a&gt;<ex>&lt;/a&gt;</ex></ph>.
   </message>
-  <message name="IDS_SETTINGS_EDIT_PERSON" desc="Title of the edit person subpage. This is a subpage to edit the name and icon of a Chrome Profile.">
-    Edit person
-  </message>
   <message name="IDS_SETTINGS_TURN_OFF_SYNC_AND_SIGN_OUT_DIALOG_TITLE" desc="The text to display on the title of the dialog to turn off sync and sign out.">
     Turn off sync and personalization?
   </message>
diff --git a/chrome/app/vector_icons/BUILD.gn b/chrome/app/vector_icons/BUILD.gn
index 8ab19ed..9ba424b8 100644
--- a/chrome/app/vector_icons/BUILD.gn
+++ b/chrome/app/vector_icons/BUILD.gn
@@ -35,7 +35,6 @@
     "chrome_labs_touch.icon",
     "click_to_call_illustration.icon",
     "click_to_call_illustration_dark.icon",
-    "close_all.icon",
     "computer_with_circle_background.icon",
     "copy.icon",
     "crashed_tab.icon",
diff --git a/chrome/app/vector_icons/close_all.icon b/chrome/app/vector_icons/close_all.icon
deleted file mode 100644
index 20c8b0c..0000000
--- a/chrome/app/vector_icons/close_all.icon
+++ /dev/null
@@ -1,86 +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.
-
-CANVAS_DIMENSIONS, 24,
-MOVE_TO, 4, 6,
-H_LINE_TO, 2,
-R_V_LINE_TO, 14,
-R_CUBIC_TO, 0, 1.1f, 0.9f, 2, 2, 2,
-R_H_LINE_TO, 14,
-R_V_LINE_TO, -2,
-H_LINE_TO, 4,
-V_LINE_TO, 6,
-CLOSE,
-R_MOVE_TO, 16, -4,
-H_LINE_TO, 8,
-R_CUBIC_TO, -1.1f, 0, -2, 0.9f, -2, 2,
-R_V_LINE_TO, 12,
-R_CUBIC_TO, 0, 1.1f, 0.9f, 2, 2, 2,
-R_H_LINE_TO, 12,
-R_CUBIC_TO, 1.1f, 0, 2, -0.9f, 2, -2,
-V_LINE_TO, 4,
-R_CUBIC_TO, 0, -1.1f, -0.9f, -2, -2, -2,
-CLOSE,
-R_MOVE_TO, -3.17f, 12.24f,
-LINE_TO, 14, 11.41f,
-R_LINE_TO, -2.83f, 2.83f,
-R_LINE_TO, -1.41f, -1.41f,
-LINE_TO, 12.59f, 10,
-LINE_TO, 9.76f, 7.17f,
-R_LINE_TO, 1.41f, -1.41f,
-LINE_TO, 14, 8.59f,
-R_LINE_TO, 2.83f, -2.83f,
-R_LINE_TO, 1.41f, 1.41f,
-LINE_TO, 15.41f, 10,
-R_LINE_TO, 2.83f, 2.83f,
-R_LINE_TO, -1.41f, 1.41f,
-CLOSE
-
-CANVAS_DIMENSIONS, 16,
-MOVE_TO, 2.5f, 13.5f,
-LINE_TO, 10.5f, 13.5f,
-CUBIC_TO, 10.78f, 13.5f, 11, 13.72f, 11, 14,
-LINE_TO, 11, 14.5f,
-CUBIC_TO, 11, 14.78f, 10.78f, 15, 10.5f, 15,
-LINE_TO, 2.5f, 15,
-LINE_TO, 2, 15,
-CUBIC_TO, 1.45f, 15, 1, 14.55f, 1, 14,
-LINE_TO, 1, 5.5f,
-CUBIC_TO, 1, 5.22f, 1.22f, 5, 1.5f, 5,
-LINE_TO, 2, 5,
-CUBIC_TO, 2.28f, 5, 2.5f, 5.22f, 2.5f, 5.5f,
-LINE_TO, 2.5f, 13.5f,
-CLOSE,
-MOVE_TO, 13.78f, 1,
-CUBIC_TO, 14.45f, 1, 15, 1.55f, 15, 2.22f,
-LINE_TO, 15, 10.78f,
-CUBIC_TO, 15, 11.45f, 14.45f, 12, 13.78f, 12,
-LINE_TO, 5.22f, 12,
-CUBIC_TO, 4.55f, 12, 4, 11.45f, 4, 10.78f,
-LINE_TO, 4, 2.22f,
-CUBIC_TO, 4, 1.55f, 4.55f, 1, 5.22f, 1,
-LINE_TO, 13.78f, 1,
-CLOSE,
-MOVE_TO, 12.65f, 3.63f,
-LINE_TO, 12.37f, 3.35f,
-CUBIC_TO, 12.17f, 3.16f, 11.85f, 3.16f, 11.66f, 3.35f,
-LINE_TO, 9.5f, 5.51f,
-LINE_TO, 7.34f, 3.35f,
-CUBIC_TO, 7.15f, 3.16f, 6.83f, 3.16f, 6.63f, 3.35f,
-LINE_TO, 6.35f, 3.63f,
-CUBIC_TO, 6.16f, 3.83f, 6.16f, 4.15f, 6.35f, 4.34f,
-LINE_TO, 8.51f, 6.5f,
-LINE_TO, 6.35f, 8.66f,
-CUBIC_TO, 6.16f, 8.85f, 6.16f, 9.17f, 6.35f, 9.37f,
-LINE_TO, 6.63f, 9.65f,
-CUBIC_TO, 6.83f, 9.84f, 7.15f, 9.84f, 7.34f, 9.65f,
-LINE_TO, 9.5f, 7.49f,
-LINE_TO, 11.66f, 9.65f,
-CUBIC_TO, 11.85f, 9.84f, 12.17f, 9.84f, 12.37f, 9.65f,
-LINE_TO, 12.65f, 9.37f,
-CUBIC_TO, 12.84f, 9.17f, 12.84f, 8.85f, 12.65f, 8.66f,
-LINE_TO, 10.49f, 6.5f,
-LINE_TO, 12.65f, 4.34f,
-CUBIC_TO, 12.84f, 4.15f, 12.84f, 3.83f, 12.65f, 3.63f,
-CLOSE
diff --git a/chrome/app_shim/app_shim_controller.h b/chrome/app_shim/app_shim_controller.h
index d072dd1..0a485fa 100644
--- a/chrome/app_shim/app_shim_controller.h
+++ b/chrome/app_shim/app_shim_controller.h
@@ -120,9 +120,8 @@
   void SetBadgeLabel(const std::string& badge_label) override;
   void SetUserAttention(
       chrome::mojom::AppShimAttentionType attention_type) override;
-  void UpdateProfileMenu(
-      std::vector<chrome::mojom::ProfileMenuItemPtr> profile_menu_items,
-      bool use_new_picker) override;
+  void UpdateProfileMenu(std::vector<chrome::mojom::ProfileMenuItemPtr>
+                             profile_menu_items) override;
 
   // Helper function to set up a connection to the AppShimListener at the given
   // Mach endpoint name.
diff --git a/chrome/app_shim/app_shim_controller.mm b/chrome/app_shim/app_shim_controller.mm
index ab2a95aa5..b69587f 100644
--- a/chrome/app_shim/app_shim_controller.mm
+++ b/chrome/app_shim/app_shim_controller.mm
@@ -359,12 +359,7 @@
 
 void AppShimController::SetUpMenu() {
   chrome::BuildMainMenu(NSApp, delegate_, params_.app_name, true);
-
-  // Initialize the profiles menu to be empty (the value of `use_new_picker` is
-  // chosen arbitrarily as it does not matter for an empty menu). It will be
-  // updated from the browser.
-  UpdateProfileMenu(std::vector<chrome::mojom::ProfileMenuItemPtr>(),
-                    /*use_new_picker=*/false);
+  UpdateProfileMenu(std::vector<chrome::mojom::ProfileMenuItemPtr>());
 }
 
 void AppShimController::BootstrapChannelError(uint32_t custom_reason,
@@ -451,8 +446,7 @@
 }
 
 void AppShimController::UpdateProfileMenu(
-    std::vector<chrome::mojom::ProfileMenuItemPtr> profile_menu_items,
-    bool use_new_picker) {
+    std::vector<chrome::mojom::ProfileMenuItemPtr> profile_menu_items) {
   profile_menu_items_ = std::move(profile_menu_items);
 
   NSMenuItem* cocoa_profile_menu =
@@ -465,9 +459,7 @@
   [cocoa_profile_menu setHidden:NO];
 
   base::scoped_nsobject<NSMenu> menu([[NSMenu alloc]
-      initWithTitle:l10n_util::GetNSStringWithFixup(
-                        use_new_picker ? IDS_PROFILES_MENU_NAME
-                                       : IDS_PROFILES_OPTIONS_GROUP_NAME)]);
+      initWithTitle:l10n_util::GetNSStringWithFixup(IDS_PROFILES_MENU_NAME)]);
   [cocoa_profile_menu setSubmenu:menu];
 
   // Note that this code to create menu items is nearly identical to the code
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 3c4fccb1..b2e3362 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -329,6 +329,8 @@
     "component_updater/mei_preload_component_installer.h",
     "component_updater/pepper_flash_component_installer.cc",
     "component_updater/pepper_flash_component_installer.h",
+    "component_updater/pki_metadata_component_installer.cc",
+    "component_updater/pki_metadata_component_installer.h",
     "component_updater/pnacl_component_installer.cc",
     "component_updater/pnacl_component_installer.h",
     "component_updater/recovery_component_installer.cc",
@@ -1676,10 +1678,6 @@
     "ssl/connection_help_tab_helper.h",
     "ssl/insecure_form/insecure_form_controller_client.cc",
     "ssl/insecure_form/insecure_form_controller_client.h",
-    "ssl/insecure_sensitive_input_driver.cc",
-    "ssl/insecure_sensitive_input_driver.h",
-    "ssl/insecure_sensitive_input_driver_factory.cc",
-    "ssl/insecure_sensitive_input_driver_factory.h",
     "ssl/known_interception_disclosure_infobar_delegate.cc",
     "ssl/known_interception_disclosure_infobar_delegate.h",
     "ssl/sct_reporting_service.cc",
@@ -2429,6 +2427,7 @@
       "//chromeos/timezone",
       "//chromeos/tpm",
       "//components/arc/mojom",
+      "//components/certificate_transparency",
       "//components/drive",
       "//components/quirks",
       "//components/session_manager/core",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index e518a1b..3f317975 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -5102,11 +5102,6 @@
 #endif  // !defined(OS_ANDROID)
 
 #if BUILDFLAG(ENABLE_DICE_SUPPORT)
-    {"enable-new-profile-picker", flag_descriptions::kNewProfilePickerName,
-     flag_descriptions::kNewProfilePickerDescription,
-     kOsMac | kOsWin | kOsLinux,
-     FEATURE_VALUE_TYPE(features::kNewProfilePicker)},
-
     {"enable-sign-in-profile-creation",
      flag_descriptions::kSignInProfileCreationName,
      flag_descriptions::kSignInProfileCreationDescription,
diff --git a/chrome/browser/app_controller_mac.mm b/chrome/browser/app_controller_mac.mm
index c7780ed..9b168ee 100644
--- a/chrome/browser/app_controller_mac.mm
+++ b/chrome/browser/app_controller_mac.mm
@@ -1548,6 +1548,10 @@
     _startupUrls.insert(_startupUrls.end(), urls.begin(), urls.end());
     return;
   }
+
+  if (StartupBrowserCreator::MaybeHandleProfileAgnosticUrls(urls))
+    return;
+
   // Pick the last used browser from a regular profile to open the urls.
   Profile* profile =
       g_browser_process->profile_manager()->GetLastUsedProfileAllowedByPolicy();
diff --git a/chrome/browser/app_controller_mac_browsertest.mm b/chrome/browser/app_controller_mac_browsertest.mm
index 7f793fef..2efa2a6 100644
--- a/chrome/browser/app_controller_mac_browsertest.mm
+++ b/chrome/browser/app_controller_mac_browsertest.mm
@@ -50,7 +50,13 @@
 #include "chrome/browser/ui/search/ntp_test_utils.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/browser/ui/ui_features.h"
+#include "chrome/browser/ui/web_applications/app_browser_controller.h"
 #include "chrome/browser/ui/webui/welcome/helpers.h"
+#include "chrome/browser/web_applications/components/os_integration_manager.h"
+#include "chrome/browser/web_applications/components/url_handler_manager.h"
+#include "chrome/browser/web_applications/test/fake_web_app_origin_association_manager.h"
+#include "chrome/browser/web_applications/test/web_app_install_test_utils.h"
+#include "chrome/browser/web_applications/web_app_provider.h"
 #include "chrome/common/chrome_constants.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/common/pref_names.h"
@@ -61,11 +67,13 @@
 #include "components/bookmarks/browser/bookmark_model.h"
 #include "components/bookmarks/test/bookmark_test_helpers.h"
 #include "components/prefs/pref_service.h"
+#include "components/services/app_service/public/cpp/url_handler_info.h"
 #include "content/public/browser/navigation_controller.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/test/browser_test.h"
 #include "content/public/test/browser_test_utils.h"
 #include "content/public/test/test_navigation_observer.h"
+#include "content/public/test/test_utils.h"
 #include "extensions/browser/app_window/app_window_registry.h"
 #include "extensions/common/extension.h"
 #include "extensions/test/extension_test_message_listener.h"
@@ -82,6 +90,8 @@
 namespace {
 
 GURL g_open_shortcut_url = GURL::EmptyGURL();
+const char16_t kAppName[] = u"Test App";
+const char kStartUrl[] = "https://test.com";
 
 // Returns an Apple Event that instructs the application to open |url|.
 NSAppleEventDescriptor* AppleEventToOpenUrl(const GURL& url) {
@@ -865,6 +875,125 @@
   EXPECT_EQ(profile, new_browser->profile()->GetOriginalProfile());
 }
 
+class StartupWebAppUrlHandlingBrowserTest : public InProcessBrowserTest {
+ protected:
+  StartupWebAppUrlHandlingBrowserTest() = default;
+
+  void SetUpOnMainThread() override {
+    InProcessBrowserTest::SetUpOnMainThread();
+    OverrideAssociationManager();
+  }
+
+  web_app::WebAppProviderBase* provider() {
+    return web_app::WebAppProviderBase::GetProviderBase(browser()->profile());
+  }
+
+  web_app::AppId InstallWebAppWithUrlHandlers(
+      const std::vector<apps::UrlHandlerInfo>& url_handlers) {
+    return web_app::test::InstallWebAppWithUrlHandlers(
+        browser()->profile(), GURL(kStartUrl), kAppName, url_handlers);
+  }
+
+  void OverrideAssociationManager() {
+    auto association_manager =
+        std::make_unique<web_app::FakeWebAppOriginAssociationManager>();
+    association_manager->set_pass_through(true);
+
+    auto& url_handler_manager =
+        provider()->os_integration_manager().url_handler_manager_for_testing();
+    url_handler_manager.SetAssociationManagerForTesting(
+        std::move(association_manager));
+  }
+
+  // Check that there are two browsers. Find the one that is not |browser|.
+  Browser* FindOneOtherBrowser(Browser* browser) {
+    // There should only be one other browser.
+    EXPECT_EQ(2u, chrome::GetBrowserCount(browser->profile()));
+
+    // Find the new browser.
+    Browser* other_browser = nullptr;
+    for (auto* b : *BrowserList::GetInstance()) {
+      if (b != browser)
+        other_browser = b;
+    }
+    return other_browser;
+  }
+};
+
+IN_PROC_BROWSER_TEST_F(StartupWebAppUrlHandlingBrowserTest,
+                       WebAppLaunch_InScopeUrl) {
+  apps::UrlHandlerInfo url_handler;
+  url_handler.origin = url::Origin::Create(GURL(kStartUrl));
+
+  web_app::AppId app_id = InstallWebAppWithUrlHandlers({url_handler});
+
+  // Start URL is in app scope.
+  SendAppleEventToOpenUrlToAppController(GURL(kStartUrl));
+
+  // Wait for app launch task to complete.
+  content::RunAllTasksUntilIdle();
+
+  // Check for new app window.
+  ASSERT_EQ(2u, chrome::GetBrowserCount(browser()->profile()));
+  Browser* app_browser;
+  app_browser = FindOneOtherBrowser(browser());
+  ASSERT_TRUE(app_browser);
+  ASSERT_TRUE(web_app::AppBrowserController::IsForWebApp(app_browser, app_id));
+
+  // Verify the launched URL of the app window.
+  TabStripModel* tab_strip = app_browser->tab_strip_model();
+  ASSERT_EQ(1, tab_strip->count());
+  content::WebContents* web_contents = tab_strip->GetWebContentsAt(0);
+  EXPECT_EQ(GURL(kStartUrl), web_contents->GetVisibleURL());
+}
+
+IN_PROC_BROWSER_TEST_F(StartupWebAppUrlHandlingBrowserTest,
+                       WebAppLaunch_DifferentOriginUrl) {
+  apps::UrlHandlerInfo url_handler;
+  url_handler.origin = url::Origin::Create(GURL("https://example.com"));
+  web_app::AppId app_id = InstallWebAppWithUrlHandlers({url_handler});
+
+  // URL is not in app scope but matches url_handlers of installed app.
+  SendAppleEventToOpenUrlToAppController(GURL("https://example.com/abc/def"));
+
+  // Wait for app launch task to complete.
+  content::RunAllTasksUntilIdle();
+
+  // Check for new app window.
+  ASSERT_EQ(2u, chrome::GetBrowserCount(browser()->profile()));
+  Browser* app_browser;
+  app_browser = FindOneOtherBrowser(browser());
+  ASSERT_TRUE(app_browser);
+  ASSERT_TRUE(web_app::AppBrowserController::IsForWebApp(app_browser, app_id));
+
+  // Out-of-scope URL launch results in app launch with default launch URL.
+  TabStripModel* tab_strip = app_browser->tab_strip_model();
+  ASSERT_EQ(1, tab_strip->count());
+  content::WebContents* web_contents = tab_strip->GetWebContentsAt(0);
+  EXPECT_EQ(GURL(kStartUrl), web_contents->GetVisibleURL());
+}
+
+IN_PROC_BROWSER_TEST_F(StartupWebAppUrlHandlingBrowserTest, UrlNotCaptured) {
+  apps::UrlHandlerInfo url_handler;
+  url_handler.origin = url::Origin::Create(GURL("https://example.com"));
+  web_app::AppId app_id = InstallWebAppWithUrlHandlers({url_handler});
+
+  // This URL is not in scope of installed app and does not match url_handlers.
+  SendAppleEventToOpenUrlToAppController(
+      GURL("https://en.example.com/abc/def"));
+
+  content::RunAllTasksUntilIdle();
+
+  ASSERT_EQ(1u, chrome::GetBrowserCount(browser()->profile()));
+  ASSERT_FALSE(web_app::AppBrowserController::IsForWebApp(browser(), app_id));
+  TabStripModel* tab_strip = browser()->tab_strip_model();
+  ASSERT_EQ(2, tab_strip->count());
+  // Check the link of the new tab that was opened.
+  content::WebContents* web_contents = tab_strip->GetWebContentsAt(1);
+  EXPECT_EQ(GURL("https://en.example.com/abc/def"),
+            web_contents->GetVisibleURL());
+}
+
 }  // namespace
 
 //--------------------------AppControllerHandoffBrowserTest---------------------
diff --git a/chrome/browser/apps/app_shim/app_shim_host_mac_unittest.cc b/chrome/browser/apps/app_shim/app_shim_host_mac_unittest.cc
index ab86f6e..2730edb 100644
--- a/chrome/browser/apps/app_shim/app_shim_host_mac_unittest.cc
+++ b/chrome/browser/apps/app_shim/app_shim_host_mac_unittest.cc
@@ -62,9 +62,8 @@
   void SetUserAttention(
       chrome::mojom::AppShimAttentionType attention_type) override {}
   void SetBadgeLabel(const std::string& badge_label) override {}
-  void UpdateProfileMenu(
-      std::vector<chrome::mojom::ProfileMenuItemPtr> profile_menu_items,
-      bool use_new_picker) override {}
+  void UpdateProfileMenu(std::vector<chrome::mojom::ProfileMenuItemPtr>
+                             profile_menu_items) override {}
 
   bool received_launch_done_result_ = false;
   chrome::mojom::AppShimLaunchResult launch_done_result_ =
diff --git a/chrome/browser/apps/app_shim/app_shim_listener_browsertest_mac.mm b/chrome/browser/apps/app_shim/app_shim_listener_browsertest_mac.mm
index 1d10511..3c4aa91 100644
--- a/chrome/browser/apps/app_shim/app_shim_listener_browsertest_mac.mm
+++ b/chrome/browser/apps/app_shim/app_shim_listener_browsertest_mac.mm
@@ -75,9 +75,8 @@
   void SetUserAttention(
       chrome::mojom::AppShimAttentionType attention_type) override {}
   void SetBadgeLabel(const std::string& badge_label) override {}
-  void UpdateProfileMenu(
-      std::vector<chrome::mojom::ProfileMenuItemPtr> profile_menu_items,
-      bool use_new_picker) override {}
+  void UpdateProfileMenu(std::vector<chrome::mojom::ProfileMenuItemPtr>
+                             profile_menu_items) override {}
 
  private:
   void OnShimConnectedDone(
diff --git a/chrome/browser/apps/app_shim/app_shim_manager_mac.cc b/chrome/browser/apps/app_shim/app_shim_manager_mac.cc
index 8646ae2b..063f5020 100644
--- a/chrome/browser/apps/app_shim/app_shim_manager_mac.cc
+++ b/chrome/browser/apps/app_shim/app_shim_manager_mac.cc
@@ -1056,8 +1056,7 @@
 
   // Send the profile menu to the app shim process.
   app_state->multi_profile_host->GetAppShim()->UpdateProfileMenu(
-      std::move(items),
-      base::FeatureList::IsEnabled(features::kNewProfilePicker));
+      std::move(items));
 }
 
 AppShimManager::ProfileState* AppShimManager::GetOrCreateProfileState(
diff --git a/chrome/browser/apps/app_shim/app_shim_manager_mac_unittest.cc b/chrome/browser/apps/app_shim/app_shim_manager_mac_unittest.cc
index fa853879..be607b56 100644
--- a/chrome/browser/apps/app_shim/app_shim_manager_mac_unittest.cc
+++ b/chrome/browser/apps/app_shim/app_shim_manager_mac_unittest.cc
@@ -243,9 +243,8 @@
   void SetBadgeLabel(const std::string& badge_label) override {}
   void SetUserAttention(
       chrome::mojom::AppShimAttentionType attention_type) override {}
-  void UpdateProfileMenu(
-      std::vector<chrome::mojom::ProfileMenuItemPtr> profile_menu_items,
-      bool use_new_picker) override {
+  void UpdateProfileMenu(std::vector<chrome::mojom::ProfileMenuItemPtr>
+                             profile_menu_items) override {
     profile_menu_items_ = std::move(profile_menu_items);
   }
 
diff --git a/chrome/browser/ash/accessibility/dictation.cc b/chrome/browser/ash/accessibility/dictation.cc
index da2a0fd..8995463b 100644
--- a/chrome/browser/ash/accessibility/dictation.cc
+++ b/chrome/browser/ash/accessibility/dictation.cc
@@ -107,7 +107,7 @@
     // SODA is installed on-device.
     speech_recognizer_ = std::make_unique<OnDeviceSpeechRecognizer>(
         weak_ptr_factory_.GetWeakPtr(), profile_, language,
-        /*recognition_mode_ime=*/true);
+        /*recognition_mode_ime=*/true, /*enable_formatting=*/false);
     base::UmaHistogramBoolean("Accessibility.CrosDictation.UsedOnDeviceSpeech",
                               true);
     no_speech_timeout_ = kDeviceNoSpeechTimeout;
diff --git a/chrome/browser/ash/backdrop_wallpaper_handlers/backdrop_wallpaper_handlers.cc b/chrome/browser/ash/backdrop_wallpaper_handlers/backdrop_wallpaper_handlers.cc
index 1b68f46..91a5278 100644
--- a/chrome/browser/ash/backdrop_wallpaper_handlers/backdrop_wallpaper_handlers.cc
+++ b/chrome/browser/ash/backdrop_wallpaper_handlers/backdrop_wallpaper_handlers.cc
@@ -280,7 +280,7 @@
   }
 
   backdrop_fetcher_.reset();
-  std::move(callback_).Run(success, images);
+  std::move(callback_).Run(success, collection_id_, images);
 }
 
 SurpriseMeImageFetcher::SurpriseMeImageFetcher(const std::string& collection_id,
diff --git a/chrome/browser/ash/backdrop_wallpaper_handlers/backdrop_wallpaper_handlers.h b/chrome/browser/ash/backdrop_wallpaper_handlers/backdrop_wallpaper_handlers.h
index 4c4b134d..194686d 100644
--- a/chrome/browser/ash/backdrop_wallpaper_handlers/backdrop_wallpaper_handlers.h
+++ b/chrome/browser/ash/backdrop_wallpaper_handlers/backdrop_wallpaper_handlers.h
@@ -51,6 +51,7 @@
  public:
   using OnImagesInfoFetched =
       base::OnceCallback<void(bool success,
+                              const std::string& collection_id,
                               const std::vector<backdrop::Image>& images)>;
 
   explicit ImageInfoFetcher(const std::string& collection_id);
diff --git a/chrome/browser/ash/login/chrome_restart_request.cc b/chrome/browser/ash/login/chrome_restart_request.cc
index d9f73ac..7d42302 100644
--- a/chrome/browser/ash/login/chrome_restart_request.cc
+++ b/chrome/browser/ash/login/chrome_restart_request.cc
@@ -244,6 +244,7 @@
 void DeriveEnabledFeatures(base::CommandLine* out_command_line) {
   static const base::Feature* kForwardEnabledFeatures[] = {
       &ash::features::kAutoNightLight,
+      &chromeos::features::kCellularUseAttachApn,
       &chromeos::features::kLacrosPrimary,
       &chromeos::features::kLacrosSupport,
       &::features::kPluginVm,
diff --git a/chrome/browser/ash/web_applications/chrome_personalization_app_ui_delegate.cc b/chrome/browser/ash/web_applications/chrome_personalization_app_ui_delegate.cc
index 7977a63..f54f12d 100644
--- a/chrome/browser/ash/web_applications/chrome_personalization_app_ui_delegate.cc
+++ b/chrome/browser/ash/web_applications/chrome_personalization_app_ui_delegate.cc
@@ -9,6 +9,7 @@
 #include <algorithm>
 #include <iterator>
 #include <memory>
+#include <string>
 #include <vector>
 
 #include "ash/public/cpp/wallpaper_info.h"
@@ -29,6 +30,7 @@
 #include "mojo/public/cpp/bindings/receiver.h"
 #include "mojo/public/cpp/bindings/type_converter.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
+#include "url/gurl.h"
 
 namespace mojo {
 
@@ -172,8 +174,9 @@
 
   client->SetOnlineWallpaper(
       user->GetAccountId(),
-      GURL(it->second.spec() +
+      GURL(it->second.image_url.spec() +
            WallpaperControllerClientImpl::GetBackdropWallpaperSuffix()),
+      it->second.collection_id,
       ash::WallpaperLayout::WALLPAPER_LAYOUT_CENTER_CROPPED,
       /*preview_mode=*/false, std::move(callback));
 }
@@ -204,6 +207,7 @@
 void ChromePersonalizationAppUiDelegate::OnFetchCollectionImages(
     FetchImagesForCollectionCallback callback,
     bool success,
+    const std::string& collection_id,
     const std::vector<backdrop::Image>& images) {
   DCHECK(wallpaper_images_info_fetcher_);
 
@@ -222,7 +226,8 @@
         LOG(WARNING) << "Invalid image discarded";
         continue;
       }
-      image_asset_id_map_.insert({mojom_image->asset_id, mojom_image->url});
+      image_asset_id_map_.insert(
+          {mojom_image->asset_id, {mojom_image->url, collection_id}});
       data.push_back(std::move(mojom_image));
     }
     result = std::move(data);
diff --git a/chrome/browser/ash/web_applications/chrome_personalization_app_ui_delegate.h b/chrome/browser/ash/web_applications/chrome_personalization_app_ui_delegate.h
index ab683aba..4d1166b 100644
--- a/chrome/browser/ash/web_applications/chrome_personalization_app_ui_delegate.h
+++ b/chrome/browser/ash/web_applications/chrome_personalization_app_ui_delegate.h
@@ -9,9 +9,12 @@
 
 #include <stdint.h>
 
+#include <string>
+
 #include "chromeos/components/personalization_app/mojom/personalization_app.mojom.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "mojo/public/cpp/bindings/receiver.h"
+#include "url/gurl.h"
 
 namespace backdrop {
 class Collection;
@@ -72,6 +75,7 @@
 
   void OnFetchCollectionImages(FetchImagesForCollectionCallback callback,
                                bool success,
+                               const std::string& collection_id,
                                const std::vector<backdrop::Image>& images);
 
   std::unique_ptr<backdrop_wallpaper_handlers::CollectionInfoFetcher>
@@ -80,9 +84,14 @@
   std::unique_ptr<backdrop_wallpaper_handlers::ImageInfoFetcher>
       wallpaper_images_info_fetcher_;
 
-  // Store a mapping of valid image asset_ids to their URL to validate user
-  // wallpaper selections.
-  std::map<uint64_t, GURL> image_asset_id_map_;
+  struct ImageInfo {
+    GURL image_url;
+    std::string collection_id;
+  };
+
+  // Store a mapping of valid image asset_ids to their ImageInfo to validate
+  // user wallpaper selections.
+  std::map<uint64_t, ImageInfo> image_asset_id_map_;
 
   // Pointer to profile of user that opened personalization SWA. Not owned.
   Profile* const profile_ = nullptr;
diff --git a/chrome/browser/attribution_reporting/conversions_usecounter_browsertest.cc b/chrome/browser/attribution_reporting/chrome_attribution_browsertest.cc
similarity index 69%
rename from chrome/browser/attribution_reporting/conversions_usecounter_browsertest.cc
rename to chrome/browser/attribution_reporting/chrome_attribution_browsertest.cc
index f33a082..028ca2939 100644
--- a/chrome/browser/attribution_reporting/conversions_usecounter_browsertest.cc
+++ b/chrome/browser/attribution_reporting/chrome_attribution_browsertest.cc
@@ -6,6 +6,7 @@
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
 #include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_list.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/page_load_metrics/browser/page_load_metrics_test_waiter.h"
@@ -20,11 +21,12 @@
 #include "net/test/embedded_test_server/embedded_test_server.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
-// Tests UseCounters recorded for the Conversion Measurement API. This is tested
-// in the Chrome layer, as UseCounter recording is not used with content shell.
-class ConversionsUseCounterBrowsertest : public InProcessBrowserTest {
+// Tests for the Conversion Measurement API that rely on chrome/ layer features.
+// UseCounter recording and multiple browser window behavior is not available
+// content shell.
+class ChromeAttributionBrowserTest : public InProcessBrowserTest {
  public:
-  ConversionsUseCounterBrowsertest() {
+  ChromeAttributionBrowserTest() {
     feature_list_.InitAndEnableFeature(features::kConversionMeasurement);
   }
 
@@ -50,7 +52,7 @@
   base::test::ScopedFeatureList feature_list_;
 };
 
-IN_PROC_BROWSER_TEST_F(ConversionsUseCounterBrowsertest,
+IN_PROC_BROWSER_TEST_F(ChromeAttributionBrowserTest,
                        ImpressionClicked_FeatureRecorded) {
   base::HistogramTester histogram_tester;
   content::WebContents* web_contents =
@@ -95,7 +97,7 @@
       1);
 }
 
-IN_PROC_BROWSER_TEST_F(ConversionsUseCounterBrowsertest,
+IN_PROC_BROWSER_TEST_F(ChromeAttributionBrowserTest,
                        ConversionPing_FeatureRecorded) {
   base::HistogramTester histogram_tester;
 
@@ -127,3 +129,44 @@
       "Blink.UseCounter.Features", blink::mojom::WebFeature::kConversionAPIAll,
       1);
 }
+
+IN_PROC_BROWSER_TEST_F(ChromeAttributionBrowserTest,
+                       WindowOpenWithOnlyAttributionFeatures_LinkOpenedInTab) {
+  base::HistogramTester histogram_tester;
+  content::WebContents* web_contents =
+      browser()->tab_strip_model()->GetActiveWebContents();
+  page_load_metrics::PageLoadMetricsTestWaiter waiter(web_contents);
+  waiter.AddWebFeatureExpectation(
+    blink::mojom::WebFeature::kImpressionRegistration);
+
+  EXPECT_TRUE(ui_test_utils::NavigateToURL(
+      browser(),
+      server_.GetURL("a.test",
+                     "/conversions/page_with_impression_creator.html")));
+
+  // Create an observer to catch the opened WebContents.
+  content::WebContentsAddedObserver window_observer;
+
+  GURL link_url = server_.GetURL(
+      "b.test", "/conversions/page_with_conversion_redirect.html");
+  // Navigate the page using window.open and set an attribution source.
+  EXPECT_TRUE(ExecJs(web_contents, content::JsReplace(R"(
+    window.open($1, "_blank",
+    "attributionsourceeventid=1,attributiondestination=https://b.test,\
+    attributionreportto=https://report.com,attributionexpiry=1000,\
+    attributionsourcepriority=10");)",
+                                                      link_url)));
+
+  content::WebContents* new_contents = window_observer.GetWebContents();
+  WaitForLoadStop(new_contents);
+
+  // Verify that the impression registration is observed.
+  waiter.Wait();
+
+  // Ensure the window was opened in a new tab. If the window is in a new popup
+  // the web contents would not belong to the tab strip.
+  EXPECT_EQ(1,
+            browser()->tab_strip_model()->GetIndexOfWebContents(new_contents));
+  EXPECT_EQ(BrowserList::GetInstance()->size(), 1u);
+  EXPECT_EQ(browser()->tab_strip_model()->count(), 2);
+}
diff --git a/chrome/browser/autofill/DEPS b/chrome/browser/autofill/DEPS
index adf6d352..67d4531 100644
--- a/chrome/browser/autofill/DEPS
+++ b/chrome/browser/autofill/DEPS
@@ -1,5 +1,4 @@
 include_rules = [
-  '+components/android_autofill/browser',
   '+third_party/libaddressinput/chromium/chrome_metadata_source.h',
   '+third_party/libaddressinput/chromium/chrome_storage_impl.h',
 ]
diff --git a/chrome/browser/autofill/autofill_provider_browsertest.cc b/chrome/browser/autofill/autofill_provider_browsertest.cc
deleted file mode 100644
index e3a24c5..0000000
--- a/chrome/browser/autofill/autofill_provider_browsertest.cc
+++ /dev/null
@@ -1,341 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "base/base_switches.h"
-#include "base/bind.h"
-#include "base/macros.h"
-#include "build/build_config.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/tabs/tab_strip_model.h"
-#include "chrome/common/url_constants.h"
-#include "chrome/test/base/in_process_browser_test.h"
-#include "chrome/test/base/ui_test_utils.h"
-#include "components/android_autofill/browser/android_autofill_manager.h"
-#include "components/android_autofill/browser/test_autofill_provider.h"
-#include "components/autofill/content/browser/content_autofill_driver.h"
-#include "components/autofill/content/browser/content_autofill_driver_factory.h"
-#include "components/autofill/core/browser/test_autofill_client.h"
-#include "components/autofill/core/common/autofill_features.h"
-#include "components/autofill/core/common/form_data.h"
-#include "components/autofill/core/common/mojom/autofill_types.mojom.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/common/url_constants.h"
-#include "content/public/test/browser_test.h"
-#include "content/public/test/browser_test_utils.h"
-#include "content/public/test/test_utils.h"
-#include "net/dns/mock_host_resolver.h"
-#include "net/test/embedded_test_server/embedded_test_server.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/blink/public/common/switches.h"
-
-using ::testing::_;
-using ::testing::Invoke;
-
-namespace autofill {
-
-using mojom::SubmissionSource;
-
-namespace {
-
-class MockAutofillProvider : public TestAutofillProvider {
- public:
-  // WebContents takes ownership of the MockAutofillProvider.
-  explicit MockAutofillProvider(content::WebContents* web_contents)
-      : TestAutofillProvider(web_contents) {}
-
-  ~MockAutofillProvider() override = default;
-
-  MOCK_METHOD4(OnFormSubmitted,
-               void(AndroidAutofillManager* manager,
-                    const FormData& form,
-                    bool,
-                    SubmissionSource));
-
-  MOCK_METHOD6(OnQueryFormFieldAutofill,
-               void(AndroidAutofillManager* manager,
-                    int32_t id,
-                    const FormData& form,
-                    const FormFieldData& field,
-                    const gfx::RectF& bounding_box,
-                    bool autoselect_first_suggestion));
-
-  void OnQueryFormFieldAutofillImpl(AndroidAutofillManager* manager,
-                                    int32_t id,
-                                    const FormData& form,
-                                    const FormFieldData& field,
-                                    const gfx::RectF& bounding_box,
-                                    bool autoselect_first_suggestion) {
-    queried_form_ = form;
-  }
-
-  void OnFormSubmittedImpl(AndroidAutofillManager*,
-                           const FormData& form,
-                           bool success,
-                           SubmissionSource source) {
-    submitted_form_ = form;
-  }
-
-  const FormData& queried_form() { return queried_form_; }
-
-  const FormData& submitted_form() { return submitted_form_; }
-
- private:
-  FormData queried_form_;
-  FormData submitted_form_;
-};
-
-}  // namespace
-
-class AutofillProviderBrowserTest : public InProcessBrowserTest {
- public:
-  AutofillProviderBrowserTest() {}
-  ~AutofillProviderBrowserTest() override {}
-
-  void SetUp() override {
-    InProcessBrowserTest::SetUp();
-  }
-
-  void SetUpOnMainThread() override {
-    autofill_client_ = std::make_unique<TestAutofillClient>();
-    // WebContents takes ownership of the MockAutofillProvider.
-    autofill_provider_ = new MockAutofillProvider(WebContents());
-    // Serve both a.com and b.com (and any other domain).
-    host_resolver()->AddRule("*", "127.0.0.1");
-    ASSERT_TRUE(embedded_test_server()->Start());
-  }
-
-  // Necessary to avoid flakiness or failure due to input arriving
-  // before the first compositor commit.
-  void SetUpCommandLine(base::CommandLine* command_line) override {
-    InProcessBrowserTest::SetUpCommandLine(command_line);
-    command_line->AppendSwitch(blink::switches::kAllowPreCommitInput);
-  }
-
-  void CreateContentAutofillDriverFactoryForSubFrame() {
-    content::WebContents* web_contents = WebContents();
-    ASSERT_TRUE(web_contents != NULL);
-
-    web_contents->RemoveUserData(
-        ContentAutofillDriverFactory::
-            kContentAutofillDriverFactoryWebContentsUserDataKey);
-
-    // Replace the ContentAutofillDriverFactory for sub frame.
-    ContentAutofillDriverFactory::CreateForWebContentsAndDelegate(
-        web_contents, autofill_client_.get(), "en-US",
-        BrowserAutofillManager::DISABLE_AUTOFILL_DOWNLOAD_MANAGER,
-        base::BindRepeating(&AndroidAutofillManager::Create));
-  }
-
-  void TearDownOnMainThread() override {
-    testing::Mock::VerifyAndClearExpectations(autofill_provider_);
-  }
-
-  content::RenderFrameHost* GetMainFrame() {
-    return WebContents()->GetMainFrame();
-  }
-
-  content::WebContents* WebContents() {
-    return browser()->tab_strip_model()->GetActiveWebContents();
-  }
-
-  void SimulateUserTypingInFocusedField() {
-    content::WebContents* web_contents = WebContents();
-
-    content::SimulateKeyPress(web_contents, ui::DomKey::FromCharacter('O'),
-                              ui::DomCode::US_O, ui::VKEY_O, false, false,
-                              false, false);
-    content::SimulateKeyPress(web_contents, ui::DomKey::FromCharacter('R'),
-                              ui::DomCode::US_R, ui::VKEY_R, false, false,
-                              false, false);
-    content::SimulateKeyPress(web_contents, ui::DomKey::FromCharacter('A'),
-                              ui::DomCode::US_A, ui::VKEY_A, false, false,
-                              false, false);
-    content::SimulateKeyPress(web_contents, ui::DomKey::FromCharacter('R'),
-                              ui::DomCode::US_R, ui::VKEY_R, false, false,
-                              false, false);
-    content::SimulateKeyPress(web_contents, ui::DomKey::FromCharacter('Y'),
-                              ui::DomCode::US_Y, ui::VKEY_Y, false, false,
-                              false, false);
-  }
-
-  void SetLabelChangeExpectationAndTriggerQuery() {
-    // One query for the single click, and a second query when the typing is
-    // simulated.
-    base::RunLoop run_loop;
-    EXPECT_CALL(*autofill_provider_, OnQueryFormFieldAutofill(_, _, _, _, _, _))
-        .Times(testing::Exactly(2))
-        .WillOnce(Invoke(autofill_provider_,
-                         &MockAutofillProvider::OnQueryFormFieldAutofillImpl))
-        .WillOnce(
-            testing::InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
-
-    EXPECT_CALL(*autofill_provider_, OnFormSubmitted)
-        .WillOnce(Invoke(autofill_provider_,
-                         &MockAutofillProvider::OnFormSubmittedImpl));
-
-    ui_test_utils::NavigateToURL(browser(), embedded_test_server()->GetURL(
-                                                "/autofill/label_change.html"));
-
-    std::string focus("document.getElementById('address').focus();");
-    ASSERT_TRUE(content::ExecuteScript(GetMainFrame(), focus));
-
-    SimulateUserTypingInFocusedField();
-    run_loop.Run();
-  }
-
-  void ChangeLabelAndCheckResult(const std::string& element_id,
-                                 bool expect_forms_same) {
-    std::string change_label_and_submit =
-        "document.getElementById('" + element_id +
-        "').innerHTML='address change';"
-        "document.getElementById('submit_button').click();";
-
-    ASSERT_TRUE(
-        content::ExecuteScript(GetMainFrame(), change_label_and_submit));
-    // Need to pay attention for a message that XHR has finished since there
-    // is no navigation to wait for.
-    content::DOMMessageQueue message_queue;
-    std::string message;
-    while (message_queue.WaitForMessage(&message)) {
-      if (message == "\"SUBMISSION_FINISHED\"")
-        break;
-    }
-
-    EXPECT_EQ("\"SUBMISSION_FINISHED\"", message);
-    EXPECT_EQ(2u, autofill_provider_->queried_form().fields.size());
-    EXPECT_EQ(2u, autofill_provider_->submitted_form().fields.size());
-    EXPECT_EQ(expect_forms_same,
-              autofill_provider_->submitted_form().SimilarFormAs(
-                  autofill_provider_->queried_form()));
-  }
-
- protected:
-  MockAutofillProvider* autofill_provider_;
-
- private:
-  std::unique_ptr<TestAutofillClient> autofill_client_;
-};
-
-IN_PROC_BROWSER_TEST_F(AutofillProviderBrowserTest,
-                       FrameDetachedOnFormlessSubmission) {
-  CreateContentAutofillDriverFactoryForSubFrame();
-  EXPECT_CALL(*autofill_provider_,
-              OnFormSubmitted(_, _, _, SubmissionSource::FRAME_DETACHED))
-      .Times(1);
-  ui_test_utils::NavigateToURL(
-      browser(), embedded_test_server()->GetURL(
-                     "/autofill/frame_detached_on_formless_submit.html"));
-
-  // Need to pay attention for a message that XHR has finished since there
-  // is no navigation to wait for.
-  content::DOMMessageQueue message_queue;
-
-  std::string focus(
-      "var iframe = document.getElementById('address_iframe');"
-      "var frame_doc = iframe.contentDocument;"
-      "frame_doc.getElementById('address_field').focus();");
-  ASSERT_TRUE(content::ExecuteScript(GetMainFrame(), focus));
-
-  SimulateUserTypingInFocusedField();
-  std::string fill_and_submit =
-      "var iframe = document.getElementById('address_iframe');"
-      "var frame_doc = iframe.contentDocument;"
-      "frame_doc.getElementById('submit_button').click();";
-
-  ASSERT_TRUE(content::ExecuteScript(GetMainFrame(), fill_and_submit));
-  std::string message;
-  while (message_queue.WaitForMessage(&message)) {
-    if (message == "\"SUBMISSION_FINISHED\"")
-      break;
-  }
-  EXPECT_EQ("\"SUBMISSION_FINISHED\"", message);
-}
-
-IN_PROC_BROWSER_TEST_F(AutofillProviderBrowserTest,
-                       FrameDetachedOnFormSubmission) {
-  CreateContentAutofillDriverFactoryForSubFrame();
-  EXPECT_CALL(*autofill_provider_,
-              OnFormSubmitted(_, _, _, SubmissionSource::FORM_SUBMISSION))
-      .Times(1);
-  ui_test_utils::NavigateToURL(
-      browser(), embedded_test_server()->GetURL(
-                     "/autofill/frame_detached_on_form_submit.html"));
-
-  // Need to pay attention for a message that XHR has finished since there
-  // is no navigation to wait for.
-  content::DOMMessageQueue message_queue;
-
-  std::string focus(
-      "var iframe = document.getElementById('address_iframe');"
-      "var frame_doc = iframe.contentDocument;"
-      "frame_doc.getElementById('address_field').focus();");
-  ASSERT_TRUE(content::ExecuteScript(GetMainFrame(), focus));
-
-  SimulateUserTypingInFocusedField();
-  std::string fill_and_submit =
-      "var iframe = document.getElementById('address_iframe');"
-      "var frame_doc = iframe.contentDocument;"
-      "frame_doc.getElementById('submit_button').click();";
-
-  ASSERT_TRUE(content::ExecuteScript(GetMainFrame(), fill_and_submit));
-  std::string message;
-  while (message_queue.WaitForMessage(&message)) {
-    if (message == "\"SUBMISSION_FINISHED\"")
-      break;
-  }
-  EXPECT_EQ("\"SUBMISSION_FINISHED\"", message);
-}
-
-class AutofillProviderBrowserTestWithSkipFlagOn
-    : public AutofillProviderBrowserTest {
- public:
-  AutofillProviderBrowserTestWithSkipFlagOn() {
-    feature_list_.InitAndEnableFeature(
-        features::kAutofillSkipComparingInferredLabels);
-  }
-
- private:
-  base::test::ScopedFeatureList feature_list_;
-};
-
-class AutofillProviderBrowserTestWithSkipFlagOff
-    : public AutofillProviderBrowserTest {
- public:
-  AutofillProviderBrowserTestWithSkipFlagOff() {
-    feature_list_.InitAndDisableFeature(
-        features::kAutofillSkipComparingInferredLabels);
-  }
-
- private:
-  base::test::ScopedFeatureList feature_list_;
-};
-
-// TODO(crbug.com/1076487): These tests are flaky on all platforms.
-
-IN_PROC_BROWSER_TEST_F(AutofillProviderBrowserTestWithSkipFlagOn,
-                       DISABLED_LabelTagChangeImpactFormComparing) {
-  SetLabelChangeExpectationAndTriggerQuery();
-  ChangeLabelAndCheckResult("label_id", false /*expect_forms_same*/);
-}
-
-IN_PROC_BROWSER_TEST_F(AutofillProviderBrowserTestWithSkipFlagOn,
-                       DISABLED_InferredLabelChangeNotImpactFormComparing) {
-  SetLabelChangeExpectationAndTriggerQuery();
-  ChangeLabelAndCheckResult("p_id", true /*expect_forms_same*/);
-}
-
-IN_PROC_BROWSER_TEST_F(AutofillProviderBrowserTestWithSkipFlagOff,
-                       DISABLED_LabelTagChangeImpactFormComparing) {
-  SetLabelChangeExpectationAndTriggerQuery();
-  ChangeLabelAndCheckResult("label_id", false /*expect_forms_same*/);
-}
-
-IN_PROC_BROWSER_TEST_F(AutofillProviderBrowserTestWithSkipFlagOff,
-                       DISABLED_InferredLabelChangeImpactFormComparing) {
-  SetLabelChangeExpectationAndTriggerQuery();
-  ChangeLabelAndCheckResult("p_id", false /*expect_forms_same*/);
-}
-
-}  // namespace autofill
diff --git a/chrome/browser/autofill/automated_tests/cache_replayer_unittest.cc b/chrome/browser/autofill/automated_tests/cache_replayer_unittest.cc
index 4f8d0f7b..4f6d53d 100644
--- a/chrome/browser/autofill/automated_tests/cache_replayer_unittest.cc
+++ b/chrome/browser/autofill/automated_tests/cache_replayer_unittest.cc
@@ -225,8 +225,9 @@
   return WriteJSONNode(file_path, Value(std::move(root_dict)));
 }
 
+// TODO(https://crbug.com/1212151): The test flakily times out.
 TEST(AutofillCacheReplayerDeathTest,
-     ServerCacheReplayerConstructor_CrashesWhenNoDomainNode) {
+     DISABLED_ServerCacheReplayerConstructor_CrashesWhenNoDomainNode) {
   // Make death test threadsafe.
   testing::FLAGS_gtest_death_test_style = "threadsafe";
 
diff --git a/chrome/browser/chrome_browser_interface_binders.cc b/chrome/browser/chrome_browser_interface_binders.cc
index 1e7cc0c0..958f957 100644
--- a/chrome/browser/chrome_browser_interface_binders.cc
+++ b/chrome/browser/chrome_browser_interface_binders.cc
@@ -26,7 +26,6 @@
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/profiles/profile_manager.h"
 #include "chrome/browser/signin/identity_manager_factory.h"
-#include "chrome/browser/ssl/insecure_sensitive_input_driver_factory.h"
 #include "chrome/browser/ssl/security_state_tab_helper.h"
 #include "chrome/browser/ui/ui_features.h"
 #include "chrome/browser/ui/web_applications/draggable_region_host_impl.h"
@@ -70,7 +69,6 @@
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "services/image_annotation/public/mojom/image_annotation.mojom.h"
 #include "third_party/blink/public/mojom/credentialmanager/credential_manager.mojom.h"
-#include "third_party/blink/public/mojom/insecure_input/insecure_input_service.mojom.h"
 #include "third_party/blink/public/mojom/loader/navigation_predictor.mojom.h"
 #include "third_party/blink/public/mojom/payments/payment_credential.mojom.h"
 #include "third_party/blink/public/mojom/payments/payment_request.mojom.h"
@@ -515,9 +513,6 @@
   map->Add<blink::mojom::AnchorElementMetricsHost>(
       base::BindRepeating(&NavigationPredictor::Create));
 
-  map->Add<blink::mojom::InsecureInputService>(
-      base::BindRepeating(&InsecureSensitiveInputDriverFactory::BindDriver));
-
   map->Add<dom_distiller::mojom::DistillabilityService>(
       base::BindRepeating(&BindDistillabilityService));
 
diff --git a/chrome/browser/chromeos/extensions/default_app_order.cc b/chrome/browser/chromeos/extensions/default_app_order.cc
index b6648e1..6762f3e 100644
--- a/chrome/browser/chromeos/extensions/default_app_order.cc
+++ b/chrome/browser/chromeos/extensions/default_app_order.cc
@@ -124,7 +124,6 @@
     arc::kInfinitePainterAppId,
     web_app::kShowtimeAppId,
     extension_misc::kGooglePlusAppId,
-    extension_misc::kChromeRemoteDesktopAppId,
 };
 
 // Reads external ordinal json file and returned the parsed value. Returns NULL
diff --git a/chrome/browser/chromeos/extensions/gfx_utils.cc b/chrome/browser/chromeos/extensions/gfx_utils.cc
index 573a85f..e6ec13f 100644
--- a/chrome/browser/chromeos/extensions/gfx_utils.cc
+++ b/chrome/browser/chromeos/extensions/gfx_utils.cc
@@ -44,9 +44,6 @@
     {"com.google.android.apps.maps", "lneaknkopdijkpnocmklfnjbeapigfbh"},
     // Calculator
     {"com.google.android.calculator", "joodangkbfjnajiiifokapkpmhfnpleo"},
-    // Chrome Remote Desktop
-    {"com.google.chromeremotedesktop", "gbchcmhmhahfdphkhkmpfmihenigjmpp"},
-    {"com.google.chromeremotedesktop", "cdjikkcakjcdjemakobkmijmikhkegcj"},
     // Google Calender
     {"com.google.android.calendar", "ejjicmeblgpmajnghnpcppodonldlgfn"},
     {"com.google.android.calendar", "fpgfohogebplgnamlafljlcidjedbdeb"},
diff --git a/chrome/browser/chromeos/extensions/wallpaper_private_api.cc b/chrome/browser/chromeos/extensions/wallpaper_private_api.cc
index c0f1d76..60259bdd 100644
--- a/chrome/browser/chromeos/extensions/wallpaper_private_api.cc
+++ b/chrome/browser/chromeos/extensions/wallpaper_private_api.cc
@@ -351,6 +351,7 @@
 
   WallpaperControllerClientImpl::Get()->SetOnlineWallpaperIfExists(
       GetUserFromBrowserContext(browser_context())->GetAccountId(), params->url,
+      params->collection_id,
       wallpaper_api_util::GetLayoutEnum(
           wallpaper_base::ToString(params->layout)),
       params->preview_mode,
@@ -737,6 +738,7 @@
 
 void WallpaperPrivateGetImagesInfoFunction::OnImagesInfoFetched(
     bool success,
+    const std::string& collection_id,
     const std::vector<backdrop::Image>& images) {
   if (!success) {
     Respond(Error("Images info is not available."));
diff --git a/chrome/browser/chromeos/extensions/wallpaper_private_api.h b/chrome/browser/chromeos/extensions/wallpaper_private_api.h
index c14d83b8..ed7ff17c 100644
--- a/chrome/browser/chromeos/extensions/wallpaper_private_api.h
+++ b/chrome/browser/chromeos/extensions/wallpaper_private_api.h
@@ -313,6 +313,7 @@
 
   // Callback upon completion of fetching the images info.
   void OnImagesInfoFetched(bool success,
+                           const std::string& collection_id,
                            const std::vector<backdrop::Image>& images);
 
   DISALLOW_COPY_AND_ASSIGN(WallpaperPrivateGetImagesInfoFunction);
diff --git a/chrome/browser/chromeos/net/network_diagnostics/dns_resolver_present_routine.cc b/chrome/browser/chromeos/net/network_diagnostics/dns_resolver_present_routine.cc
index 852d952..88580081 100644
--- a/chrome/browser/chromeos/net/network_diagnostics/dns_resolver_present_routine.cc
+++ b/chrome/browser/chromeos/net/network_diagnostics/dns_resolver_present_routine.cc
@@ -63,7 +63,9 @@
 }
 
 void DnsResolverPresentRoutine::AnalyzeResultsAndExecuteCallback() {
-  if (!name_servers_found_) {
+  if (!connected_network_) {
+    set_verdict(mojom::RoutineVerdict::kNotRun);
+  } else if (!name_servers_found_) {
     set_verdict(mojom::RoutineVerdict::kProblem);
     problems_.emplace_back(
         mojom::DnsResolverPresentProblem::kNoNameServersFound);
@@ -138,6 +140,7 @@
   if (default_guid.empty()) {
     AnalyzeResultsAndExecuteCallback();
   } else {
+    connected_network_ = true;
     FetchManagedProperties(default_guid);
   }
 }
diff --git a/chrome/browser/chromeos/net/network_diagnostics/dns_resolver_present_routine.h b/chrome/browser/chromeos/net/network_diagnostics/dns_resolver_present_routine.h
index 8859813..1235ac7 100644
--- a/chrome/browser/chromeos/net/network_diagnostics/dns_resolver_present_routine.h
+++ b/chrome/browser/chromeos/net/network_diagnostics/dns_resolver_present_routine.h
@@ -46,6 +46,7 @@
       std::vector<chromeos::network_config::mojom::NetworkStatePropertiesPtr>
           networks);
 
+  bool connected_network_ = false;
   bool name_servers_found_ = false;
   bool non_empty_name_servers_ = false;
   bool well_formed_name_servers_ = false;
diff --git a/chrome/browser/chromeos/net/network_diagnostics/dns_resolver_present_routine_unittest.cc b/chrome/browser/chromeos/net/network_diagnostics/dns_resolver_present_routine_unittest.cc
index 88e5333..6c7cd3aa 100644
--- a/chrome/browser/chromeos/net/network_diagnostics/dns_resolver_present_routine_unittest.cc
+++ b/chrome/browser/chromeos/net/network_diagnostics/dns_resolver_present_routine_unittest.cc
@@ -255,5 +255,11 @@
              {mojom::DnsResolverPresentProblem::kEmptyNameServers});
 }
 
+TEST_F(DnsResolverPresentRoutineTest, TestNoActiveNetwork) {
+  SetUpWiFi(shill::kStateDisconnect);
+  SetUpNameServers(kWellFormedDnsServers);
+  RunRoutine(mojom::RoutineVerdict::kNotRun, {});
+}
+
 }  // namespace network_diagnostics
 }  // namespace chromeos
diff --git a/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinatorTest.java b/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinatorTest.java
index 13c042e..ee9f416 100644
--- a/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinatorTest.java
+++ b/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinatorTest.java
@@ -38,6 +38,7 @@
 import org.chromium.base.supplier.Supplier;
 import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.DisableIf;
+import org.chromium.base.test.util.DisabledTest;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.flags.ChromeSwitches;
 import org.chromium.chrome.browser.merchant_viewer.MerchantTrustMetrics.MessageClearReason;
@@ -72,6 +73,7 @@
 Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "force-fieldtrials=Study/Group"})
 @DisableIf.Build(sdk_is_less_than = Build.VERSION_CODES.M)
 @DisableIf.Device(type = {UiDisableIf.TABLET})
+@DisabledTest(message = "crbug.com/1211897")
 public class MerchantTrustSignalsCoordinatorTest {
     @Rule
     public MockitoRule mMockitoRule = MockitoJUnit.rule();
diff --git a/chrome/browser/component_updater/pki_metadata_component_installer.cc b/chrome/browser/component_updater/pki_metadata_component_installer.cc
new file mode 100644
index 0000000..660d1f6
--- /dev/null
+++ b/chrome/browser/component_updater/pki_metadata_component_installer.cc
@@ -0,0 +1,215 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/component_updater/pki_metadata_component_installer.h"
+
+#include <memory>
+#include <utility>
+
+#include "base/base64.h"
+#include "base/bind.h"
+#include "base/feature_list.h"
+#include "base/files/file_path.h"
+#include "base/files/file_util.h"
+#include "base/logging.h"
+#include "base/memory/ref_counted.h"
+#include "base/stl_util.h"
+#include "base/task/post_task.h"
+#include "base/task/thread_pool.h"
+#include "base/threading/scoped_blocking_call.h"
+#include "base/time/time.h"
+#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/network_service_instance.h"
+#include "services/network/public/cpp/network_service_buildflags.h"
+
+#if BUILDFLAG(IS_CT_SUPPORTED)
+#include "components/certificate_transparency/certificate_transparency.pb.h"
+#include "components/certificate_transparency/certificate_transparency_config.pb.h"
+#include "components/certificate_transparency/ct_features.h"
+#include "services/network/public/mojom/ct_log_info.mojom.h"
+#include "services/network/public/mojom/network_service.mojom.h"
+#endif
+
+using component_updater::ComponentUpdateService;
+
+namespace {
+
+const char kGoogleOperatorName[] = "Google";
+
+// The SHA256 of the SubjectPublicKeyInfo used to sign the extension.
+// The extension id is: efniojlnjndmcbiieegkicadnoecjjef
+const uint8_t kPKIMetadataPublicKeySHA256[32] = {
+    0x45, 0xd8, 0xe9, 0xbd, 0x9d, 0x3c, 0x21, 0x88, 0x44, 0x6a, 0x82,
+    0x03, 0xde, 0x42, 0x99, 0x45, 0x66, 0x25, 0xfe, 0xb3, 0xd1, 0xf8,
+    0x11, 0x65, 0xb4, 0x6f, 0xd3, 0x1b, 0x21, 0x89, 0xbe, 0x9c};
+
+const base::FilePath::CharType kCTConfigProtoFileName[] =
+    FILE_PATH_LITERAL("ct_config.pb");
+
+std::string LoadCTBinaryProtoFromDisk(const base::FilePath& pb_path) {
+  std::string result;
+  if (pb_path.empty())
+    return result;
+
+  base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
+                                                base::BlockingType::WILL_BLOCK);
+
+  if (!base::ReadFileToString(pb_path.Append(kCTConfigProtoFileName),
+                              &result)) {
+    result.clear();
+  }
+  return result;
+}
+
+}  // namespace
+
+namespace component_updater {
+
+PKIMetadataComponentInstallerPolicy::PKIMetadataComponentInstallerPolicy() =
+    default;
+
+PKIMetadataComponentInstallerPolicy::~PKIMetadataComponentInstallerPolicy() =
+    default;
+
+bool PKIMetadataComponentInstallerPolicy::
+    SupportsGroupPolicyEnabledComponentUpdates() const {
+  return false;
+}
+
+bool PKIMetadataComponentInstallerPolicy::RequiresNetworkEncryption() const {
+  return false;
+}
+
+update_client::CrxInstaller::Result
+PKIMetadataComponentInstallerPolicy::OnCustomInstall(
+    const base::DictionaryValue& /* manifest */,
+    const base::FilePath& /* install_dir */) {
+  return update_client::CrxInstaller::Result(0);  // Nothing custom here.
+}
+
+void PKIMetadataComponentInstallerPolicy::OnCustomUninstall() {}
+
+void PKIMetadataComponentInstallerPolicy::ComponentReady(
+    const base::Version& version,
+    const base::FilePath& install_dir,
+    std::unique_ptr<base::DictionaryValue> /* manifest */) {
+  base::ThreadPool::PostTaskAndReplyWithResult(
+      FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
+      base::BindOnce(&LoadCTBinaryProtoFromDisk, install_dir),
+      base::BindOnce(
+          &PKIMetadataComponentInstallerPolicy::UpdateNetworkServiceOnUI,
+          base::Unretained(this)));
+}
+
+// Called during startup and installation before ComponentReady().
+bool PKIMetadataComponentInstallerPolicy::VerifyInstallation(
+    const base::DictionaryValue& /* manifest */,
+    const base::FilePath& install_dir) const {
+  if (!base::PathExists(install_dir)) {
+    return false;
+  }
+
+  return true;
+}
+
+base::FilePath PKIMetadataComponentInstallerPolicy::GetRelativeInstallDir()
+    const {
+  return base::FilePath(FILE_PATH_LITERAL("PKIMetadata"));
+}
+
+void PKIMetadataComponentInstallerPolicy::GetHash(
+    std::vector<uint8_t>* hash) const {
+  hash->assign(std::begin(kPKIMetadataPublicKeySHA256),
+               std::end(kPKIMetadataPublicKeySHA256));
+}
+
+std::string PKIMetadataComponentInstallerPolicy::GetName() const {
+  return "PKI Metadata";
+}
+
+update_client::InstallerAttributes
+PKIMetadataComponentInstallerPolicy::GetInstallerAttributes() const {
+  return update_client::InstallerAttributes();
+}
+
+void PKIMetadataComponentInstallerPolicy::UpdateNetworkServiceOnUI(
+    const std::string& ct_config_bytes) {
+#if BUILDFLAG(IS_CT_SUPPORTED)
+  auto proto =
+      std::make_unique<chrome_browser_certificate_transparency::CTConfig>();
+  if (!proto->ParseFromString(ct_config_bytes)) {
+    return;
+  }
+
+  network::mojom::NetworkService* network_service =
+      content::GetNetworkService();
+
+  if (proto->disable_ct_enforcement()) {
+    network_service->SetCtEnforcementEnabled(false);
+    return;
+  }
+
+  std::vector<network::mojom::CTLogInfoPtr> log_list_mojo;
+
+  // The log list shipped via component updater is a single message of CTLogList
+  // type, as defined in
+  // components/certificate_transparency/certificate_transparency.proto, the
+  // included logs are of the CTLog type, but include only the information
+  // required by Chrome to enforce its CT policy. Non Chrome used fields are
+  // left unset.
+  for (auto log : proto->log_list().logs()) {
+    std::string decoded_key;
+    if (!base::Base64Decode(log.key(), &decoded_key)) {
+      continue;
+    }
+    network::mojom::CTLogInfoPtr log_ptr = network::mojom::CTLogInfo::New();
+    log_ptr->name = log.description();
+    log_ptr->public_key = decoded_key;
+    // Operator history is ordered in inverse chronological order, so the 0th
+    // element will be the current operator.
+    if (!log.operator_history().empty() &&
+        log.operator_history().Get(0).name() == kGoogleOperatorName) {
+      log_ptr->operated_by_google = true;
+    }
+    // State history is ordered in inverse chronological order, so the 0th
+    // element will be the current state.
+    if (!log.state().empty()) {
+      const auto& state = log.state().Get(0);
+      if (state.current_state() ==
+          chrome_browser_certificate_transparency::CTLog_CurrentState_RETIRED) {
+        // If the log was RETIRED, record the timestamp at which it was.
+        // Note: RETIRED is a terminal state for the log, so other states do not
+        // need to be checked, because once RETIRED, the state will never
+        // change.
+        base::TimeDelta retired_since =
+            base::TimeDelta::FromSeconds(
+                log.state()[0].state_start().seconds()) +
+            base::TimeDelta::FromNanoseconds(
+                log.state()[0].state_start().nanos());
+        log_ptr->disqualified_at = retired_since;
+      }
+    }
+    log_list_mojo.push_back(std::move(log_ptr));
+  }
+
+  network_service->UpdateCtLogList(std::move(log_list_mojo));
+#endif  // BUILDFLAG(IS_CT_SUPPORTED)
+}
+
+void MaybeRegisterPKIMetadataComponent(ComponentUpdateService* cus) {
+  // Currently the component is only used for the CT log list, so we no-op if CT
+  // is not supported.
+#if BUILDFLAG(IS_CT_SUPPORTED)
+  if (!base::FeatureList::IsEnabled(
+          certificate_transparency::features::
+              kCertificateTransparencyComponentUpdater)) {
+    return;
+  }
+  auto installer = base::MakeRefCounted<ComponentInstaller>(
+      std::make_unique<PKIMetadataComponentInstallerPolicy>());
+  installer->Register(cus, base::OnceClosure());
+#endif  // BUILDFLAG(IS_CT_SUPPORTED)
+}
+
+}  // namespace component_updater
diff --git a/chrome/browser/component_updater/pki_metadata_component_installer.h b/chrome/browser/component_updater/pki_metadata_component_installer.h
new file mode 100644
index 0000000..0563363d
--- /dev/null
+++ b/chrome/browser/component_updater/pki_metadata_component_installer.h
@@ -0,0 +1,56 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_COMPONENT_UPDATER_PKI_METADATA_COMPONENT_INSTALLER_H_
+#define CHROME_BROWSER_COMPONENT_UPDATER_PKI_METADATA_COMPONENT_INSTALLER_H_
+
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "base/macros.h"
+#include "components/component_updater/component_installer.h"
+
+namespace component_updater {
+
+// Component installer policy for the PKIMetadata component. This component
+// includes any dynamically updateable needed for PKI policies enforcement.
+// Initially this contains the Certificate Transparency log list.
+class PKIMetadataComponentInstallerPolicy : public ComponentInstallerPolicy {
+ public:
+  PKIMetadataComponentInstallerPolicy();
+  PKIMetadataComponentInstallerPolicy(
+      const PKIMetadataComponentInstallerPolicy&) = delete;
+  PKIMetadataComponentInstallerPolicy operator=(
+      const PKIMetadataComponentInstallerPolicy&) = delete;
+  ~PKIMetadataComponentInstallerPolicy() override;
+
+ private:
+  // ComponentInstallerPolicy methods:
+  bool SupportsGroupPolicyEnabledComponentUpdates() const override;
+  bool RequiresNetworkEncryption() const override;
+  update_client::CrxInstaller::Result OnCustomInstall(
+      const base::DictionaryValue& manifest,
+      const base::FilePath& install_dir) override;
+  void OnCustomUninstall() override;
+  bool VerifyInstallation(const base::DictionaryValue& manifest,
+                          const base::FilePath& install_dir) const override;
+  void ComponentReady(const base::Version& version,
+                      const base::FilePath& install_dir,
+                      std::unique_ptr<base::DictionaryValue> manifest) override;
+  base::FilePath GetRelativeInstallDir() const override;
+  void GetHash(std::vector<uint8_t>* hash) const override;
+  std::string GetName() const override;
+  update_client::InstallerAttributes GetInstallerAttributes() const override;
+
+  // Updates the network service with the component delivered data.
+  // |ct_config_bytes| should be a serialized CTLogList proto message.
+  void UpdateNetworkServiceOnUI(const std::string& ct_config_bytes);
+};
+
+void MaybeRegisterPKIMetadataComponent(ComponentUpdateService* cus);
+
+}  // namespace component_updater
+
+#endif  // CHROME_BROWSER_COMPONENT_UPDATER_PKI_METADATA_COMPONENT_INSTALLER_H_
diff --git a/chrome/browser/component_updater/registration.cc b/chrome/browser/component_updater/registration.cc
index 3d7402a1..455e275 100644
--- a/chrome/browser/component_updater/registration.cc
+++ b/chrome/browser/component_updater/registration.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/component_updater/registration.h"
 
+#include "base/feature_list.h"
 #include "base/files/file_path.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/path_service.h"
@@ -24,6 +25,7 @@
 #include "chrome/browser/component_updater/hyphenation_component_installer.h"
 #include "chrome/browser/component_updater/mei_preload_component_installer.h"
 #include "chrome/browser/component_updater/pepper_flash_component_installer.h"
+#include "chrome/browser/component_updater/pki_metadata_component_installer.h"
 #include "chrome/browser/component_updater/ssl_error_assistant_component_installer.h"
 #include "chrome/browser/component_updater/sth_set_component_remover.h"
 #include "chrome/browser/component_updater/subresource_filter_component_installer.h"
@@ -169,6 +171,8 @@
   }
 #endif
 
+  MaybeRegisterPKIMetadataComponent(cus);
+
   RegisterSafetyTipsComponent(cus);
   RegisterCrowdDenyComponent(cus);
 
diff --git a/chrome/browser/devtools/protocol/security_handler.cc b/chrome/browser/devtools/protocol/security_handler.cc
index f78280c..449e7cbd 100644
--- a/chrome/browser/devtools/protocol/security_handler.cc
+++ b/chrome/browser/devtools/protocol/security_handler.cc
@@ -34,7 +34,6 @@
     "ran-content-with-cert-error";
 const char kPkpBypassedSecurityStateIssueId[] = "pkp-bypassed";
 const char kIsErrorPageSecurityStateIssueId[] = "is-error-page";
-const char kInsecureInputEventsSecurityStateIssueId[] = "insecure-input-events";
 const char kCertMissingSubjectAltName[] = "cert-missing-subject-alt-name";
 
 std::string SecurityLevelToProtocolSecurityState(
@@ -192,8 +191,6 @@
       security_state::IsSchemeCryptographic(state->url);
   bool malicious_content = state->malicious_content_status !=
                            security_state::MALICIOUS_CONTENT_STATUS_NONE;
-  bool insecure_input_events =
-      state->insecure_input_events.insecure_field_edited;
 
   bool secure_origin = scheme_is_cryptographic;
   if (!scheme_is_cryptographic)
@@ -228,9 +225,6 @@
     security_state_issue_ids.push_back(kPkpBypassedSecurityStateIssueId);
   if (state->is_error_page)
     security_state_issue_ids.push_back(kIsErrorPageSecurityStateIssueId);
-  if (insecure_input_events)
-    security_state_issue_ids.push_back(
-        kInsecureInputEventsSecurityStateIssueId);
   if (cert_missing_subject_alt_name)
     security_state_issue_ids.push_back(kCertMissingSubjectAltName);
 
diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/settings/DownloadSettingsTest.java b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/settings/DownloadSettingsTest.java
index d217dcd..7f502fb 100644
--- a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/settings/DownloadSettingsTest.java
+++ b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/settings/DownloadSettingsTest.java
@@ -18,6 +18,7 @@
 import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.Criteria;
 import org.chromium.base.test.util.CriteriaHelper;
+import org.chromium.base.test.util.FlakyTest;
 import org.chromium.base.test.util.Matchers;
 import org.chromium.chrome.browser.download.DownloadDialogBridge;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
@@ -25,7 +26,6 @@
 import org.chromium.chrome.browser.preferences.Pref;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.settings.SettingsActivityTestRule;
-import org.chromium.chrome.test.ChromeBrowserTestRule;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.chrome.test.util.browser.Features.DisableFeatures;
@@ -99,6 +99,7 @@
     @Test
     @MediumTest
     @EnableFeatures(ChromeFeatureList.DOWNLOAD_LATER)
+    @FlakyTest(message = "https://crbug.com/1213183")
     public void testGeneralSettings() throws Exception {
         mSettingsActivityTestRule.startSettingsActivity();
         assertPreference(DownloadSettings.PREF_LOCATION_CHANGE);
@@ -110,6 +111,7 @@
     @Test
     @MediumTest
     @DisableFeatures(ChromeFeatureList.DOWNLOAD_LATER)
+    @FlakyTest(message = "https://crbug.com/1213183")
     public void testWithoutDownloadLater() throws Exception {
         mSettingsActivityTestRule.startSettingsActivity();
         assertPreference(DownloadSettings.PREF_LOCATION_CHANGE);
diff --git a/chrome/browser/extensions/api/identity/identity_apitest.cc b/chrome/browser/extensions/api/identity/identity_apitest.cc
index fbd5287..fc288a9 100644
--- a/chrome/browser/extensions/api/identity/identity_apitest.cc
+++ b/chrome/browser/extensions/api/identity/identity_apitest.cc
@@ -2879,11 +2879,6 @@
       IdentityGetAuthTokenError::State::kNotAllowlistedInPublicSession, 1);
 }
 
-IN_PROC_BROWSER_TEST_F(GetAuthTokenFunctionPublicSessionTest, Allowlisted) {
-  // GetAuthToken() should return a token for allowlisted extensions.
-  RunExtensionAndVerifyNoError(/*is_extension_allowlisted=*/true);
-}
-
 class GetAuthTokenFunctionChromeKioskTest
     : public GetAuthTokenFunctionDeviceLocalAccountTest {
  protected:
@@ -2909,12 +2904,6 @@
   RunExtensionAndVerifyNoError(/*is_extension_allowlisted=*/false);
 }
 
-IN_PROC_BROWSER_TEST_F(GetAuthTokenFunctionChromeKioskTest, Allowlisted) {
-  // GetAuthToken() should return a token for allowlisted extensions in the
-  // Chrome Kiosk session.
-  RunExtensionAndVerifyNoError(/*is_extension_allowlisted=*/true);
-}
-
 class GetAuthTokenFunctionWebKioskTest
     : public GetAuthTokenFunctionDeviceLocalAccountTest {
  protected:
@@ -2940,12 +2929,6 @@
   RunExtensionAndVerifyNoError(/*is_extension_allowlisted=*/false);
 }
 
-IN_PROC_BROWSER_TEST_F(GetAuthTokenFunctionWebKioskTest, Allowlisted) {
-  // GetAuthToken() should return a token for allowlisted extensions in the
-  // web Kiosk session.
-  RunExtensionAndVerifyNoError(/*is_extension_allowlisted=*/true);
-}
-
 #endif
 
 // There are two parameters, which are stored in a std::pair, for these tests.
diff --git a/chrome/browser/extensions/api/identity/identity_get_auth_token_function.cc b/chrome/browser/extensions/api/identity/identity_get_auth_token_function.cc
index 2d89213..be8b573 100644
--- a/chrome/browser/extensions/api/identity/identity_get_auth_token_function.cc
+++ b/chrome/browser/extensions/api/identity/identity_get_auth_token_function.cc
@@ -58,16 +58,6 @@
 
 namespace {
 
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-// The list of apps that are allowed to use the Identity API to retrieve the
-// token from the device robot account in a public session.
-const char* const kPublicSessionAllowedOrigins[] = {
-    // Chrome Remote Desktop - Chromium branding.
-    "chrome-extension://ljacajndfccfgnfohlgkdphmbnpkjflk/",
-    // Chrome Remote Desktop - Official branding.
-    "chrome-extension://gbchcmhmhahfdphkhkmpfmihenigjmpp/"};
-#endif
-
 const char* const kExtensionsIdentityAPIOAuthConsumerName =
     "extensions_identity_api";
 
@@ -255,7 +245,7 @@
       user_manager::UserManager::Get()->IsLoggedInAsPublicAccount();
 
   if (connector->IsEnterpriseManaged() && (is_kiosk || is_public_session)) {
-    if (is_public_session && !IsOriginAllowlistedInPublicSession()) {
+    if (is_public_session) {
       CompleteFunctionWithError(IdentityGetAuthTokenError(
           IdentityGetAuthTokenError::State::kNotAllowlistedInPublicSession));
       return;
@@ -481,8 +471,7 @@
       case IdentityTokenCacheValue::CACHE_STATUS_NOTFOUND:
 #if BUILDFLAG(IS_CHROMEOS_ASH)
         // Always force minting token for ChromeOS kiosk app and public session.
-        if (user_manager::UserManager::Get()->IsLoggedInAsPublicAccount() &&
-            !IsOriginAllowlistedInPublicSession()) {
+        if (user_manager::UserManager::Get()->IsLoggedInAsPublicAccount()) {
           CompleteFunctionWithError(
               IdentityGetAuthTokenError(IdentityGetAuthTokenError::State::
                                             kNotAllowlistedInPublicSession));
@@ -854,19 +843,6 @@
   scopes.insert(GaiaConstants::kAnyApiOAuth2Scope);
   device_access_token_request_ = service->StartAccessTokenRequest(scopes, this);
 }
-
-bool IdentityGetAuthTokenFunction::IsOriginAllowlistedInPublicSession() {
-  DCHECK(extension());
-  GURL extension_url = extension()->url();
-  for (size_t i = 0; i < base::size(kPublicSessionAllowedOrigins); i++) {
-    URLPattern allowed_origin(URLPattern::SCHEME_ALL,
-                              kPublicSessionAllowedOrigins[i]);
-    if (allowed_origin.MatchesSecurityOrigin(extension_url)) {
-      return true;
-    }
-  }
-  return false;
-}
 #endif
 
 void IdentityGetAuthTokenFunction::StartTokenKeyAccountAccessTokenRequest() {
diff --git a/chrome/browser/extensions/api/identity/identity_get_auth_token_function.h b/chrome/browser/extensions/api/identity/identity_get_auth_token_function.h
index 46adfad..1834786 100644
--- a/chrome/browser/extensions/api/identity/identity_get_auth_token_function.h
+++ b/chrome/browser/extensions/api/identity/identity_get_auth_token_function.h
@@ -199,8 +199,6 @@
   // 1. Enterprise kiosk mode.
   // 2. Allowlisted first party apps in public session.
   virtual void StartDeviceAccessTokenRequest();
-
-  bool IsOriginAllowlistedInPublicSession();
 #endif
 
   // Methods for invoking UI. Overridable for testing.
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index f918b3c..c859118 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -648,7 +648,7 @@
   {
     "name": "context-menu-google-lens-chip",
     "owners": [ "yusuyoutube@google.com", "benwgold@google.com", "lens-chrome@google.com" ],
-    "expiry_milestone": 90
+    "expiry_milestone": 96
   },
   {
     "name": "context-menu-performance-info-and-remote-hints-fetching",
@@ -658,22 +658,22 @@
   {
     "name": "context-menu-search-and-shop-with-google-lens",
     "owners": [ "yusuyoutube@google.com", "benwgold@google.com", "lens-chrome@google.com" ],
-    "expiry_milestone": 90
+    "expiry_milestone": 96
   },
   {
     "name": "context-menu-search-with-google-lens",
     "owners": [ "benwgold@google.com", "lens-chrome@google.com" ],
-    "expiry_milestone": 90
+    "expiry_milestone": 96
   },
   {
     "name": "context-menu-shop-with-google-lens",
     "owners": [ "yusuyoutube@google.com", "benwgold@google.com", "lens-chrome@google.com" ],
-    "expiry_milestone": 90
+    "expiry_milestone": 96
   },
   {
     "name": "context-menu-translate-with-google-lens",
     "owners": [ "juanmojica@google.com", "hakop@google.com", "benwgold@google.com", "lens-chrome@google.com" ],
-    "expiry_milestone": 90
+    "expiry_milestone": 96
   },
   {
     "name": "contextual-nudges",
@@ -748,7 +748,7 @@
   {
     "name": "copy-link-to-text",
     "owners": [ "johntlee" ],
-    "expiry_milestone": 92
+    "expiry_milestone": 94
   },
   {
     "name": "cpu-affinity-restrict-to-little-cores",
@@ -2110,11 +2110,6 @@
     "expiry_milestone": 94
   },
   {
-    "name": "enable-new-profile-picker",
-    "owners": [ "msalama", "my-chrome-everywhere@google.com" ],
-    "expiry_milestone": 92
-  },
-  {
     "name": "enable-noscript-previews",
     "owners": [ "//components/data_reduction_proxy/OWNERS" ],
     // This flag is used for frequent manual testing and should not be removed.
@@ -3073,7 +3068,7 @@
   {
     "name": "google-lens-sdk-intent",
     "owners": [ "juanmojica@google.com", "benwgold@google.com", "lens-chrome@google.com" ],
-    "expiry_milestone": 92
+    "expiry_milestone": 96
   },
   {
     "name": "handwriting-gesture-editing",
@@ -3289,7 +3284,7 @@
   {
     "name": "ios-shared-highlighting-color-change",
     "owners": [ "cheickcisse@google.com" ],
-    "expiry_milestone": 92
+    "expiry_milestone": 95
   },
   {
     "name": "ios-synthetic-crash-reports",
@@ -3371,7 +3366,7 @@
   {
     "name": "lens-camera-assisted-search",
     "owners": [ "yusuyoutube@google.com", "benwgold@google.com", "fgorski", "wylieb", "lens-chrome@google.com" ],
-    "expiry_milestone": 94
+    "expiry_milestone": 96
   },
   {
     "name": "link-doctor-deprecation-android",
@@ -3727,22 +3722,22 @@
   {
     "name": "ntp-chrome-cart-module",
     "owners": [ "wychen", "tiborg", "yuezhanggg" ],
-    "expiry_milestone": 92
+    "expiry_milestone": 96
   },
   {
     "name": "ntp-drive-module",
-    "owners": [ "aee", "andrevincent", "mahmadi", "tiborg" ],
-    "expiry_milestone": 92
+    "owners": [ "mahmadi", "tiborg" ],
+    "expiry_milestone": 96
   },
   {
     "name": "ntp-modules",
-    "owners": [ "aee", "mahmadi", "tiborg" ],
-    "expiry_milestone": 92
+    "owners": [ "mahmadi", "tiborg" ],
+    "expiry_milestone": 96
   },
   {
     "name": "ntp-recipe-tasks-module",
-    "owners": [ "aee", "mahmadi", "tiborg" ],
-    "expiry_milestone": 92
+    "owners": [ "mahmadi", "tiborg" ],
+    "expiry_milestone": 96
   },
   {
     "name": "ntp-repeatable-queries",
@@ -3751,8 +3746,8 @@
   },
   {
     "name": "ntp-shopping-tasks-module",
-    "owners": [ "aee", "mahmadi", "tiborg" ],
-    "expiry_milestone": 92
+    "owners": [ "mahmadi", "tiborg" ],
+    "expiry_milestone": 96
   },
   {
     "name": "offline-indicator-choice",
@@ -4235,7 +4230,7 @@
   {
     "name": "preemptive-link-to-text-generation",
     "owners": [ "cheickcisse@google.com" ],
-    "expiry_milestone": 92
+    "expiry_milestone": 94
   },
   {
     "name": "prefer-constant-frame-rate",
@@ -4728,17 +4723,17 @@
   {
     "name": "shared-highlighting-ios",
     "owners": ["tmartino"],
-    "expiry_milestone": 90
+    "expiry_milestone": 94
   },
   {
     "name": "shared-highlighting-use-blocklist",
     "owners": ["tmartino"],
-    "expiry_milestone": 91
+    "expiry_milestone": 94
   },
   {
     "name": "shared-highlighting-v2",
     "owners": ["kmilka"],
-    "expiry_milestone": 92
+    "expiry_milestone": 94
   },
   {
     "name": "sharing-device-expiration",
@@ -4973,7 +4968,7 @@
   {
     "name": "text-fragment-color-change",
     "owners": [ "cheickcisse@google.com" ],
-    "expiry_milestone": 92
+    "expiry_milestone": 94
   },
   {
     "name": "texture-layer-skip-wait-for-activation",
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index ffb4432..e87a07f 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -1541,10 +1541,6 @@
     "Enables in-progress features for the canvas 2D API. See "
     "https://github.com/fserb/canvas2d.";
 
-const char kNewProfilePickerName[] = "New profile picker";
-const char kNewProfilePickerDescription[] =
-    "Enables new profile picker implementation.";
-
 const char kSignInProfileCreationName[] = "Profile creation flow with sign-in";
 const char kSignInProfileCreationDescription[] =
     "Enables a new sign-in flow in profile creation";
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 5391ced2..fc59208 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -906,9 +906,6 @@
 extern const char kNewCanvas2DAPIName[];
 extern const char kNewCanvas2DAPIDescription[];
 
-extern const char kNewProfilePickerName[];
-extern const char kNewProfilePickerDescription[];
-
 extern const char kSignInProfileCreationName[];
 extern const char kSignInProfileCreationDescription[];
 
diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
index b6ba47f..7904a05 100644
--- a/chrome/browser/net/system_network_context_manager.cc
+++ b/chrome/browser/net/system_network_context_manager.cc
@@ -515,6 +515,37 @@
       client_remote.InitWithNewPipeAndPassReceiver());
   network_service_network_context_->SetClient(std::move(client_remote));
 
+// Configure the Certificate Transparency logs.
+#if !defined(OS_ANDROID)
+  if (g_enable_certificate_transparency) {
+    std::vector<std::string> operated_by_google_logs =
+        certificate_transparency::GetLogsOperatedByGoogle();
+    std::vector<std::pair<std::string, base::TimeDelta>> disqualified_logs =
+        certificate_transparency::GetDisqualifiedLogs();
+    std::vector<network::mojom::CTLogInfoPtr> log_list_mojo;
+    for (const auto& ct_log : certificate_transparency::GetKnownLogs()) {
+      network::mojom::CTLogInfoPtr log_info = network::mojom::CTLogInfo::New();
+      log_info->public_key = std::string(ct_log.log_key, ct_log.log_key_length);
+      log_info->name = ct_log.log_name;
+
+      std::string log_id = crypto::SHA256HashString(log_info->public_key);
+      log_info->operated_by_google =
+          std::binary_search(std::begin(operated_by_google_logs),
+                             std::end(operated_by_google_logs), log_id);
+      auto it = std::lower_bound(
+          std::begin(disqualified_logs), std::end(disqualified_logs), log_id,
+          [](const auto& disqualified_log, const std::string& log_id) {
+            return disqualified_log.first < log_id;
+          });
+      if (it != std::end(disqualified_logs) && it->first == log_id) {
+        log_info->disqualified_at = it->second;
+      }
+      log_list_mojo.push_back(std::move(log_info));
+    }
+    network_service->UpdateCtLogList(std::move(log_list_mojo));
+  }
+#endif
+
   // Configure the stub resolver. This must be done after the system
   // NetworkContext is created, but before anything has the chance to use it.
   stub_resolver_config_reader_.UpdateNetworkService(true /* record_metrics */);
@@ -650,32 +681,8 @@
   if (g_enable_certificate_transparency) {
     network_context_params->enforce_chrome_ct_policy = true;
     network_context_params->ct_log_update_time = base::GetBuildTime();
-
-    std::vector<std::string> operated_by_google_logs =
-        certificate_transparency::GetLogsOperatedByGoogle();
-    std::vector<std::pair<std::string, base::TimeDelta>> disqualified_logs =
-        certificate_transparency::GetDisqualifiedLogs();
-    for (const auto& ct_log : certificate_transparency::GetKnownLogs()) {
-      // TODO(rsleevi): https://crbug.com/702062 - Remove this duplication.
-      network::mojom::CTLogInfoPtr log_info = network::mojom::CTLogInfo::New();
-      log_info->public_key = std::string(ct_log.log_key, ct_log.log_key_length);
-      log_info->name = ct_log.log_name;
-
-      std::string log_id = crypto::SHA256HashString(log_info->public_key);
-      log_info->operated_by_google =
-          std::binary_search(std::begin(operated_by_google_logs),
-                             std::end(operated_by_google_logs), log_id);
-      auto it = std::lower_bound(
-          std::begin(disqualified_logs), std::end(disqualified_logs), log_id,
-          [](const auto& disqualified_log, const std::string& log_id) {
-            return disqualified_log.first < log_id;
-          });
-      if (it != std::end(disqualified_logs) && it->first == log_id) {
-        log_info->disqualified_at = it->second;
-      }
-      network_context_params->ct_logs.push_back(std::move(log_info));
-    }
   }
+
 #endif
 
 #if BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED)
diff --git a/chrome/browser/net/system_network_context_manager_browsertest.cc b/chrome/browser/net/system_network_context_manager_browsertest.cc
index b0bb640f..b46ee29 100644
--- a/chrome/browser/net/system_network_context_manager_browsertest.cc
+++ b/chrome/browser/net/system_network_context_manager_browsertest.cc
@@ -445,44 +445,6 @@
   }
 };
 
-#if BUILDFLAG(IS_CT_SUPPORTED)
-IN_PROC_BROWSER_TEST_P(
-    SystemNetworkContextManagerCertificateTransparencyBrowsertest,
-    CertificateTransparencyConfig) {
-  network::mojom::NetworkContextParamsPtr context_params =
-      g_browser_process->system_network_context_manager()
-          ->CreateDefaultNetworkContextParams();
-
-  const bool kDefault =
-#if BUILDFLAG(GOOGLE_CHROME_BRANDING) && defined(OFFICIAL_BUILD) && \
-    !defined(OS_ANDROID)
-      true;
-#else
-      false;
-#endif
-
-  EXPECT_EQ(GetParam().value_or(kDefault),
-            context_params->enforce_chrome_ct_policy);
-  EXPECT_NE(GetParam().value_or(kDefault), context_params->ct_logs.empty());
-
-  if (GetParam().value_or(kDefault)) {
-    bool has_google_log = false;
-    bool has_disqualified_log = false;
-    for (const auto& ct_log : context_params->ct_logs) {
-      has_google_log |= ct_log->operated_by_google;
-      has_disqualified_log |= ct_log->disqualified_at.has_value();
-    }
-    EXPECT_TRUE(has_google_log);
-    EXPECT_TRUE(has_disqualified_log);
-  }
-}
-#endif
-
-INSTANTIATE_TEST_SUITE_P(
-    All,
-    SystemNetworkContextManagerCertificateTransparencyBrowsertest,
-    ::testing::Values(absl::nullopt, true, false));
-
 #if BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED)
 class SystemNetworkContextServiceCertVerifierBuiltinPermissionsPolicyTest
     : public policy::PolicyTest,
diff --git a/chrome/browser/profiles/profile_attributes_storage_unittest.cc b/chrome/browser/profiles/profile_attributes_storage_unittest.cc
index 2bc043e..64752829 100644
--- a/chrome/browser/profiles/profile_attributes_storage_unittest.cc
+++ b/chrome/browser/profiles/profile_attributes_storage_unittest.cc
@@ -1140,8 +1140,6 @@
 // Themes aren't used on Android
 #if !defined(OS_ANDROID)
 TEST_F(ProfileAttributesStorageTest, ProfileThemeColors) {
-  base::test::ScopedFeatureList feature_list;
-  feature_list.InitAndEnableFeature(features::kNewProfilePicker);
   AddTestingProfile();
   base::FilePath profile_path = GetProfilePath("testing_profile_path0");
 
diff --git a/chrome/browser/profiles/profile_avatar_icon_util.cc b/chrome/browser/profiles/profile_avatar_icon_util.cc
index a9ddd43a..a6ce497 100644
--- a/chrome/browser/profiles/profile_avatar_icon_util.cc
+++ b/chrome/browser/profiles/profile_avatar_icon_util.cc
@@ -363,13 +363,9 @@
 #endif
 
 ui::ImageModel GetGuestAvatar(int size) {
-  if (base::FeatureList::IsEnabled(features::kNewProfilePicker)) {
     return ui::ImageModel::FromVectorIcon(
         kUserAccountAvatarIcon, ui::NativeTheme::kColorId_AvatarIconGuest,
         size);
-  }
-  return ui::ImageModel::FromVectorIcon(kUserAccountAvatarIcon,
-                                        gfx::kGoogleGrey500, size);
 }
 
 gfx::Image GetSizedAvatarIcon(const gfx::Image& image,
@@ -438,28 +434,12 @@
     return gfx::Image();
   }
 
-  if (base::FeatureList::IsEnabled(features::kNewProfilePicker)) {
-    // Get a higher res than 16px so it looks good after cropping to a circle.
-    gfx::Image icon =
-        entry->GetAvatarIcon(kAvatarIconSize, /*download_high_res=*/false);
-    return profiles::GetSizedAvatarIcon(
-        icon, /*is_rectangle=*/true, kMenuAvatarIconSize, kMenuAvatarIconSize,
-        profiles::SHAPE_CIRCLE);
-  }
-
-  constexpr int kOldMenuAvatarIconSize = 38;
+  // Get a higher res than 16px so it looks good after cropping to a circle.
   gfx::Image icon =
-      entry->GetAvatarIcon(kOldMenuAvatarIconSize, /*download_high_res=*/false);
-
-  // The image might be too large and need to be resized, e.g. if this is a
-  // signed-in user using the GAIA profile photo.
-  if (icon.Width() > kOldMenuAvatarIconSize ||
-      icon.Height() > kOldMenuAvatarIconSize) {
-    icon = profiles::GetSizedAvatarIcon(icon, /*is_rectangle=*/true,
-                                        kOldMenuAvatarIconSize,
-                                        kOldMenuAvatarIconSize);
-  }
-  return icon;
+      entry->GetAvatarIcon(kAvatarIconSize, /*download_high_res=*/false);
+  return profiles::GetSizedAvatarIcon(icon, /*is_rectangle=*/true,
+                                      kMenuAvatarIconSize, kMenuAvatarIconSize,
+                                      profiles::SHAPE_CIRCLE);
 }
 #endif
 
diff --git a/chrome/browser/profiles/profile_theme_update_service_browsertest.cc b/chrome/browser/profiles/profile_theme_update_service_browsertest.cc
index 3e39626f..8f949ef1 100644
--- a/chrome/browser/profiles/profile_theme_update_service_browsertest.cc
+++ b/chrome/browser/profiles/profile_theme_update_service_browsertest.cc
@@ -23,10 +23,6 @@
 
 class ProfileThemeUpdateServiceBrowserTest : public InProcessBrowserTest {
  public:
-  ProfileThemeUpdateServiceBrowserTest() {
-    feature_list_.InitAndEnableFeature(features::kNewProfilePicker);
-  }
-
   ProfileAttributesEntry* GetProfileAttributesEntry() {
     CHECK(browser());
     CHECK(browser()->profile());
@@ -45,9 +41,6 @@
   ThemeService* theme_service() {
     return ThemeServiceFactory::GetForProfile(browser()->profile());
   }
-
- private:
-  base::test::ScopedFeatureList feature_list_;
 };
 
 // Tests that the profile theme colors are updated when an autogenerated theme
diff --git a/chrome/browser/resources/chromeos/network_ui/network_state_ui.js b/chrome/browser/resources/chromeos/network_ui/network_state_ui.js
index 900d1f1..8f0efed8 100644
--- a/chrome/browser/resources/chromeos/network_ui/network_state_ui.js
+++ b/chrome/browser/resources/chromeos/network_ui/network_state_ui.js
@@ -503,6 +503,10 @@
     const state = result.shift();
     const states = [];
     if (state) {
+      // |state.type| is expected to be the string "etherneteap", which is not
+      // supported by the rest of this UI. Use the kEthernet constant instead.
+      // See https://crbug.com/1213176.
+      state.type = chromeos.networkConfig.mojom.NetworkType.kEthernet;
       states.push(state);
     }
     this.createStateTable_(
diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/js/util.js b/chrome/browser/resources/chromeos/wallpaper_manager/js/util.js
index d37e67b3..f1a99ea 100644
--- a/chrome/browser/resources/chromeos/wallpaper_manager/js/util.js
+++ b/chrome/browser/resources/chromeos/wallpaper_manager/js/util.js
@@ -373,8 +373,10 @@
  */
 WallpaperUtil.setOnlineWallpaperWithoutPreview = function(
     url, layout, onSuccess, onFailure) {
+  // Skip setting the collection id to avoid logging another collection
+  // impression when the wallpaper is automatically refreshed.
   chrome.wallpaperPrivate.setWallpaperIfExists(
-      url, layout, false /*previewMode=*/, exists => {
+      url, /*collection_id=*/ '', layout, /*previewMode=*/ false, exists => {
         if (exists) {
           onSuccess();
           return;
@@ -383,7 +385,7 @@
         this.fetchURL(url, 'arraybuffer', xhr => {
           if (xhr.response != null) {
             chrome.wallpaperPrivate.setWallpaper(
-                xhr.response, layout, url, false /*previewMode=*/, onSuccess);
+                xhr.response, layout, url, /*previewMode=*/ false, onSuccess);
           } else {
             onFailure();
           }
diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_manager.js b/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_manager.js
index 7cd9d69..77bcba5 100644
--- a/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_manager.js
+++ b/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_manager.js
@@ -904,8 +904,8 @@
 
   var selectedGridItem = this.wallpaperGrid_.getListItem(selectedItem);
   chrome.wallpaperPrivate.setWallpaperIfExists(
-      selectedItem.highResolutionURL, selectedItem.layout, previewMode,
-      exists => {
+      selectedItem.highResolutionURL, selectedItem.collectionId || '',
+      selectedItem.layout, previewMode, exists => {
         if (exists) {
           successCallback();
           return;
@@ -1660,13 +1660,14 @@
           this.pendingDailyRefreshInfo_.resumeToken = nextResumeToken;
           // Find the name of the collection based on its id for display
           // purpose.
-          var collectionName;
-          for (var i = 0; i < this.collectionsInfo_.length; ++i) {
-            if (this.collectionsInfo_[i]['collectionId'] ===
-                this.pendingDailyRefreshInfo_.collectionId) {
-              collectionName = this.collectionsInfo_[i]['collectionName'];
-            }
-          }
+          var collection = this.collectionsInfo_.find(
+              info => info['collectionId'] ===
+                  this.pendingDailyRefreshInfo_.collectionId);
+          var collectionName = collection !== undefined ?
+              collection['collectionName'] :
+              undefined;
+          var collectionId =
+              collection !== undefined ? collection['collectionId'] : undefined;
           var dailyRefreshImageInfo = {
             highResolutionURL:
                 imageInfo['imageUrl'] + str('highResolutionSuffix'),
@@ -1674,7 +1675,8 @@
             source: Constants.WallpaperSourceEnum.Daily,
             displayText: imageInfo['displayText'],
             authorWebsite: imageInfo['actionUrl'],
-            collectionName: collectionName
+            collectionName: collectionName,
+            collectionId: collectionId
           };
 
           var previewMode = this.shouldPreviewWallpaper_();
diff --git a/chrome/browser/resources/download_shelf/BUILD.gn b/chrome/browser/resources/download_shelf/BUILD.gn
index 27a061e..7761ea3 100644
--- a/chrome/browser/resources/download_shelf/BUILD.gn
+++ b/chrome/browser/resources/download_shelf/BUILD.gn
@@ -93,7 +93,6 @@
   out_manifest = "$target_gen_dir/$preprocess_web_components_manifest"
   in_files = [
     "app.js",
-    "download_button.js",
     "download_item.js",
     "download_list.js",
   ]
@@ -126,17 +125,12 @@
                   ]
   deps = [
     ":app",
-    ":download_button",
     ":download_item",
     ":download_list",
     ":download_shelf_api_proxy",
   ]
 }
 
-js_library("download_button") {
-  deps = [ "//ui/webui/resources/js:custom_element" ]
-}
-
 js_library("download_shelf_api_proxy") {
   deps = [
     "//chrome/browser/ui/webui/download_shelf:mojo_bindings_webui_js",
@@ -147,7 +141,6 @@
 
 js_library("download_item") {
   deps = [
-    ":download_button",
     ":download_shelf_api_proxy",
     "//ui/webui/resources/js:custom_element",
     "//ui/webui/resources/js:load_time_data.m",
@@ -181,7 +174,6 @@
 html_to_js("web_components") {
   js_files = [
     "app.js",
-    "download_button.js",
     "download_item.js",
     "download_list.js",
   ]
diff --git a/chrome/browser/resources/download_shelf/app.html b/chrome/browser/resources/download_shelf/app.html
index 3f0570a..71e8941 100644
--- a/chrome/browser/resources/download_shelf/app.html
+++ b/chrome/browser/resources/download_shelf/app.html
@@ -24,6 +24,7 @@
 
 </style>
 <download-list></download-list>
+<cr-button id="show-all-button">$i18n{showAll}</cr-button>
 <cr-icon-button id="close-button" iron-icon="cr:close"
     aria-label="$i18n{close}">
 </cr-icon-button>
diff --git a/chrome/browser/resources/download_shelf/app.js b/chrome/browser/resources/download_shelf/app.js
index 4a4166d..7dbf78e 100644
--- a/chrome/browser/resources/download_shelf/app.js
+++ b/chrome/browser/resources/download_shelf/app.js
@@ -2,6 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+import 'chrome://resources/cr_elements/cr_button/cr_button.m.js';
 import 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.m.js';
 import 'chrome://resources/cr_elements/cr_icons_css.m.js';
 import 'chrome://resources/cr_elements/icons.m.js';
@@ -23,14 +24,18 @@
     /** @private {!DownloadShelfApiProxy} */
     this.apiProxy_ = DownloadShelfApiProxyImpl.getInstance();
 
-    this.$('#close-button').addEventListener('click', e => this.onClose_(e));
+    this.$('#show-all-button')
+        .addEventListener('click', e => this.onShowAll_());
+    this.$('#close-button').addEventListener('click', e => this.onClose_());
   }
 
-  /**
-   * @param {!Event} e
-   * @private
-   */
-  onClose_(e) {
+  /** @private */
+  onShowAll_() {
+    this.apiProxy_.doShowAll();
+  }
+
+  /** @private */
+  onClose_() {
     this.apiProxy_.doClose();
   }
 }
diff --git a/chrome/browser/resources/download_shelf/download_button.html b/chrome/browser/resources/download_shelf/download_button.html
deleted file mode 100644
index 837e39c..0000000
--- a/chrome/browser/resources/download_shelf/download_button.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<div>
-<style>
-:host {
-  --border-color: var(--google-grey-refresh-300);
-  --text-color: var(--google-blue-600);
-  --hover-bg-color: rgba(var(--google-blue-refresh-500-rgb), 0.12);
-  --active-bg-color: rgba(var(--google-blue-600-rgb), 0.32);
-
-  border: 1px solid var(--border-color);
-  border-radius: 4px;
-  box-sizing: border-box;
-  color: var(--text-color);
-  cursor: pointer;
-  font-family: Roboto;
-  font-weight: 500;
-  min-width: 79px;
-  padding: 8px 16px;
-  text-align: center;
-  transition: background-color 300ms;
-  user-select: none;
-}
-
-:host(:hover) {
-  background-color: var(--hover-bg-color);
-}
-
-:host(:active) {
-  background-color: var(--active-bg-color);
-}
-</style>
-<slot></slot>
-</div>
diff --git a/chrome/browser/resources/download_shelf/download_button.js b/chrome/browser/resources/download_shelf/download_button.js
deleted file mode 100644
index a407f23..0000000
--- a/chrome/browser/resources/download_shelf/download_button.js
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2021 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @fileoverview Button UI for "Discard" and "Show All".
- */
-
-import 'chrome://resources/cr_elements/shared_vars_css.m.js';
-
-import {CustomElement} from 'chrome://resources/js/custom_element.js';
-
-export class DownloadButtonElement extends CustomElement {
-  static get template() {
-    return `{__html_template__}`;
-  }
-
-  constructor() {
-    super();
-  }
-}
-
-customElements.define('download-button', DownloadButtonElement);
diff --git a/chrome/browser/resources/download_shelf/download_item.html b/chrome/browser/resources/download_shelf/download_item.html
index 66fd83f..fee9319 100644
--- a/chrome/browser/resources/download_shelf/download_item.html
+++ b/chrome/browser/resources/download_shelf/download_item.html
@@ -234,8 +234,10 @@
     <div id="status-text"></div>
     <div id="warning-text"></div>
   </div>
-  <download-button id="save-button"></download-button>
-  <download-button id="discard-button"></download-button>
+  <cr-button id="save-button">
+    <!-- Text depends on file type so fill it in programmatically. -->
+  </cr-button>
+  <cr-button id="discard-button">$i18n{discardButtonText}</cr-button>
   <button id="dropdown-button">
     <svg id="dropdown-icon" viewBox="0 0 16 16">
       <g>
diff --git a/chrome/browser/resources/download_shelf/download_item.js b/chrome/browser/resources/download_shelf/download_item.js
index c9f8a46..e004e475 100644
--- a/chrome/browser/resources/download_shelf/download_item.js
+++ b/chrome/browser/resources/download_shelf/download_item.js
@@ -6,8 +6,8 @@
  * @fileoverview UI element of a download item.
  */
 
+import 'chrome://resources/cr_elements/cr_button/cr_button.m.js';
 import 'chrome://resources/cr_elements/shared_vars_css.m.js';
-import './download_button.js';
 import './strings.m.js';
 
 import {assert} from 'chrome://resources/js/assert.m.js';
@@ -54,9 +54,6 @@
     this.$('#discard-button')
         .addEventListener('click', e => this.onDiscardButtonClick_(e));
     this.addEventListener('contextmenu', e => this.onContextMenu_(e));
-
-    this.$('#discard-button').innerText =
-        loadTimeData.getString('discardButtonText');
   }
 
   /** @param {DownloadItem} value */
diff --git a/chrome/browser/resources/download_shelf/download_shelf_api_proxy.js b/chrome/browser/resources/download_shelf/download_shelf_api_proxy.js
index 674cd75..665e88b4 100644
--- a/chrome/browser/resources/download_shelf/download_shelf_api_proxy.js
+++ b/chrome/browser/resources/download_shelf/download_shelf_api_proxy.js
@@ -11,6 +11,8 @@
   /** @return {!PageCallbackRouter} */
   getCallbackRouter() {}
 
+  doShowAll() {}
+
   doClose() {}
 
   /**
@@ -61,6 +63,11 @@
   }
 
   /** @override */
+  doShowAll() {
+    this.handler.doShowAll();
+  }
+
+  /** @override */
   doClose() {
     this.handler.doClose();
   }
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/internet_detail_page.js b/chrome/browser/resources/settings/chromeos/internet_page/internet_detail_page.js
index 870c465..5b7e98f 100644
--- a/chrome/browser/resources/settings/chromeos/internet_page/internet_detail_page.js
+++ b/chrome/browser/resources/settings/chromeos/internet_page/internet_detail_page.js
@@ -337,6 +337,13 @@
    */
   applyingChanges_: false,
 
+  /**
+   * Flag, if true, indicating that the next deviceState_ update
+   * should call deepLinkToSimLockElement_().
+   * @private {boolean}
+   */
+  pendingSimLockDeepLink_: false,
+
   /** @override */
   attached() {
     if (loadTimeData.getBoolean('splitSettingsSyncEnabled')) {
@@ -448,14 +455,13 @@
     }
 
     if (settingId === chromeos.settings.mojom.Setting.kCellularSimLock) {
-      // In this rare case, toggle not focusable until after a second wait.
-      // This is slightly preferable to requestAnimationFrame used within
-      // network-siminfo to focus elements since it can be reproduced in
-      // testing.
-      Polymer.RenderStatus.afterNextRender(this, () => {
-        this.afterRenderShowDeepLink(
-            settingId, () => this.$$('network-siminfo').getSimLockToggle());
-      });
+      this.advancedExpanded_ = true;
+
+      // If the page just loaded, deviceState_ will not be fully initialized
+      // yet, so we won't know which SIM info element to focus. Set
+      // pendingSimLockDeepLink_ to indicate that a SIM info element should be
+      // focused next deviceState_ update.
+      this.pendingSimLockDeepLink_ = true;
       return false;
     }
 
@@ -707,6 +713,30 @@
       if (shouldGetNetworkDetails) {
         this.getNetworkDetails_();
       }
+      if (this.pendingSimLockDeepLink_) {
+        this.pendingSimLockDeepLink_ = false;
+        this.deepLinkToSimLockElement_();
+      }
+    });
+  },
+
+  /** @private */
+  deepLinkToSimLockElement_() {
+    const settingId = chromeos.settings.mojom.Setting.kCellularSimLock;
+    const simLockStatus = this.deviceState_.simLockStatus;
+
+    // In this rare case, element not focusable until after a second wait.
+    // This is slightly preferable to requestAnimationFrame used within
+    // network-siminfo to focus elements since it can be reproduced in
+    // testing.
+    Polymer.RenderStatus.afterNextRender(this, () => {
+      if (simLockStatus && !!simLockStatus.lockType) {
+        this.afterRenderShowDeepLink(
+            settingId, () => this.$$('network-siminfo').getUnlockButton());
+        return;
+      }
+      this.afterRenderShowDeepLink(
+          settingId, () => this.$$('network-siminfo').getSimLockToggle());
     });
   },
 
diff --git a/chrome/browser/resources_integrity.cc b/chrome/browser/resources_integrity.cc
index 4a4a1667..e42f20a 100644
--- a/chrome/browser/resources_integrity.cc
+++ b/chrome/browser/resources_integrity.cc
@@ -71,7 +71,7 @@
   base::ThreadPool::PostTaskAndReplyWithResult(
       FROM_HERE,
       {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
-       base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
+       base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&CheckResourceIntegrityInternal, path, expected_signature),
       std::move(callback));
 }
diff --git a/chrome/browser/sessions/session_service_base.cc b/chrome/browser/sessions/session_service_base.cc
index 62d7947..692d7b1 100644
--- a/chrome/browser/sessions/session_service_base.cc
+++ b/chrome/browser/sessions/session_service_base.cc
@@ -144,7 +144,6 @@
 
   command_storage_manager_ = std::make_unique<sessions::CommandStorageManager>(
       backend_type, profile->GetPath(), this,
-      /* use_marker */ true,
       /* enable_crypto */ false, std::vector<uint8_t>(),
       TaskRunnerData::GetBackendTaskRunnerForProfile(profile, type));
 
diff --git a/chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/share_sheet/ChromeProvidedSharingOptionsProviderTest.java b/chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/share_sheet/ChromeProvidedSharingOptionsProviderTest.java
index 57683b0..5b1fe71 100644
--- a/chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/share_sheet/ChromeProvidedSharingOptionsProviderTest.java
+++ b/chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/share_sheet/ChromeProvidedSharingOptionsProviderTest.java
@@ -34,7 +34,6 @@
 import org.chromium.base.supplier.Supplier;
 import org.chromium.base.test.BaseActivityTestRule;
 import org.chromium.base.test.util.ApplicationTestUtils;
-import org.chromium.base.test.util.FlakyTest;
 import org.chromium.base.test.util.JniMocker;
 import org.chromium.base.test.util.UserActionTester;
 import org.chromium.chrome.R;
@@ -137,9 +136,11 @@
 
     @Test
     @MediumTest
-    @Features.EnableFeatures({ChromeFeatureList.CHROME_SHARE_SCREENSHOT})
-    @FlakyTest(message = "crbug.com/1207314")
-    public void getPropertyModels_screenshotEnabled() {
+    @Features.EnableFeatures({ChromeFeatureList.CHROME_SHARE_SCREENSHOT,
+            ChromeFeatureList.CHROME_SHARE_HIGHLIGHTS_ANDROID})
+    @Features.DisableFeatures({ChromeFeatureList.PREEMPTIVE_LINK_TO_TEXT_GENERATION})
+    public void
+    getPropertyModels_screenshotEnabled() {
         setUpChromeProvidedSharingOptionsProviderTest(
                 /*printingEnabled=*/false, LinkGeneration.MAX);
         List<PropertyModel> propertyModels =
@@ -159,9 +160,11 @@
 
     @Test
     @MediumTest
-    @Features.DisableFeatures({ChromeFeatureList.CHROME_SHARE_SCREENSHOT})
-    @FlakyTest(message = "crbug.com/1207314")
-    public void getPropertyModels_printingEnabled_includesPrinting() {
+    @Features.EnableFeatures({ChromeFeatureList.CHROME_SHARE_HIGHLIGHTS_ANDROID})
+    @Features.DisableFeatures({ChromeFeatureList.CHROME_SHARE_SCREENSHOT,
+            ChromeFeatureList.PREEMPTIVE_LINK_TO_TEXT_GENERATION})
+    public void
+    getPropertyModels_printingEnabled_includesPrinting() {
         setUpChromeProvidedSharingOptionsProviderTest(
                 /*printingEnabled=*/true, LinkGeneration.MAX);
         List<PropertyModel> propertyModels =
diff --git a/chrome/browser/signin/signin_util_win_browsertest.cc b/chrome/browser/signin/signin_util_win_browsertest.cc
index 45ce132..aabe9f3a 100644
--- a/chrome/browser/signin/signin_util_win_browsertest.cc
+++ b/chrome/browser/signin/signin_util_win_browsertest.cc
@@ -543,11 +543,7 @@
   ExistingWinBrowserProfilesSigninUtilTest()
       : BrowserTestHelper(L"gaia_id_for_foo_gmail.com",
                           L"foo@gmail.com",
-                          "lst-123456") {
-    // TODO(droger): Disable the profile picker using the local state preference
-    // instead.
-    feature_list_.InitAndDisableFeature(features::kNewProfilePicker);
-  }
+                          "lst-123456") {}
 
  protected:
   bool SetUpUserDataDirectory() override {
@@ -578,6 +574,9 @@
 // but before this step ends, |current_profile| is created and browser switches
 // to that profile just to prepare the browser for the next step.
 IN_PROC_BROWSER_TEST_P(ExistingWinBrowserProfilesSigninUtilTest, PRE_PRE_Run) {
+  g_browser_process->local_state()->SetBoolean(
+      prefs::kBrowserShowProfilePickerOnStartup, false);
+
   ProfileManager* profile_manager = g_browser_process->profile_manager();
 
   Profile* profile = profile_manager->GetLastUsedProfile();
diff --git a/chrome/browser/speech/on_device_speech_recognizer.cc b/chrome/browser/speech/on_device_speech_recognizer.cc
index c4448c9..afd8cf1 100644
--- a/chrome/browser/speech/on_device_speech_recognizer.cc
+++ b/chrome/browser/speech/on_device_speech_recognizer.cc
@@ -73,7 +73,8 @@
     const base::WeakPtr<SpeechRecognizerDelegate>& delegate,
     Profile* profile,
     std::string language_or_locale,
-    bool recognition_mode_ime)
+    bool recognition_mode_ime,
+    bool enable_formatting)
     : SpeechRecognizer(delegate),
       state_(SpeechRecognizerStatus::SPEECH_RECOGNIZER_OFF),
       is_multichannel_supported_(false),
@@ -91,7 +92,8 @@
       speech_recognition_client_receiver_.BindNewPipeAndPassRemote(),
       media::mojom::SpeechRecognitionOptions::New(
           recognition_mode_ime ? media::mojom::SpeechRecognitionMode::kIme
-                               : media::mojom::SpeechRecognitionMode::kCaption),
+                               : media::mojom::SpeechRecognitionMode::kCaption,
+          enable_formatting),
       media::BindToCurrentLoop(
           base::BindOnce(&OnDeviceSpeechRecognizer::OnRecognizerBound,
                          weak_factory_.GetWeakPtr())));
diff --git a/chrome/browser/speech/on_device_speech_recognizer.h b/chrome/browser/speech/on_device_speech_recognizer.h
index 7a4da8dc..0ae7e29 100644
--- a/chrome/browser/speech/on_device_speech_recognizer.h
+++ b/chrome/browser/speech/on_device_speech_recognizer.h
@@ -36,11 +36,15 @@
   // |language_or_locale| specificies the recognition language.
   // |recognition_mode_ime| is whether to use speech recognition configured for
   // IME or Captions.
+  // |enable_formatting| is whether to include extra, assumed formatting and
+  // punctuation.
+  // TODO(katie): Combine bools into an int of bits.
   OnDeviceSpeechRecognizer(
       const base::WeakPtr<SpeechRecognizerDelegate>& delegate,
       Profile* profile,
       std::string language_or_locale,
-      bool recognition_mode_ime);
+      bool recognition_mode_ime,
+      bool enable_formatting);
   ~OnDeviceSpeechRecognizer() override;
   OnDeviceSpeechRecognizer(const OnDeviceSpeechRecognizer&) = delete;
   OnDeviceSpeechRecognizer& operator=(const OnDeviceSpeechRecognizer&) = delete;
diff --git a/chrome/browser/speech/on_device_speech_recognizer_browsertest.cc b/chrome/browser/speech/on_device_speech_recognizer_browsertest.cc
index 99b690d..55d88b8 100644
--- a/chrome/browser/speech/on_device_speech_recognizer_browsertest.cc
+++ b/chrome/browser/speech/on_device_speech_recognizer_browsertest.cc
@@ -133,7 +133,7 @@
         .RetiresOnSaturation();
     recognizer_ = std::make_unique<OnDeviceSpeechRecognizer>(
         mock_speech_delegate_->GetWeakPtr(), browser()->profile(), "en-US",
-        true /* is IME */);
+        /*recognition_mode_ime=*/true, /*enable_formatting=*/false);
     loop.Run();
   }
 
diff --git a/chrome/browser/speech/speech_recognition_service_browsertest.cc b/chrome/browser/speech/speech_recognition_service_browsertest.cc
index 5f59117..e09eec2 100644
--- a/chrome/browser/speech/speech_recognition_service_browsertest.cc
+++ b/chrome/browser/speech/speech_recognition_service_browsertest.cc
@@ -230,7 +230,8 @@
       std::move(pending_recognizer_receiver),
       speech_recognition_client_receiver_.BindNewPipeAndPassRemote(),
       media::mojom::SpeechRecognitionOptions::New(
-          media::mojom::SpeechRecognitionMode::kCaption),
+          media::mojom::SpeechRecognitionMode::kCaption,
+          /*enable_formatting=*/true),
       base::BindOnce(
           [](bool* p_is_multichannel_supported, base::RunLoop* run_loop,
              bool is_multichannel_supported) {
@@ -261,7 +262,8 @@
       audio_source_fetcher_.BindNewPipeAndPassReceiver(),
       speech_recognition_client_receiver_.BindNewPipeAndPassRemote(),
       media::mojom::SpeechRecognitionOptions::New(
-          media::mojom::SpeechRecognitionMode::kIme),
+          media::mojom::SpeechRecognitionMode::kIme,
+          /*enable_formatting=*/false),
       base::BindOnce(
           [](bool* p_is_multichannel_supported, base::RunLoop* run_loop,
              bool is_multichannel_supported) {
diff --git a/chrome/browser/ssl/insecure_sensitive_input_driver.cc b/chrome/browser/ssl/insecure_sensitive_input_driver.cc
deleted file mode 100644
index ff97026..0000000
--- a/chrome/browser/ssl/insecure_sensitive_input_driver.cc
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ssl/insecure_sensitive_input_driver.h"
-
-#include <utility>
-
-#include "chrome/browser/ssl/insecure_sensitive_input_driver_factory.h"
-#include "content/public/browser/render_frame_host.h"
-#include "content/public/browser/web_contents.h"
-
-InsecureSensitiveInputDriver::InsecureSensitiveInputDriver(
-    content::RenderFrameHost* render_frame_host)
-    : render_frame_host_(render_frame_host) {}
-
-InsecureSensitiveInputDriver::~InsecureSensitiveInputDriver() {}
-
-void InsecureSensitiveInputDriver::BindInsecureInputServiceReceiver(
-    mojo::PendingReceiver<blink::mojom::InsecureInputService> receiver) {
-  insecure_input_receivers_.Add(this, std::move(receiver));
-}
-
-void InsecureSensitiveInputDriver::DidEditFieldInInsecureContext() {
-  InsecureSensitiveInputDriverFactory* parent =
-      InsecureSensitiveInputDriverFactory::GetOrCreateForWebContents(
-          content::WebContents::FromRenderFrameHost(render_frame_host_));
-  parent->DidEditFieldInInsecureContext();
-}
diff --git a/chrome/browser/ssl/insecure_sensitive_input_driver.h b/chrome/browser/ssl/insecure_sensitive_input_driver.h
deleted file mode 100644
index f70b939c..0000000
--- a/chrome/browser/ssl/insecure_sensitive_input_driver.h
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_SSL_INSECURE_SENSITIVE_INPUT_DRIVER_H_
-#define CHROME_BROWSER_SSL_INSECURE_SENSITIVE_INPUT_DRIVER_H_
-
-#include "mojo/public/cpp/bindings/pending_receiver.h"
-#include "mojo/public/cpp/bindings/receiver_set.h"
-#include "third_party/blink/public/mojom/insecure_input/insecure_input_service.mojom.h"
-
-namespace content {
-class RenderFrameHost;
-}
-
-// The InsecureSensitiveInputDriver watches for calls from renderers and
-// instructs the parent |InsecureSensitiveInputDriverFactory| monitoring the
-// WebContents to update the SSLStatusInputEventData.
-//
-// There is one InsecureSensitiveInputDriver per RenderFrameHost.
-// The lifetime is managed by the InsecureSensitiveInputDriverFactory.
-class InsecureSensitiveInputDriver : public blink::mojom::InsecureInputService {
- public:
-  explicit InsecureSensitiveInputDriver(
-      content::RenderFrameHost* render_frame_host);
-  ~InsecureSensitiveInputDriver() override;
-
-  void BindInsecureInputServiceReceiver(
-      mojo::PendingReceiver<blink::mojom::InsecureInputService> receiver);
-
-  // blink::mojom::InsecureInputService:
-  void DidEditFieldInInsecureContext() override;
-
- private:
-  content::RenderFrameHost* render_frame_host_;
-
-  mojo::ReceiverSet<blink::mojom::InsecureInputService>
-      insecure_input_receivers_;
-
-  DISALLOW_COPY_AND_ASSIGN(InsecureSensitiveInputDriver);
-};
-
-#endif  // CHROME_BROWSER_SSL_INSECURE_SENSITIVE_INPUT_DRIVER_H_
diff --git a/chrome/browser/ssl/insecure_sensitive_input_driver_factory.cc b/chrome/browser/ssl/insecure_sensitive_input_driver_factory.cc
deleted file mode 100644
index e8e1378..0000000
--- a/chrome/browser/ssl/insecure_sensitive_input_driver_factory.cc
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ssl/insecure_sensitive_input_driver_factory.h"
-
-#include <utility>
-
-#include "chrome/browser/ssl/insecure_sensitive_input_driver.h"
-#include "components/security_state/content/ssl_status_input_event_data.h"
-#include "content/public/browser/navigation_entry.h"
-#include "content/public/browser/render_frame_host.h"
-#include "content/public/browser/web_contents.h"
-
-namespace {
-// Creates or retrieves the |user_data| object in the SSLStatus attached to the
-// WebContents' NavigationEntry.
-security_state::SSLStatusInputEventData* GetOrCreateSSLStatusInputEventData(
-    content::WebContents* web_contents) {
-  content::NavigationEntry* entry =
-      web_contents->GetController().GetLastCommittedEntry();
-  // We aren't guaranteed to always have a navigation entry.
-  if (!entry)
-    return nullptr;
-
-  content::SSLStatus& ssl = entry->GetSSL();
-  security_state::SSLStatusInputEventData* input_events =
-      static_cast<security_state::SSLStatusInputEventData*>(
-          ssl.user_data.get());
-  if (!input_events) {
-    ssl.user_data = std::make_unique<security_state::SSLStatusInputEventData>();
-    input_events = static_cast<security_state::SSLStatusInputEventData*>(
-        ssl.user_data.get());
-  }
-  return input_events;
-}
-}  // namespace
-
-InsecureSensitiveInputDriverFactory::~InsecureSensitiveInputDriverFactory() {}
-
-// static
-InsecureSensitiveInputDriverFactory*
-InsecureSensitiveInputDriverFactory::GetOrCreateForWebContents(
-    content::WebContents* web_contents) {
-  InsecureSensitiveInputDriverFactory* factory = FromWebContents(web_contents);
-
-  if (!factory) {
-    content::WebContentsUserData<InsecureSensitiveInputDriverFactory>::
-        CreateForWebContents(web_contents);
-    factory = FromWebContents(web_contents);
-    DCHECK(factory);
-  }
-  return factory;
-}
-
-// static
-void InsecureSensitiveInputDriverFactory::BindDriver(
-    content::RenderFrameHost* render_frame_host,
-    mojo::PendingReceiver<blink::mojom::InsecureInputService> receiver) {
-  content::WebContents* web_contents =
-      content::WebContents::FromRenderFrameHost(render_frame_host);
-  if (!web_contents)
-    return;
-
-  InsecureSensitiveInputDriverFactory* factory =
-      GetOrCreateForWebContents(web_contents);
-
-  InsecureSensitiveInputDriver* driver =
-      factory->GetOrCreateDriverForFrame(render_frame_host);
-
-  driver->BindInsecureInputServiceReceiver(std::move(receiver));
-}
-
-InsecureSensitiveInputDriver*
-InsecureSensitiveInputDriverFactory::GetOrCreateDriverForFrame(
-    content::RenderFrameHost* render_frame_host) {
-  auto insertion_result =
-      frame_driver_map_.insert(std::make_pair(render_frame_host, nullptr));
-  if (insertion_result.second) {
-    insertion_result.first->second =
-        std::make_unique<InsecureSensitiveInputDriver>(render_frame_host);
-  }
-  return insertion_result.first->second.get();
-}
-
-void InsecureSensitiveInputDriverFactory::DidEditFieldInInsecureContext() {
-  security_state::SSLStatusInputEventData* input_events =
-      GetOrCreateSSLStatusInputEventData(web_contents());
-  if (!input_events)
-    return;
-
-  // If the first field edit in the web contents was just performed,
-  // update the SSLStatusInputEventData.
-  if (!input_events->input_events()->insecure_field_edited) {
-    input_events->input_events()->insecure_field_edited = true;
-    web_contents()->DidChangeVisibleSecurityState();
-  }
-}
-
-void InsecureSensitiveInputDriverFactory::RenderFrameDeleted(
-    content::RenderFrameHost* render_frame_host) {
-  frame_driver_map_.erase(render_frame_host);
-}
-
-InsecureSensitiveInputDriverFactory::InsecureSensitiveInputDriverFactory(
-    content::WebContents* web_contents)
-    : content::WebContentsObserver(web_contents) {}
-
-WEB_CONTENTS_USER_DATA_KEY_IMPL(InsecureSensitiveInputDriverFactory)
diff --git a/chrome/browser/ssl/insecure_sensitive_input_driver_factory.h b/chrome/browser/ssl/insecure_sensitive_input_driver_factory.h
deleted file mode 100644
index fd6d20b..0000000
--- a/chrome/browser/ssl/insecure_sensitive_input_driver_factory.h
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_SSL_INSECURE_SENSITIVE_INPUT_DRIVER_FACTORY_H_
-#define CHROME_BROWSER_SSL_INSECURE_SENSITIVE_INPUT_DRIVER_FACTORY_H_
-
-#include <map>
-#include <memory>
-#include <set>
-
-#include "content/public/browser/web_contents_observer.h"
-#include "content/public/browser/web_contents_user_data.h"
-#include "mojo/public/cpp/bindings/pending_receiver.h"
-#include "third_party/blink/public/mojom/insecure_input/insecure_input_service.mojom-forward.h"
-
-namespace content {
-class WebContents;
-}
-
-class InsecureSensitiveInputDriver;
-
-// This object updates the NavigationEntry's SSLStatus UserData object when
-// sensitive input events occur that may impact Chrome's determination of the
-// page's security level.
-//
-// This class holds a map of InsecureSensitiveInputDrivers, which accept
-// mojom::InsecureInputService notifications from renderers. There is at most
-// one factory per WebContents, and one driver per render frame.
-class InsecureSensitiveInputDriverFactory
-    : public content::WebContentsObserver,
-      public content::WebContentsUserData<InsecureSensitiveInputDriverFactory> {
- public:
-  ~InsecureSensitiveInputDriverFactory() override;
-
-  static InsecureSensitiveInputDriverFactory* GetOrCreateForWebContents(
-      content::WebContents* web_contents);
-
-  // Finds or creates a factory for the |web_contents| and creates an
-  // |InsecureSensitiveInputDriver| for the target |render_frame_host|.
-  static void BindDriver(
-      content::RenderFrameHost* render_frame_host,
-      mojo::PendingReceiver<blink::mojom::InsecureInputService> receiver);
-
-  // Creates a |InsecureSensitiveInputDriver| for the specified
-  // |render_frame_host| and adds it to the |frame_driver_map_|.
-  InsecureSensitiveInputDriver* GetOrCreateDriverForFrame(
-      content::RenderFrameHost* render_frame_host);
-
-  // This method is called when there is a message notifying the browser
-  // process that the user edited a field in a non-secure context.
-  void DidEditFieldInInsecureContext();
-
-  // content::WebContentsObserver:
-  void RenderFrameDeleted(content::RenderFrameHost* render_frame_host) override;
-
- private:
-  explicit InsecureSensitiveInputDriverFactory(
-      content::WebContents* web_contents);
-  friend class content::WebContentsUserData<
-      InsecureSensitiveInputDriverFactory>;
-
-  std::map<content::RenderFrameHost*,
-           std::unique_ptr<InsecureSensitiveInputDriver>>
-      frame_driver_map_;
-
-  std::set<content::RenderFrameHost*> frames_with_visible_password_fields_;
-
-  WEB_CONTENTS_USER_DATA_KEY_DECL();
-
-  DISALLOW_COPY_AND_ASSIGN(InsecureSensitiveInputDriverFactory);
-};
-
-#endif  // CHROME_BROWSER_SSL_INSECURE_SENSITIVE_INPUT_DRIVER_FACTORY_H_
diff --git a/chrome/browser/ssl/insecure_sensitive_input_driver_unittest.cc b/chrome/browser/ssl/insecure_sensitive_input_driver_unittest.cc
deleted file mode 100644
index 64d5cce..0000000
--- a/chrome/browser/ssl/insecure_sensitive_input_driver_unittest.cc
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ssl/insecure_sensitive_input_driver.h"
-
-#include <memory>
-#include <string>
-
-#include "chrome/test/base/chrome_render_view_host_test_harness.h"
-#include "components/security_state/content/ssl_status_input_event_data.h"
-#include "content/public/browser/navigation_entry.h"
-#include "content/public/browser/ssl_status.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/test/navigation_simulator.h"
-#include "content/public/test/web_contents_tester.h"
-
-namespace {
-
-class InsecureSensitiveInputDriverTest
-    : public ChromeRenderViewHostTestHarness {
- protected:
-  InsecureSensitiveInputDriverTest() {}
-
-  ~InsecureSensitiveInputDriverTest() override {}
-
-  security_state::InsecureInputEventData GetInputEvents(
-      content::NavigationEntry* entry) {
-    security_state::SSLStatusInputEventData* input_events =
-        static_cast<security_state::SSLStatusInputEventData*>(
-            entry->GetSSL().user_data.get());
-    if (input_events)
-      return *input_events->input_events();
-
-    return security_state::InsecureInputEventData();
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(InsecureSensitiveInputDriverTest);
-};
-
-// Tests that field edit notifications are forwarded.
-TEST_F(InsecureSensitiveInputDriverTest, FieldEdit) {
-  std::unique_ptr<InsecureSensitiveInputDriver> driver(
-      new InsecureSensitiveInputDriver(main_rfh()));
-
-  // Do a mock navigation so that there is a navigation entry on which the
-  // field edit gets recorded.
-  GURL url("http://example.test");
-  NavigateAndCommit(url);
-  content::NavigationEntry* entry =
-      web_contents()->GetController().GetVisibleEntry();
-  ASSERT_TRUE(entry);
-  EXPECT_FALSE(GetInputEvents(entry).insecure_field_edited);
-
-  driver->DidEditFieldInInsecureContext();
-
-  // Check that the field edit notification was passed on.
-  entry = web_contents()->GetController().GetVisibleEntry();
-  ASSERT_TRUE(entry);
-  EXPECT_EQ(url, entry->GetURL());
-  EXPECT_TRUE(GetInputEvents(entry).insecure_field_edited);
-}
-
-// Tests that field edit notifications from subframes are
-// recorded correctly.
-TEST_F(InsecureSensitiveInputDriverTest, FieldEditWithSubframe) {
-  // Do a mock navigation so that there is a navigation entry on which
-  // field edit modifications get recorded.
-  GURL url("http://example.test");
-  NavigateAndCommit(url);
-  content::NavigationEntry* entry =
-      web_contents()->GetController().GetVisibleEntry();
-  ASSERT_TRUE(entry);
-  EXPECT_FALSE(GetInputEvents(entry).insecure_field_edited);
-
-  // Create a subframe and check that notifications for field edits
-  // are handled properly.
-  content::RenderFrameHost* subframe =
-      content::RenderFrameHostTester::For(main_rfh())->AppendChild("child");
-  subframe = content::NavigationSimulator::NavigateAndCommitFromDocument(
-      GURL("http://example2.test"), subframe);
-  auto subframe_driver =
-      std::make_unique<InsecureSensitiveInputDriver>(subframe);
-  subframe_driver->DidEditFieldInInsecureContext();
-
-  EXPECT_EQ(url, entry->GetURL());
-  EXPECT_TRUE(GetInputEvents(entry).insecure_field_edited);
-}
-
-}  // namespace
diff --git a/chrome/browser/ssl/security_state_tab_helper_browsertest.cc b/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
index b76635ca..61c080f1 100644
--- a/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
+++ b/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
@@ -57,7 +57,6 @@
 #include "components/security_interstitials/content/ssl_blocking_page.h"
 #include "components/security_interstitials/core/features.h"
 #include "components/security_interstitials/core/pref_names.h"
-#include "components/security_state/content/ssl_status_input_event_data.h"
 #include "components/security_state/core/features.h"
 #include "components/security_state/core/security_state.h"
 #include "components/strings/grit/components_strings.h"
@@ -108,7 +107,6 @@
 #include "net/test/test_data_directory.h"
 #include "services/network/public/cpp/features.h"
 #include "third_party/blink/public/common/features.h"
-#include "third_party/blink/public/mojom/choosers/file_chooser.mojom.h"
 #include "third_party/boringssl/src/include/openssl/ssl.h"
 #include "ui/base/l10n/l10n_util.h"
 
@@ -174,42 +172,6 @@
   }
 }
 
-// A delegate class that allows emulating selection of a file for an
-// INPUT TYPE=FILE form field.
-class FileChooserDelegate : public content::WebContentsDelegate {
- public:
-  // Constructs a WebContentsDelegate that mocks a file dialog.
-  // The mocked file dialog will always reply that the user selected |file|.
-  explicit FileChooserDelegate(const base::FilePath& file,
-                               base::OnceClosure callback)
-      : file_(file), callback_(std::move(callback)) {}
-
-  // Copy of the params passed to RunFileChooser.
-  const blink::mojom::FileChooserParams& params() const { return *params_; }
-
-  // WebContentsDelegate:
-  void RunFileChooser(content::RenderFrameHost* render_frame_host,
-                      scoped_refptr<content::FileSelectListener> listener,
-                      const blink::mojom::FileChooserParams& params) override {
-    // Send the selected file to the renderer process.
-    std::vector<blink::mojom::FileChooserFileInfoPtr> files;
-    files.push_back(blink::mojom::FileChooserFileInfo::NewNativeFile(
-        blink::mojom::NativeFileInfo::New(file_, std::u16string())));
-    listener->FileSelected(std::move(files), base::FilePath(),
-                           blink::mojom::FileChooserParams::Mode::kOpen);
-
-    params_ = params.Clone();
-    std::move(callback_).Run();
-  }
-
- private:
-  base::FilePath file_;
-  base::OnceClosure callback_;
-  blink::mojom::FileChooserParamsPtr params_;
-
-  DISALLOW_COPY_AND_ASSIGN(FileChooserDelegate);
-};
-
 // A WebContentsObserver useful for testing the DidChangeVisibleSecurityState()
 // method: it keeps track of the latest security style and explanation that was
 // fired.
@@ -1423,40 +1385,6 @@
                           true /* use_secure_inner_origin */);
 }
 
-// Tests that the security level of a HTTP page is not downgraded when a form
-// field is modified by JavaScript.
-IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest,
-                       SecurityLevelNotDowngradedAfterScriptModification) {
-  content::WebContents* contents =
-      browser()->tab_strip_model()->GetActiveWebContents();
-
-  SecurityStateTabHelper* helper =
-      SecurityStateTabHelper::FromWebContents(contents);
-  ASSERT_TRUE(helper);
-
-  // Navigate to an HTTP page. Use a non-local hostname so that it is
-  // not considered secure.
-  ui_test_utils::NavigateToURL(
-      browser(),
-      GetURLWithNonLocalHostname(embedded_test_server(),
-                                 "/textinput/focus_input_on_load.html"));
-  EXPECT_EQ(security_state::WARNING, helper->GetSecurityLevel());
-
-  // Verify a value set operation isn't treated as user-input.
-  EXPECT_TRUE(content::ExecuteScript(
-      contents, "document.getElementById('text_id').value='v';"));
-  InjectScript(contents);
-  base::RunLoop().RunUntilIdle();
-  ASSERT_EQ(security_state::WARNING, helper->GetSecurityLevel());
-
-  // Verify an InsertText operation isn't treated as user-input.
-  EXPECT_TRUE(content::ExecuteScript(
-      contents, "document.execCommand('InsertText',false,'a');"));
-  InjectScript(contents);
-  base::RunLoop().RunUntilIdle();
-  ASSERT_EQ(security_state::WARNING, helper->GetSecurityLevel());
-}
-
 // Tests that the security state for a WebContents is up to date when the
 // WebContents is inserted into a Browser's TabStripModel.
 IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, AddedTab) {
diff --git a/chrome/browser/ssl/security_state_tab_helper_unittest.cc b/chrome/browser/ssl/security_state_tab_helper_unittest.cc
index a6c3682..1270432 100644
--- a/chrome/browser/ssl/security_state_tab_helper_unittest.cc
+++ b/chrome/browser/ssl/security_state_tab_helper_unittest.cc
@@ -10,7 +10,6 @@
 #include "base/test/metrics/histogram_tester.h"
 #include "chrome/browser/ssl/tls_deprecation_test_utils.h"
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
-#include "components/security_state/content/ssl_status_input_event_data.h"
 #include "content/public/browser/navigation_entry.h"
 #include "content/public/test/mock_navigation_handle.h"
 #include "content/public/test/navigation_simulator.h"
@@ -25,21 +24,6 @@
 const char kInsecureMainFrameNonFormNavigationSecurityLevelHistogram[] =
     "Security.SecurityLevel.InsecureMainFrameNonFormNavigation";
 
-// Stores the Insecure Input Events to the entry's SSLStatus user data.
-void SetInputEvents(content::NavigationEntry* entry,
-                    security_state::InsecureInputEventData events) {
-  security_state::SSLStatus& ssl = entry->GetSSL();
-  security_state::SSLStatusInputEventData* input_events =
-      static_cast<security_state::SSLStatusInputEventData*>(
-          ssl.user_data.get());
-  if (!input_events) {
-    ssl.user_data =
-        std::make_unique<security_state::SSLStatusInputEventData>(events);
-  } else {
-    *input_events->input_events() = events;
-  }
-}
-
 class SecurityStateTabHelperHistogramTest
     : public ChromeRenderViewHostTestHarness {
  public:
@@ -74,13 +58,6 @@
     bool is_in_main_frame_ = true;
   };
 
-  void ClearInputEvents() {
-    content::NavigationEntry* entry =
-        web_contents()->GetController().GetVisibleEntry();
-    SetInputEvents(entry, security_state::InsecureInputEventData());
-    helper_->DidChangeVisibleSecurityState();
-  }
-
   void StartNavigation(bool is_form, bool is_main_frame) {
     MockNavigationHandle handle(GURL("http://example.test"),
                                 web_contents()->GetMainFrame());
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index 98b3719..a827d020 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -3255,8 +3255,6 @@
       "views/frame/browser_non_client_frame_view_factory_mac.mm",
       "views/frame/browser_non_client_frame_view_mac.h",
       "views/frame/browser_non_client_frame_view_mac.mm",
-      "views/frame/caption_button_placeholder_container_mac.h",
-      "views/frame/caption_button_placeholder_container_mac.mm",
       "views/frame/immersive_mode_controller_mac.h",
       "views/frame/immersive_mode_controller_mac.mm",
       "views/frame/native_browser_frame_factory_mac.mm",
@@ -3508,6 +3506,13 @@
     }
   }
 
+  if (is_win || is_mac || (is_linux && !is_chromeos_lacros)) {
+    sources += [
+      "startup/web_app_url_handling_startup_utils.cc",
+      "startup/web_app_url_handling_startup_utils.h",
+    ]
+  }
+
   if (is_linux || is_chromeos) {  # Both desktop Linux and ChromeOS.
     sources += [
       "certificate_dialogs.cc",
@@ -3833,6 +3838,8 @@
       "views/frame/browser_view_layout.h",
       "views/frame/browser_view_layout_delegate.h",
       "views/frame/browser_window_factory.cc",
+      "views/frame/caption_button_placeholder_container.cc",
+      "views/frame/caption_button_placeholder_container.h",
       "views/frame/contents_layout_manager.cc",
       "views/frame/contents_layout_manager.h",
       "views/frame/contents_web_view.cc",
diff --git a/chrome/browser/ui/app_list/arc/arc_app_unittest.cc b/chrome/browser/ui/app_list/arc/arc_app_unittest.cc
index 2eb156bb..5157519 100644
--- a/chrome/browser/ui/app_list/arc/arc_app_unittest.cc
+++ b/chrome/browser/ui/app_list/arc/arc_app_unittest.cc
@@ -2513,7 +2513,9 @@
 }
 
 // Test that icon is correctly updated for suspended/non-suspended app.
-TEST_P(ArcAppModelBuilderTest, IconLoaderForSuspendedApps) {
+//
+// TODO(https://crbug.com/1211227): The test is flaky.
+TEST_P(ArcAppModelBuilderTest, DISABLED_IconLoaderForSuspendedApps) {
   arc::mojom::AppInfo app = fake_apps()[0];
   const std::string app_id = ArcAppTest::GetAppId(app);
 
diff --git a/chrome/browser/ui/ash/projector/projector_client_impl.cc b/chrome/browser/ui/ash/projector/projector_client_impl.cc
index 946f5507..fc08166 100644
--- a/chrome/browser/ui/ash/projector/projector_client_impl.cc
+++ b/chrome/browser/ui/ash/projector/projector_client_impl.cc
@@ -48,7 +48,8 @@
   DCHECK_EQ(speech_recognizer_.get(), nullptr);
   speech_recognizer_ = std::make_unique<OnDeviceSpeechRecognizer>(
       weak_ptr_factory_.GetWeakPtr(), ProfileManager::GetPrimaryUserProfile(),
-      kEnglishLanguageCode, /*recognition_mode_ime=*/false);
+      kEnglishLanguageCode, /*recognition_mode_ime=*/false,
+      /*enable_formatting=*/true);
   speech_recognizer_->Start();
 }
 
diff --git a/chrome/browser/ui/ash/shelf/shelf_context_menu.cc b/chrome/browser/ui/ash/shelf/shelf_context_menu.cc
index 32dcaae..f7831929 100644
--- a/chrome/browser/ui/ash/shelf/shelf_context_menu.cc
+++ b/chrome/browser/ui/ash/shelf/shelf_context_menu.cc
@@ -95,9 +95,6 @@
 
 std::unique_ptr<ui::SimpleMenuModel> ShelfContextMenu::GetBaseMenuModel() {
   auto menu_model = std::make_unique<ui::SimpleMenuModel>(this);
-  // TODO(manucornet): Don't add 'swap with next' on the last item, or 'swap
-  // with previous' on the first one. For now, these options appear, but
-  // selecting them is a no-op.
   AddContextMenuOption(menu_model.get(), ash::SWAP_WITH_NEXT,
                        IDS_SHELF_CONTEXT_MENU_SWAP_WITH_NEXT);
   AddContextMenuOption(menu_model.get(), ash::SWAP_WITH_PREVIOUS,
@@ -119,9 +116,11 @@
 
   if (command_id == ash::SWAP_WITH_NEXT ||
       command_id == ash::SWAP_WITH_PREVIOUS) {
-    // Only show commands to reorder shelf items when ChromeVox is enabled.
+    // Only show commands to reorder shelf items when ChromeVox or SwitchAccess
+    // are enabled.
     if (!AccessibilityManager::Get() ||
-        !AccessibilityManager::Get()->IsSpokenFeedbackEnabled()) {
+        (!AccessibilityManager::Get()->IsSpokenFeedbackEnabled() &&
+         !AccessibilityManager::Get()->IsSwitchAccessEnabled())) {
       return false;
     }
     const ash::ShelfModel* model = controller_->shelf_model();
diff --git a/chrome/browser/ui/ash/test_wallpaper_controller.cc b/chrome/browser/ui/ash/test_wallpaper_controller.cc
index 0131686..be9b5b5 100644
--- a/chrome/browser/ui/ash/test_wallpaper_controller.cc
+++ b/chrome/browser/ui/ash/test_wallpaper_controller.cc
@@ -51,6 +51,7 @@
 void TestWallpaperController::SetOnlineWallpaper(
     const AccountId& account_id,
     const GURL& url,
+    const std::string& collection_id,
     ash::WallpaperLayout layout,
     bool preview_mode,
     SetOnlineWallpaperCallback callback) {
@@ -60,6 +61,7 @@
 void TestWallpaperController::SetOnlineWallpaperIfExists(
     const AccountId& account_id,
     const std::string& url,
+    const std::string& collection_id,
     ash::WallpaperLayout layout,
     bool preview_mode,
     SetOnlineWallpaperCallback callback) {
diff --git a/chrome/browser/ui/ash/test_wallpaper_controller.h b/chrome/browser/ui/ash/test_wallpaper_controller.h
index a09022f..3eb93b4 100644
--- a/chrome/browser/ui/ash/test_wallpaper_controller.h
+++ b/chrome/browser/ui/ash/test_wallpaper_controller.h
@@ -53,11 +53,13 @@
                           bool preview_mode) override;
   void SetOnlineWallpaper(const AccountId& account_id,
                           const GURL& url,
+                          const std::string& collection_id,
                           ash::WallpaperLayout layout,
                           bool preview_mode,
                           SetOnlineWallpaperCallback callback) override;
   void SetOnlineWallpaperIfExists(const AccountId& account_id,
                                   const std::string& url,
+                                  const std::string& collection_id,
                                   ash::WallpaperLayout layout,
                                   bool preview_mode,
                                   SetOnlineWallpaperCallback callback) override;
diff --git a/chrome/browser/ui/ash/wallpaper_controller_client_impl.cc b/chrome/browser/ui/ash/wallpaper_controller_client_impl.cc
index 631a1902..1c670ce 100644
--- a/chrome/browser/ui/ash/wallpaper_controller_client_impl.cc
+++ b/chrome/browser/ui/ash/wallpaper_controller_client_impl.cc
@@ -298,26 +298,30 @@
 void WallpaperControllerClientImpl::SetOnlineWallpaper(
     const AccountId& account_id,
     const GURL& url,
+    const std::string& collection_id,
     ash::WallpaperLayout layout,
     bool preview_mode,
     ash::WallpaperController::SetOnlineWallpaperCallback callback) {
   if (!IsKnownUser(account_id))
     return;
 
-  wallpaper_controller_->SetOnlineWallpaper(account_id, url, layout,
-                                            preview_mode, std::move(callback));
+  wallpaper_controller_->SetOnlineWallpaper(account_id, url, collection_id,
+                                            layout, preview_mode,
+                                            std::move(callback));
 }
 
 void WallpaperControllerClientImpl::SetOnlineWallpaperIfExists(
     const AccountId& account_id,
     const std::string& url,
+    const std::string& collection_id,
     ash::WallpaperLayout layout,
     bool preview_mode,
     ash::WallpaperController::SetOnlineWallpaperCallback callback) {
   if (!IsKnownUser(account_id))
     return;
   wallpaper_controller_->SetOnlineWallpaperIfExists(
-      account_id, url, layout, preview_mode, std::move(callback));
+      account_id, url, collection_id, layout, preview_mode,
+      std::move(callback));
 }
 
 void WallpaperControllerClientImpl::SetOnlineWallpaperFromData(
diff --git a/chrome/browser/ui/ash/wallpaper_controller_client_impl.h b/chrome/browser/ui/ash/wallpaper_controller_client_impl.h
index bc9e0aac..b8d8fbf 100644
--- a/chrome/browser/ui/ash/wallpaper_controller_client_impl.h
+++ b/chrome/browser/ui/ash/wallpaper_controller_client_impl.h
@@ -64,12 +64,14 @@
   void SetOnlineWallpaper(
       const AccountId& account_id,
       const GURL& url,
+      const std::string& collection_id,
       ash::WallpaperLayout layout,
       bool preview_mode,
       ash::WallpaperController::SetOnlineWallpaperCallback callback);
   void SetOnlineWallpaperIfExists(
       const AccountId& account_id,
       const std::string& url,
+      const std::string& collection_id,
       ash::WallpaperLayout layout,
       bool preview_mode,
       ash::WallpaperController::SetOnlineWallpaperCallback callback);
diff --git a/chrome/browser/ui/cocoa/main_menu_builder.mm b/chrome/browser/ui/cocoa/main_menu_builder.mm
index 68444f1c..e5f7aef 100644
--- a/chrome/browser/ui/cocoa/main_menu_builder.mm
+++ b/chrome/browser/ui/cocoa/main_menu_builder.mm
@@ -358,14 +358,10 @@
     id app_delegate,
     const std::u16string& product_name,
     bool is_pwa) {
-  const bool new_picker =
-      base::FeatureList::IsEnabled(features::kNewProfilePicker);
-  base::scoped_nsobject<NSMenuItem> item =
-      Item(new_picker ? IDS_PROFILES_MENU_NAME
-                      : IDS_PROFILES_OPTIONS_GROUP_NAME)
-          .tag(IDC_PROFILE_MAIN_MENU)
-          .submenu({})
-          .Build();
+  base::scoped_nsobject<NSMenuItem> item = Item(IDS_PROFILES_MENU_NAME)
+                                               .tag(IDC_PROFILE_MAIN_MENU)
+                                               .submenu({})
+                                               .Build();
   return item;
 }
 
diff --git a/chrome/browser/ui/cocoa/profiles/profile_menu_controller.mm b/chrome/browser/ui/cocoa/profiles/profile_menu_controller.mm
index a624e55..8dd606a83 100644
--- a/chrome/browser/ui/cocoa/profiles/profile_menu_controller.mm
+++ b/chrome/browser/ui/cocoa/profiles/profile_menu_controller.mm
@@ -40,10 +40,7 @@
 }
 
 NSString* GetProfileMenuTitle() {
-  const bool newPicker =
-      base::FeatureList::IsEnabled(features::kNewProfilePicker);
-  return l10n_util::GetNSStringWithFixup(
-      newPicker ? IDS_PROFILES_MENU_NAME : IDS_PROFILES_OPTIONS_GROUP_NAME);
+  return l10n_util::GetNSStringWithFixup(IDS_PROFILES_MENU_NAME);
 }
 
 }  // namespace
@@ -203,14 +200,9 @@
   if (IsAddPersonEnabled()) {
     [[self menu] addItem:[NSMenuItem separatorItem]];
 
-    const bool newPicker =
-        base::FeatureList::IsEnabled(features::kNewProfilePicker);
-    item = [self
-        createItemWithTitle:l10n_util::GetNSStringWithFixup(
-                                newPicker
-                                    ? IDS_PROFILES_ADD_PROFILE_LABEL
-                                    : IDS_PROFILES_CREATE_NEW_PROFILE_OPTION)
-                     action:@selector(newProfile:)];
+    item = [self createItemWithTitle:l10n_util::GetNSStringWithFixup(
+                                         IDS_PROFILES_ADD_PROFILE_LABEL)
+                              action:@selector(newProfile:)];
     [[self menu] addItem:item];
   }
 
diff --git a/chrome/browser/ui/profile_picker.cc b/chrome/browser/ui/profile_picker.cc
index c1789337..1b07bbd 100644
--- a/chrome/browser/ui/profile_picker.cc
+++ b/chrome/browser/ui/profile_picker.cc
@@ -44,9 +44,6 @@
 const char ProfilePicker::kTaskManagerUrl[] =
     "chrome://profile-picker/task-manager";
 
-const base::Feature kEnableProfilePickerOnStartupFeature{
-    "EnableProfilePickerOnStartup", base::FEATURE_ENABLED_BY_DEFAULT};
-
 // static
 bool ProfilePicker::Shown() {
   PrefService* prefs = g_browser_process->local_state();
@@ -58,12 +55,6 @@
 bool ProfilePicker::ShouldShowAtLaunch() {
   AvailabilityOnStartup availability_on_startup = GetAvailabilityOnStartup();
 
-  if (!base::FeatureList::IsEnabled(features::kNewProfilePicker))
-    return false;
-
-  if (!base::FeatureList::IsEnabled(kEnableProfilePickerOnStartupFeature))
-    return false;
-
   if (availability_on_startup == AvailabilityOnStartup::kDisabled)
     return false;
 
diff --git a/chrome/browser/ui/profile_picker.h b/chrome/browser/ui/profile_picker.h
index 9ed6053..b2e55fc 100644
--- a/chrome/browser/ui/profile_picker.h
+++ b/chrome/browser/ui/profile_picker.h
@@ -27,10 +27,6 @@
 class WebView;
 }  // namespace views
 
-// Kill switch to disable showing the picker on startup. Has no effect if
-// features::kNewProfilePicker is disabled.
-extern const base::Feature kEnableProfilePickerOnStartupFeature;
-
 class ProfilePicker {
  public:
   // Only work when passed as the argument 'on_select_profile_target_url' to
diff --git a/chrome/browser/ui/profile_picker_unittest.cc b/chrome/browser/ui/profile_picker_unittest.cc
index 808ef8c..05bc67b4d 100644
--- a/chrome/browser/ui/profile_picker_unittest.cc
+++ b/chrome/browser/ui/profile_picker_unittest.cc
@@ -22,7 +22,6 @@
  public:
   ProfilePickerTest()
       : testing_profile_manager_(TestingBrowserProcess::GetGlobal()) {
-    feature_list_.InitAndEnableFeature(features::kNewProfilePicker);
   }
 
   void SetUp() override { ASSERT_TRUE(testing_profile_manager_.SetUp()); }
@@ -47,7 +46,6 @@
   content::BrowserTaskEnvironment task_environment_{
       base::test::TaskEnvironment::TimeSource::MOCK_TIME};
   TestingProfileManager testing_profile_manager_;
-  base::test::ScopedFeatureList feature_list_;
 };
 
 TEST_F(ProfilePickerTest, ShouldShowAtLaunch_MultipleProfiles_TwoActive) {
@@ -64,18 +62,6 @@
   task_environment()->FastForwardBy(base::TimeDelta::FromDays(27));
   EXPECT_TRUE(ProfilePicker::ShouldShowAtLaunch());
 }
-TEST_F(ProfilePickerTest, ShouldShowAtLaunch_KillSwitch) {
-  base::test::ScopedFeatureList feature_list;
-  feature_list.InitAndDisableFeature(kEnableProfilePickerOnStartupFeature);
-
-  TestingProfile* profile1 =
-      testing_profile_manager()->CreateTestingProfile("profile1");
-  GetProfileAttributes(profile1)->SetActiveTimeToNow();
-  TestingProfile* profile2 =
-      testing_profile_manager()->CreateTestingProfile("profile2");
-  GetProfileAttributes(profile2)->SetActiveTimeToNow();
-  EXPECT_FALSE(ProfilePicker::ShouldShowAtLaunch());
-}
 
 TEST_F(ProfilePickerTest,
        ShouldShowAtLaunch_MultipleProfiles_Inactive_SeenPicker) {
diff --git a/chrome/browser/ui/sharing_hub/sharing_hub_bubble_controller.cc b/chrome/browser/ui/sharing_hub/sharing_hub_bubble_controller.cc
index efafb4e2..af88603 100644
--- a/chrome/browser/ui/sharing_hub/sharing_hub_bubble_controller.cc
+++ b/chrome/browser/ui/sharing_hub/sharing_hub_bubble_controller.cc
@@ -28,7 +28,7 @@
 
 namespace {
 
-#if defined(IS_CHROMEOS_ASH)
+#if BUILDFLAG(IS_CHROMEOS_ASH)
 // Result of the CrOS sharesheet, i.e. whether the user selects a share target
 // after opening the sharesheet.
 // These values are persisted to logs. Entries should not be renumbered and
@@ -86,7 +86,7 @@
 }
 
 void SharingHubBubbleController::ShowBubble() {
-#if defined(IS_CHROMEOS_ASH)
+#if BUILDFLAG(IS_CHROMEOS_ASH)
   ShowSharesheet();
 #else
   Browser* browser = chrome::FindBrowserWithWebContents(web_contents_);
@@ -148,7 +148,7 @@
   sharing_hub_bubble_view_ = nullptr;
 }
 
-#if defined(IS_CHROMEOS_ASH)
+#if BUILDFLAG(IS_CHROMEOS_ASH)
 void SharingHubBubbleController::ShowSharesheet() {
   if (!base::FeatureList::IsEnabled(features::kSharesheet) ||
       !base::FeatureList::IsEnabled(features::kChromeOSSharingHub)) {
diff --git a/chrome/browser/ui/sharing_hub/sharing_hub_bubble_controller.h b/chrome/browser/ui/sharing_hub/sharing_hub_bubble_controller.h
index 747b29d..215a1de 100644
--- a/chrome/browser/ui/sharing_hub/sharing_hub_bubble_controller.h
+++ b/chrome/browser/ui/sharing_hub/sharing_hub_bubble_controller.h
@@ -60,7 +60,7 @@
  private:
   friend class content::WebContentsUserData<SharingHubBubbleController>;
 
-#if defined(IS_CHROMEOS_ASH)
+#if BUILDFLAG(IS_CHROMEOS_ASH)
   void ShowSharesheet();
   void OnSharesheetShown(sharesheet::SharesheetResult result);
 #endif
diff --git a/chrome/browser/ui/startup/startup_browser_creator.cc b/chrome/browser/ui/startup/startup_browser_creator.cc
index b2390ee..1b49179 100644
--- a/chrome/browser/ui/startup/startup_browser_creator.cc
+++ b/chrome/browser/ui/startup/startup_browser_creator.cc
@@ -136,8 +136,7 @@
 
 #if defined(OS_WIN) || defined(OS_MAC) || \
     (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
-#include "chrome/browser/web_applications/components/url_handler_launch_params.h"
-#include "chrome/browser/web_applications/components/url_handler_manager_impl.h"
+#include "chrome/browser/ui/startup/web_app_url_handling_startup_utils.h"
 #endif
 
 using content::BrowserThread;
@@ -376,27 +375,29 @@
   if (!browser)
     return;
 
-  LaunchMode mode;
-  switch (container) {
-    case apps::mojom::LaunchContainer::kLaunchContainerWindow:
-      DCHECK(browser->is_type_app());
-      mode = LaunchMode::kAsWebAppInWindow;
-      break;
-    case apps::mojom::LaunchContainer::kLaunchContainerTab:
-      DCHECK(!browser->is_type_app());
-      mode = LaunchMode::kAsWebAppInTab;
-      break;
-    case apps::mojom::LaunchContainer::kLaunchContainerPanelDeprecated:
-      NOTREACHED();
-      FALLTHROUGH;
-    case apps::mojom::LaunchContainer::kLaunchContainerNone:
-      DCHECK(!browser->is_type_app());
-      mode = LaunchMode::kUnknownWebApp;
-      break;
+  if (launch_mode_recorder) {
+    LaunchMode mode;
+    switch (container) {
+      case apps::mojom::LaunchContainer::kLaunchContainerWindow:
+        DCHECK(browser->is_type_app());
+        mode = LaunchMode::kAsWebAppInWindow;
+        break;
+      case apps::mojom::LaunchContainer::kLaunchContainerTab:
+        DCHECK(!browser->is_type_app());
+        mode = LaunchMode::kAsWebAppInTab;
+        break;
+      case apps::mojom::LaunchContainer::kLaunchContainerPanelDeprecated:
+        NOTREACHED();
+        FALLTHROUGH;
+      case apps::mojom::LaunchContainer::kLaunchContainerNone:
+        DCHECK(!browser->is_type_app());
+        mode = LaunchMode::kUnknownWebApp;
+        break;
+    }
+
+    launch_mode_recorder->SetLaunchMode(mode);
   }
 
-  if (launch_mode_recorder)
-    launch_mode_recorder->SetLaunchMode(mode);
   StartupBrowserCreatorImpl::MaybeToggleFullscreen(browser);
 }
 
@@ -554,47 +555,6 @@
   return false;
 }
 
-#if defined(OS_WIN) || defined(OS_MAC) || \
-    (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
-// If |command_line| contains a single URL argument and that URL matches URL
-// handling registration from installed web apps, show app options to user and
-// launch one if accepted.
-// Returns true if launching an app, false otherwise.
-bool MaybeLaunchUrlHandlerWebApp(
-    const base::CommandLine& command_line,
-    const base::FilePath& cur_dir,
-    std::unique_ptr<LaunchModeRecorder> launch_mode_recorder) {
-  const std::vector<web_app::UrlHandlerLaunchParams> url_handler_matches =
-      web_app::UrlHandlerManagerImpl::GetUrlHandlerMatches(command_line);
-
-  // Launch the first match for which a Profile can be loaded.
-  // TODO(crbug/1072058): Use WebAppUiManagerImpl and WebAppDialogManager
-  // to display the intent picker dialog. Use the first match here for testing.
-  // TODO(crbug/1072058): Check user preferences before showing intent picker.
-  ProfileManager* profile_manager = g_browser_process->profile_manager();
-  for (const auto& match : url_handler_matches) {
-    // Do not load profile if profile path is not valid.
-    if (!profile_manager->GetProfileAttributesStorage()
-             .GetProfileAttributesWithPath(match.profile_path)) {
-      continue;
-    }
-    Profile* const profile = profile_manager->GetProfile(match.profile_path);
-    if (profile == nullptr)
-      continue;
-
-    apps::AppServiceProxyFactory::GetForProfile(profile)
-        ->BrowserAppLauncher()
-        ->LaunchAppWithCallback(
-            match.app_id, command_line, cur_dir, match.url,
-            /*protocol_handler_launch_url=*/absl::nullopt,
-            base::BindOnce(&FinalizeWebAppLaunch,
-                           std::move(launch_mode_recorder)));
-    return true;
-  }
-  return false;
-}
-#endif
-
 }  // namespace
 
 StartupBrowserCreator::StartupBrowserCreator() = default;
@@ -830,6 +790,19 @@
 #endif  // defined(OS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
 }
 
+// static
+bool StartupBrowserCreator::MaybeHandleProfileAgnosticUrls(
+    const std::vector<GURL>& urls) {
+  // Web app URL handling.
+#if defined(OS_WIN) || defined(OS_MAC) || \
+    (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+  return web_app::startup::MaybeLaunchUrlHandlerWebAppFromUrls(
+      urls, base::BindOnce(&FinalizeWebAppLaunch,
+                           std::make_unique<LaunchModeRecorder>()));
+#endif
+  return false;
+}
+
 bool StartupBrowserCreator::ProcessCmdLineImpl(
     const base::CommandLine& command_line,
     const base::FilePath& cur_dir,
@@ -1114,8 +1087,10 @@
   // Web app URL handling.
 #if defined(OS_WIN) || defined(OS_MAC) || \
     (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
-  if (MaybeLaunchUrlHandlerWebApp(command_line, cur_dir,
-                                  std::make_unique<LaunchModeRecorder>())) {
+  if (web_app::startup::MaybeLaunchUrlHandlerWebAppFromCmd(
+          command_line, cur_dir,
+          base::BindOnce(&FinalizeWebAppLaunch,
+                         std::make_unique<LaunchModeRecorder>()))) {
     return true;
   }
 #endif
diff --git a/chrome/browser/ui/startup/startup_browser_creator.h b/chrome/browser/ui/startup/startup_browser_creator.h
index 95f6bbe..6b4ba6ea 100644
--- a/chrome/browser/ui/startup/startup_browser_creator.h
+++ b/chrome/browser/ui/startup/startup_browser_creator.h
@@ -113,6 +113,9 @@
   static void RegisterLocalStatePrefs(PrefRegistrySimple* registry);
   static void RegisterProfilePrefs(PrefRegistrySimple* registry);
 
+  // Return true if |urls| are handled, false otherwise.
+  static bool MaybeHandleProfileAgnosticUrls(const std::vector<GURL>& urls);
+
  private:
   friend class CloudPrintProxyPolicyTest;
   friend class CloudPrintProxyPolicyStartupTest;
diff --git a/chrome/browser/ui/startup/startup_browser_creator_browsertest.cc b/chrome/browser/ui/startup/startup_browser_creator_browsertest.cc
index e8d8cd5..9e6868ff 100644
--- a/chrome/browser/ui/startup/startup_browser_creator_browsertest.cc
+++ b/chrome/browser/ui/startup/startup_browser_creator_browsertest.cc
@@ -1437,31 +1437,10 @@
     return web_app::WebAppProviderBase::GetProviderBase(browser()->profile());
   }
 
-  // Install a web app with url_handlers then register it with the
-  // UrlHandlerManager. This is sufficient for testing URL matching and launch
-  // at startup.
   web_app::AppId InstallWebAppWithUrlHandlers(
       const std::vector<apps::UrlHandlerInfo>& url_handlers) {
-    std::unique_ptr<WebApplicationInfo> info =
-        std::make_unique<WebApplicationInfo>();
-    info->start_url = GURL(kStartUrl);
-    info->title = kAppName;
-    info->open_as_window = true;
-    info->url_handlers = url_handlers;
-    web_app::AppId app_id =
-        web_app::test::InstallWebApp(browser()->profile(), std::move(info));
-
-    auto& url_handler_manager =
-        provider()->os_integration_manager().url_handler_manager_for_testing();
-
-    base::RunLoop run_loop;
-    url_handler_manager.RegisterUrlHandlers(
-        app_id, base::BindLambdaForTesting([&](bool success) {
-          EXPECT_TRUE(success);
-          run_loop.Quit();
-        }));
-    run_loop.Run();
-    return app_id;
+    return web_app::test::InstallWebAppWithUrlHandlers(
+        browser()->profile(), GURL(kStartUrl), kAppName, url_handlers);
   }
 
   void SetUpCommandlineAndStart(const std::string& url) {
@@ -2446,7 +2425,6 @@
 class StartupBrowserCreatorPickerTestBase : public InProcessBrowserTest {
  public:
   StartupBrowserCreatorPickerTestBase() {
-    scoped_feature_list_.InitAndEnableFeature(features::kNewProfilePicker);
     // This test configures command line params carefully. Make sure
     // InProcessBrowserTest does _not_ add about:blank as a startup URL to the
     // command line.
@@ -2479,9 +2457,6 @@
       entry->SetActiveTimeToNow();
     }
   }
-
- private:
-  base::test::ScopedFeatureList scoped_feature_list_;
 };
 
 struct ProfilePickerSetup {
@@ -2518,9 +2493,6 @@
       command_line->AppendSwitch(*GetParam().switch_name);
     }
   }
-
- private:
-  base::test::ScopedFeatureList scoped_feature_list_;
 };
 
 // Create a secondary profile in a separate PRE run because the existence of
diff --git a/chrome/browser/ui/startup/web_app_url_handling_startup_utils.cc b/chrome/browser/ui/startup/web_app_url_handling_startup_utils.cc
new file mode 100644
index 0000000..b6f8a9b
--- /dev/null
+++ b/chrome/browser/ui/startup/web_app_url_handling_startup_utils.cc
@@ -0,0 +1,100 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/startup/web_app_url_handling_startup_utils.h"
+
+#include <utility>
+#include <vector>
+
+#include "base/command_line.h"
+#include "base/files/file_path.h"
+#include "chrome/browser/apps/app_service/app_service_proxy.h"
+#include "chrome/browser/apps/app_service/app_service_proxy_factory.h"
+#include "chrome/browser/apps/app_service/browser_app_launcher.h"
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/profiles/profile_attributes_storage.h"
+#include "chrome/browser/profiles/profile_manager.h"
+#include "chrome/browser/web_applications/components/url_handler_launch_params.h"
+#include "chrome/browser/web_applications/components/url_handler_manager_impl.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
+#include "url/gurl.h"
+
+namespace {
+
+void LaunchApp(const base::FilePath& profile_path,
+               const web_app::AppId& app_id,
+               const base::CommandLine& command_line,
+               const base::FilePath& cur_dir,
+               const GURL& url,
+               web_app::startup::FinalizeWebAppLaunchCallback callback) {
+  apps::AppServiceProxyFactory::GetForProfile(
+      g_browser_process->profile_manager()->GetProfile(profile_path))
+      ->BrowserAppLauncher()
+      ->LaunchAppWithCallback(app_id, command_line, cur_dir, url,
+                              /*protocol_handler_launch_url=*/absl::nullopt,
+                              std::move(callback));
+}
+
+bool LaunchFirstValidMatch(
+    const base::CommandLine& command_line,
+    const base::FilePath& cur_dir,
+    const std::vector<web_app::UrlHandlerLaunchParams>& url_handler_matches,
+    web_app::startup::FinalizeWebAppLaunchCallback callback) {
+  // Launch the first match for which a Profile can be loaded.
+  // TODO(crbug/1072058): Use WebAppUiManagerImpl and WebAppDialogManager
+  // to display the intent picker dialog. Use the first match here for testing.
+  // TODO(crbug/1072058): Check user preferences before showing intent picker.
+  ProfileManager* profile_manager = g_browser_process->profile_manager();
+  Profile* profile = nullptr;
+  const web_app::UrlHandlerLaunchParams* found_match = nullptr;
+  for (const auto& match : url_handler_matches) {
+    // Do not load profile if profile path is not valid.
+    if (!profile_manager->GetProfileAttributesStorage()
+             .GetProfileAttributesWithPath(match.profile_path)) {
+      continue;
+    }
+    profile = profile_manager->GetProfile(match.profile_path);
+    if (profile) {
+      found_match = &match;
+      break;
+    }
+  }
+
+  if (profile && found_match) {
+    LaunchApp(found_match->profile_path, found_match->app_id, command_line,
+              cur_dir, found_match->url, std::move(callback));
+    return true;
+  }
+  return false;
+}
+
+}  // namespace
+
+namespace web_app {
+namespace startup {
+
+bool MaybeLaunchUrlHandlerWebAppFromCmd(const base::CommandLine& command_line,
+                                        const base::FilePath& cur_dir,
+                                        FinalizeWebAppLaunchCallback callback) {
+  return LaunchFirstValidMatch(
+      command_line, cur_dir,
+      UrlHandlerManagerImpl::GetUrlHandlerMatches(command_line),
+      std::move(callback));
+}
+
+bool MaybeLaunchUrlHandlerWebAppFromUrls(
+    const std::vector<GURL>& urls,
+    FinalizeWebAppLaunchCallback callback) {
+  if (urls.size() != 1)
+    return false;
+
+  return LaunchFirstValidMatch(
+      base::CommandLine(base::CommandLine::NO_PROGRAM), base::FilePath(),
+      UrlHandlerManagerImpl::GetUrlHandlerMatches(urls.front()),
+      std::move(callback));
+}
+
+}  // namespace startup
+}  // namespace web_app
diff --git a/chrome/browser/ui/startup/web_app_url_handling_startup_utils.h b/chrome/browser/ui/startup/web_app_url_handling_startup_utils.h
new file mode 100644
index 0000000..56f383c
--- /dev/null
+++ b/chrome/browser/ui/startup/web_app_url_handling_startup_utils.h
@@ -0,0 +1,44 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_STARTUP_WEB_APP_URL_HANDLING_STARTUP_UTILS_H_
+#define CHROME_BROWSER_UI_STARTUP_WEB_APP_URL_HANDLING_STARTUP_UTILS_H_
+
+#include <vector>
+
+#include "base/callback.h"
+#include "components/services/app_service/public/mojom/types.mojom.h"
+
+namespace base {
+class CommandLine;
+class FilePath;
+}  // namespace base
+
+class Browser;
+class GURL;
+
+namespace web_app {
+namespace startup {
+
+using FinalizeWebAppLaunchCallback =
+    base::OnceCallback<void(Browser* browser,
+                            apps::mojom::LaunchContainer container)>;
+
+// If |command_line| contains a single URL argument and that URL matches URL
+// handling registration from installed web apps, show app options to user and
+// launch one if accepted.
+// Returns true if launching an app, false otherwise.
+bool MaybeLaunchUrlHandlerWebAppFromCmd(const base::CommandLine& command_line,
+                                        const base::FilePath& cur_dir,
+                                        FinalizeWebAppLaunchCallback callback);
+
+// Same as MaybeLaunchUrlHandlerWebAppFromCmd but check if |urls| contains a
+// single URL.
+bool MaybeLaunchUrlHandlerWebAppFromUrls(const std::vector<GURL>& urls,
+                                         FinalizeWebAppLaunchCallback callback);
+
+}  // namespace startup
+}  // namespace web_app
+
+#endif  // CHROME_BROWSER_UI_STARTUP_WEB_APP_URL_HANDLING_STARTUP_UTILS_H_
diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc
index abb81207..e3ddc3c 100644
--- a/chrome/browser/ui/ui_features.cc
+++ b/chrome/browser/ui/ui_features.cc
@@ -43,11 +43,6 @@
 const base::Feature kForceSignInReauth{"ForceSignInReauth",
                                        base::FEATURE_ENABLED_BY_DEFAULT};
 
-// Enables the new profile picker.
-// https:://crbug.com/1063856
-const base::Feature kNewProfilePicker{"NewProfilePicker",
-                                      base::FEATURE_ENABLED_BY_DEFAULT};
-
 // Enables updated tabstrip animations, required for a scrollable tabstrip.
 // https://crbug.com/958173
 const base::Feature kNewTabstripAnimation{"NewTabstripAnimation",
diff --git a/chrome/browser/ui/ui_features.h b/chrome/browser/ui/ui_features.h
index 26f1eab9..d36a74b 100644
--- a/chrome/browser/ui/ui_features.h
+++ b/chrome/browser/ui/ui_features.h
@@ -39,8 +39,6 @@
 
 extern const base::Feature kForceSignInReauth;
 
-extern const base::Feature kNewProfilePicker;
-
 extern const base::Feature kNewTabstripAnimation;
 
 extern const base::Feature kProminentDarkModeActiveTabTitle;
diff --git a/chrome/browser/ui/views/accessibility/caption_bubble_controller_views_browsertest.cc b/chrome/browser/ui/views/accessibility/caption_bubble_controller_views_browsertest.cc
index 20e9436..a7e5dc8 100644
--- a/chrome/browser/ui/views/accessibility/caption_bubble_controller_views_browsertest.cc
+++ b/chrome/browser/ui/views/accessibility/caption_bubble_controller_views_browsertest.cc
@@ -1047,8 +1047,14 @@
   // works in app but the tests aren't working.
 }
 
+// TODO(https://crbug.com/1207312): Flaky test.
+#if defined(USE_OZONE)
+#define MAYBE_ClearsTextAfterInactivity DISABLED_ClearsTextAfterInactivity
+#else
+#define MAYBE_ClearsTextAfterInactivity ClearsTextAfterInactivity
+#endif
 IN_PROC_BROWSER_TEST_F(CaptionBubbleControllerViewsTest,
-                       ClearsTextAfterInactivity) {
+                       MAYBE_ClearsTextAfterInactivity) {
   // Use a ScopedMockTimeMessageLoopTaskRunner to test the inactivity timer with
   // a mock tick clock that replaces the default tick clock with mock time.
   base::ScopedMockTimeMessageLoopTaskRunner test_task_runner;
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
index b302e40..7305203 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
@@ -187,11 +187,6 @@
   }
 
   // LabelButton:
-  void OnThemeChanged() override {
-    LabelButton::OnThemeChanged();
-    ToolbarButton::UpdateFocusRingColor(this, focus_ring());
-  }
-
   std::unique_ptr<LabelButtonBorder> CreateDefaultBorder() const override {
     return CreateBookmarkButtonBorder();
   }
@@ -292,11 +287,6 @@
   BookmarkMenuButtonBase& operator=(const BookmarkMenuButtonBase&) = delete;
 
   // MenuButton:
-  void OnThemeChanged() override {
-    MenuButton::OnThemeChanged();
-    ToolbarButton::UpdateFocusRingColor(this, focus_ring());
-  }
-
   std::unique_ptr<LabelButtonBorder> CreateDefaultBorder() const override {
     return CreateBookmarkButtonBorder();
   }
@@ -499,6 +489,10 @@
   // May be null for tests.
   if (browser_view)
     SetBackground(std::make_unique<TopContainerBackground>(browser_view));
+
+  views::FocusRing::SetColorContextForSubtree(
+      this, ThemeProperties::COLOR_TOOLBAR,
+      ThemeProperties::COLOR_TOOLBAR_BUTTON_ICON);
 }
 
 BookmarkBarView::~BookmarkBarView() {
diff --git a/chrome/browser/ui/views/download/download_shelf_view.cc b/chrome/browser/ui/views/download/download_shelf_view.cc
index aa3229bb..638cef9 100644
--- a/chrome/browser/ui/views/download/download_shelf_view.cc
+++ b/chrome/browser/ui/views/download/download_shelf_view.cc
@@ -21,6 +21,7 @@
 #include "chrome/browser/ui/view_ids.h"
 #include "chrome/browser/ui/views/download/download_item_view.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
+#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/download/public/common/download_item.h"
 #include "components/strings/grit/components_strings.h"
@@ -108,6 +109,9 @@
   // and return to chrome with the download shelf still open.
   mouse_watcher_.set_notify_on_exit_time(base::TimeDelta::FromSeconds(5));
   SetID(VIEW_ID_DOWNLOAD_SHELF);
+  views::FocusRing::SetColorContextForSubtree(
+      this, ThemeProperties::COLOR_TOOLBAR,
+      ThemeProperties::COLOR_TOOLBAR_BUTTON_ICON);
 }
 
 DownloadShelfView::~DownloadShelfView() = default;
diff --git a/chrome/browser/ui/views/download/download_shelf_web_view.cc b/chrome/browser/ui/views/download/download_shelf_web_view.cc
index 51fa36b..6d4828a 100644
--- a/chrome/browser/ui/views/download/download_shelf_web_view.cc
+++ b/chrome/browser/ui/views/download/download_shelf_web_view.cc
@@ -10,6 +10,7 @@
 #include "chrome/browser/task_manager/web_contents_tags.h"
 #include "chrome/browser/themes/theme_properties.h"
 #include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/chrome_pages.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/common/webui_url_constants.h"
 #include "ui/base/theme_provider.h"
@@ -135,6 +136,10 @@
   return this;
 }
 
+void DownloadShelfWebView::DoShowAll() {
+  chrome::ShowDownloads(browser());
+}
+
 void DownloadShelfWebView::ShowDownloadContextMenu(
     DownloadUIModel* download,
     const gfx::Point& position,
diff --git a/chrome/browser/ui/views/download/download_shelf_web_view.h b/chrome/browser/ui/views/download/download_shelf_web_view.h
index 4a33082..074f9af 100644
--- a/chrome/browser/ui/views/download/download_shelf_web_view.h
+++ b/chrome/browser/ui/views/download/download_shelf_web_view.h
@@ -41,6 +41,7 @@
   views::View* GetView() override;
 
   // DownloadShelfUIEmbedder:
+  void DoShowAll() override;
   void ShowDownloadContextMenu(
       DownloadUIModel* download,
       const gfx::Point& position,
diff --git a/chrome/browser/ui/views/extensions/extensions_toolbar_container_browsertest.cc b/chrome/browser/ui/views/extensions/extensions_toolbar_container_browsertest.cc
index 08cac1f..e896de3 100644
--- a/chrome/browser/ui/views/extensions/extensions_toolbar_container_browsertest.cc
+++ b/chrome/browser/ui/views/extensions/extensions_toolbar_container_browsertest.cc
@@ -6,6 +6,7 @@
 
 #include "base/strings/stringprintf.h"
 #include "base/test/metrics/histogram_tester.h"
+#include "build/build_config.h"
 #include "chrome/browser/extensions/chrome_test_extension_loader.h"
 #include "chrome/browser/extensions/extension_action_runner.h"
 #include "chrome/browser/extensions/extension_service.h"
@@ -394,8 +395,14 @@
 
 // Verifies that dragging extension icons is disabled in incognito windows.
 // https://crbug.com/1203833.
+// Flaky on Linux. http://crbug.com/1207630
+#if defined(OS_LINUX)
+#define MAYBE_IncognitoDraggingIsDisabled DISABLED_IncognitoDraggingIsDisabled
+#else
+#define MAYBE_IncognitoDraggingIsDisabled IncognitoDraggingIsDisabled
+#endif
 IN_PROC_BROWSER_TEST_F(ExtensionsToolbarContainerBrowserTest,
-                       IncognitoDraggingIsDisabled) {
+                       MAYBE_IncognitoDraggingIsDisabled) {
   // Load an extension, pin it, and enable it in incognito.
   scoped_refptr<const extensions::Extension> extension =
       LoadTestExtension("extensions/simple_with_popup");
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos.cc
index a429110..012b7c92 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos.cc
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos.cc
@@ -268,10 +268,14 @@
     const gfx::Point& point) {
   int hit_test = chromeos::FrameBorderNonClientHitTest(this, point);
 
-  // When the window is restored we want a large click target above the tabs
-  // to drag the window, so redirect clicks in the tab's shadow to caption.
+  // When the window is restored (and not in tablet split-view mode) we want a
+  // large click target above the tabs to drag the window, so redirect clicks in
+  // the tab's shadow to caption.
   if (hit_test == HTCLIENT && !frame()->IsMaximized() &&
-      !frame()->IsFullscreen()) {
+      !frame()->IsFullscreen() &&
+      !chromeos::TabletState::Get()->InTabletMode()) {
+    // TODO(crbug.com/1213133): Tab Strip hit calculation and bounds logic
+    // should reside in the TabStrip class.
     gfx::Point client_point(point);
     View::ConvertPointToTarget(this, frame()->client_view(), &client_point);
     gfx::Rect tabstrip_shadow_bounds(browser_view()->tabstrip()->bounds());
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos_browsertest.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos_browsertest.cc
index db62a95..5e4d4cd 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos_browsertest.cc
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos_browsertest.cc
@@ -49,6 +49,7 @@
 #include "chrome/browser/ui/views/frame/immersive_mode_controller.h"
 #include "chrome/browser/ui/views/frame/immersive_mode_controller_chromeos.h"
 #include "chrome/browser/ui/views/frame/tab_strip_region_view.h"
+#include "chrome/browser/ui/views/frame/webui_tab_strip_container_view.h"
 #include "chrome/browser/ui/views/fullscreen_control/fullscreen_control_host.h"
 #include "chrome/browser/ui/views/location_bar/content_setting_image_view.h"
 #include "chrome/browser/ui/views/location_bar/custom_tab_bar_view.h"
@@ -167,6 +168,17 @@
   ui::TouchUiController::TouchUiScoperForTesting touch_ui_scoper_;
 };
 
+// Template used as a base class for touch-optimized UI test fixtures.
+template <class BaseTest>
+class TopChromeTouchTest : public BaseTest {
+ public:
+  TopChromeTouchTest() : touch_ui_scoper_(true) {}
+  ~TopChromeTouchTest() override = default;
+
+ private:
+  ui::TouchUiController::TouchUiScoperForTesting touch_ui_scoper_;
+};
+
 // Template to be used when a test does not work with the webUI tabstrip.
 template <bool kEnabled, class BaseTest>
 class WebUiTabStripOverrideTest : public BaseTest {
@@ -270,10 +282,14 @@
 
 using BrowserNonClientFrameViewChromeOSTest =
     TopChromeMdParamTest<InProcessBrowserTest>;
+using BrowserNonClientFrameViewChromeOSTouchTest =
+    TopChromeTouchTest<InProcessBrowserTest>;
 using BrowserNonClientFrameViewChromeOSTestNoWebUiTabStrip =
     WebUiTabStripOverrideTest<false, BrowserNonClientFrameViewChromeOSTest>;
 using BrowserNonClientFrameViewChromeOSTestWithWebUiTabStrip =
     WebUiTabStripOverrideTest<true, BrowserNonClientFrameViewChromeOSTest>;
+using BrowserNonClientFrameViewChromeOSTouchTestWithWebUiTabStrip =
+    WebUiTabStripOverrideTest<true, BrowserNonClientFrameViewChromeOSTouchTest>;
 
 // This test does not make sense for the webUI tabstrip, since the window layout
 // is different in that case.
@@ -301,6 +317,50 @@
   EXPECT_EQ(expected_value, frame_view->NonClientHitTest(top_edge));
 }
 
+IN_PROC_BROWSER_TEST_F(
+    BrowserNonClientFrameViewChromeOSTouchTestWithWebUiTabStrip,
+    TabletSplitViewNonClientHitTest) {
+  BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
+  BrowserNonClientFrameViewChromeOS* frame_view = GetFrameViewAsh(browser_view);
+  EXPECT_EQ(0, frame_view->GetBoundsForClientView().y());
+
+  Widget* widget = browser_view->GetWidget();
+  ASSERT_NO_FATAL_FAILURE(
+      ash::ShellTestApi().SetTabletModeEnabledForTest(true));
+  ash::SplitViewTestApi().SnapWindow(widget->GetNativeWindow(),
+                                     ash::SplitViewTestApi::SnapPosition::LEFT);
+
+  // Touch on the top of the window is interpreted as client hit.
+  gfx::Point top_point(widget->GetWindowBoundsInScreen().width() / 2, 0);
+  EXPECT_EQ(HTCLIENT, frame_view->NonClientHitTest(top_point));
+}
+
+IN_PROC_BROWSER_TEST_F(
+    BrowserNonClientFrameViewChromeOSTouchTestWithWebUiTabStrip,
+    TabletSplitViewSwipeDownFromEdgeOpensWebUiTabStrip) {
+  BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
+  BrowserNonClientFrameViewChromeOS* frame_view = GetFrameViewAsh(browser_view);
+  EXPECT_EQ(0, frame_view->GetBoundsForClientView().y());
+
+  Widget* widget = browser_view->GetWidget();
+  ASSERT_NO_FATAL_FAILURE(
+      ash::ShellTestApi().SetTabletModeEnabledForTest(true));
+  ash::SplitViewTestApi().SnapWindow(widget->GetNativeWindow(),
+                                     ash::SplitViewTestApi::SnapPosition::LEFT);
+
+  // A point above the window.
+  gfx::Point edge_point(widget->GetWindowBoundsInScreen().width() / 2, -1);
+
+  ASSERT_FALSE(browser_view->webui_tab_strip()->GetVisible());
+  aura::Window* window = widget->GetNativeWindow();
+  ui::test::EventGenerator event_generator(window->GetRootWindow());
+  event_generator.SetTouchRadius(10, 5);
+  event_generator.PressTouch(edge_point);
+  event_generator.MoveTouchBy(0, 100);
+  event_generator.ReleaseTouch();
+  ASSERT_TRUE(browser_view->webui_tab_strip()->GetVisible());
+}
+
 // Test that the frame view does not do any painting in non-immersive
 // fullscreen.
 // This test does not make sense for the webUI tabstrip, since the frame is not
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_mac.h b/chrome/browser/ui/views/frame/browser_non_client_frame_view_mac.h
index c95075b8..32764a9 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_mac.h
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_mac.h
@@ -18,7 +18,7 @@
 
 @class FullscreenToolbarController;
 
-class CaptionButtonPlaceholderContainerMac;
+class CaptionButtonPlaceholderContainer;
 class WindowControlsOverlayInputRoutingMac;
 
 class BrowserNonClientFrameViewMac : public BrowserNonClientFrameView {
@@ -27,8 +27,6 @@
   BrowserNonClientFrameViewMac(BrowserFrame* frame, BrowserView* browser_view);
   ~BrowserNonClientFrameViewMac() override;
 
-  SkColor GetTitlebarColor() const;
-
   // BrowserNonClientFrameView:
   void OnFullscreenStateChanged() override;
   bool CaptionButtonsOnLeadingEdge() const override;
@@ -39,6 +37,8 @@
   void UpdateFullscreenTopUI() override;
   bool ShouldHideTopUIForFullscreen() const override;
   void UpdateThrobber(bool running) override;
+  void PaintAsActiveChanged() override;
+  void UpdateFrameColor() override;
 
   // views::NonClientFrameView:
   gfx::Rect GetBoundsForClientView() const override;
@@ -95,6 +95,8 @@
   void LayoutTitleBarForWebApp();
   void LayoutWindowControlsOverlay();
 
+  void UpdateCaptionButtonPlaceholderContainerBackground();
+
   // Used to keep track of the update of kShowFullscreenToolbar preference.
   BooleanPrefMember show_fullscreen_toolbar_;
 
@@ -102,7 +104,7 @@
 
   // A placeholder container that lies on top of the traffic lights to indicate
   // NonClientArea. Only for PWAs with window controls overlay display override.
-  CaptionButtonPlaceholderContainerMac* caption_button_placeholder_container_ =
+  CaptionButtonPlaceholderContainer* caption_button_placeholder_container_ =
       nullptr;
 
   // PWAs with window controls overlay display override covers the browser
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_mac.mm b/chrome/browser/ui/views/frame/browser_non_client_frame_view_mac.mm
index 7834362..8f38ecb 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_mac.mm
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_mac.mm
@@ -21,7 +21,7 @@
 #include "chrome/browser/ui/views/frame/browser_frame.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/frame/browser_view_layout.h"
-#include "chrome/browser/ui/views/frame/caption_button_placeholder_container_mac.h"
+#include "chrome/browser/ui/views/frame/caption_button_placeholder_container.h"
 #include "chrome/browser/ui/views/frame/tab_strip_region_view.h"
 #include "chrome/browser/ui/views/frame/window_controls_overlay_input_routing_mac.h"
 #include "chrome/browser/ui/views/tabs/tab_strip.h"
@@ -80,8 +80,8 @@
           std::make_unique<WebAppFrameToolbarView>(frame, browser_view)));
 
       if (browser_view->IsWindowControlsOverlayEnabled()) {
-        caption_button_placeholder_container_ = AddChildView(
-            std::make_unique<CaptionButtonPlaceholderContainerMac>(this));
+        caption_button_placeholder_container_ =
+            AddChildView(std::make_unique<CaptionButtonPlaceholderContainer>());
         caption_buttons_overlay_input_routing_view_ =
             std::make_unique<WindowControlsOverlayInputRoutingMac>(
                 this, caption_button_placeholder_container_,
@@ -112,9 +112,6 @@
     [fullscreen_toolbar_controller_ exitFullscreenMode];
 }
 
-SkColor BrowserNonClientFrameViewMac::GetTitlebarColor() const {
-  return GetFrameColor();
-}
 ///////////////////////////////////////////////////////////////////////////////
 // BrowserNonClientFrameViewMac, BrowserNonClientFrameView implementation:
 
@@ -259,6 +256,15 @@
 void BrowserNonClientFrameViewMac::UpdateThrobber(bool running) {
 }
 
+void BrowserNonClientFrameViewMac::PaintAsActiveChanged() {
+  UpdateCaptionButtonPlaceholderContainerBackground();
+  BrowserNonClientFrameView::PaintAsActiveChanged();
+}
+
+void BrowserNonClientFrameViewMac::UpdateFrameColor() {
+  UpdateCaptionButtonPlaceholderContainerBackground();
+  BrowserNonClientFrameView::UpdateFrameColor();
+}
 ///////////////////////////////////////////////////////////////////////////////
 // BrowserNonClientFrameViewMac, views::NonClientFrameView implementation:
 
@@ -505,8 +511,9 @@
       GetWebAppFrameToolbarAvailableBounds(
           is_rtl, frame, 0, caption_button_container_bounds.width());
 
-  // Layout CaptionButtonDummyContainerMac which would have the traffic lights.
-  caption_button_placeholder_container_->LayoutForWindowControlsOverlay(
+  // Layout CaptionButtonPlaceholderContainer which would have the traffic
+  // lights.
+  caption_button_placeholder_container_->SetBoundsRect(
       caption_button_container_bounds);
 
   // Layout WebAppFrameToolbarView.
@@ -534,3 +541,11 @@
     web_contents->UpdateWindowControlsOverlay(bounding_rect);
   }
 }
+
+void BrowserNonClientFrameViewMac::
+    UpdateCaptionButtonPlaceholderContainerBackground() {
+  if (caption_button_placeholder_container_) {
+    caption_button_placeholder_container_->SetBackground(
+        views::CreateSolidBackground(GetFrameColor()));
+  }
+}
diff --git a/chrome/browser/ui/views/frame/caption_button_placeholder_container.cc b/chrome/browser/ui/views/frame/caption_button_placeholder_container.cc
new file mode 100644
index 0000000..620e272
--- /dev/null
+++ b/chrome/browser/ui/views/frame/caption_button_placeholder_container.cc
@@ -0,0 +1,20 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/views/frame/caption_button_placeholder_container.h"
+
+#include "ui/base/metadata/metadata_impl_macros.h"
+#include "ui/gfx/canvas.h"
+#include "ui/gfx/scoped_canvas.h"
+#include "ui/views/view.h"
+
+CaptionButtonPlaceholderContainer::CaptionButtonPlaceholderContainer() {
+  SetPaintToLayer();
+}
+
+CaptionButtonPlaceholderContainer::~CaptionButtonPlaceholderContainer() =
+    default;
+
+BEGIN_METADATA(CaptionButtonPlaceholderContainer, views::View)
+END_METADATA
diff --git a/chrome/browser/ui/views/frame/caption_button_placeholder_container.h b/chrome/browser/ui/views/frame/caption_button_placeholder_container.h
new file mode 100644
index 0000000..56b22d4
--- /dev/null
+++ b/chrome/browser/ui/views/frame/caption_button_placeholder_container.h
@@ -0,0 +1,25 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_VIEWS_FRAME_CAPTION_BUTTON_PLACEHOLDER_CONTAINER_H_
+#define CHROME_BROWSER_UI_VIEWS_FRAME_CAPTION_BUTTON_PLACEHOLDER_CONTAINER_H_
+
+#include "ui/base/metadata/metadata_header_macros.h"
+#include "ui/views/view.h"
+
+// A placeholder container for control buttons for PWAs with window controls
+// overlay display override. Does not interact with the buttons. It is just
+// used to indicate that this is non-client-area.
+class CaptionButtonPlaceholderContainer : public views::View {
+ public:
+  METADATA_HEADER(CaptionButtonPlaceholderContainer);
+  CaptionButtonPlaceholderContainer();
+  CaptionButtonPlaceholderContainer(const CaptionButtonPlaceholderContainer&) =
+      delete;
+  CaptionButtonPlaceholderContainer& operator=(
+      const CaptionButtonPlaceholderContainer&) = delete;
+  ~CaptionButtonPlaceholderContainer() override;
+};
+
+#endif  // CHROME_BROWSER_UI_VIEWS_FRAME_CAPTION_BUTTON_PLACEHOLDER_CONTAINER_H_
diff --git a/chrome/browser/ui/views/frame/caption_button_placeholder_container_mac.h b/chrome/browser/ui/views/frame/caption_button_placeholder_container_mac.h
deleted file mode 100644
index c6ff3e4..0000000
--- a/chrome/browser/ui/views/frame/caption_button_placeholder_container_mac.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2021 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_UI_VIEWS_FRAME_CAPTION_BUTTON_PLACEHOLDER_CONTAINER_MAC_H_
-#define CHROME_BROWSER_UI_VIEWS_FRAME_CAPTION_BUTTON_PLACEHOLDER_CONTAINER_MAC_H_
-
-#include "ui/views/view.h"
-
-class BrowserNonClientFrameViewMac;
-
-// A placeholder container for the macOS's traffic lights for PWAs with window
-// controls overlay display override. Does not interact with the buttons. It is
-// just used to indicate that this is non-client-area.
-class CaptionButtonPlaceholderContainerMac : public views::View {
- public:
-  explicit CaptionButtonPlaceholderContainerMac(
-      BrowserNonClientFrameViewMac* frame_view);
-
-  ~CaptionButtonPlaceholderContainerMac() override;
-
-  CaptionButtonPlaceholderContainerMac(
-      const CaptionButtonPlaceholderContainerMac&) = delete;
-  CaptionButtonPlaceholderContainerMac& operator=(
-      const CaptionButtonPlaceholderContainerMac&) = delete;
-
-  void LayoutForWindowControlsOverlay(const gfx::Rect& bounds);
-
-  // views::View:
-  void AddedToWidget() override;
-
- private:
-  BrowserNonClientFrameViewMac* const frame_view_;
-};
-
-#endif  // CHROME_BROWSER_UI_VIEWS_FRAME_CAPTION_BUTTON_PLACEHOLDER_CONTAINER_MAC_H_
diff --git a/chrome/browser/ui/views/frame/caption_button_placeholder_container_mac.mm b/chrome/browser/ui/views/frame/caption_button_placeholder_container_mac.mm
deleted file mode 100644
index 5d35ac5..0000000
--- a/chrome/browser/ui/views/frame/caption_button_placeholder_container_mac.mm
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2021 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/views/frame/caption_button_placeholder_container_mac.h"
-
-#include "chrome/browser/ui/views/frame/browser_non_client_frame_view_mac.h"
-#include "ui/gfx/canvas.h"
-#include "ui/gfx/scoped_canvas.h"
-#include "ui/views/view.h"
-
-CaptionButtonPlaceholderContainerMac::CaptionButtonPlaceholderContainerMac(
-    BrowserNonClientFrameViewMac* frame_view)
-    : frame_view_(frame_view) {}
-
-CaptionButtonPlaceholderContainerMac::~CaptionButtonPlaceholderContainerMac() =
-    default;
-
-void CaptionButtonPlaceholderContainerMac::LayoutForWindowControlsOverlay(
-    const gfx::Rect& bounds) {
-  SetBoundsRect(bounds);
-  Layout();
-}
-
-void CaptionButtonPlaceholderContainerMac::AddedToWidget() {
-  SetBackground(views::CreateSolidBackground(frame_view_->GetTitlebarColor()));
-  // BrowserView paints to a layer, so this must do the same to ensure that it
-  // paints on top of the BrowserView.
-  SetPaintToLayer();
-}
\ No newline at end of file
diff --git a/chrome/browser/ui/views/frame/dbus_appmenu.cc b/chrome/browser/ui/views/frame/dbus_appmenu.cc
index 78cd123..7ee771d 100644
--- a/chrome/browser/ui/views/frame/dbus_appmenu.cc
+++ b/chrome/browser/ui/views/frame/dbus_appmenu.cc
@@ -145,13 +145,6 @@
     {IDC_DEV_TOOLS_DEVICES, IDS_DEV_TOOLS_DEVICES},
     {kMenuEnd}};
 
-// TODO(crbug.com/1108289): Remove after launch.
-constexpr DbusAppmenuCommand kOldProfilesMenu[] = {
-    {kSeparator},
-    {kTagProfileEdit, IDS_PROFILES_MANAGE_BUTTON_LABEL},
-    {kTagProfileCreate, IDS_PROFILES_CREATE_BUTTON_LABEL},
-    {kMenuEnd}};
-
 constexpr DbusAppmenuCommand kProfilesMenu[] = {
     {kSeparator},
     {kTagProfileEdit, IDS_PROFILES_MANAGE_BUTTON_LABEL},
@@ -256,10 +249,7 @@
   BuildStaticMenu(IDS_VIEW_MENU_LINUX, kViewMenu);
   history_menu_ = BuildStaticMenu(IDS_HISTORY_MENU_LINUX, kHistoryMenu);
   BuildStaticMenu(IDS_TOOLS_MENU_LINUX, kToolsMenu);
-  profiles_menu_ =
-      base::FeatureList::IsEnabled(features::kNewProfilePicker)
-          ? BuildStaticMenu(IDS_PROFILES_MENU_NAME, kProfilesMenu)
-          : BuildStaticMenu(IDS_PROFILES_OPTIONS_GROUP_NAME, kOldProfilesMenu);
+  profiles_menu_ = BuildStaticMenu(IDS_PROFILES_MENU_NAME, kProfilesMenu);
   BuildStaticMenu(IDS_HELP_MENU_LINUX, kHelpMenu);
 
   pref_change_registrar_.Init(browser_->profile()->GetPrefs());
diff --git a/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view_layout_unittest.cc b/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view_layout_unittest.cc
index 9d1046c..68b80688 100644
--- a/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view_layout_unittest.cc
+++ b/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view_layout_unittest.cc
@@ -65,6 +65,8 @@
   bool UseCustomFrame() const override { return true; }
   bool IsFrameCondensed() const override { return false; }
   bool EverHasVisibleBackgroundTabShapes() const override { return false; }
+  void UpdateWindowControlsOverlay(
+      const gfx::Rect& bounding_rect) const override {}
 
  private:
   DISALLOW_COPY_AND_ASSIGN(TestLayoutDelegate);
diff --git a/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc b/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
index ef2ca8c..83dfdb9 100644
--- a/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
+++ b/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
@@ -15,6 +15,7 @@
 #include "chrome/browser/ui/layout_constants.h"
 #include "chrome/browser/ui/views/frame/browser_frame.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
+#include "chrome/browser/ui/views/frame/caption_button_placeholder_container.h"
 #include "chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.h"
 #include "chrome/browser/ui/views/frame/opaque_browser_frame_view_platform_specific.h"
 #include "chrome/browser/ui/views/frame/tab_strip_region_view.h"
@@ -122,6 +123,16 @@
       window_title_(nullptr),
       frame_background_(new views::FrameBackground()) {
   layout_->set_delegate(this);
+
+  // TODO(crbug.com/937121): Remove the call to toggle WCO on by default once
+  // the toggle button functionality is implemented for OpaqueBrowserFrameView.
+  web_app::AppBrowserController* controller =
+      browser_view->browser()->app_controller();
+  if (controller) {
+    controller->ToggleWindowControlsOverlayEnabled();
+    layout_->set_window_controls_overlay_enabled(
+        browser_view->IsWindowControlsOverlayEnabled());
+  }
   SetLayoutManager(std::unique_ptr<views::LayoutManager>(layout_));
 
   platform_observer_ =
@@ -131,6 +142,14 @@
 OpaqueBrowserFrameView::~OpaqueBrowserFrameView() {}
 
 void OpaqueBrowserFrameView::InitViews() {
+  web_app::AppBrowserController* controller =
+      browser_view()->browser()->app_controller();
+
+  if (controller && controller->IsWindowControlsOverlayEnabled()) {
+    caption_button_placeholder_container_ =
+        AddChildView(std::make_unique<CaptionButtonPlaceholderContainer>());
+  }
+
   if (GetFrameButtonStyle() == FrameButtonStyle::kMdButton) {
     minimize_button_ = CreateFrameCaptionButton(
         views::CAPTION_BUTTON_ICON_MINIMIZE, HTMINBUTTON,
@@ -189,8 +208,6 @@
                      .Build());
   }
 
-  web_app::AppBrowserController* controller =
-      browser_view()->browser()->app_controller();
   if (controller) {
     set_web_app_frame_toolbar(AddChildView(
         std::make_unique<WebAppFrameToolbarView>(frame(), browser_view())));
@@ -234,6 +251,15 @@
   return layout_->GetMinimumSize(this);
 }
 
+void OpaqueBrowserFrameView::PaintAsActiveChanged() {
+  UpdateCaptionButtonPlaceholderContainerBackground();
+  BrowserNonClientFrameView::PaintAsActiveChanged();
+}
+
+void OpaqueBrowserFrameView::UpdateFrameColor() {
+  UpdateCaptionButtonPlaceholderContainerBackground();
+  BrowserNonClientFrameView::PaintAsActiveChanged();
+}
 ///////////////////////////////////////////////////////////////////////////////
 // OpaqueBrowserFrameView, views::NonClientFrameView implementation:
 
@@ -470,6 +496,13 @@
 #endif
 }
 
+void OpaqueBrowserFrameView::UpdateWindowControlsOverlay(
+    const gfx::Rect& bounding_rect) const {
+  content::WebContents* web_contents = browser_view()->GetActiveWebContents();
+  if (web_contents) {
+    web_contents->UpdateWindowControlsOverlay(bounding_rect);
+  }
+}
 ///////////////////////////////////////////////////////////////////////////////
 // OpaqueBrowserFrameView, protected:
 
@@ -736,6 +769,14 @@
   }
 }
 
+void OpaqueBrowserFrameView::
+    UpdateCaptionButtonPlaceholderContainerBackground() {
+  if (caption_button_placeholder_container_) {
+    caption_button_placeholder_container_->SetBackground(
+        views::CreateSolidBackground(GetFrameColor()));
+  }
+}
+
 BEGIN_METADATA(OpaqueBrowserFrameView, BrowserNonClientFrameView)
 ADD_READONLY_PROPERTY_METADATA(gfx::Rect, IconBounds)
 ADD_READONLY_PROPERTY_METADATA(bool, ShowWindowTitleBar)
diff --git a/chrome/browser/ui/views/frame/opaque_browser_frame_view.h b/chrome/browser/ui/views/frame/opaque_browser_frame_view.h
index df21c433..e37eb5f 100644
--- a/chrome/browser/ui/views/frame/opaque_browser_frame_view.h
+++ b/chrome/browser/ui/views/frame/opaque_browser_frame_view.h
@@ -20,6 +20,7 @@
 #include "ui/views/window/non_client_view.h"
 
 class BrowserView;
+class CaptionButtonPlaceholderContainer;
 class OpaqueBrowserFrameViewLayout;
 class OpaqueBrowserFrameViewPlatformSpecific;
 class TabIconView;
@@ -63,6 +64,8 @@
   int GetThemeBackgroundXInset() const override;
   void UpdateThrobber(bool running) override;
   gfx::Size GetMinimumSize() const override;
+  void PaintAsActiveChanged() override;
+  void UpdateFrameColor() override;
 
   // views::NonClientFrameView:
   gfx::Rect GetBoundsForClientView() const override;
@@ -102,6 +105,8 @@
   bool IsFrameCondensed() const override;
   bool EverHasVisibleBackgroundTabShapes() const override;
   FrameButtonStyle GetFrameButtonStyle() const override;
+  void UpdateWindowControlsOverlay(
+      const gfx::Rect& bounding_rect) const override;
 
  protected:
   views::Button* minimize_button() const { return minimize_button_; }
@@ -183,6 +188,8 @@
   void PaintMaximizedFrameBorder(gfx::Canvas* canvas) const;
   void PaintClientEdge(gfx::Canvas* canvas) const;
 
+  void UpdateCaptionButtonPlaceholderContainerBackground();
+
   // Our layout manager also calculates various bounds.
   OpaqueBrowserFrameViewLayout* layout_;
 
@@ -201,6 +208,11 @@
 
   // Observer that handles platform dependent configuration.
   std::unique_ptr<OpaqueBrowserFrameViewPlatformSpecific> platform_observer_;
+
+  // PlaceholderContainer beneath the controls button for PWAs with window
+  // controls overlay display override.
+  CaptionButtonPlaceholderContainer* caption_button_placeholder_container_ =
+      nullptr;
 };
 
 #endif  // CHROME_BROWSER_UI_VIEWS_FRAME_OPAQUE_BROWSER_FRAME_VIEW_H_
diff --git a/chrome/browser/ui/views/frame/opaque_browser_frame_view_browsertest.cc b/chrome/browser/ui/views/frame/opaque_browser_frame_view_browsertest.cc
index e0bddb7..c9a6c65 100644
--- a/chrome/browser/ui/views/frame/opaque_browser_frame_view_browsertest.cc
+++ b/chrome/browser/ui/views/frame/opaque_browser_frame_view_browsertest.cc
@@ -17,6 +17,7 @@
 #include "chrome/browser/web_applications/components/web_application_info.h"
 #include "chrome/browser/web_applications/test/web_app_install_test_utils.h"
 #include "chrome/test/base/in_process_browser_test.h"
+#include "content/public/common/content_features.h"
 #include "content/public/test/browser_test.h"
 #include "ui/gfx/color_utils.h"
 #include "ui/views/test/test_views.h"
@@ -180,3 +181,140 @@
   EXPECT_EQ(container_height, web_app_frame_toolbar_->height());
   EXPECT_EQ(title_bar_height, GetRestoredTitleBarHeight());
 }
+
+class WebAppOpaqueBrowserFrameViewWindowControlsOvelayTest
+    : public InProcessBrowserTest {
+ public:
+  WebAppOpaqueBrowserFrameViewWindowControlsOvelayTest() {
+    scoped_feature_list_ = std::make_unique<base::test::ScopedFeatureList>();
+    scoped_feature_list_->InitAndEnableFeature(
+        features::kWebAppWindowControlsOverlay);
+  }
+  WebAppOpaqueBrowserFrameViewWindowControlsOvelayTest(
+      const WebAppOpaqueBrowserFrameViewWindowControlsOvelayTest&) = delete;
+  WebAppOpaqueBrowserFrameViewWindowControlsOvelayTest& operator=(
+      const WebAppOpaqueBrowserFrameViewWindowControlsOvelayTest&) = delete;
+  ~WebAppOpaqueBrowserFrameViewWindowControlsOvelayTest() override = default;
+
+  bool InstallAndLaunchWebAppWithWindowControlsOverlay() {
+    GURL start_url("https://test.org");
+    std::vector<blink::mojom::DisplayMode> display_overrides;
+    display_overrides.emplace_back(
+        blink::mojom::DisplayMode::kWindowControlsOverlay);
+    auto web_app_info = std::make_unique<WebApplicationInfo>();
+    web_app_info->start_url = start_url;
+    web_app_info->scope = start_url.GetWithoutFilename();
+    web_app_info->display_mode = blink::mojom::DisplayMode::kStandalone;
+    web_app_info->open_as_window = true;
+    web_app_info->title = u"A Web App";
+    web_app_info->display_override = display_overrides;
+
+    web_app::AppId app_id = web_app::test::InstallWebApp(
+        browser()->profile(), std::move(web_app_info));
+
+    Browser* app_browser =
+        web_app::LaunchWebAppBrowser(browser()->profile(), app_id);
+
+    web_app::NavigateToURLAndWait(app_browser, start_url);
+
+    browser_view_ = BrowserView::GetBrowserViewForBrowser(app_browser);
+    views::NonClientFrameView* frame_view =
+        browser_view_->GetWidget()->non_client_view()->frame_view();
+
+    // Not all platform configurations use OpaqueBrowserFrameView for their
+    // browser windows, see |CreateBrowserNonClientFrameView()|.
+    bool is_opaque_browser_frame_view =
+        views::IsViewClass<OpaqueBrowserFrameView>(frame_view);
+#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_ASH) && \
+    !BUILDFLAG(IS_CHROMEOS_LACROS)
+    DCHECK(is_opaque_browser_frame_view);
+#else
+    if (!is_opaque_browser_frame_view)
+      return false;
+#endif
+
+    opaque_browser_frame_view_ =
+        static_cast<OpaqueBrowserFrameView*>(frame_view);
+    auto* web_app_frame_toolbar =
+        opaque_browser_frame_view_->web_app_frame_toolbar_for_testing();
+    DCHECK(web_app_frame_toolbar);
+    DCHECK(web_app_frame_toolbar->GetVisible());
+
+    return true;
+  }
+
+  BrowserView* browser_view_ = nullptr;
+  OpaqueBrowserFrameView* opaque_browser_frame_view_ = nullptr;
+
+ private:
+  std::unique_ptr<base::test::ScopedFeatureList> scoped_feature_list_;
+};
+
+IN_PROC_BROWSER_TEST_F(WebAppOpaqueBrowserFrameViewWindowControlsOvelayTest,
+                       UpdateBoundingRect) {
+  if (!InstallAndLaunchWebAppWithWindowControlsOverlay())
+    return;
+
+  static_cast<views::View*>(opaque_browser_frame_view_)->Layout();
+
+  auto* web_contents =
+      opaque_browser_frame_view_->browser_view()->GetActiveWebContents();
+
+  // window controls overlay should be not be an empty rect and visible as this
+  // a web app.
+  int empty_rect_value = 0;
+
+  EXPECT_EQ(true, EvalJs(web_contents,
+                         "window.navigator.windowControlsOverlay.visible"));
+
+  EXPECT_EQ(
+      0, EvalJs(web_contents,
+                "navigator.windowControlsOverlay.getBoundingClientRect().x"));
+  EXPECT_EQ(
+      0, EvalJs(web_contents,
+                "navigator.windowControlsOverlay.getBoundingClientRect().y"));
+  EXPECT_NE(
+      empty_rect_value,
+      EvalJs(web_contents,
+             "navigator.windowControlsOverlay.getBoundingClientRect().width"));
+  EXPECT_NE(
+      empty_rect_value,
+      EvalJs(web_contents,
+             "navigator.windowControlsOverlay.getBoundingClientRect().height"));
+}
+
+IN_PROC_BROWSER_TEST_F(WebAppOpaqueBrowserFrameViewWindowControlsOvelayTest,
+                       GeometryChangeEvent) {
+  if (!InstallAndLaunchWebAppWithWindowControlsOverlay())
+    return;
+
+  auto* web_contents =
+      opaque_browser_frame_view_->browser_view()->GetActiveWebContents();
+
+  EXPECT_TRUE(ExecuteScript(
+      web_contents->GetMainFrame(),
+      "geometrychangeCount = 0;"
+      "navigator.windowControlsOverlay.ongeometrychange = (e) => {"
+      "  geometrychangeCount++;"
+      "  rect = e.boundingRect;"
+      "  visible = e.visible;"
+      "}"));
+
+  // Change size of widget to trigger a "geometrychange" event.
+  gfx::Rect bounds =
+      opaque_browser_frame_view_->browser_view()->GetLocalBounds();
+  bounds.set_width(bounds.width() - 1);
+  opaque_browser_frame_view_->browser_view()->GetWidget()->SetBounds(bounds);
+
+  // Window controls overlay should be not be an empty rect and visible as this
+  // a web app.
+  int empty_rect_value = 0;
+
+  // expect the "geometrychange" event to have fired.
+  EXPECT_NE(0, EvalJs(web_contents, "geometrychangeCount"));
+
+  // Validate event payload.
+  EXPECT_EQ(true, EvalJs(web_contents, "visible"));
+  EXPECT_NE(empty_rect_value, EvalJs(web_contents, "rect.width"));
+  EXPECT_NE(empty_rect_value, EvalJs(web_contents, "rect.height"));
+}
diff --git a/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.cc b/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.cc
index 3b07f6e..e5254fa 100644
--- a/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.cc
+++ b/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.cc
@@ -14,8 +14,10 @@
 #include "base/stl_util.h"
 #include "base/trace_event/trace_event.h"
 #include "build/build_config.h"
+#include "chrome/browser/ui/views/frame/caption_button_placeholder_container.h"
 #include "chrome/browser/ui/views/web_apps/frame_toolbar/web_app_frame_toolbar_view.h"
 #include "chrome/common/chrome_switches.h"
+#include "ui/compositor/layer.h"
 #include "ui/gfx/font.h"
 #include "ui/views/controls/button/image_button.h"
 #include "ui/views/controls/label.h"
@@ -194,7 +196,8 @@
 gfx::Rect OpaqueBrowserFrameViewLayout::CalculateClientAreaBounds(
     int width,
     int height) const {
-  int top_height = NonClientTopHeight(false);
+  int top_height =
+      is_window_controls_overlay_enabled_ ? 0 : NonClientTopHeight(false);
   int border_thickness = FrameBorderThickness(false);
   return gfx::Rect(border_thickness, top_height,
                    std::max(0, width - (2 * border_thickness)),
@@ -551,9 +554,18 @@
       }
       web_app_frame_toolbar_ = static_cast<WebAppFrameToolbarView*>(view);
       break;
-    default:
-      NOTREACHED() << "Unknown view id " << id;
-      break;
+  }
+
+  if (view && views::IsViewClass<CaptionButtonPlaceholderContainer>(view)) {
+    caption_button_placeholder_container_ =
+        static_cast<CaptionButtonPlaceholderContainer*>(view);
+  }
+
+  if (is_window_controls_overlay_enabled_ &&
+      (id == VIEW_ID_MINIMIZE_BUTTON || id == VIEW_ID_MAXIMIZE_BUTTON ||
+       id == VIEW_ID_RESTORE_BUTTON || id == VIEW_ID_CLOSE_BUTTON)) {
+    view->SetPaintToLayer();
+    view->layer()->SetFillsBoundsOpaquely(false);
   }
 }
 
@@ -563,6 +575,36 @@
                            !trailing_buttons_.empty());
 }
 
+void OpaqueBrowserFrameViewLayout::LayoutTitleBarForWindowControlsOverlay(
+    const views::View* host) {
+  int y = 0;
+  int height = NonClientTopHeight(false);
+  int container_x = 0;
+  int x = available_space_leading_x_;
+  int web_app_frame_toolbar_view_width = host->width() - x;
+
+  if (placed_trailing_button_) {
+    container_x = available_space_trailing_x_;
+    x = 0;
+
+    web_app_frame_toolbar_view_width = available_space_trailing_x_;
+
+    available_space_trailing_x_ -=
+        web_app_frame_toolbar_->GetPreferredSize().width();
+  }
+
+  caption_button_placeholder_container_->SetBounds(
+      container_x, y, minimum_size_for_buttons_, height);
+
+  web_app_frame_toolbar_->LayoutForWindowControlsOverlay(
+      gfx::Rect(x, y, web_app_frame_toolbar_view_width, height));
+
+  int bounding_rect_width =
+      web_app_frame_toolbar_->bounds().x() - available_space_leading_x_;
+  delegate_->UpdateWindowControlsOverlay(
+      gfx::Rect(x, y, bounding_rect_width, height));
+}
+
 ///////////////////////////////////////////////////////////////////////////////
 // OpaqueBrowserFrameViewLayout, views::LayoutManager:
 
@@ -578,7 +620,10 @@
   placed_trailing_button_ = false;
 
   LayoutWindowControls();
-  LayoutTitleBar();
+  if (is_window_controls_overlay_enabled_)
+    LayoutTitleBarForWindowControlsOverlay(host);
+  else
+    LayoutTitleBar();
 
   // Any buttons/icon/title were laid out based on the frame border thickness,
   // but the tabstrip bounds need to be based on the non-client border thickness
diff --git a/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.h b/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.h
index ec7d845..720e346f 100644
--- a/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.h
+++ b/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.h
@@ -12,6 +12,7 @@
 #include "ui/views/layout/layout_manager.h"
 #include "ui/views/window/frame_buttons.h"
 
+class CaptionButtonPlaceholderContainer;
 class WebAppFrameToolbarView;
 class OpaqueBrowserFrameViewLayoutDelegate;
 
@@ -124,6 +125,11 @@
   // the other overrides.
   gfx::Size GetMinimumSize(const views::View* host) const override;
 
+  void set_window_controls_overlay_enabled(
+      bool is_window_controls_overlay_enabled) {
+    is_window_controls_overlay_enabled_ = is_window_controls_overlay_enabled;
+  }
+
  protected:
   // Whether a specific button should be inserted on the leading or trailing
   // side.
@@ -178,6 +184,8 @@
   // frame buttons.
   TopAreaPadding GetTopAreaPadding() const;
 
+  void LayoutTitleBarForWindowControlsOverlay(const views::View* host);
+
   // Returns true if a 3D edge should be drawn around the window frame.  If
   // |restored| is true, acts as if the window is restored regardless of the
   // real mode.
@@ -219,6 +227,9 @@
 
   views::ClientView* client_view_ = nullptr;
 
+  bool is_window_controls_overlay_enabled_ = false;
+  CaptionButtonPlaceholderContainer* caption_button_placeholder_container_;
+
   DISALLOW_COPY_AND_ASSIGN(OpaqueBrowserFrameViewLayout);
 };
 
diff --git a/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout_delegate.h b/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout_delegate.h
index 8bc516c7..da730e5 100644
--- a/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout_delegate.h
+++ b/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout_delegate.h
@@ -10,6 +10,7 @@
 
 namespace gfx {
 class Size;
+class Rect;
 }
 
 // Delegate interface to control layout decisions without having to depend on
@@ -77,6 +78,9 @@
   // Indicates the type of the frame buttons.
   virtual FrameButtonStyle GetFrameButtonStyle() const;
 
+  virtual void UpdateWindowControlsOverlay(
+      const gfx::Rect& bounding_rect) const = 0;
+
  protected:
   virtual ~OpaqueBrowserFrameViewLayoutDelegate() {}
 };
diff --git a/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout_unittest.cc b/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout_unittest.cc
index 5e85de07..03fa407f 100644
--- a/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout_unittest.cc
+++ b/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout_unittest.cc
@@ -77,6 +77,8 @@
     return !show_caption_buttons_ || maximized_;
   }
   bool EverHasVisibleBackgroundTabShapes() const override { return false; }
+  void UpdateWindowControlsOverlay(
+      const gfx::Rect& bounding_rect) const override {}
 
  private:
   std::u16string window_title_;
diff --git a/chrome/browser/ui/views/frame/tab_strip_region_view.cc b/chrome/browser/ui/views/frame/tab_strip_region_view.cc
index d0571d6..3d5a552f 100644
--- a/chrome/browser/ui/views/frame/tab_strip_region_view.cc
+++ b/chrome/browser/ui/views/frame/tab_strip_region_view.cc
@@ -7,6 +7,7 @@
 #include "base/bind.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/app/vector_icons/vector_icons.h"
+#include "chrome/browser/themes/theme_properties.h"
 #include "chrome/browser/ui/layout_constants.h"
 #include "chrome/browser/ui/ui_features.h"
 #include "chrome/browser/ui/views/chrome_layout_provider.h"
@@ -15,12 +16,14 @@
 #include "chrome/browser/ui/views/tabs/tab_strip.h"
 #include "chrome/browser/ui/views/tabs/tab_strip_controller.h"
 #include "chrome/browser/ui/views/tabs/tab_style_views.h"
+#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
 #include "chrome/browser/ui/views/user_education/tip_marquee_view.h"
 #include "chrome/grit/generated_resources.h"
 #include "ui/accessibility/ax_node_data.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/metadata/metadata_header_macros.h"
 #include "ui/base/metadata/metadata_impl_macros.h"
+#include "ui/gfx/color_utils.h"
 #include "ui/views/controls/button/image_button.h"
 #include "ui/views/controls/button/image_button_factory.h"
 #include "ui/views/controls/highlight_path_generator.h"
@@ -152,6 +155,11 @@
 }  // namespace
 
 TabStripRegionView::TabStripRegionView(std::unique_ptr<TabStrip> tab_strip) {
+  // TOOD(pbos): Find a better update. See TabStrip::GetTabForegroundColor.
+  views::FocusRing::SetColorContextForSubtree(
+      this, ThemeProperties::COLOR_TAB_BACKGROUND_INACTIVE_FRAME_INACTIVE,
+      ThemeProperties::COLOR_TOOLBAR_BUTTON_ICON);
+
   layout_manager_ = SetLayoutManager(std::make_unique<views::FlexLayout>());
   layout_manager_->SetOrientation(views::LayoutOrientation::kHorizontal);
 
diff --git a/chrome/browser/ui/views/infobars/infobar_container_view.cc b/chrome/browser/ui/views/infobars/infobar_container_view.cc
index 96097f3d..1123c61 100644
--- a/chrome/browser/ui/views/infobars/infobar_container_view.cc
+++ b/chrome/browser/ui/views/infobars/infobar_container_view.cc
@@ -8,6 +8,7 @@
 
 #include "cc/paint/paint_flags.h"
 #include "cc/paint/paint_shader.h"
+#include "chrome/browser/themes/theme_properties.h"
 #include "chrome/browser/ui/view_ids.h"
 #include "chrome/browser/ui/views/infobars/infobar_view.h"
 #include "chrome/grit/generated_resources.h"
@@ -20,6 +21,7 @@
 #include "ui/gfx/canvas.h"
 #include "ui/gfx/skia_paint_util.h"
 #include "ui/views/bubble/bubble_border.h"
+#include "ui/views/controls/focus_ring.h"
 
 namespace {
 
@@ -64,6 +66,9 @@
       content_shadow_(new ContentShadow()) {
   SetID(VIEW_ID_INFO_BAR_CONTAINER);
   AddChildView(content_shadow_);
+  views::FocusRing::SetColorContextForSubtree(
+      this, ThemeProperties::COLOR_TOOLBAR,
+      ThemeProperties::COLOR_TOOLBAR_BUTTON_ICON);
 }
 
 InfoBarContainerView::~InfoBarContainerView() {
diff --git a/chrome/browser/ui/views/payments/payment_request_row_view.cc b/chrome/browser/ui/views/payments/payment_request_row_view.cc
index f49390b..0b75da4 100644
--- a/chrome/browser/ui/views/payments/payment_request_row_view.cc
+++ b/chrome/browser/ui/views/payments/payment_request_row_view.cc
@@ -55,9 +55,13 @@
 }
 
 void PaymentRequestRowView::UpdateBottomSeparator() {
-  if (!GetWidget())
-    return;
-  SetBorder(bottom_separator_visible_
+  // Create an empty border even when not present in a Widget hierarchy as the
+  // border is needed to correctly compute the bounds of the ScrollView in the
+  // PaymentRequestSheetController which is done before this is added to its
+  // Widget.
+  // TODO(crbug.com/1213247): Update PaymentRequestSheetController to recompute
+  // the bounds of its ScrollView in response to changes in preferred size.
+  SetBorder(bottom_separator_visible_ && GetWidget()
                 ? payments::CreatePaymentRequestRowBorder(
                       GetNativeTheme()->GetSystemColor(
                           ui::NativeTheme::kColorId_SeparatorColor),
diff --git a/chrome/browser/ui/views/profiles/incognito_menu_view.cc b/chrome/browser/ui/views/profiles/incognito_menu_view.cc
index ae41e10..8a93e59 100644
--- a/chrome/browser/ui/views/profiles/incognito_menu_view.cc
+++ b/chrome/browser/ui/views/profiles/incognito_menu_view.cc
@@ -81,16 +81,11 @@
   }
 #endif
 
-  const bool new_menu_design =
-      base::FeatureList::IsEnabled(features::kNewProfilePicker);
-
   AddFeatureButton(
-      l10n_util::GetStringUTF16(
-          new_menu_design ? IDS_INCOGNITO_PROFILE_MENU_CLOSE_BUTTON_NEW
-                          : IDS_INCOGNITO_PROFILE_MENU_CLOSE_BUTTON),
+      l10n_util::GetStringUTF16(IDS_INCOGNITO_PROFILE_MENU_CLOSE_BUTTON_NEW),
       base::BindRepeating(&IncognitoMenuView::OnExitButtonClicked,
                           base::Unretained(this)),
-      new_menu_design ? vector_icons::kCloseIcon : kCloseAllIcon);
+      vector_icons::kCloseIcon);
 }
 
 std::u16string IncognitoMenuView::GetAccessibleWindowTitle() const {
diff --git a/chrome/browser/ui/views/profiles/profile_menu_view.cc b/chrome/browser/ui/views/profiles/profile_menu_view.cc
index 751e4bf..392579d 100644
--- a/chrome/browser/ui/views/profiles/profile_menu_view.cc
+++ b/chrome/browser/ui/views/profiles/profile_menu_view.cc
@@ -176,10 +176,6 @@
   return profile->IsGuestSession() || profile->IsEphemeralGuestProfile();
 }
 
-bool UseNewPicker() {
-  return base::FeatureList::IsEnabled(features::kNewProfilePicker);
-}
-
 }  // namespace
 
 // ProfileMenuView ---------------------------------------------------------
@@ -211,9 +207,9 @@
 
 //  ChromeOS doesn't support multi-profile.
 #if !BUILDFLAG(IS_CHROMEOS_ASH)
-  if (!(IsGuest(profile) &&
-        base::FeatureList::IsEnabled(features::kNewProfilePicker))) {
-    BuildProfileManagementHeading();
+  if (!(IsGuest(profile))) {
+    SetProfileManagementHeading(
+        l10n_util::GetStringUTF16(IDS_PROFILES_LIST_PROFILES_TITLE));
     BuildSelectableProfiles();
     BuildProfileManagementFeatureButtons();
   }
@@ -468,19 +464,12 @@
   absl::optional<EditButtonParams> edit_button_params;
 // Profile names are not supported on ChromeOS.
 #if !BUILDFLAG(IS_CHROMEOS_ASH)
-  size_t num_of_profiles =
-      g_browser_process->profile_manager()->GetNumberOfProfiles();
-  if (num_of_profiles > 1 || !profile_attributes->IsUsingDefaultName() ||
-      base::FeatureList::IsEnabled(features::kNewProfilePicker)) {
-    profile_name = profile_attributes->GetLocalProfileName();
-    edit_button_params = EditButtonParams(
-        &vector_icons::kEditIcon,
-        UseNewPicker() ? l10n_util::GetStringUTF16(
-                             IDS_PROFILES_CUSTOMIZE_PROFILE_BUTTON_TOOLTIP)
-                       : l10n_util::GetStringUTF16(IDS_SETTINGS_EDIT_PERSON),
-        base::BindRepeating(&ProfileMenuView::OnEditProfileButtonClicked,
-                            base::Unretained(this)));
-  }
+  profile_name = profile_attributes->GetLocalProfileName();
+  edit_button_params = EditButtonParams(
+      &vector_icons::kEditIcon,
+      l10n_util::GetStringUTF16(IDS_PROFILES_CUSTOMIZE_PROFILE_BUTTON_TOOLTIP),
+      base::BindRepeating(&ProfileMenuView::OnEditProfileButtonClicked,
+                          base::Unretained(this)));
 #endif
 
   SkColor background_color =
@@ -512,8 +501,7 @@
 
   menu_title_ = l10n_util::GetStringUTF16(IDS_GUEST_PROFILE_NAME);
   menu_subtitle_ = std::u16string();
-  if (guest_window_count > 1 &&
-      base::FeatureList::IsEnabled(features::kNewProfilePicker)) {
+  if (guest_window_count > 1) {
     menu_subtitle_ = l10n_util::GetPluralStringFUTF16(
         IDS_GUEST_WINDOW_COUNT_MESSAGE, guest_window_count);
   }
@@ -639,8 +627,7 @@
   }
 
   int window_count = CountBrowsersFor(profile);
-  if (base::FeatureList::IsEnabled(features::kNewProfilePicker) &&
-      IsGuest(profile)) {
+  if (IsGuest(profile)) {
     AddFeatureButton(
         l10n_util::GetPluralStringFUTF16(IDS_GUEST_PROFILE_MENU_CLOSE_BUTTON,
                                          window_count),
@@ -674,13 +661,6 @@
 }
 
 #if !BUILDFLAG(IS_CHROMEOS_ASH)
-void ProfileMenuView::BuildProfileManagementHeading() {
-  SetProfileManagementHeading(
-      UseNewPicker()
-          ? l10n_util::GetStringUTF16(IDS_PROFILES_LIST_PROFILES_TITLE)
-          : l10n_util::GetStringUTF16(IDS_PROFILES_OTHER_PROFILES_TITLE));
-}
-
 void ProfileMenuView::BuildSelectableProfiles() {
   auto profile_entries = g_browser_process->profile_manager()
                              ->GetProfileAttributesStorage()
@@ -716,10 +696,7 @@
 void ProfileMenuView::BuildProfileManagementFeatureButtons() {
   AddProfileManagementShortcutFeatureButton(
       vector_icons::kSettingsIcon,
-      UseNewPicker()
-          ? l10n_util::GetStringUTF16(
-                IDS_PROFILES_MANAGE_PROFILES_BUTTON_TOOLTIP)
-          : l10n_util::GetStringUTF16(IDS_PROFILES_MANAGE_USERS_BUTTON),
+      l10n_util::GetStringUTF16(IDS_PROFILES_MANAGE_PROFILES_BUTTON_TOOLTIP),
       base::BindRepeating(&ProfileMenuView::OnManageProfilesButtonClicked,
                           base::Unretained(this)));
 
diff --git a/chrome/browser/ui/views/profiles/profile_menu_view.h b/chrome/browser/ui/views/profiles/profile_menu_view.h
index a937d8fa..beb7d3d0 100644
--- a/chrome/browser/ui/views/profiles/profile_menu_view.h
+++ b/chrome/browser/ui/views/profiles/profile_menu_view.h
@@ -85,7 +85,6 @@
   void BuildFeatureButtons();
 #if !BUILDFLAG(IS_CHROMEOS_ASH)
   void BuildSelectableProfiles();
-  void BuildProfileManagementHeading();
   void BuildProfileManagementFeatureButtons();
 #endif
 
diff --git a/chrome/browser/ui/views/profiles/profile_menu_view_base.cc b/chrome/browser/ui/views/profiles/profile_menu_view_base.cc
index 905c775..29432f0 100644
--- a/chrome/browser/ui/views/profiles/profile_menu_view_base.cc
+++ b/chrome/browser/ui/views/profiles/profile_menu_view_base.cc
@@ -297,11 +297,8 @@
     gfx::ImageSkia sized_avatar_image = views::GetImageSkiaFromImageModel(
         SizeImageModel(avatar_image_, ProfileMenuViewBase::kIdentityImageSize),
         GetNativeTheme());
-    if (base::FeatureList::IsEnabled(features::kNewProfilePicker)) {
-      sized_avatar_image =
-          AddCircularBackground(sized_avatar_image, GetBackgroundColor(),
-                                kIdentityImageSizeInclBorder);
-    }
+    sized_avatar_image = AddCircularBackground(
+        sized_avatar_image, GetBackgroundColor(), kIdentityImageSizeInclBorder);
     gfx::ImageSkia sized_badge = AddCircularBackground(
         SizeImage(root_view_->GetSyncIcon(), kBadgeSize), GetBackgroundColor(),
         kBadgeSize + 2 * kBadgePadding);
@@ -586,19 +583,14 @@
     const std::u16string& subtitle,
     const ui::ThemedVectorIcon& avatar_header_art) {
   constexpr int kBottomMargin = kDefaultMargin;
-  const bool new_design =
-      base::FeatureList::IsEnabled(features::kNewProfilePicker);
 
   identity_info_container_->RemoveAllChildViews(/*delete_children=*/true);
-  // In the new design, the colored background fully bleeds to the edges of the
-  // menu and to achieve that |container_margin| is set to 0. In this case,
-  // further margins will be added by children views.
-  const int container_margin = new_design ? 0 : kMenuEdgeMargin;
+  // The colored background fully bleeds to the edges of the menu and to achieve
+  // that margin is set to 0. Further margins will be added by children views.
   identity_info_container_->SetLayoutManager(
       CreateBoxLayout(views::BoxLayout::Orientation::kVertical,
                       views::BoxLayout::CrossAxisAlignment::kStretch,
-                      gfx::Insets(container_margin, container_margin,
-                                  kBottomMargin, container_margin)));
+                      gfx::Insets(0, 0, kBottomMargin, 0)));
 
   auto avatar_image_view = std::make_unique<AvatarImageView>(image_model, this);
 
@@ -611,38 +603,6 @@
   GetViewAccessibility().OverrideName(GetAccessibleWindowTitle());
 #endif
 
-  if (!new_design) {
-    if (!profile_name.empty()) {
-      DCHECK(edit_button_params.has_value());
-      const SkColor kBackgroundColor = GetNativeTheme()->GetSystemColor(
-          ui::NativeTheme::kColorId_HighlightedMenuItemBackgroundColor);
-
-      heading_container_->RemoveAllChildViews(/*delete_children=*/true);
-      heading_container_->SetLayoutManager(
-          std::make_unique<views::FillLayout>());
-      heading_container_->SetBackground(
-          views::CreateSolidBackground(kBackgroundColor));
-
-      views::LabelButton* heading_button =
-          heading_container_->AddChildView(std::make_unique<HoverButton>(
-              base::BindRepeating(&ProfileMenuViewBase::ButtonPressed,
-                                  base::Unretained(this),
-                                  std::move(edit_button_params->edit_action)),
-              profile_name));
-      heading_button->SetEnabledTextColors(views::style::GetColor(
-          *this, views::style::CONTEXT_LABEL, views::style::STYLE_SECONDARY));
-      heading_button->SetTooltipText(edit_button_params->edit_tooltip_text);
-      heading_button->SetHorizontalAlignment(gfx::ALIGN_CENTER);
-      heading_button->SetBorder(
-          views::CreateEmptyBorder(gfx::Insets(kDefaultMargin)));
-    }
-
-    identity_info_container_->AddChildView(std::move(avatar_image_view));
-    BuildProfileTitleAndSubtitle(/*parent=*/identity_info_container_, title,
-                                 subtitle);
-    return;
-  }
-
   std::unique_ptr<views::Label> heading_label;
   if (!profile_name.empty()) {
     views::Label::CustomFont font = {
diff --git a/chrome/browser/ui/views/profiles/profile_picker_test_base.cc b/chrome/browser/ui/views/profiles/profile_picker_test_base.cc
index d41d24f..69b2e04 100644
--- a/chrome/browser/ui/views/profiles/profile_picker_test_base.cc
+++ b/chrome/browser/ui/views/profiles/profile_picker_test_base.cc
@@ -114,9 +114,7 @@
 
 }  // namespace
 
-ProfilePickerTestBase::ProfilePickerTestBase() {
-  feature_list_.InitAndEnableFeature(features::kNewProfilePicker);
-}
+ProfilePickerTestBase::ProfilePickerTestBase() = default;
 
 ProfilePickerTestBase::~ProfilePickerTestBase() = default;
 
diff --git a/chrome/browser/ui/views/profiles/profile_picker_test_base.h b/chrome/browser/ui/views/profiles/profile_picker_test_base.h
index 31c7562..73e226e 100644
--- a/chrome/browser/ui/views/profiles/profile_picker_test_base.h
+++ b/chrome/browser/ui/views/profiles/profile_picker_test_base.h
@@ -5,7 +5,6 @@
 #ifndef CHROME_BROWSER_UI_VIEWS_PROFILES_PROFILE_PICKER_TEST_BASE_H_
 #define CHROME_BROWSER_UI_VIEWS_PROFILES_PROFILE_PICKER_TEST_BASE_H_
 
-#include "base/test/scoped_feature_list.h"
 #include "chrome/test/base/in_process_browser_test.h"
 
 namespace content {
@@ -48,9 +47,6 @@
 
   // Gets the picker's web contents.
   content::WebContents* web_contents();
-
- private:
-  base::test::ScopedFeatureList feature_list_;
 };
 
 #endif  // CHROME_BROWSER_UI_VIEWS_PROFILES_PROFILE_PICKER_TEST_BASE_H_
diff --git a/chrome/browser/ui/views/read_later/read_later_button.cc b/chrome/browser/ui/views/read_later/read_later_button.cc
index 1056287b..6c0cf302 100644
--- a/chrome/browser/ui/views/read_later/read_later_button.cc
+++ b/chrome/browser/ui/views/read_later/read_later_button.cc
@@ -160,8 +160,6 @@
           ui::NativeTheme::kColorId_AlertSeverityHigh),
       /*border_color=*/theme_provider->GetColor(
           ThemeProperties::COLOR_TOOLBAR));
-
-  ToolbarButton::UpdateFocusRingColor(this, focus_ring());
 }
 
 void ReadLaterButton::Layout() {
diff --git a/chrome/browser/ui/views/tabs/new_tab_button.cc b/chrome/browser/ui/views/tabs/new_tab_button.cc
index dcd5d279..66288f9 100644
--- a/chrome/browser/ui/views/tabs/new_tab_button.cc
+++ b/chrome/browser/ui/views/tabs/new_tab_button.cc
@@ -77,8 +77,7 @@
   SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
 }
 
-NewTabButton::~NewTabButton() {
-}
+NewTabButton::~NewTabButton() = default;
 
 void NewTabButton::FrameColorsChanged() {
   UpdateInkDropBaseColor();
diff --git a/chrome/browser/ui/views/tabs/tab_drag_controller.cc b/chrome/browser/ui/views/tabs/tab_drag_controller.cc
index 5821f25d..73a9b6cb 100644
--- a/chrome/browser/ui/views/tabs/tab_drag_controller.cc
+++ b/chrome/browser/ui/views/tabs/tab_drag_controller.cc
@@ -2349,6 +2349,8 @@
 bool TabDragController::CanAttachTo(gfx::NativeWindow window) {
   if (!window)
     return false;
+  if (window == GetAttachedBrowserWidget()->GetNativeWindow())
+    return true;
 
   BrowserView* other_browser_view =
       BrowserView::GetBrowserViewForNativeWindow(window);
diff --git a/chrome/browser/ui/views/tabs/tab_strip.cc b/chrome/browser/ui/views/tabs/tab_strip.cc
index e8b72e33..0f272e2 100644
--- a/chrome/browser/ui/views/tabs/tab_strip.cc
+++ b/chrome/browser/ui/views/tabs/tab_strip.cc
@@ -1114,6 +1114,9 @@
           base::BindRepeating(&TabStrip::tabs_view_model,
                               base::Unretained(this)))),
       drag_context_(std::make_unique<TabDragContextImpl>(this)) {
+  views::FocusRing::SetColorContextForSubtree(
+      this, ThemeProperties::COLOR_TOOLBAR,
+      ThemeProperties::COLOR_TOOLBAR_BUTTON_ICON);
   Init();
   SetEventTargeter(std::make_unique<views::ViewTargeter>(this));
 }
diff --git a/chrome/browser/ui/views/toolbar/toolbar_action_view.cc b/chrome/browser/ui/views/toolbar/toolbar_action_view.cc
index c0f00a3..ed87f2e 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_action_view.cc
+++ b/chrome/browser/ui/views/toolbar/toolbar_action_view.cc
@@ -93,12 +93,6 @@
   return bounds;
 }
 
-void ToolbarActionView::OnThemeChanged() {
-  MenuButton::OnThemeChanged();
-
-  ToolbarButton::UpdateFocusRingColor(this, focus_ring());
-}
-
 std::unique_ptr<LabelButtonBorder> ToolbarActionView::CreateDefaultBorder()
     const {
   std::unique_ptr<LabelButtonBorder> border =
@@ -220,8 +214,6 @@
 void ToolbarActionView::AddedToWidget() {
   MenuButton::AddedToWidget();
 
-  ToolbarButton::UpdateFocusRingColor(this, focus_ring());
-
   // This cannot happen until there's a focus controller, which lives on the
   // widget.
   view_controller_->RegisterCommand();
diff --git a/chrome/browser/ui/views/toolbar/toolbar_action_view.h b/chrome/browser/ui/views/toolbar/toolbar_action_view.h
index e291be9..dd9eba67 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_action_view.h
+++ b/chrome/browser/ui/views/toolbar/toolbar_action_view.h
@@ -55,7 +55,6 @@
 
   // views::MenuButton:
   gfx::Rect GetAnchorBoundsInScreen() const override;
-  void OnThemeChanged() override;
   std::unique_ptr<views::LabelButtonBorder> CreateDefaultBorder()
       const override;
   bool IsTriggerableEvent(const ui::Event& event) override;
diff --git a/chrome/browser/ui/views/toolbar/toolbar_button.cc b/chrome/browser/ui/views/toolbar/toolbar_button.cc
index e98b8fa..2432062 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_button.cc
+++ b/chrome/browser/ui/views/toolbar/toolbar_button.cc
@@ -230,35 +230,6 @@
 
 ToolbarButton::~ToolbarButton() = default;
 
-void ToolbarButton::UpdateFocusRingColor(views::View* host,
-                                         views::FocusRing* focus_ring) {
-  DCHECK(host->GetWidget());
-  DCHECK_EQ(host, focus_ring->parent());
-  const SkColor default_focus_ring_color =
-      host->GetNativeTheme()->GetSystemColor(
-          ui::NativeTheme::kColorId_FocusedBorderColor);
-  const SkColor background =
-      host->GetThemeProvider()->GetColor(ThemeProperties::COLOR_TOOLBAR);
-  const float default_contrast =
-      color_utils::GetContrastRatio(default_focus_ring_color, background);
-  if (default_contrast > color_utils::kMinimumVisibleContrastRatio) {
-    focus_ring->SetColor(absl::nullopt);
-    return;
-  }
-  const SkColor fallback_focus_ring_color = host->GetThemeProvider()->GetColor(
-      ThemeProperties::COLOR_TOOLBAR_BUTTON_ICON);
-  // TODO(pbos): Should this fallback_contrast_ratio be a DCHECK of >
-  // color_utils::kMinimumVisibleContrastRatio? Hopefully these are already
-  // contrasty.
-  const float fallback_contrast_ratio =
-      color_utils::GetContrastRatio(fallback_focus_ring_color, background);
-  if (fallback_contrast_ratio > default_contrast) {
-    focus_ring->SetColor(fallback_focus_ring_color);
-    return;
-  }
-  focus_ring->SetColor(absl::nullopt);
-}
-
 void ToolbarButton::SetHighlight(const std::u16string& highlight_text,
                                  absl::optional<SkColor> highlight_color) {
   if (highlight_text.empty() && !highlight_color.has_value()) {
@@ -496,12 +467,6 @@
     installable_ink_drop_->SetConfig(GetToolbarInstallableInkDropConfig(this));
   UpdateIcon();
 
-  // TODO(pbos): Remove calls to OnThemeChanged() where there's no widget.
-  // Afaik this is only done in ToolbarButtonViewsTest.NoDefaultLayoutInsets,
-  // but the test setup should instead add the ToolbarButton to a Widget.
-  if (GetWidget())
-    UpdateFocusRingColor(this, focus_ring());
-
   // Call this after UpdateIcon() to properly reset images.
   LabelButton::OnThemeChanged();
 }
diff --git a/chrome/browser/ui/views/toolbar/toolbar_button.h b/chrome/browser/ui/views/toolbar/toolbar_button.h
index 731221c5..1247c52 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_button.h
+++ b/chrome/browser/ui/views/toolbar/toolbar_button.h
@@ -147,9 +147,6 @@
       const ui::ThemeProvider* theme_provider);
   static SkColor GetDefaultBorderColor(views::View* host_view);
 
-  static void UpdateFocusRingColor(views::View* host,
-                                   views::FocusRing* focus_ring);
-
  protected:
   // Returns if menu should be shown. Override this to change default behavior.
   virtual bool ShouldShowMenu();
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.cc b/chrome/browser/ui/views/toolbar/toolbar_view.cc
index 650fb98..2c5c301 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_view.cc
+++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc
@@ -176,6 +176,9 @@
     for (const auto& view_and_command : GetViewCommandMap())
       chrome::AddCommandObserver(browser_, view_and_command.second, this);
   }
+  views::FocusRing::SetColorContextForSubtree(
+      this, ThemeProperties::COLOR_TOOLBAR,
+      ThemeProperties::COLOR_TOOLBAR_BUTTON_ICON);
 }
 
 ToolbarView::~ToolbarView() {
diff --git a/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_frame_toolbar_view.cc b/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_frame_toolbar_view.cc
index 9afba02..a641f18 100644
--- a/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_frame_toolbar_view.cc
+++ b/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_frame_toolbar_view.cc
@@ -79,6 +79,10 @@
       << "This should be the first ToolbarButtorProvider or a replacement for "
          "an existing instance of this class during a window frame refresh.";
   browser_view_->SetToolbarButtonProvider(this);
+
+  if (browser_view_->IsWindowControlsOverlayEnabled()) {
+    OnWindowControlsOverlayEnabledChanged();
+  }
 }
 
 WebAppFrameToolbarView::~WebAppFrameToolbarView() = default;
diff --git a/chrome/browser/ui/webui/download_shelf/download_shelf.mojom b/chrome/browser/ui/webui/download_shelf/download_shelf.mojom
index e8b16062..34f64c8 100644
--- a/chrome/browser/ui/webui/download_shelf/download_shelf.mojom
+++ b/chrome/browser/ui/webui/download_shelf/download_shelf.mojom
@@ -195,6 +195,9 @@
 
 // Browser-side handler for requests from WebUI page.
 interface PageHandler {
+  // Open chrome://downloads.
+  DoShowAll();
+
   // Notify the Views component to hide itself.
   DoClose();
 
diff --git a/chrome/browser/ui/webui/download_shelf/download_shelf_page_handler.cc b/chrome/browser/ui/webui/download_shelf/download_shelf_page_handler.cc
index bd22567..4d1714b1 100644
--- a/chrome/browser/ui/webui/download_shelf/download_shelf_page_handler.cc
+++ b/chrome/browser/ui/webui/download_shelf/download_shelf_page_handler.cc
@@ -32,6 +32,10 @@
 
 DownloadShelfPageHandler::~DownloadShelfPageHandler() = default;
 
+void DownloadShelfPageHandler::DoShowAll() {
+  download_shelf_ui_->DoShowAll();
+}
+
 void DownloadShelfPageHandler::DoClose() {
   download_shelf_ui_->DoClose();
 }
diff --git a/chrome/browser/ui/webui/download_shelf/download_shelf_page_handler.h b/chrome/browser/ui/webui/download_shelf/download_shelf_page_handler.h
index 8f0cf05d..ef65311 100644
--- a/chrome/browser/ui/webui/download_shelf/download_shelf_page_handler.h
+++ b/chrome/browser/ui/webui/download_shelf/download_shelf_page_handler.h
@@ -29,6 +29,7 @@
   ~DownloadShelfPageHandler() override;
 
   // download_shelf::mojom::PageHandler:
+  void DoShowAll() override;
   void DoClose() override;
   void GetDownloads(GetDownloadsCallback callback) override;
   void ShowContextMenu(uint32_t download_id,
diff --git a/chrome/browser/ui/webui/download_shelf/download_shelf_ui.cc b/chrome/browser/ui/webui/download_shelf/download_shelf_ui.cc
index 5c0dae0..edc7252 100644
--- a/chrome/browser/ui/webui/download_shelf/download_shelf_ui.cc
+++ b/chrome/browser/ui/webui/download_shelf/download_shelf_ui.cc
@@ -45,7 +45,7 @@
       {"close", IDS_ACCNAME_CLOSE},
       {"discardButtonText", IDS_DISCARD_DOWNLOAD},
       {"downloadStatusOpeningText", IDS_DOWNLOAD_STATUS_OPENING},
-  };
+      {"showAll", IDS_SHOW_ALL_DOWNLOADS}};
   source->AddLocalizedStrings(kStrings);
 
   webui::SetupWebUIDataSource(
@@ -83,6 +83,11 @@
     embedder()->DoClose();
 }
 
+void DownloadShelfUI::DoShowAll() {
+  if (embedder())
+    embedder()->DoShowAll();
+}
+
 void DownloadShelfUI::ShowContextMenu(
     uint32_t download_id,
     int32_t client_x,
diff --git a/chrome/browser/ui/webui/download_shelf/download_shelf_ui.h b/chrome/browser/ui/webui/download_shelf/download_shelf_ui.h
index efb7017..4a1bd50 100644
--- a/chrome/browser/ui/webui/download_shelf/download_shelf_ui.h
+++ b/chrome/browser/ui/webui/download_shelf/download_shelf_ui.h
@@ -41,6 +41,8 @@
 
   void DoClose();
 
+  void DoShowAll();
+
   void ShowContextMenu(uint32_t download_id,
                        int32_t client_x,
                        int32_t client_y,
diff --git a/chrome/browser/ui/webui/download_shelf/download_shelf_ui_embedder.h b/chrome/browser/ui/webui/download_shelf/download_shelf_ui_embedder.h
index 3d0f9cc..ec6df12 100644
--- a/chrome/browser/ui/webui/download_shelf/download_shelf_ui_embedder.h
+++ b/chrome/browser/ui/webui/download_shelf/download_shelf_ui_embedder.h
@@ -16,6 +16,8 @@
 
   virtual void DoClose() = 0;
 
+  virtual void DoShowAll() = 0;
+
   // Show the context menu for |download| at |position| in container's
   // coordinate.
   virtual void ShowDownloadContextMenu(
diff --git a/chrome/browser/ui/webui/download_shelf/download_shelf_ui_unittest.cc b/chrome/browser/ui/webui/download_shelf/download_shelf_ui_unittest.cc
index 3c8fbd2..a3f6f6a 100644
--- a/chrome/browser/ui/webui/download_shelf/download_shelf_ui_unittest.cc
+++ b/chrome/browser/ui/webui/download_shelf/download_shelf_ui_unittest.cc
@@ -23,6 +23,7 @@
 class TestDownloadShelfHandler : public DownloadShelfHandler {
  public:
   MOCK_METHOD0(DoClose, void());
+  MOCK_METHOD0(DoShowAll, void());
   MOCK_METHOD1(GetDownloads,
                void(download_shelf::mojom::PageHandler::GetDownloadsCallback));
   MOCK_METHOD4(ShowContextMenu,
diff --git a/chrome/browser/ui/webui/signin/profile_picker_ui.cc b/chrome/browser/ui/webui/signin/profile_picker_ui.cc
index 554025d..b6f2cee 100644
--- a/chrome/browser/ui/webui/signin/profile_picker_ui.cc
+++ b/chrome/browser/ui/webui/signin/profile_picker_ui.cc
@@ -162,9 +162,7 @@
           g_browser_process->local_state()->GetInteger(
               prefs::kBrowserProfilePickerAvailabilityOnStartup));
   bool ask_on_startup_allowed =
-      availability_on_startup ==
-          ProfilePicker::AvailabilityOnStartup::kEnabled &&
-      base::FeatureList::IsEnabled(kEnableProfilePickerOnStartupFeature);
+      availability_on_startup == ProfilePicker::AvailabilityOnStartup::kEnabled;
   html_source->AddBoolean("askOnStartup",
                           g_browser_process->local_state()->GetBoolean(
                               prefs::kBrowserShowProfilePickerOnStartup));
diff --git a/chrome/browser/web_applications/BUILD.gn b/chrome/browser/web_applications/BUILD.gn
index 161c14e..669bc4e 100644
--- a/chrome/browser/web_applications/BUILD.gn
+++ b/chrome/browser/web_applications/BUILD.gn
@@ -162,9 +162,11 @@
     "//chrome/browser/profiles:profile",
     "//chrome/browser/web_applications",
     "//chrome/browser/web_applications/components",
+    "//chrome/common:buildflags",
     "//chrome/common:chrome_features",
     "//chrome/common:non_code_constants",
     "//components/keyed_service/content",
+    "//components/services/app_service/public/cpp:app_url_handling",
     "//components/webapps/browser",
     "//content/public/browser",
     "//url",
diff --git a/chrome/browser/web_applications/README.md b/chrome/browser/web_applications/README.md
index bb461d5d8..b0ba8f57b 100644
--- a/chrome/browser/web_applications/README.md
+++ b/chrome/browser/web_applications/README.md
@@ -34,6 +34,8 @@
 
 This refers to the the document described by the [appmanifest](https://www.w3.org/TR/appmanifest/) spec, with some extra features described by [manifest-incubations](https://wicg.github.io/manifest-incubations/index.html). This document describes metadata and developer configuration of an installable webapp.
 
+For code representations of the manifest see [the list](docs/manifest_representations.md).
+
 ### Manifest Link
 
 A manifest link is something that looks like this in a html document:
diff --git a/chrome/browser/web_applications/components/url_handler_manager_impl.cc b/chrome/browser/web_applications/components/url_handler_manager_impl.cc
index 05556bef..4cf7458 100644
--- a/chrome/browser/web_applications/components/url_handler_manager_impl.cc
+++ b/chrome/browser/web_applications/components/url_handler_manager_impl.cc
@@ -47,6 +47,12 @@
   GURL url(command_line.GetArgs()[0]);
 #endif
 
+  return GetUrlHandlerMatches(url);
+}
+
+// static
+std::vector<UrlHandlerLaunchParams> UrlHandlerManagerImpl::GetUrlHandlerMatches(
+    const GURL& url) {
   if (!url.is_valid() || !url.IsStandard() || !url.SchemeIs(url::kHttpsScheme))
     return {};
 
diff --git a/chrome/browser/web_applications/components/url_handler_manager_impl.h b/chrome/browser/web_applications/components/url_handler_manager_impl.h
index ea3b696..cc1632420 100644
--- a/chrome/browser/web_applications/components/url_handler_manager_impl.h
+++ b/chrome/browser/web_applications/components/url_handler_manager_impl.h
@@ -37,6 +37,10 @@
   static std::vector<UrlHandlerLaunchParams> GetUrlHandlerMatches(
       const base::CommandLine& command_line);
 
+  // Get matching URL handlers that can handle |url|.
+  static std::vector<UrlHandlerLaunchParams> GetUrlHandlerMatches(
+      const GURL& url);
+
   void RegisterUrlHandlers(
       const AppId& app_id,
       base::OnceCallback<void(bool success)> callback) override;
diff --git a/chrome/browser/web_applications/docs/manifest_representations.md b/chrome/browser/web_applications/docs/manifest_representations.md
new file mode 100644
index 0000000..fb174bb
--- /dev/null
+++ b/chrome/browser/web_applications/docs/manifest_representations.md
@@ -0,0 +1,35 @@
+# [Web Apps](../../README.md) - Manifest representations in code
+
+This is a list of all the places where we represent
+[manifest](https://w3c.github.io/manifest/) data in our codebase.
+
+ - [blink.mojom.Manifest](../../../../third_party/blink/public/mojom/manifest/manifest.mojom)\
+   Mojo IPC representation between Blink and the browser.
+   Output of the [Blink manifest parser](../../../../third_party/blink/renderer/modules/manifest/manifest_parser.cc).
+
+ - [blink::Manifest](../../../../third_party/blink/public/common/manifest/manifest.h)\
+   Pre blink.mojom.Manifest representation that should be cleaned up.
+
+ - [WebApplicationInfo](../components/web_application_info.h)\
+   Used for installation and updates.
+
+ - [web_app::WebApp](../web_app.h)\
+   Installed web app representation in RAM.
+
+ - [web_app.WebAppProto](../proto/web_app.proto)\
+   Installed web app representation on disk.
+
+ - [sync_pb.WebAppSpecificsProto](../../../../components/sync/protocol/web_app_specifics.proto)\
+   Installed web app representation in sync cloud.
+
+ - [webapps.mojom.WebPageMetadata](../../../../components/webapps/common/web_page_metadata.mojom)\
+   Manifest data provided by an HTML document.
+
+ - [web_app::ParseOfflineManifest()](../preinstalled_web_app_utils.cc)\
+   Custom JSON + PNG format for bundling WebApplicationInfo data on disk for offline default web app installation.
+
+ - [WebApkInfo](../../android/webapk/webapk_info.h)\
+   Web app installation data that was packaged in an APK.
+
+ - [payments::WebAppInstallationInfo](../../../../components/payments/content/web_app_manifest.h)\
+   Payments code doesn't live under /chrome/browser, they have their own parser and representation.
diff --git a/chrome/browser/web_applications/test/web_app_install_test_utils.cc b/chrome/browser/web_applications/test/web_app_install_test_utils.cc
index 6c009a64..2764954 100644
--- a/chrome/browser/web_applications/test/web_app_install_test_utils.cc
+++ b/chrome/browser/web_applications/test/web_app_install_test_utils.cc
@@ -8,6 +8,7 @@
 #include "base/run_loop.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/bind.h"
+#include "build/build_config.h"
 #include "chrome/browser/web_applications/components/install_finalizer.h"
 #include "chrome/browser/web_applications/components/install_manager.h"
 #include "chrome/browser/web_applications/components/web_app_constants.h"
@@ -18,11 +19,19 @@
 #include "chrome/browser/web_applications/system_web_apps/test/test_system_web_app_manager.h"
 #include "chrome/browser/web_applications/test/test_web_app_provider.h"
 #include "chrome/browser/web_applications/web_app_provider.h"
+#include "chrome/common/buildflags.h"
 #include "chrome/common/chrome_switches.h"
 #include "components/webapps/browser/installable/installable_metrics.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
 
+#if defined(OS_WIN) || defined(OS_MAC) || \
+    (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+#include "chrome/browser/web_applications/components/os_integration_manager.h"
+#include "chrome/browser/web_applications/components/url_handler_manager.h"
+#include "components/services/app_service/public/cpp/url_handler_info.h"
+#endif
+
 namespace web_app {
 namespace test {
 
@@ -111,5 +120,36 @@
   return app_id;
 }
 
+#if defined(OS_WIN) || defined(OS_MAC) || \
+    (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+AppId InstallWebAppWithUrlHandlers(
+    Profile* profile,
+    const GURL& start_url,
+    const std::u16string& app_name,
+    const std::vector<apps::UrlHandlerInfo>& url_handlers) {
+  std::unique_ptr<WebApplicationInfo> info =
+      std::make_unique<WebApplicationInfo>();
+  info->start_url = start_url;
+  info->title = app_name;
+  info->open_as_window = true;
+  info->url_handlers = url_handlers;
+  web_app::AppId app_id =
+      web_app::test::InstallWebApp(profile, std::move(info));
+
+  auto& url_handler_manager = WebAppProviderBase::GetProviderBase(profile)
+                                  ->os_integration_manager()
+                                  .url_handler_manager_for_testing();
+
+  base::RunLoop run_loop;
+  url_handler_manager.RegisterUrlHandlers(
+      app_id, base::BindLambdaForTesting([&](bool success) {
+        EXPECT_TRUE(success);
+        run_loop.Quit();
+      }));
+  run_loop.Run();
+  return app_id;
+}
+#endif
+
 }  // namespace test
 }  // namespace web_app
diff --git a/chrome/browser/web_applications/test/web_app_install_test_utils.h b/chrome/browser/web_applications/test/web_app_install_test_utils.h
index 7d448461..be4b917 100644
--- a/chrome/browser/web_applications/test/web_app_install_test_utils.h
+++ b/chrome/browser/web_applications/test/web_app_install_test_utils.h
@@ -7,9 +7,17 @@
 
 #include <memory>
 #include <string>
+#include <vector>
 
+#include "build/build_config.h"
 #include "chrome/browser/web_applications/components/web_app_id.h"
 #include "chrome/browser/web_applications/components/web_application_info.h"
+#include "chrome/common/buildflags.h"
+
+#if defined(OS_WIN) || defined(OS_MAC) || \
+    (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+#include "components/services/app_service/public/cpp/url_handler_info.h"
+#endif
 
 class GURL;
 class Profile;
@@ -36,6 +44,18 @@
 // unit tests and browser tests.
 AppId InstallWebApp(Profile* profile, std::unique_ptr<WebApplicationInfo>);
 
+#if defined(OS_WIN) || defined(OS_MAC) || \
+    (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+// Install a web app with url_handlers then register it with the
+// UrlHandlerManager. This is sufficient for testing URL matching and launch
+// at startup.
+AppId InstallWebAppWithUrlHandlers(
+    Profile* profile,
+    const GURL& start_url,
+    const std::u16string& app_name,
+    const std::vector<apps::UrlHandlerInfo>& url_handlers);
+#endif
+
 }  // namespace test
 }  // namespace web_app
 
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt
index d9e5dafbb..11f38fb 100644
--- a/chrome/build/win32.pgo.txt
+++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@
-chrome-win32-master-1621932938-5594fc6d2c5390bfebb184c495cb8ecce1fcb43f.profdata
+chrome-win32-master-1621954393-e733b6f5d67eb909295f4ef0c4f3617bf2a0e01c.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt
index fd5e6e4..0f71b43 100644
--- a/chrome/build/win64.pgo.txt
+++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@
-chrome-win64-master-1621943827-d00289ef5df5b49eaadb075bd66d072d47bc3039.profdata
+chrome-win64-master-1621954393-1ae16c5c6bf64a2d5de639296cc11682e71e377a.profdata
diff --git a/chrome/common/extensions/api/wallpaper_private.json b/chrome/common/extensions/api/wallpaper_private.json
index 9c129ba..b68739b 100644
--- a/chrome/common/extensions/api/wallpaper_private.json
+++ b/chrome/common/extensions/api/wallpaper_private.json
@@ -101,6 +101,11 @@
             "name": "url"
           },
           {
+            "type": "string",
+            "name": "collectionId",
+            "description": "The id of the collection that the wallpaper belongs to. The id is used for analytics. If it is empty, the metric will not be logged."
+          },
+          {
             "name": "layout",
             "$ref": "wallpaper.WallpaperLayout"
           },
diff --git a/chrome/common/extensions/extension_constants.cc b/chrome/common/extensions/extension_constants.cc
index 484cc59..9e6959c 100644
--- a/chrome/common/extensions/extension_constants.cc
+++ b/chrome/common/extensions/extension_constants.cc
@@ -22,7 +22,6 @@
 namespace extension_misc {
 
 const char kCalendarAppId[] = "ejjicmeblgpmajnghnpcppodonldlgfn";
-const char kChromeRemoteDesktopAppId[] = "gbchcmhmhahfdphkhkmpfmihenigjmpp";
 const char kCloudPrintAppId[] = "mfehgcgbbipciphmccgaenjidiccnmng";
 const char kDataSaverExtensionId[] = "pfmgfdlgomnbgkofeojodiodmgpgmkac";
 const char kDocsOfflineExtensionId[] = "ghbmnnjooekpmoecnnnilnnbdlolhkhi";
@@ -45,7 +44,6 @@
 const char* const kBuiltInFirstPartyExtensionIds[] = {
     kCalculatorAppId,
     kCalendarAppId,
-    kChromeRemoteDesktopAppId,
     kCloudPrintAppId,
     kDataSaverExtensionId,
     kDocsOfflineExtensionId,
diff --git a/chrome/common/extensions/extension_constants.h b/chrome/common/extensions/extension_constants.h
index 14feb0e..7235bef4 100644
--- a/chrome/common/extensions/extension_constants.h
+++ b/chrome/common/extensions/extension_constants.h
@@ -28,9 +28,6 @@
 // The extension id of the Calendar application.
 extern const char kCalendarAppId[];
 
-// The extension id of the Chrome Remote Desktop application.
-extern const char kChromeRemoteDesktopAppId[];
-
 // The extension id of the Cloud Print component application.
 extern const char kCloudPrintAppId[];
 
diff --git a/chrome/common/mac/app_shim.mojom b/chrome/common/mac/app_shim.mojom
index 77c4224..73e952e8 100644
--- a/chrome/common/mac/app_shim.mojom
+++ b/chrome/common/mac/app_shim.mojom
@@ -92,9 +92,7 @@
   SetBadgeLabel(string badge_label);
 
   // Called to update the state of the profiles NSMenu.
-  // TODO(crbug.com/1108289): Remove `use_new_picker` after launch.
-  UpdateProfileMenu(array<ProfileMenuItem> profile_menu_items,
-                    bool use_new_picker);
+  UpdateProfileMenu(array<ProfileMenuItem> profile_menu_items);
 };
 
 // Interface through which the a process communicates to the browser process.
diff --git a/chrome/renderer/media/chrome_speech_recognition_client.cc b/chrome/renderer/media/chrome_speech_recognition_client.cc
index 9291ee2..e6ec1b4 100644
--- a/chrome/renderer/media/chrome_speech_recognition_client.cc
+++ b/chrome/renderer/media/chrome_speech_recognition_client.cc
@@ -144,7 +144,8 @@
       speech_recognition_recognizer_.BindNewPipeAndPassReceiver(),
       std::move(speech_recognition_client_remote),
       media::mojom::SpeechRecognitionOptions::New(
-          media::mojom::SpeechRecognitionMode::kCaption),
+          media::mojom::SpeechRecognitionMode::kCaption,
+          /*enable_formatting=*/true),
       media::BindToCurrentLoop(
           base::BindOnce(&ChromeSpeechRecognitionClient::OnRecognizerBound,
                          weak_factory_.GetWeakPtr())));
diff --git a/chrome/services/speech/audio_source_fetcher_impl.cc b/chrome/services/speech/audio_source_fetcher_impl.cc
index bd11e14..295c12a 100644
--- a/chrome/services/speech/audio_source_fetcher_impl.cc
+++ b/chrome/services/speech/audio_source_fetcher_impl.cc
@@ -103,7 +103,9 @@
       SpeechRecognitionRecognizerImpl::IsMultichannelSupported()));
 }
 
-void AudioSourceFetcherImpl::OnCaptureError(const std::string& message) {
+void AudioSourceFetcherImpl::OnCaptureError(
+    media::AudioCapturerSource::ErrorCode code,
+    const std::string& message) {
   speech_recognition_recognizer_->OnSpeechRecognitionError();
 }
 
diff --git a/chrome/services/speech/audio_source_fetcher_impl.h b/chrome/services/speech/audio_source_fetcher_impl.h
index 4a86f662..406cd98 100644
--- a/chrome/services/speech/audio_source_fetcher_impl.h
+++ b/chrome/services/speech/audio_source_fetcher_impl.h
@@ -48,7 +48,8 @@
                base::TimeTicks audio_capture_time,
                double volume,
                bool key_pressed) final;
-  void OnCaptureError(const std::string& message) final;
+  void OnCaptureError(media::AudioCapturerSource::ErrorCode code,
+                      const std::string& message) final;
   void OnCaptureMuted(bool is_muted) final {}
 
   void set_audio_capturer_source_for_tests(
diff --git a/chrome/services/speech/cros_speech_recognition_recognizer_impl.cc b/chrome/services/speech/cros_speech_recognition_recognizer_impl.cc
index 4b5592c..6596663 100644
--- a/chrome/services/speech/cros_speech_recognition_recognizer_impl.cc
+++ b/chrome/services/speech/cros_speech_recognition_recognizer_impl.cc
@@ -92,6 +92,8 @@
     config->api_key = google_apis::GetSodaAPIKey();
     config->language_dlc_path = languagepack_path_.value();
     config->library_dlc_path = binary_path_.value();
+    // TODO(crbug.com/1173135): Set options_->recognition_mode and
+    // options_->enable_formatting in the SodaConfig when available.
     cros_soda_client_->Reset(std::move(config), recognition_event_callback_);
   }
   cros_soda_client_->AddAudio(reinterpret_cast<char*>(buffer->data.data()),
diff --git a/chrome/services/speech/speech_recognition_recognizer_impl.cc b/chrome/services/speech/speech_recognition_recognizer_impl.cc
index c8e390e5..3937722 100644
--- a/chrome/services/speech/speech_recognition_recognizer_impl.cc
+++ b/chrome/services/speech/speech_recognition_recognizer_impl.cc
@@ -338,6 +338,7 @@
   config_msg.set_enable_lang_id(false);
   config_msg.set_recognition_mode(
       GetSodaSpeechRecognitionMode(options_->recognition_mode));
+  config_msg.set_enable_formatting(options_->enable_formatting);
   auto serialized = config_msg.SerializeAsString();
 
   SerializedSodaConfig config;
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 2b450f4..92011b08 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -921,7 +921,6 @@
       "//chrome/renderer",
       "//chrome/services/removable_storage_writer:lib",
       "//chrome/test/data:webui_test_resources",
-      "//components/android_autofill/browser",
       "//components/autofill/content/browser:risk_proto",
       "//components/autofill/content/common/mojom",
       "//components/autofill/content/renderer:test_support",
@@ -1105,13 +1104,12 @@
       "../browser/apps/platform_apps/event_page_browsertest.cc",
       "../browser/apps/platform_apps/platform_app_navigation_redirector_browsertest.cc",
       "../browser/apps/platform_apps/service_worker_browsertest.cc",
+      "../browser/attribution_reporting/chrome_attribution_browsertest.cc",
       "../browser/attribution_reporting/conversions_usage_restriction_trial_browsertest.cc",
-      "../browser/attribution_reporting/conversions_usecounter_browsertest.cc",
       "../browser/autocomplete/autocomplete_browsertest.cc",
       "../browser/autofill/autofill_autocomplete_browsertest.cc",
       "../browser/autofill/autofill_browsertest.cc",
       "../browser/autofill/autofill_metrics_browsertest.cc",
-      "../browser/autofill/autofill_provider_browsertest.cc",
       "../browser/autofill/autofill_server_browsertest.cc",
       "../browser/autofill/content_autofill_driver_browsertest.cc",
       "../browser/autofill/form_structure_browsertest.cc",
@@ -4027,7 +4025,6 @@
     "../browser/ssl/certificate_error_reporter_unittest.cc",
     "../browser/ssl/certificate_reporting_test_utils.cc",
     "../browser/ssl/certificate_reporting_test_utils.h",
-    "../browser/ssl/insecure_sensitive_input_driver_unittest.cc",
     "../browser/ssl/security_state_tab_helper_unittest.cc",
     "../browser/ssl/ssl_config_service_manager_pref_unittest.cc",
     "../browser/status_icons/status_icon_menu_model_unittest.cc",
diff --git a/chrome/test/base/chrome_unit_test_suite.cc b/chrome/test/base/chrome_unit_test_suite.cc
index 8e6151a..622a0eb 100644
--- a/chrome/test/base/chrome_unit_test_suite.cc
+++ b/chrome/test/base/chrome_unit_test_suite.cc
@@ -26,6 +26,7 @@
 #include "components/startup_metric_utils/browser/startup_metric_utils.h"
 #include "components/update_client/update_query_params.h"
 #include "content/public/common/content_paths.h"
+#include "content/public/test/scoped_web_ui_controller_factory_registration.h"
 #include "extensions/buildflags/buildflags.h"
 #include "gpu/ipc/service/image_transport_surface.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -128,6 +129,8 @@
   testing::TestEventListeners& listeners =
       testing::UnitTest::GetInstance()->listeners();
   listeners.Append(new ChromeUnitTestSuiteInitializer);
+  listeners.Append(
+      new content::CheckForLeakedWebUIControllerFactoryRegistrations);
 
   {
     ChromeContentClient content_client;
diff --git a/chrome/test/data/autofill/frame_detached_on_form_submit.html b/chrome/test/data/autofill/frame_detached_on_form_submit.html
deleted file mode 100644
index b68d127dc..0000000
--- a/chrome/test/data/autofill/frame_detached_on_form_submit.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<html>
-<body>
-
-<script>
-
-function delayedUpload() {
-  window.domAutomationController.send("SUBMISSION_FINISHED");
-}
-
-function receiveMessage(event) {
-  var address_iframe = document.getElementById('address_iframe');
-  address_iframe.parentNode.removeChild(address_iframe);
-  setTimeout(delayedUpload, 0);
-}
-
-window.addEventListener("message", receiveMessage, false);
-
-</script>
-
-<iframe src="inner_frame_address_form.html" id="address_iframe" name="address_iframe">
-</iframe>
-
-
-</body>
-</html>
diff --git a/chrome/test/data/autofill/frame_detached_on_formless_submit.html b/chrome/test/data/autofill/frame_detached_on_formless_submit.html
deleted file mode 100644
index 85b9be7..0000000
--- a/chrome/test/data/autofill/frame_detached_on_formless_submit.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<html>
-<body>
-
-<script>
-
-function delayedUpload() {
-  window.domAutomationController.send("SUBMISSION_FINISHED");
-}
-
-function receiveMessage(event) {
-  var address_iframe = document.getElementById('address_iframe');
-  address_iframe.parentNode.removeChild(address_iframe);
-  setTimeout(delayedUpload, 0);
-}
-
-window.addEventListener("message", receiveMessage, false);
-
-</script>
-
-<iframe src="inner_frame_address_formless.html" id="address_iframe" name="address_iframe">
-</iframe>
-
-
-</body>
-</html>
diff --git a/chrome/test/data/autofill/inner_frame_address_form.html b/chrome/test/data/autofill/inner_frame_address_form.html
deleted file mode 100644
index cfa42da6..0000000
--- a/chrome/test/data/autofill/inner_frame_address_form.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<html>
-<body>
-
-<script>
-function send_post() {
-  window.parent.postMessage("SubmitComplete", "*");
-}
-</script>
-<form action="inner_frame_address_form.html" onsubmit="send_post(); return false;"
-      id="deleting_form">
-  <input type="text" id="address_field" name="address" autocomplete="on">
-   <input type="submit" id="submit_button" name="submit_button">
-</form>
-</body>
-</html>
diff --git a/chrome/test/data/autofill/inner_frame_address_formless.html b/chrome/test/data/autofill/inner_frame_address_formless.html
deleted file mode 100644
index 76df33c1..0000000
--- a/chrome/test/data/autofill/inner_frame_address_formless.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<html>
-<body>
-
-<script>
-function send_post() {
-  window.parent.postMessage("SubmitComplete", "*");
-}
-</script>
-  <input type="text" id="address_field" name="address" autocomplete="on">
-  <input type="button" id="submit_button" name="submit_button" onclick="send_post()">
-</body>
-</html>
diff --git a/chrome/test/data/autofill/label_change.html b/chrome/test/data/autofill/label_change.html
deleted file mode 100644
index 0e037102..0000000
--- a/chrome/test/data/autofill/label_change.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-</head>
-<body>
-<script>
-
-function delayedUpload() {
-  window.domAutomationController.send("SUBMISSION_FINISHED");
-  console.log("delayedUpload")
-}
-
-function send_post() {
-  setTimeout(delayedUpload, 0);
-}
-
-</script>
-
-<form action="" onsubmit="send_post(); return false;">
-<label id="label_id"> Address </label>
-<input type="text" id="address" name="address" autocomplete="on">
-
-<p id="p_id">Address 1</p>
-<input type="text" name="address1" autocomplete="on">
-<input type="submit" id="submit_button" name="submit_button">
-</form>
-</body>
-</html>
diff --git a/chrome/test/data/chromeos/wallpaper_manager/unit_tests/api_mock.js b/chrome/test/data/chromeos/wallpaper_manager/unit_tests/api_mock.js
index 885ac77..dc508bb 100644
--- a/chrome/test/data/chromeos/wallpaper_manager/unit_tests/api_mock.js
+++ b/chrome/test/data/chromeos/wallpaper_manager/unit_tests/api_mock.js
@@ -6,6 +6,7 @@
 var TestConstants = {
   isPowerwashed: 0,
   wallpaperUrl: 'https://test.com/test.jpg',
+  collectionId: 'test_collection',
   highResolutionSuffix: 'suffix',
   // A dummy string which is used to mock an image.
   IMAGE: '*#*@#&',
@@ -280,7 +281,7 @@
     },
     onWallpaperChangedBy3rdParty: {addListener: function(listener) {}},
     getCollectionsInfo: function(callback) {
-      callback([{collectionId: 'dummyId'}]);
+      callback([{collectionId: TestConstants.collectionId}]);
     },
     getImagesInfo: function(collectionId, callback) {
       callback([{imageUrl: TestConstants.wallpaperUrl}]);
diff --git a/chrome/test/data/chromeos/wallpaper_manager/unit_tests/event_page_unittest.js b/chrome/test/data/chromeos/wallpaper_manager/unit_tests/event_page_unittest.js
index c64f7616..c2f7b5d 100644
--- a/chrome/test/data/chromeos/wallpaper_manager/unit_tests/event_page_unittest.js
+++ b/chrome/test/data/chromeos/wallpaper_manager/unit_tests/event_page_unittest.js
@@ -106,8 +106,9 @@
       chrome.wallpaperPrivate, 'setWallpaperIfExists');
   mockSetWallpaperIfExists.addExpectation(
       changes[Constants.AccessSyncWallpaperInfoKey].newValue.url,
+      /*collection_id=*/'',
       changes[Constants.AccessSyncWallpaperInfoKey].newValue.layout,
-      false /*previewMode=*/);
+      /*previewMode=*/false);
   mockSetWallpaperIfExists.callbackData = [false];
 
   var mockSetWallpaper = mockController.createFunctionMock(
@@ -116,7 +117,7 @@
       TestConstants.IMAGE,
       changes[Constants.AccessSyncWallpaperInfoKey].newValue.layout,
       changes[Constants.AccessSyncWallpaperInfoKey].newValue.url,
-      false /*previewMode=*/);
+      /*previewMode=*/false);
 
   chrome.storage.onChanged.dispatch(changes);
 }
@@ -127,7 +128,7 @@
       chrome.wallpaperPrivate, 'setWallpaperIfExists');
   mockSetWallpaperIfExists.addExpectation(
       TestConstants.wallpaperUrl + TestConstants.highResolutionSuffix,
-      'CENTER_CROPPED', false /*previewMode=*/);
+      /*collection_id=*/'', 'CENTER_CROPPED', false /*previewMode=*/);
   mockSetWallpaperIfExists.callbackData = [true];
 
   var mockRecordWallpaperUMA = mockController.createFunctionMock(
diff --git a/chrome/test/data/extensions/api_test/wallpaper_manager/test.js b/chrome/test/data/extensions/api_test/wallpaper_manager/test.js
index 28b2acc..9553f4b 100644
--- a/chrome/test/data/extensions/api_test/wallpaper_manager/test.js
+++ b/chrome/test/data/extensions/api_test/wallpaper_manager/test.js
@@ -40,8 +40,8 @@
         if (requestStatus === 200) {
           wallpaperJpeg = response;
           chrome.wallpaperPrivate.setWallpaper(
-              wallpaperJpeg, 'CENTER_CROPPED', url, false /*previewMode=*/,
-              pass());
+              wallpaperJpeg, 'CENTER_CROPPED', url,
+              /*previewMode=*/false, pass());
         } else {
           chrome.test.fail('Failed to load test.jpg from local server.');
         }
@@ -100,18 +100,19 @@
           "/wallpaper_manager/test.jpg";
       url = url.replace(/PORT/, config.testServer.port);
       chrome.wallpaperPrivate.setWallpaperIfExists(
-          url, 'CENTER_CROPPED', false /*previewMode=*/, pass(function(exists) {
+          url, /*collection_id=*/'', 'CENTER_CROPPED', /*previewMode=*/false,
+          pass(function(exists) {
             chrome.test.assertTrue(exists);
             // Attempt to set wallpaper from a non-existent file should fail.
             chrome.wallpaperPrivate.setWallpaperIfExists(
-                'http://dummyurl/test1.jpg', 'CENTER_CROPPED',
-                false /*previewMode=*/,
+                'http://dummyurl/test1.jpg', /*collection_id=*/'',
+                'CENTER_CROPPED', /*previewMode=*/false,
                 fail('The wallpaper doesn\'t exist in local file system.'));
             // Attempt to preview wallpaper from a non-existent file should
             // also fail.
             chrome.wallpaperPrivate.setWallpaperIfExists(
-                'http://dummyurl/test1.jpg', 'CENTER_CROPPED',
-                true /*previewMode=*/,
+                'http://dummyurl/test1.jpg', /*collectionId=*/'',
+                'CENTER_CROPPED', /*previewMode=*/true,
                 fail('The wallpaper doesn\'t exist in local file system.'));
           }));
     },
diff --git a/chrome/test/data/webui/download_shelf/test_download_shelf_api_proxy.js b/chrome/test/data/webui/download_shelf/test_download_shelf_api_proxy.js
index 2d77d73..f7bf88f9 100644
--- a/chrome/test/data/webui/download_shelf/test_download_shelf_api_proxy.js
+++ b/chrome/test/data/webui/download_shelf/test_download_shelf_api_proxy.js
@@ -10,6 +10,7 @@
   constructor() {
     super([
       'doClose',
+      'doShowAll',
       'getDownloads',
       'getFileIcon',
       'openDownload',
@@ -33,6 +34,11 @@
   }
 
   /** @override */
+  doShowAll() {
+    this.methodCalled('doShowAll');
+  }
+
+  /** @override */
   getDownloads() {
     this.methodCalled('getDownloads');
     return Promise.resolve({downloadItems: this.downloadItems_});
diff --git a/chrome/test/data/webui/settings/chromeos/internet_detail_page_tests.js b/chrome/test/data/webui/settings/chromeos/internet_detail_page_tests.js
index 52a748b..e632273 100644
--- a/chrome/test/data/webui/settings/chromeos/internet_detail_page_tests.js
+++ b/chrome/test/data/webui/settings/chromeos/internet_detail_page_tests.js
@@ -86,6 +86,44 @@
     return result;
   }
 
+  /**
+   * @param {boolean} isSimLocked
+   */
+  function deepLinkToSimLockElement(isSimLocked) {
+    init();
+    const mojom = chromeos.networkConfig.mojom;
+
+    const test_iccid = '11111111111111111';
+    mojoApi_.setDeviceStateForTest({
+      type: mojom.NetworkType.kCellular,
+      deviceState: chromeos.networkConfig.mojom.DeviceStateType.kEnabled,
+      simLockStatus: {
+        lockEnabled: true,
+        lockType: isSimLocked ? 'sim-pin' : undefined,
+      },
+      simInfos: [{
+        iccid: test_iccid,
+        isPrimary: true,
+      }],
+    });
+
+    const cellularNetwork =
+        getManagedProperties(mojom.NetworkType.kCellular, 'cellular');
+    cellularNetwork.connectable = false;
+    cellularNetwork.typeProperties.cellular.iccid = test_iccid;
+    mojoApi_.setManagedPropertiesForTest(cellularNetwork);
+
+    const params = new URLSearchParams;
+    params.append('guid', 'cellular_guid');
+    params.append('type', 'Cellular');
+    params.append('name', 'cellular');
+    params.append('settingId', '14');
+    settings.Router.getInstance().navigateTo(
+        settings.routes.NETWORK_DETAIL, params);
+
+    return flushAsync();
+  }
+
   setup(function() {
     loadTimeData.overrideValues({
       internetAddConnection: 'internetAddConnection',
@@ -564,30 +602,8 @@
       await popStatePromise;
     });
 
-    test('Deep link to sim lock toggle', async () => {
-      init();
-      const mojom = chromeos.networkConfig.mojom;
-      mojoApi_.setDeviceStateForTest({
-        type: mojom.NetworkType.kCellular,
-        deviceState: chromeos.networkConfig.mojom.DeviceStateType.kEnabled,
-        simLockStatus: {
-          lockEnabled: false,
-        },
-      });
-      const cellularNetwork =
-          getManagedProperties(mojom.NetworkType.kCellular, 'cellular');
-      cellularNetwork.connectable = false;
-      mojoApi_.setManagedPropertiesForTest(cellularNetwork);
-
-      const params = new URLSearchParams;
-      params.append('guid', 'cellular_guid');
-      params.append('type', 'Cellular');
-      params.append('name', 'cellular');
-      params.append('settingId', '14');
-      settings.Router.getInstance().navigateTo(
-          settings.routes.NETWORK_DETAIL, params);
-
-      Polymer.dom.flush();
+    test('Deep link to sim lock toggle with cellular flag off', async () => {
+      await deepLinkToSimLockElement(/*isSimLocked=*/ false);
 
       const simInfo = internetDetailPage.$$('#cellularSimInfo');
 
@@ -600,6 +616,40 @@
           'Sim lock toggle should be focused for settingId=14.');
     });
 
+    test('Deep link to sim lock toggle with cellular flag on', async () => {
+      loadTimeData.overrideValues({
+        updatedCellularActivationUi: true,
+      });
+      await deepLinkToSimLockElement(/*isSimLocked=*/ false);
+
+      const simInfo = internetDetailPage.$$('#cellularSimInfoAdvanced');
+
+      // In this rare case, wait after next render twice due to focus behavior
+      // of the siminfo component.
+      await test_util.waitAfterNextRender(simInfo);
+      await test_util.waitAfterNextRender(simInfo);
+      assertEquals(
+          simInfo.$$('#simLockButton'), getDeepActiveElement(),
+          'Sim lock toggle should be focused for settingId=14.');
+    });
+
+    test('Deep link to sim unlock button with cellular flag on', async () => {
+      loadTimeData.overrideValues({
+        updatedCellularActivationUi: true,
+      });
+      await deepLinkToSimLockElement(/*isSimLocked=*/ true);
+
+      const simInfo = internetDetailPage.$$('#cellularSimInfoAdvanced');
+
+      // In this rare case, wait after next render twice due to focus behavior
+      // of the siminfo component.
+      await test_util.waitAfterNextRender(simInfo);
+      await test_util.waitAfterNextRender(simInfo);
+      assertEquals(
+          simInfo.$$('#unlockPinButton'), getDeepActiveElement(),
+          'Sim unlock button should be focused for settingId=14.');
+    });
+
     test('Cellular page hides hidden toggle', function() {
       init();
       const mojom = chromeos.networkConfig.mojom;
diff --git a/chrome/test/data/webui/signin/local_profile_customization_interactive_ui_test.js b/chrome/test/data/webui/signin/local_profile_customization_interactive_ui_test.js
index 2049500..550a091 100644
--- a/chrome/test/data/webui/signin/local_profile_customization_interactive_ui_test.js
+++ b/chrome/test/data/webui/signin/local_profile_customization_interactive_ui_test.js
@@ -22,7 +22,6 @@
     return {
       enabled: [
         'features::kSignInProfileCreation',
-        'features::kNewProfilePicker',
       ]
     };
   }
diff --git a/chrome/test/data/webui/signin/signin_browsertest.js b/chrome/test/data/webui/signin/signin_browsertest.js
index e058234..6bf48f8 100644
--- a/chrome/test/data/webui/signin/signin_browsertest.js
+++ b/chrome/test/data/webui/signin/signin_browsertest.js
@@ -98,7 +98,6 @@
     return {
       enabled: [
         'features::kSignInProfileCreation',
-        'features::kNewProfilePicker',
       ]
     };
   }
@@ -120,15 +119,6 @@
   get browsePreload() {
     return 'chrome://profile-picker/test_loader.html?module=signin/local_profile_customization_test.js';
   }
-
-  /** @override */
-  get featureList() {
-    return {
-      enabled: [
-        'features::kNewProfilePicker',
-      ]
-    };
-  }
 };
 
 TEST_F('LocalProfileCustomizationTest', 'All', function() {
@@ -152,7 +142,6 @@
     return {
       enabled: [
         'features::kSignInProfileCreation',
-        'features::kNewProfilePicker',
       ]
     };
   }
@@ -179,7 +168,6 @@
     return {
       enabled: [
         'features::kSignInProfileCreation',
-        'features::kNewProfilePicker',
       ]
     };
   }
@@ -200,15 +188,6 @@
   get browsePreload() {
     return 'chrome://profile-picker/test_loader.html?module=signin/profile_card_menu_test.js';
   }
-
-  /** @override */
-  get featureList() {
-    return {
-      enabled: [
-        'features::kNewProfilePicker',
-      ]
-    };
-  }
 };
 
 TEST_F('ProfileCardMenuTest', 'All', function() {
diff --git a/chromecast/crash/linux/dump_info.cc b/chromecast/crash/linux/dump_info.cc
index f3b35782..a2d4ccf7 100644
--- a/chromecast/crash/linux/dump_info.cc
+++ b/chromecast/crash/linux/dump_info.cc
@@ -157,7 +157,7 @@
     ++num_params;
 
   // Disallow extraneous params
-  if (dict->size() != num_params)
+  if (dict->DictSize() != num_params)
     return false;
 
   valid_ = true;
diff --git a/chromecast/crash/linux/synchronized_minidump_manager.cc b/chromecast/crash/linux/synchronized_minidump_manager.cc
index 015c490..d47d0c4 100644
--- a/chromecast/crash/linux/synchronized_minidump_manager.cc
+++ b/chromecast/crash/linux/synchronized_minidump_manager.cc
@@ -126,7 +126,7 @@
   base::DictionaryValue* ratelimit_params = GetRatelimitParams(metadata);
 
   return ratelimit_params &&
-         ratelimit_params->size() == kLockfileNumRatelimitParams &&
+         ratelimit_params->DictSize() == kLockfileNumRatelimitParams &&
          !GetRatelimitPeriodStart(metadata).is_null() &&
          GetRatelimitPeriodDumps(metadata) >= 0;
 }
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM
index d47057b..b418f50 100644
--- a/chromeos/CHROMEOS_LKGM
+++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@
-13989.0.0
\ No newline at end of file
+13991.0.0
\ No newline at end of file
diff --git a/chromeos/components/diagnostics_ui/backend/session_log_handler.cc b/chromeos/components/diagnostics_ui/backend/session_log_handler.cc
index d35cfe99..b030817 100644
--- a/chromeos/components/diagnostics_ui/backend/session_log_handler.cc
+++ b/chromeos/components/diagnostics_ui/backend/session_log_handler.cc
@@ -8,6 +8,7 @@
 #include "base/files/file_util.h"
 #include "base/strings/strcat.h"
 #include "base/strings/utf_string_conversions.h"
+#include "base/task/thread_pool.h"
 #include "base/values.h"
 #include "chromeos/components/diagnostics_ui/backend/routine_log.h"
 #include "chromeos/components/diagnostics_ui/backend/telemetry_log.h"
@@ -58,7 +59,15 @@
 void SessionLogHandler::FileSelected(const base::FilePath& path,
                                      int index,
                                      void* params) {
-  const bool success = CreateSessionLog(path);
+  base::ThreadPool::PostTaskAndReplyWithResult(
+      FROM_HERE, {base::MayBlock()},
+      base::BindOnce(&SessionLogHandler::CreateSessionLog,
+                     base::Unretained(this), std::move(path)),
+      base::BindOnce(&SessionLogHandler::OnSessionLogCreated,
+                     weak_factory_.GetWeakPtr()));
+}
+
+void SessionLogHandler::OnSessionLogCreated(const bool success) {
   ResolveJavascriptCallback(base::Value(save_session_log_callback_id_),
                             base::Value(success));
   save_session_log_callback_id_ = "";
diff --git a/chromeos/components/diagnostics_ui/backend/session_log_handler.h b/chromeos/components/diagnostics_ui/backend/session_log_handler.h
index b6c7a0f..9bf5494e 100644
--- a/chromeos/components/diagnostics_ui/backend/session_log_handler.h
+++ b/chromeos/components/diagnostics_ui/backend/session_log_handler.h
@@ -10,6 +10,7 @@
 
 #include "base/callback.h"
 #include "base/memory/scoped_refptr.h"
+#include "base/memory/weak_ptr.h"
 #include "content/public/browser/web_ui_message_handler.h"
 #include "ui/shell_dialogs/select_file_dialog.h"
 #include "ui/shell_dialogs/select_file_policy.h"
@@ -52,6 +53,8 @@
                     int index,
                     void* params) override;
 
+  void OnSessionLogCreated(const bool success);
+
   void FileSelectionCanceled(void* params) override;
 
   SessionLogHandler(const SessionLogHandler&) = delete;
@@ -79,6 +82,8 @@
   std::unique_ptr<RoutineLog> routine_log_;
   std::string save_session_log_callback_id_;
   scoped_refptr<ui::SelectFileDialog> select_file_dialog_;
+
+  base::WeakPtrFactory<SessionLogHandler> weak_factory_{this};
 };
 
 }  // namespace diagnostics
diff --git a/chromeos/components/diagnostics_ui/backend/session_log_handler_unittest.cc b/chromeos/components/diagnostics_ui/backend/session_log_handler_unittest.cc
index 7d79d55..628802a 100644
--- a/chromeos/components/diagnostics_ui/backend/session_log_handler_unittest.cc
+++ b/chromeos/components/diagnostics_ui/backend/session_log_handler_unittest.cc
@@ -15,6 +15,7 @@
 #include "base/strings/strcat.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
+#include "base/test/task_environment.h"
 #include "base/values.h"
 #include "chromeos/components/diagnostics_ui/backend/log_test_helpers.h"
 #include "chromeos/components/diagnostics_ui/backend/routine_log.h"
@@ -211,7 +212,7 @@
   base::ListValue args;
   args.Append(kHandlerFunctionName);
   web_ui_.HandleReceivedMessage("saveSessionLog", &args);
-
+  task_environment_.RunUntilIdle();
   const std::string expected_telemetry_log_header = "=== Telemetry Log ===";
   const std::string expected_system_info_section_name = "--- System Info ---";
   const std::string expected_snapshot_time_prefix = "Snapshot Time: ";
@@ -258,6 +259,7 @@
   base::ListValue args;
   args.Append(kHandlerFunctionName);
   web_ui_.HandleReceivedMessage("saveSessionLog", &args);
+  task_environment_.RunUntilIdle();
 
   EXPECT_EQ(call_data_count_before_call + 1u, web_ui_.call_data().size());
   const content::TestWebUI::CallData& call_data =
diff --git a/chromeos/components/fast_pair/DIR_METADATA b/chromeos/components/fast_pair/DIR_METADATA
new file mode 100644
index 0000000..4891ec87
--- /dev/null
+++ b/chromeos/components/fast_pair/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail: {
+  component: "OS>Systems>Multidevice>FastPair"
+}
diff --git a/chromeos/components/fast_pair/OWNERS b/chromeos/components/fast_pair/OWNERS
new file mode 100644
index 0000000..f0f3a774
--- /dev/null
+++ b/chromeos/components/fast_pair/OWNERS
@@ -0,0 +1,2 @@
+shanefitz@google.com
+jonmann@chromium.org
diff --git a/chromeos/components/fast_pair/common/BUILD.gn b/chromeos/components/fast_pair/common/BUILD.gn
new file mode 100644
index 0000000..aed93ad
--- /dev/null
+++ b/chromeos/components/fast_pair/common/BUILD.gn
@@ -0,0 +1,16 @@
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+assert(is_chromeos, "Fast Pair is CrOS only")
+
+source_set("common") {
+  sources = [
+    "fast_pair_features.cc",
+    "fast_pair_features.h",
+  ]
+
+  public_deps = [ "//base" ]
+
+  deps = []
+}
diff --git a/chromeos/components/fast_pair/common/fast_pair_features.cc b/chromeos/components/fast_pair/common/fast_pair_features.cc
new file mode 100644
index 0000000..117bcb0
--- /dev/null
+++ b/chromeos/components/fast_pair/common/fast_pair_features.cc
@@ -0,0 +1,14 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chromeos/components/fast_pair/common/fast_pair_features.h"
+
+namespace chromeos {
+namespace features {
+
+// Enables Fast Pair functionality.
+const base::Feature kFastPair{"FastPair", base::FEATURE_DISABLED_BY_DEFAULT};
+
+}  // namespace features
+}  // namespace chromeos
diff --git a/chromeos/components/fast_pair/common/fast_pair_features.h b/chromeos/components/fast_pair/common/fast_pair_features.h
new file mode 100644
index 0000000..1b52bf8f
--- /dev/null
+++ b/chromeos/components/fast_pair/common/fast_pair_features.h
@@ -0,0 +1,18 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROMEOS_COMPONENTS_FAST_PAIR_COMMON_FAST_PAIR_FEATURES_H_
+#define CHROMEOS_COMPONENTS_FAST_PAIR_COMMON_FAST_PAIR_FEATURES_H_
+
+#include "base/feature_list.h"
+
+namespace chromeos {
+namespace features {
+
+extern const base::Feature kFastPair;
+
+}  // namespace features
+}  // namespace chromeos
+
+#endif  // CHROMEOS_COMPONENTS_FAST_PAIR_COMMON_FAST_PAIR_FEATURES_H_
diff --git a/chromeos/dbus/missive/fake_missive_client.cc b/chromeos/dbus/missive/fake_missive_client.cc
index e8e4848..f154e96 100644
--- a/chromeos/dbus/missive/fake_missive_client.cc
+++ b/chromeos/dbus/missive/fake_missive_client.cc
@@ -24,7 +24,7 @@
 void FakeMissiveClient::Init() {
   auto missive_storage_module_delegate =
       std::make_unique<MissiveStorageModuleDelegateImpl>(
-          base::BindRepeating(&FakeMissiveClient::AddRecord,
+          base::BindRepeating(&FakeMissiveClient::EnqueueRecord,
                               weak_ptr_factory_.GetWeakPtr()),
           base::BindRepeating(&FakeMissiveClient::Flush,
                               weak_ptr_factory_.GetWeakPtr()),
@@ -36,7 +36,7 @@
       MissiveStorageModule::Create(std::move(missive_storage_module_delegate));
 }
 
-void FakeMissiveClient::AddRecord(
+void FakeMissiveClient::EnqueueRecord(
     const reporting::Priority priority,
     reporting::Record record,
     base::OnceCallback<void(reporting::Status)> completion_callback) {
diff --git a/chromeos/dbus/missive/fake_missive_client.h b/chromeos/dbus/missive/fake_missive_client.h
index 6b55d02..602c621 100644
--- a/chromeos/dbus/missive/fake_missive_client.h
+++ b/chromeos/dbus/missive/fake_missive_client.h
@@ -24,7 +24,7 @@
   void Init();
 
  private:
-  void AddRecord(
+  void EnqueueRecord(
       const reporting::Priority priority,
       reporting::Record record,
       base::OnceCallback<void(reporting::Status)> completion_callback) override;
diff --git a/chromeos/dbus/missive/missive_client.cc b/chromeos/dbus/missive/missive_client.cc
index 8fdc958..a7bdc93 100644
--- a/chromeos/dbus/missive/missive_client.cc
+++ b/chromeos/dbus/missive/missive_client.cc
@@ -7,8 +7,10 @@
 #include <memory>
 
 #include "base/bind.h"
+#include "base/bind_post_task.h"
 #include "base/callback.h"
 #include "base/callback_helpers.h"
+#include "base/logging.h"
 #include "base/memory/weak_ptr.h"
 #include "chromeos/dbus/missive/fake_missive_client.h"
 #include "components/reporting/proto/interface.pb.h"
@@ -48,17 +50,28 @@
   MissiveClientImpl(const MissiveClientImpl& other) = delete;
   MissiveClientImpl& operator=(const MissiveClientImpl& other) = delete;
   void Init(dbus::Bus* const bus) {
+    origin_task_runner_ = bus->GetOriginTaskRunner();
+
     DCHECK(!missive_service_proxy_);
+
     auto missive_storage_module_delegate =
         std::make_unique<MissiveStorageModuleDelegateImpl>(
-            base::BindRepeating(&MissiveClientImpl::AddRecord,
-                                weak_ptr_factory_.GetWeakPtr()),
-            base::BindRepeating(&MissiveClientImpl::Flush,
-                                weak_ptr_factory_.GetWeakPtr()),
-            base::BindRepeating(&MissiveClientImpl::ReportSuccess,
-                                weak_ptr_factory_.GetWeakPtr()),
-            base::BindRepeating(&MissiveClientImpl::UpdateEncryptionKey,
-                                weak_ptr_factory_.GetWeakPtr()));
+            base::BindPostTask(
+                origin_task_runner_,
+                base::BindRepeating(&MissiveClientImpl::EnqueueRecord,
+                                    weak_ptr_factory_.GetWeakPtr())),
+            base::BindPostTask(
+                origin_task_runner_,
+                base::BindRepeating(&MissiveClientImpl::Flush,
+                                    weak_ptr_factory_.GetWeakPtr())),
+            base::BindPostTask(
+                origin_task_runner_,
+                base::BindRepeating(&MissiveClientImpl::ReportSuccess,
+                                    weak_ptr_factory_.GetWeakPtr())),
+            base::BindPostTask(
+                origin_task_runner_,
+                base::BindRepeating(&MissiveClientImpl::UpdateEncryptionKey,
+                                    weak_ptr_factory_.GetWeakPtr())));
     missive_storage_module_ = MissiveStorageModule::Create(
         std::move(missive_storage_module_delegate));
 
@@ -68,10 +81,10 @@
   }
 
  private:
-  void AddRecord(const reporting::Priority priority,
-                 reporting::Record record,
-                 base::OnceCallback<void(reporting::Status)>
-                     completion_callback) override {
+  void EnqueueRecord(const reporting::Priority priority,
+                     reporting::Record record,
+                     base::OnceCallback<void(reporting::Status)>
+                         completion_callback) override {
     reporting::EnqueueRecordRequest request;
     *request.mutable_record() = std::move(record);
     request.set_priority(priority);
@@ -83,14 +96,20 @@
 
     missive_service_proxy_->CallMethod(
         &method_call, kTimeoutMs,
-        base::BindOnce(&MissiveClientImpl::HandleAddRecordResponse,
+        base::BindOnce(&MissiveClientImpl::HandleEnqueueRecordResponse,
                        weak_ptr_factory_.GetWeakPtr(),
                        std::move(completion_callback)));
   }
 
-  void HandleAddRecordResponse(
+  void HandleEnqueueRecordResponse(
       base::OnceCallback<void(reporting::Status)> completion_callback,
       dbus::Response* response) {
+    if (!response) {
+      std::move(completion_callback)
+          .Run(Status(reporting::error::UNAVAILABLE,
+                      "EnqueueRecord is not exported by missived"));
+      return;
+    }
     dbus::MessageReader reader(response);
     reporting::EnqueueRecordResponse response_body;
     reader.PopArrayOfBytesAsProto(&response_body);
@@ -120,6 +139,12 @@
   void HandleFlushResponse(
       base::OnceCallback<void(reporting::Status)> completion_callback,
       dbus::Response* response) {
+    if (!response) {
+      std::move(completion_callback)
+          .Run(Status(reporting::error::UNAVAILABLE,
+                      "HandleFlushResponse is not exported by missived"));
+      return;
+    }
     dbus::MessageReader reader(response);
     reporting::FlushPriorityResponse response_body;
     reader.PopArrayOfBytesAsProto(&response_body);
@@ -147,21 +172,21 @@
 
   void UpdateEncryptionKey(
       const reporting::SignedEncryptionInfo& encryption_info) override {
-    // TODO(1174889): Uncomment the following code once system_api has been
-    // updated with kUpdateEncryptionKey.
-    // reporting::UpdateEncryptKeyRequest request;
-    // *request.mutable_signed_encryption_info() = std::move(encryption_info);
-    // dbus::MethodCall method_call(missive::MissiveServiceInterface,
-    //                              missive::kUpdateEncryptionKey);
-    // dbus::MessageWriter writer(&method_call);
-    // writer.AppendProtoAsArrayOfBytes(request);
+    reporting::UpdateEncryptionKeyRequest request;
+    *request.mutable_signed_encryption_info() = std::move(encryption_info);
+    dbus::MethodCall method_call(missive::kMissiveServiceInterface,
+                                 missive::kUpdateEncryptionKey);
+    dbus::MessageWriter writer(&method_call);
+    writer.AppendProtoAsArrayOfBytes(request);
 
-    // missive_service_proxy_->CallMethod(
-    //     &method_call, kTimeoutMs, base::DoNothing());
+    missive_service_proxy_->CallMethod(&method_call, kTimeoutMs,
+                                       base::DoNothing());
     return;
   }
 
-  dbus::ObjectProxy* missive_service_proxy_ = nullptr;
+  scoped_refptr<dbus::ObjectProxy> missive_service_proxy_;
+
+  scoped_refptr<base::SequencedTaskRunner> origin_task_runner_;
 
   // Must be last class member.
   base::WeakPtrFactory<MissiveClientImpl> weak_ptr_factory_{this};
diff --git a/chromeos/dbus/missive/missive_client.h b/chromeos/dbus/missive/missive_client.h
index a227b66c..eb4496e 100644
--- a/chromeos/dbus/missive/missive_client.h
+++ b/chromeos/dbus/missive/missive_client.h
@@ -44,7 +44,7 @@
   scoped_refptr<reporting::MissiveStorageModule> missive_storage_module_;
 
  private:
-  virtual void AddRecord(
+  virtual void EnqueueRecord(
       const reporting::Priority priority,
       reporting::Record record,
       base::OnceCallback<void(reporting::Status)> completion_callback) = 0;
diff --git a/chromeos/services/libassistant/audio/audio_input_impl.cc b/chromeos/services/libassistant/audio/audio_input_impl.cc
index c68f250f..b8fe262 100644
--- a/chromeos/services/libassistant/audio/audio_input_impl.cc
+++ b/chromeos/services/libassistant/audio/audio_input_impl.cc
@@ -210,7 +210,8 @@
   }
 
   // Runs on audio service thread.
-  void OnCaptureError(const std::string& message) override {
+  void OnCaptureError(media::AudioCapturerSource::ErrorCode code,
+                      const std::string& message) override {
     LOG(ERROR) << "Capture error " << message;
     base::AutoLock lock(observers_lock_);
     for (auto* observer : observers_)
diff --git a/chromeos/ui/frame/frame_utils.cc b/chromeos/ui/frame/frame_utils.cc
index ab8e598..559e137 100644
--- a/chromeos/ui/frame/frame_utils.cc
+++ b/chromeos/ui/frame/frame_utils.cc
@@ -5,6 +5,7 @@
 #include "chromeos/ui/frame/frame_utils.h"
 
 #include "chromeos/ui/base/chromeos_ui_constants.h"
+#include "chromeos/ui/base/tablet_state.h"
 #include "chromeos/ui/base/window_properties.h"
 #include "ui/aura/env.h"
 #include "ui/aura/window.h"
@@ -34,9 +35,11 @@
   // Check the frame first, as we allow a small area overlapping the contents
   // to be used for resize handles.
   views::Widget* widget = view->GetWidget();
-  // Ignore the resize border when maximized or full screen.
+  bool in_tablet_mode = chromeos::TabletState::Get()->InTabletMode();
+  // Ignore the resize border when maximized or full screen or in (split view)
+  // tablet mode.
   const bool has_resize_border =
-      !widget->IsMaximized() && !widget->IsFullscreen();
+      !widget->IsMaximized() && !widget->IsFullscreen() && !in_tablet_mode;
   const int resize_border_size =
       has_resize_border ? chromeos::kResizeInsideBoundsSize : 0;
 
diff --git a/components/BUILD.gn b/components/BUILD.gn
index 8139703..a30d95ea 100644
--- a/components/BUILD.gn
+++ b/components/BUILD.gn
@@ -642,7 +642,6 @@
       "metrics/content/subprocess_metrics_provider_browsertest.cc",
       "optimization_guide/content/renderer/page_text_agent_browsertest.cc",
       "paint_preview/renderer/paint_preview_recorder_browsertest.cc",
-      "security_state/content/content_utils_browsertest.cc",
       "ukm/content/source_url_recorder_browsertest.cc",
     ]
 
diff --git a/components/cast_streaming/DEPS b/components/cast_streaming/DEPS
index cce7e79..f8f3627 100644
--- a/components/cast_streaming/DEPS
+++ b/components/cast_streaming/DEPS
@@ -1,6 +1,10 @@
 include_rules = [
   "+content/public/common",
-  "-components/cast_streaming",
   "+net",
   "+services/network/public",
+
+  # The browser and renderer code may not depend on eachother, and can only
+  # depend on shared "public" code.
+  "-components/cast_streaming",
+  "+components/cast_streaming/public",
 ]
diff --git a/components/cast_streaming/browser/BUILD.gn b/components/cast_streaming/browser/BUILD.gn
index 950ef3e..d740ff4b 100644
--- a/components/cast_streaming/browser/BUILD.gn
+++ b/components/cast_streaming/browser/BUILD.gn
@@ -40,7 +40,7 @@
     "//mojo/public/cpp/system",
   ]
   public_deps = [
-    "//components/cast_streaming/mojo:mojom",
+    "//components/cast_streaming/public/mojom",
     "//third_party/openscreen/src/cast/common:channel",
   ]
   visibility = [ ":*" ]
diff --git a/components/cast_streaming/browser/DEPS b/components/cast_streaming/browser/DEPS
index e76d5654..0376433a 100644
--- a/components/cast_streaming/browser/DEPS
+++ b/components/cast_streaming/browser/DEPS
@@ -1,6 +1,5 @@
 include_rules = [
   "+components/cast/message_port",
-  "+components/cast_streaming/mojo",
   "+components/openscreen_platform",
   "+media/base",
   "+media/mojo",
diff --git a/components/cast_streaming/browser/public/receiver_session.h b/components/cast_streaming/browser/public/receiver_session.h
index 2032de7a..2db3ddbc 100644
--- a/components/cast_streaming/browser/public/receiver_session.h
+++ b/components/cast_streaming/browser/public/receiver_session.h
@@ -8,7 +8,7 @@
 #include <memory>
 
 #include "base/callback.h"
-#include "components/cast_streaming/mojo/cast_streaming_session.mojom.h"
+#include "components/cast_streaming/public/mojom/cast_streaming_session.mojom.h"
 #include "mojo/public/cpp/bindings/associated_remote.h"
 
 namespace cast_api_bindings {
diff --git a/components/cast_streaming/browser/receiver_session_impl.h b/components/cast_streaming/browser/receiver_session_impl.h
index 58193083..8d649415 100644
--- a/components/cast_streaming/browser/receiver_session_impl.h
+++ b/components/cast_streaming/browser/receiver_session_impl.h
@@ -7,7 +7,7 @@
 
 #include "components/cast_streaming/browser/cast_streaming_session.h"
 #include "components/cast_streaming/browser/public/receiver_session.h"
-#include "components/cast_streaming/mojo/cast_streaming_session.mojom.h"
+#include "components/cast_streaming/public/mojom/cast_streaming_session.mojom.h"
 #include "mojo/public/cpp/bindings/associated_remote.h"
 #include "mojo/public/cpp/bindings/remote.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
diff --git a/components/cast_streaming/mojo/BUILD.gn b/components/cast_streaming/public/mojom/BUILD.gn
similarity index 100%
rename from components/cast_streaming/mojo/BUILD.gn
rename to components/cast_streaming/public/mojom/BUILD.gn
diff --git a/components/cast_streaming/mojo/OWNERS b/components/cast_streaming/public/mojom/OWNERS
similarity index 100%
rename from components/cast_streaming/mojo/OWNERS
rename to components/cast_streaming/public/mojom/OWNERS
diff --git a/components/cast_streaming/mojo/cast_streaming_session.mojom b/components/cast_streaming/public/mojom/cast_streaming_session.mojom
similarity index 100%
rename from components/cast_streaming/mojo/cast_streaming_session.mojom
rename to components/cast_streaming/public/mojom/cast_streaming_session.mojom
diff --git a/components/cast_streaming/renderer/BUILD.gn b/components/cast_streaming/renderer/BUILD.gn
index 2dc75ed3..afad152 100644
--- a/components/cast_streaming/renderer/BUILD.gn
+++ b/components/cast_streaming/renderer/BUILD.gn
@@ -9,7 +9,7 @@
 source_set("renderer") {
   deps = [
     "//base",
-    "//components/cast_streaming/mojo:mojom",
+    "//components/cast_streaming/public/mojom",
     "//media",
     "//media/mojo/common",
     "//mojo/public/cpp/bindings",
diff --git a/components/cast_streaming/renderer/DEPS b/components/cast_streaming/renderer/DEPS
index 89d16417..d19ff23 100644
--- a/components/cast_streaming/renderer/DEPS
+++ b/components/cast_streaming/renderer/DEPS
@@ -1,5 +1,4 @@
 include_rules = [
-  "+components/cast_streaming/mojo",
   "+media/base",
   "+media/mojo",
   "+mojo/public",
diff --git a/components/cast_streaming/renderer/cast_streaming_demuxer.h b/components/cast_streaming/renderer/cast_streaming_demuxer.h
index 6750400..5818c70 100644
--- a/components/cast_streaming/renderer/cast_streaming_demuxer.h
+++ b/components/cast_streaming/renderer/cast_streaming_demuxer.h
@@ -5,7 +5,7 @@
 #ifndef COMPONENTS_CAST_STREAMING_RENDERER_CAST_STREAMING_DEMUXER_H_
 #define COMPONENTS_CAST_STREAMING_RENDERER_CAST_STREAMING_DEMUXER_H_
 
-#include "components/cast_streaming/mojo/cast_streaming_session.mojom.h"
+#include "components/cast_streaming/public/mojom/cast_streaming_session.mojom.h"
 #include "media/base/demuxer.h"
 #include "mojo/public/cpp/bindings/associated_receiver.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
diff --git a/components/cast_streaming/renderer/cast_streaming_receiver.h b/components/cast_streaming/renderer/cast_streaming_receiver.h
index 57ba88c..18ea020f 100644
--- a/components/cast_streaming/renderer/cast_streaming_receiver.h
+++ b/components/cast_streaming/renderer/cast_streaming_receiver.h
@@ -7,7 +7,7 @@
 
 #include "base/callback.h"
 #include "base/sequence_checker.h"
-#include "components/cast_streaming/mojo/cast_streaming_session.mojom.h"
+#include "components/cast_streaming/public/mojom/cast_streaming_session.mojom.h"
 #include "mojo/public/cpp/bindings/associated_receiver.h"
 #include "mojo/public/cpp/bindings/pending_associated_receiver.h"
 
diff --git a/components/certificate_transparency/BUILD.gn b/components/certificate_transparency/BUILD.gn
index 3eedd649..e560bd9 100644
--- a/components/certificate_transparency/BUILD.gn
+++ b/components/certificate_transparency/BUILD.gn
@@ -2,12 +2,24 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+import("//third_party/protobuf/proto_library.gni")
+
+proto_library("proto") {
+  sources = [
+    "certificate_transparency.proto",
+    "certificate_transparency_config.proto",
+    "ct_timestamp.proto",
+  ]
+}
+
 static_library("certificate_transparency") {
   sources = [
     "chrome_ct_policy_enforcer.cc",
     "chrome_ct_policy_enforcer.h",
     "chrome_require_ct_delegate.cc",
     "chrome_require_ct_delegate.h",
+    "ct_features.cc",
+    "ct_features.h",
     "ct_known_logs.cc",
     "ct_known_logs.h",
     "pref_names.cc",
@@ -24,6 +36,8 @@
     "//net",
     "//url",
   ]
+
+  public_deps = [ ":proto" ]
 }
 
 source_set("unit_tests") {
diff --git a/components/certificate_transparency/certificate_transparency.proto b/components/certificate_transparency/certificate_transparency.proto
new file mode 100644
index 0000000..3cd039d
--- /dev/null
+++ b/components/certificate_transparency/certificate_transparency.proto
@@ -0,0 +1,116 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+syntax = "proto3";
+
+package chrome_browser_certificate_transparency;
+
+import "ct_timestamp.proto";
+
+option optimize_for = LITE_RUNTIME;
+
+// Represents the final state of a log at the time it was made read-only.
+message FinalTreeHead {
+  // Size of the log at the time it was made read-only.
+  uint64 tree_size = 1;
+  // Root hash of the log (base64-encoded) at the time it was made read-only.
+  string sha256_root_hash = 2;
+}
+
+message CTLog {
+  // Human-readable description to identify log.
+  string description = 1;
+  // Public key of the log, as a DER-encoded ASN.1 SubjectPublicKeyInfo
+  // structure, then encoded as base64
+  // (https://tools.ietf.org/html/rfc5280#section-4.1.2.7).
+  string key = 2;
+  // The base64-encoded LogID found in SCTs issued by this log
+  // (https://tools.ietf.org/html/rfc6962#section-3.2).
+  string log_id = 3;
+  // Maximum merge delay, in seconds. The log should not take longer than this
+  // to incorporate a certificate.
+  uint64 mmd_secs = 4;
+  // URL of the log's HTTP API.
+  string url = 5;
+
+  message Interval {
+    CTTimestamp start = 1;
+    CTTimestamp end = 2;
+  }
+  // The log will only accept certificates that expire between those dates.
+  // Start time is inclusive, end time is not inclusive.
+  Interval temporal_interval = 6;
+
+  enum Purpose {
+    UNSET_PURPOSE = 0;
+    PROD = 1;
+    TEST = 2;
+  }
+  // Whether the log is for production purposes, or test only.
+  Purpose purpose = 7;
+
+  enum CurrentState {
+    UNSET_STATE = 0;
+    PENDING = 1;
+    QUALIFIED = 2;
+    USABLE = 3;
+    READ_ONLY = 4;
+    RETIRED = 5;
+    REJECTED = 6;
+  }
+  message State {
+    // Current state of the log.
+    CurrentState current_state = 1;
+    // Time at which the log entered this state.
+    CTTimestamp state_start = 2;
+  }
+  // State history of the log. Inverse chronological order, first element should
+  // be the current state.
+  repeated State state = 8;
+
+  message OperatorChange {
+    // Name of the log operator.
+    string name = 1;
+    // Timestamp at which this operator started operating this log.
+    CTTimestamp operator_start = 2;
+  }
+  // History of all log operators that have ever operated this log, including
+  // the timestamp at which each started operating it. Inverse chronological
+  // order, first element should be the current operator.
+  repeated OperatorChange operator_history = 9;
+
+  // State of the log at the time it was made read-only. Should only be set if
+  // state is READ_ONLY.
+  FinalTreeHead read_only_info = 16;
+}
+
+message LogOperator {
+  // Name of this log operator.
+  string name = 1;
+  // Email addresses at which the log operator can be reached.
+  repeated string email = 2;
+}
+
+message CTLogList {
+  // Major version of the list, incremented any time there are changes in the
+  // list, except for trivial (i.e. timestamp-only) changes.
+  uint64 list_version_major = 1;
+  // Minor version of the list, incremented any time the list is modified with
+  // only trivial (i.e. timestamp-only) changes. Allows consumers to determine
+  // the timestamp at which certain changes occur; for example, if a log is
+  // rejected, a consumer can look at the minor version 1 of that major version
+  // to determine at what timestamp that change was made.
+  uint64 list_version_minor = 2;
+  // Log list timestamp. This is meant to be used for freshness checks, and is
+  // updated periodically regardless of whether the list contents' have changed.
+  // Use list_version_major instead if monitoring for list contents' changes.
+  CTTimestamp timestamp = 3;
+  // Compatibility version, incremented if the list structure is changed in a
+  // non-backwards-compatible way.
+  uint64 compatibility_version = 4;
+  // Contains all known log operators.
+  repeated LogOperator operators = 5;
+  // Contains all known logs.
+  repeated CTLog logs = 6;
+}
\ No newline at end of file
diff --git a/components/certificate_transparency/certificate_transparency_config.proto b/components/certificate_transparency/certificate_transparency_config.proto
new file mode 100644
index 0000000..e2f2db2
--- /dev/null
+++ b/components/certificate_transparency/certificate_transparency_config.proto
@@ -0,0 +1,19 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+syntax = "proto3";
+
+package chrome_browser_certificate_transparency;
+
+import "certificate_transparency.proto";
+
+option optimize_for = LITE_RUNTIME;
+
+// Certificate transparency configuration as used by Chrome.
+message CTConfig {
+  // Emergency switch to disable all CT enforcement.
+  bool disable_ct_enforcement = 1;
+  // Logs Chrome should recognize.
+  CTLogList log_list = 2;
+}
\ No newline at end of file
diff --git a/components/certificate_transparency/ct_features.cc b/components/certificate_transparency/ct_features.cc
new file mode 100644
index 0000000..16f8de4
--- /dev/null
+++ b/components/certificate_transparency/ct_features.cc
@@ -0,0 +1,15 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/certificate_transparency/ct_features.h"
+
+namespace certificate_transparency {
+namespace features {
+
+const base::Feature kCertificateTransparencyComponentUpdater{
+    "CertificateTransparencyComponentUpdater",
+    base::FEATURE_DISABLED_BY_DEFAULT};
+
+}  // namespace features
+}  // namespace certificate_transparency
diff --git a/components/certificate_transparency/ct_features.h b/components/certificate_transparency/ct_features.h
new file mode 100644
index 0000000..ca2e926
--- /dev/null
+++ b/components/certificate_transparency/ct_features.h
@@ -0,0 +1,18 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_CERTIFICATE_TRANSPARENCY_CT_FEATURES_H_
+#define COMPONENTS_CERTIFICATE_TRANSPARENCY_CT_FEATURES_H_
+
+#include "base/feature_list.h"
+
+namespace certificate_transparency {
+namespace features {
+
+extern const base::Feature kCertificateTransparencyComponentUpdater;
+
+}  // namespace features
+}  // namespace certificate_transparency
+
+#endif  // COMPONENTS_CERTIFICATE_TRANSPARENCY_CT_FEATURES_H_
diff --git a/components/certificate_transparency/ct_timestamp.proto b/components/certificate_transparency/ct_timestamp.proto
new file mode 100644
index 0000000..da579e81
--- /dev/null
+++ b/components/certificate_transparency/ct_timestamp.proto
@@ -0,0 +1,15 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+syntax = "proto3";
+
+package chrome_browser_certificate_transparency;
+
+option optimize_for = LITE_RUNTIME;
+
+message CTTimestamp {
+  int64 seconds = 1;
+
+  int32 nanos = 2;
+}
\ No newline at end of file
diff --git a/components/discardable_memory/client/client_discardable_shared_memory_manager.cc b/components/discardable_memory/client/client_discardable_shared_memory_manager.cc
index e1d9286d..2d58017 100644
--- a/components/discardable_memory/client/client_discardable_shared_memory_manager.cc
+++ b/components/discardable_memory/client/client_discardable_shared_memory_manager.cc
@@ -29,13 +29,6 @@
 
 namespace discardable_memory {
 
-// This controls whether unlocked memory is released when |ReleaseFreeMemory| is
-// called. Enabling this causes |ReleaseFreeMemory| to release all
-// unlocked memory instances, as well as release all free memory (as opposed to
-// merely releasing all free memory).
-const base::Feature kPurgeUnlockedMemory{"PurgeUnlockedMemory",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
-
 // This controls whether unlocked memory is periodically purged from the
 // foreground process. Enabling this causes a task to be scheduled at regular
 // intervals to purge unlocked memory that hasn't been touched in a while. This
@@ -483,17 +476,10 @@
     }
   }
 
-  ReleaseFreeMemoryImpl();
+  ReleaseFreeMemory();
 }
 
 void ClientDiscardableSharedMemoryManager::ReleaseFreeMemory() {
-  if (base::FeatureList::IsEnabled(kPurgeUnlockedMemory))
-    BackgroundPurge();
-  else
-    ReleaseFreeMemoryImpl();
-}
-
-void ClientDiscardableSharedMemoryManager::ReleaseFreeMemoryImpl() {
   TRACE_EVENT0("blink",
                "ClientDiscardableSharedMemoryManager::ReleaseFreeMemory()");
   base::AutoLock lock(lock_);
diff --git a/components/discardable_memory/client/client_discardable_shared_memory_manager.h b/components/discardable_memory/client/client_discardable_shared_memory_manager.h
index 009450e..5efc90219 100644
--- a/components/discardable_memory/client/client_discardable_shared_memory_manager.h
+++ b/components/discardable_memory/client/client_discardable_shared_memory_manager.h
@@ -66,7 +66,7 @@
   void OnBackgrounded();
 
   // Release memory and associated resources that have been purged.
-  void ReleaseFreeMemory() override;
+  void ReleaseFreeMemory() override LOCKS_EXCLUDED(lock_);
 
   bool LockSpan(DiscardableSharedMemoryHeap::Span* span)
       EXCLUSIVE_LOCKS_REQUIRED(lock_);
@@ -177,7 +177,6 @@
 
   // Releases all unlocked memory that was last locked at least |min_age| ago.
   void PurgeUnlockedMemory(base::TimeDelta min_age) LOCKS_EXCLUDED(lock_);
-  void ReleaseFreeMemoryImpl() LOCKS_EXCLUDED(lock_);
   void UnlockAndReleaseMemory(
       DiscardableMemoryImpl* memory,
       std::unique_ptr<DiscardableSharedMemoryHeap::Span> span)
diff --git a/components/download/internal/common/download_utils.cc b/components/download/internal/common/download_utils.cc
index 46f111b..e53e6c3 100644
--- a/components/download/internal/common/download_utils.cc
+++ b/components/download/internal/common/download_utils.cc
@@ -54,6 +54,9 @@
 // Default time for an overwritten download to be removed from the history.
 const int kDefaultOverwrittenDownloadExpiredTimeInDays = 90;
 
+// Default buffer size in bytes to write to the download file.
+const int kDefaultDownloadFileBufferSize = 4096;
+
 #if defined(OS_ANDROID)
 // Default maximum length of a downloaded file name on Android.
 const int kDefaultMaxFileNameLengthOnAndroid = 127;
@@ -655,4 +658,10 @@
   return base::TimeDelta::FromDays(expired_days);
 }
 
+int GetDownloadFileBufferSize() {
+  return base::GetFieldTrialParamByFeatureAsInt(
+      features::kAllowFileBufferSizeControl, kDownloadFileBufferSizeFinchKey,
+      kDefaultDownloadFileBufferSize);
+}
+
 }  // namespace download
diff --git a/components/download/internal/common/stream_handle_input_stream.cc b/components/download/internal/common/stream_handle_input_stream.cc
index a118e5a..d694991 100644
--- a/components/download/internal/common/stream_handle_input_stream.cc
+++ b/components/download/internal/common/stream_handle_input_stream.cc
@@ -7,15 +7,11 @@
 #include "base/bind.h"
 #include "base/task/post_task.h"
 #include "components/download/public/common/download_interrupt_reasons_utils.h"
+#include "components/download/public/common/download_utils.h"
 #include "mojo/public/c/system/types.h"
 
 namespace download {
 
-namespace {
-// Data length to read from data pipe.
-const int kBytesToRead = 4096;
-}  // namespace
-
 StreamHandleInputStream::StreamHandleInputStream(
     mojom::DownloadStreamHandlePtr stream_handle)
     : stream_handle_(std::move(stream_handle)),
@@ -71,8 +67,9 @@
   if (!handle_watcher_)
     return InputStream::EMPTY;
 
-  *length = kBytesToRead;
-  *data = base::MakeRefCounted<net::IOBuffer>(kBytesToRead);
+  static int bytes_to_read = GetDownloadFileBufferSize();
+  *length = bytes_to_read;
+  *data = base::MakeRefCounted<net::IOBuffer>(bytes_to_read);
   MojoResult mojo_result = stream_handle_->stream->ReadData(
       (*data)->data(), (uint32_t*)length, MOJO_READ_DATA_FLAG_NONE);
   // TODO(qinmin): figure out when COMPLETE should be returned.
diff --git a/components/download/public/common/download_features.cc b/components/download/public/common/download_features.cc
index 409d18d8..04403829 100644
--- a/components/download/public/common/download_features.cc
+++ b/components/download/public/common/download_features.cc
@@ -70,6 +70,9 @@
 const base::Feature kDeleteOverwrittenDownloads{
     "DeleteOverwrittenDownloads", base::FEATURE_ENABLED_BY_DEFAULT};
 
+const base::Feature kAllowFileBufferSizeControl{
+    "AllowFileBufferSizeControl", base::FEATURE_DISABLED_BY_DEFAULT};
+
 }  // namespace features
 
 namespace switches {
diff --git a/components/download/public/common/download_features.h b/components/download/public/common/download_features.h
index 891cf65..b34ffc9 100644
--- a/components/download/public/common/download_features.h
+++ b/components/download/public/common/download_features.h
@@ -72,6 +72,10 @@
 COMPONENTS_DOWNLOAD_EXPORT extern const base::Feature
     kDeleteOverwrittenDownloads;
 
+// Whether to allow changing the size of file buffer.
+COMPONENTS_DOWNLOAD_EXPORT extern const base::Feature
+    kAllowFileBufferSizeControl;
+
 }  // namespace features
 
 namespace switches {
diff --git a/components/download/public/common/download_utils.h b/components/download/public/common/download_utils.h
index e1e00db..454274b 100644
--- a/components/download/public/common/download_utils.h
+++ b/components/download/public/common/download_utils.h
@@ -122,11 +122,17 @@
 constexpr char kOverwrittenDownloadDeleteTimeFinchKey[] =
     "overwritten_download_delete_days";
 
+// Finch parameter key value for the buffer size to write to the download file.
+constexpr char kDownloadFileBufferSizeFinchKey[] = "download_file_buffer_size";
+
 // Returns the time to delete expired downloads.
 COMPONENTS_DOWNLOAD_EXPORT base::TimeDelta GetExpiredDownloadDeleteTime();
 
 // Returns the time in days to delete download that is overwritten by others.
 COMPONENTS_DOWNLOAD_EXPORT base::TimeDelta GetOverwrittenDownloadDeleteTime();
+
+// Returns the size of the file buffer that reads data from the data pipe.
+COMPONENTS_DOWNLOAD_EXPORT int GetDownloadFileBufferSize();
 }  // namespace download
 
 #endif  // COMPONENTS_DOWNLOAD_PUBLIC_COMMON_DOWNLOAD_UTILS_H_
diff --git a/components/feed/core/proto/BUILD.gn b/components/feed/core/proto/BUILD.gn
index d14b9442..1735016 100644
--- a/components/feed/core/proto/BUILD.gn
+++ b/components/feed/core/proto/BUILD.gn
@@ -38,6 +38,7 @@
     "v2/wire/feed_response.proto",
     "v2/wire/next_page_token.proto",
     "v2/wire/payload_metadata.proto",
+    "v2/wire/reliability_logging_enums.proto",
     "v2/wire/render_data.proto",
     "v2/wire/request.proto",
     "v2/wire/request_schedule.proto",
diff --git a/components/feed/core/proto/v2/wire/capability.proto b/components/feed/core/proto/v2/wire/capability.proto
index 854fd053..e0bb418 100644
--- a/components/feed/core/proto/v2/wire/capability.proto
+++ b/components/feed/core/proto/v2/wire/capability.proto
@@ -14,7 +14,7 @@
   INFINITE_FEED = 5;
   DISMISS_COMMAND = 9;
   UNDO_FOR_DISMISS_COMMAND = 10;
-  WEB_FEEDS = 11;
+  WEB_FEEDS = 11 [deprecated = true];
   SPORTS_IN_GAME_UPDATE = 35;
   PERSIST_GAME_CONTENT = 46;
   OPEN_VIDEO_COMMAND = 16;
diff --git a/components/feed/core/proto/v2/wire/reliability_logging_enums.proto b/components/feed/core/proto/v2/wire/reliability_logging_enums.proto
new file mode 100644
index 0000000..afefe92
--- /dev/null
+++ b/components/feed/core/proto/v2/wire/reliability_logging_enums.proto
@@ -0,0 +1,45 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+syntax = "proto2";
+
+package feedreliabilitylogging;
+
+option optimize_for = LITE_RUNTIME;
+
+enum DiscoverLaunchResult {
+  CARDS_FULLY_RENDERED = 1;
+  CARDS_RENDERED_BUT_IMAGE_LOADING_CANCELLED = 2;
+  CARDS_RENDERED_BUT_IMAGE_LOADING_FAILED = 3;
+  INELIGIBLE_DISCOVER_DISABLED = 15;
+  NO_CARDS_FAILED_TO_GET_AUTH_TOKEN = 23;
+  NO_CARDS_REQUEST_ERROR_NO_INTERNET = 24;
+  NO_CARDS_REQUEST_ERROR_OTHER = 25;
+  NO_CARDS_RESPONSE_ERROR_NON_200 = 26;
+  NO_CARDS_RESPONSE_ERROR_ZERO_CARDS = 27;
+  NO_CARDS_UNKNOWN_REASON = 29;
+  FAILED_TO_RENDER = 5;
+  NAVIGATED_TO_ANOTHER_TAB = 10;
+  FRAGMENT_STOPPED = 11;
+  ABORTED_DUE_TO_INVALID_STATE = 6;
+  NAVIGATED_AWAY = 31;
+  FEED_HIDDEN = 32;
+}
+enum DiscoverCardReadCacheResult {
+  CACHE_READ_OK = 1;
+  EMPTY_SESSION = 2;
+  STALE = 3;
+  FAILED = 7;
+}
+enum DiscoverAboveTheFoldRenderResult {
+  SUCCESS = 1;
+  FULL_FEED_ERROR = 3;
+  INTERNAL_ERROR = 4;
+}
+enum DiscoverImagesInViewportLoadResult {
+  IMAGES_FULLY_RENDERED = 1;
+  SOME_IMAGES_FAILED_TO_RENDER = 2;
+  ALL_IMAGES_FAILED_TO_RENDER = 3;
+  IMAGE_LOADING_CANCELLED = 4;
+}
diff --git a/components/feed/core/proto/v2/wire/web_feed_matcher.proto b/components/feed/core/proto/v2/wire/web_feed_matcher.proto
index dbe9fc94..133d98b 100644
--- a/components/feed/core/proto/v2/wire/web_feed_matcher.proto
+++ b/components/feed/core/proto/v2/wire/web_feed_matcher.proto
@@ -19,7 +19,7 @@
     }
     oneof match {
       string text = 2;
-      string regex = 3;
+      string partial_match_regex = 3;
     }
     CriteriaType criteria_type = 1;
   }
diff --git a/components/feed/core/proto/v2/wire/web_feeds.proto b/components/feed/core/proto/v2/wire/web_feeds.proto
index df91604..1637775 100644
--- a/components/feed/core/proto/v2/wire/web_feeds.proto
+++ b/components/feed/core/proto/v2/wire/web_feeds.proto
@@ -15,6 +15,7 @@
     STATE_UNSPECIFIED = 0;
     INACTIVE = 1;
     ACTIVE = 2;
+    SUSPENDED = 3;
   }
   string name = 1;
   string title = 2;
diff --git a/components/feed/core/v2/api_test/feed_api_stream_unittest.cc b/components/feed/core/v2/api_test/feed_api_stream_unittest.cc
index 9619d85..f4532a4a 100644
--- a/components/feed/core/v2/api_test/feed_api_stream_unittest.cc
+++ b/components/feed/core/v2/api_test/feed_api_stream_unittest.cc
@@ -353,19 +353,27 @@
 }
 
 TEST_F(FeedApiTest, ForceRefreshForDebugging) {
-  // First do a normal load via network that will fail.
-  is_offline_ = true;
-  TestForYouSurface surface(stream_.get());
-  WaitForIdleTaskQueue();
+  // Enable WebFeed and subscribe to a page, so that we can check if the WebFeed
+  // is refreshed by ForceRefreshForDebugging.
+  base::test::ScopedFeatureList features;
+  features.InitAndEnableFeature(kWebFeed);
+  // WebFeed stream is only fetched when there's a subscription.
+  FollowWebFeed(MakeWebFeedPageInformation("https://cats.com"));
 
-  // Next, force a refresh that results in a successful load.
-  is_offline_ = false;
+  // Force a refresh that results in a successful load of both feed types.
+  response_translator_.InjectResponse(MakeTypicalInitialModelState());
   response_translator_.InjectResponse(MakeTypicalInitialModelState());
   stream_->ForceRefreshForDebugging();
 
   WaitForIdleTaskQueue();
-  EXPECT_EQ("loading -> cant-refresh -> loading -> 2 slices",
-            surface.DescribeUpdates());
+
+  is_offline_ = true;
+
+  TestForYouSurface surface(stream_.get());
+  TestWebFeedSurface web_feed_surface(stream_.get());
+  WaitForIdleTaskQueue();
+  EXPECT_EQ("2 slices", surface.DescribeState());
+  EXPECT_EQ("2 slices", web_feed_surface.DescribeState());
 }
 
 TEST_F(FeedApiTest, RefreshScheduleFlow) {
@@ -2163,12 +2171,12 @@
 
 TEST_F(FeedApiTest,
        LoadingForYouStreamTriggersWebFeedRefreshIfNoUnreadContent) {
-  Config config = GetFeedConfig();
-  config.refresh_web_feed_after_for_you_feed_loads = true;
-  SetFeedConfigForTesting(config);
   base::test::ScopedFeatureList features;
   features.InitAndEnableFeature(kWebFeed);
 
+  // WebFeed stream is only fetched when there's a subscription.
+  FollowWebFeed(MakeWebFeedPageInformation("https://cats.com"));
+
   // Both streams should be fetched.
   response_translator_.InjectResponse(MakeTypicalInitialModelState());
   response_translator_.InjectResponse(MakeTypicalInitialModelState());
@@ -2188,15 +2196,30 @@
             metrics_reporter_->load_stream_status);
 }
 
+TEST_F(FeedApiTest,
+       LoadingForYouStreamDoesNotTriggerWebFeedRefreshIfNoSubscriptions) {
+  base::test::ScopedFeatureList features;
+  features.InitAndEnableFeature(kWebFeed);
+
+  // Only for-you feed is fetched on load.
+  response_translator_.InjectResponse(MakeTypicalInitialModelState());
+  TestForYouSurface surface(stream_.get());
+  WaitForIdleTaskQueue();
+  ASSERT_EQ(1, network_.send_query_call_count);
+  EXPECT_EQ("loading -> 2 slices", surface.DescribeUpdates());
+  EXPECT_EQ(LoadStreamStatus::kLoadedFromNetwork,
+            metrics_reporter_->load_stream_status);
+}
+
 TEST_F(
     FeedApiTest,
     LoadForYouStreamDoesNotTriggerWebFeedRefreshContentIfIsAlreadyAvailable) {
-  Config config = GetFeedConfig();
-  config.refresh_web_feed_after_for_you_feed_loads = true;
-  SetFeedConfigForTesting(config);
   base::test::ScopedFeatureList features;
   features.InitAndEnableFeature(kWebFeed);
 
+  // WebFeed stream is only fetched when there's a subscription.
+  FollowWebFeed(MakeWebFeedPageInformation("https://cats.com"));
+
   // Both streams should be fetched because there is no unread web-feed content.
   response_translator_.InjectResponse(MakeTypicalInitialModelState());
   response_translator_.InjectResponse(MakeTypicalInitialModelState());
diff --git a/components/feed/core/v2/api_test/feed_api_subscriptions_unittest.cc b/components/feed/core/v2/api_test/feed_api_subscriptions_unittest.cc
index f449973..887cd6a9 100644
--- a/components/feed/core/v2/api_test/feed_api_subscriptions_unittest.cc
+++ b/components/feed/core/v2/api_test/feed_api_subscriptions_unittest.cc
@@ -21,45 +21,6 @@
 namespace test {
 namespace {
 using testing::PrintToString;
-constexpr int64_t kFollowerCount = 123;
-
-WebFeedPageInformation MakeWebFeedPageInformation(const std::string& url) {
-  WebFeedPageInformation info;
-  info.SetUrl(GURL(url));
-  return info;
-}
-
-feedwire::webfeed::WebFeedMatcher MakeDomainMatcher(const std::string& domain) {
-  feedwire::webfeed::WebFeedMatcher result;
-  feedwire::webfeed::WebFeedMatcher::Criteria* criteria = result.add_criteria();
-  criteria->set_criteria_type(
-      feedwire::webfeed::WebFeedMatcher::Criteria::PAGE_URL_HOST_SUFFIX);
-  criteria->set_text(domain);
-  return result;
-}
-
-feedwire::webfeed::WebFeed MakeWireWebFeed(const std::string& name) {
-  feedwire::webfeed::WebFeed result;
-  result.set_name("id_" + name);
-  result.set_title("Title " + name);
-  result.set_subtitle("Subtitle " + name);
-  result.set_detail_text("details...");
-  result.set_visit_uri("https://" + name + ".com");
-  result.set_follower_count(kFollowerCount);
-  *result.add_web_feed_matchers() = MakeDomainMatcher(name + ".com");
-  return result;
-}
-
-feedwire::webfeed::FollowWebFeedResponse SuccessfulFollowResponse(
-    const std::string& follow_name) {
-  feedwire::webfeed::FollowWebFeedResponse response;
-  *response.mutable_web_feed() = MakeWireWebFeed(follow_name);
-  return response;
-}
-
-feedwire::webfeed::UnfollowWebFeedResponse SuccessfulUnfollowResponse() {
-  return {};
-}
 
 FeedNetwork::RawResponse MakeFailedResponse() {
   FeedNetwork::RawResponse network_response;
diff --git a/components/feed/core/v2/api_test/feed_api_test.cc b/components/feed/core/v2/api_test/feed_api_test.cc
index debe207..81f14a4 100644
--- a/components/feed/core/v2/api_test/feed_api_test.cc
+++ b/components/feed/core/v2/api_test/feed_api_test.cc
@@ -194,6 +194,10 @@
   return result;
 }
 
+std::string TestSurfaceBase::DescribeState() {
+  return described_updates_.empty() ? "" : described_updates_.back();
+}
+
 std::map<std::string, std::string> TestSurfaceBase::GetDataStoreEntries()
     const {
   return data_store_entries_;
@@ -613,9 +617,6 @@
   // `use_feed_query_requests_for_web_feeds` is a temporary option for
   // debugging, setting it to false tests the preferred endpoint.
   config.use_feed_query_requests_for_web_feeds = false;
-  // Disable refreshing the Web Feed stream after the for-you stream is loaded,
-  // to simplify tests unrelated to this feature.
-  config.refresh_web_feed_after_for_you_feed_loads = false;
   SetFeedConfigForTesting(config);
 
   feed::prefs::RegisterFeedSharedProfilePrefs(profile_prefs_.registry());
@@ -732,6 +733,15 @@
   return ss.str();
 }
 
+void FeedApiTest::FollowWebFeed(const WebFeedPageInformation page_info) {
+  CallbackReceiver<WebFeedSubscriptions::FollowWebFeedResult> callback;
+  network_.InjectResponse(SuccessfulFollowResponse(page_info.url().host()));
+  stream_->subscriptions().FollowWebFeed(page_info, callback.Bind());
+
+  EXPECT_EQ(WebFeedSubscriptionRequestStatus::kSuccess,
+            callback.RunAndGetResult().request_status);
+}
+
 void FeedApiTest::UploadActions(std::vector<feedwire::FeedAction> actions) {
   size_t actions_remaining = actions.size();
   for (feedwire::FeedAction& action : actions) {
diff --git a/components/feed/core/v2/api_test/feed_api_test.h b/components/feed/core/v2/api_test/feed_api_test.h
index 3b34d86..935ba515 100644
--- a/components/feed/core/v2/api_test/feed_api_test.h
+++ b/components/feed/core/v2/api_test/feed_api_test.h
@@ -26,6 +26,7 @@
 #include "components/feed/core/v2/metrics_reporter.h"
 #include "components/feed/core/v2/prefs.h"
 #include "components/feed/core/v2/public/feed_stream_surface.h"
+#include "components/feed/core/v2/public/types.h"
 #include "components/feed/core/v2/stream_model.h"
 #include "components/feed/core/v2/test/proto_printer.h"
 #include "components/feed/core/v2/test/stream_builder.h"
@@ -91,6 +92,8 @@
   // Returns a description of the updates this surface received. Each update
   // is separated by ' -> '. Returns only the updates since the last call.
   std::string DescribeUpdates();
+  // Returns a description of the current state, ignoring prior updates.
+  std::string DescribeState();
 
   std::map<std::string, std::string> GetDataStoreEntries() const;
 
@@ -369,6 +372,7 @@
   bool IsTaskQueueIdle() const;
   void WaitForIdleTaskQueue();
   void UnloadModel(const StreamType& stream_type);
+  void FollowWebFeed(const WebFeedPageInformation page_info);
 
   // Dumps the state of |FeedStore| to a string for debugging.
   std::string DumpStoreState(bool print_keys = false);
diff --git a/components/feed/core/v2/config.h b/components/feed/core/v2/config.h
index 61e3b00..c5b395f 100644
--- a/components/feed/core/v2/config.h
+++ b/components/feed/core/v2/config.h
@@ -80,9 +80,6 @@
   // Number of days of history to query when determining whether to show the
   // follow accelerator.
   int webfeed_accelerator_recent_visit_history_days = 14;
-  // After loading the for-you feed, should the web-feed be refreshed as well?
-  // This is true except for testing.
-  bool refresh_web_feed_after_for_you_feed_loads = true;
 
   // Configuration for `PersistentKeyValueStore`.
 
diff --git a/components/feed/core/v2/feed_stream.cc b/components/feed/core/v2/feed_stream.cc
index 23b728c..bec041d 100644
--- a/components/feed/core/v2/feed_stream.cc
+++ b/components/feed/core/v2/feed_stream.cc
@@ -245,10 +245,10 @@
 
   // When done loading the for-you feed, try to refresh the web-feed if there's
   // no unread content.
-  if (base::FeatureList::IsEnabled(kWebFeed) &&
-      GetFeedConfig().refresh_web_feed_after_for_you_feed_loads) {
+  if (base::FeatureList::IsEnabled(kWebFeed)) {
     if (result.stream_type.IsForYou()) {
-      if (!HasUnreadContent(kWebFeedStream)) {
+      if (!HasUnreadContent(kWebFeedStream) &&
+          subscriptions().IsWebFeedSubscriber()) {
         LoadStreamTask::Options options;
         options.load_type = LoadStreamTask::LoadType::kBackgroundRefresh;
         options.stream_type = kWebFeedStream;
@@ -582,7 +582,7 @@
   if (base::FeatureList::IsEnabled(kWebFeed)) {
     UnloadModel(kWebFeedStream);
     store_->ClearStreamData(kWebFeedStream, base::DoNothing());
-    TriggerStreamLoad(kWebFeedStream);
+    // WebFeed is refreshed automatically after for-you.
   }
 }
 
diff --git a/components/feed/core/v2/test/proto_printer.cc b/components/feed/core/v2/test/proto_printer.cc
index 8b92d1d..f059c85 100644
--- a/components/feed/core/v2/test/proto_printer.cc
+++ b/components/feed/core/v2/test/proto_printer.cc
@@ -279,7 +279,7 @@
       const feedwire::webfeed::WebFeedMatcher::Criteria& v) {
     BeginMessage();
     PRINT_FIELD(text);
-    PRINT_FIELD(regex);
+    PRINT_FIELD(partial_match_regex);
     PRINT_FIELD(criteria_type);
     EndMessage();
     return *this;
diff --git a/components/feed/core/v2/test/stream_builder.cc b/components/feed/core/v2/test/stream_builder.cc
index fad2d5f..2191682 100644
--- a/components/feed/core/v2/test/stream_builder.cc
+++ b/components/feed/core/v2/test/stream_builder.cc
@@ -278,4 +278,42 @@
   return result;
 }
 
+feedwire::webfeed::WebFeed MakeWireWebFeed(const std::string& name) {
+  feedwire::webfeed::WebFeed result;
+  result.set_name("id_" + name);
+  result.set_title("Title " + name);
+  result.set_subtitle("Subtitle " + name);
+  result.set_detail_text("details...");
+  result.set_visit_uri("https://" + name + ".com");
+  result.set_follower_count(kFollowerCount);
+  *result.add_web_feed_matchers() = MakeDomainMatcher(name + ".com");
+  return result;
+}
+
+feedwire::webfeed::FollowWebFeedResponse SuccessfulFollowResponse(
+    const std::string& follow_name) {
+  feedwire::webfeed::FollowWebFeedResponse response;
+  *response.mutable_web_feed() = MakeWireWebFeed(follow_name);
+  return response;
+}
+
+feedwire::webfeed::UnfollowWebFeedResponse SuccessfulUnfollowResponse() {
+  return {};
+}
+
+WebFeedPageInformation MakeWebFeedPageInformation(const std::string& url) {
+  WebFeedPageInformation info;
+  info.SetUrl(GURL(url));
+  return info;
+}
+
+feedwire::webfeed::WebFeedMatcher MakeDomainMatcher(const std::string& domain) {
+  feedwire::webfeed::WebFeedMatcher result;
+  feedwire::webfeed::WebFeedMatcher::Criteria* criteria = result.add_criteria();
+  criteria->set_criteria_type(
+      feedwire::webfeed::WebFeedMatcher::Criteria::PAGE_URL_HOST_SUFFIX);
+  criteria->set_text(domain);
+  return result;
+}
+
 }  // namespace feed
diff --git a/components/feed/core/v2/test/stream_builder.h b/components/feed/core/v2/test/stream_builder.h
index f52dcb2e..b805428d 100644
--- a/components/feed/core/v2/test/stream_builder.h
+++ b/components/feed/core/v2/test/stream_builder.h
@@ -11,6 +11,7 @@
 
 #include "base/time/time.h"
 #include "components/feed/core/proto/v2/store.pb.h"
+#include "components/feed/core/proto/v2/wire/web_feeds.pb.h"
 #include "components/feed/core/v2/proto_util.h"
 #include "components/feed/core/v2/protocol_translator.h"
 #include "components/feed/core/v2/types.h"
@@ -20,6 +21,7 @@
 struct StreamModelUpdateRequest;
 
 extern base::Time kTestTimeEpoch;
+constexpr int64_t kFollowerCount = 123;
 
 ContentId MakeContentId(ContentId::Type type,
                         std::string content_domain,
@@ -92,7 +94,13 @@
     StreamModelUpdateRequest::Source source =
         StreamModelUpdateRequest::Source::kNetworkLoadMore);
 
+feedwire::webfeed::WebFeed MakeWireWebFeed(const std::string& name);
 feedstore::WebFeedInfo MakeWebFeedInfo(const std::string& name);
+WebFeedPageInformation MakeWebFeedPageInformation(const std::string& url);
+feedwire::webfeed::FollowWebFeedResponse SuccessfulFollowResponse(
+    const std::string& follow_name);
+feedwire::webfeed::UnfollowWebFeedResponse SuccessfulUnfollowResponse();
+feedwire::webfeed::WebFeedMatcher MakeDomainMatcher(const std::string& domain);
 
 }  // namespace feed
 
diff --git a/components/feed/core/v2/web_feed_subscriptions/web_feed_index.cc b/components/feed/core/v2/web_feed_subscriptions/web_feed_index.cc
index 464e0d4f..68d21b4 100644
--- a/components/feed/core/v2/web_feed_subscriptions/web_feed_index.cc
+++ b/components/feed/core/v2/web_feed_subscriptions/web_feed_index.cc
@@ -226,8 +226,9 @@
       const std::string* text = nullptr;
       const std::string* regex = nullptr;
       switch (criteria.match_case()) {
-        case feedwire::webfeed::WebFeedMatcher::Criteria::MatchCase::kRegex:
-          regex = &criteria.regex();
+        case feedwire::webfeed::WebFeedMatcher::Criteria::MatchCase::
+            kPartialMatchRegex:
+          regex = &criteria.partial_match_regex();
           if (regex->empty())
             return false;
           break;
@@ -266,8 +267,9 @@
       const std::string* text = nullptr;
       const std::string* regex = nullptr;
       switch (criteria.match_case()) {
-        case feedwire::webfeed::WebFeedMatcher::Criteria::MatchCase::kRegex:
-          regex = &criteria.regex();
+        case feedwire::webfeed::WebFeedMatcher::Criteria::MatchCase::
+            kPartialMatchRegex:
+          regex = &criteria.partial_match_regex();
           break;
         case feedwire::webfeed::WebFeedMatcher::Criteria::MatchCase::kText:
           text = &criteria.text();
diff --git a/components/feed/core/v2/web_feed_subscriptions/web_feed_index_unittest.cc b/components/feed/core/v2/web_feed_subscriptions/web_feed_index_unittest.cc
index 9c1ed3b..b146ffb 100644
--- a/components/feed/core/v2/web_feed_subscriptions/web_feed_index_unittest.cc
+++ b/components/feed/core/v2/web_feed_subscriptions/web_feed_index_unittest.cc
@@ -33,7 +33,7 @@
     const std::string& regex) {
   feedwire::webfeed::WebFeedMatcher::Criteria criteria;
   criteria.set_criteria_type(criteria_type);
-  criteria.set_regex(regex);
+  criteria.set_partial_match_regex(regex);
   return criteria;
 }
 
diff --git a/components/feed/core/v2/web_feed_subscriptions/wire_to_store.cc b/components/feed/core/v2/web_feed_subscriptions/wire_to_store.cc
index 5310de6..52dcc6c 100644
--- a/components/feed/core/v2/web_feed_subscriptions/wire_to_store.cc
+++ b/components/feed/core/v2/web_feed_subscriptions/wire_to_store.cc
@@ -14,6 +14,7 @@
 
 feedstore::WebFeedInfo::State ConvertToStore(
     feedwire::webfeed::WebFeed::State value) {
+  // TODO(harringtond): Add SUSPENDED state.
   switch (value) {
     case feedwire::webfeed::WebFeed::State::WebFeed_State_ACTIVE:
       return feedstore::WebFeedInfo::State::WebFeedInfo_State_ACTIVE;
diff --git a/components/feedback/OWNERS b/components/feedback/OWNERS
index 699355a..795f92a 100644
--- a/components/feedback/OWNERS
+++ b/components/feedback/OWNERS
@@ -1,3 +1,9 @@
+# Primary OWNERS
+jimmyxgong@chromium.org
+joonbug@chromium.org
+
+# Backup OWNERS
+zentaro@chromium.org
 afakhry@chromium.org
 iby@chromium.org
 mutexlox@chromium.org
diff --git a/components/full_restore/full_restore_read_and_save_unittest.cc b/components/full_restore/full_restore_read_and_save_unittest.cc
index 7ec3817..63b01589 100644
--- a/components/full_restore/full_restore_read_and_save_unittest.cc
+++ b/components/full_restore/full_restore_read_and_save_unittest.cc
@@ -154,6 +154,10 @@
     ASSERT_TRUE(tmp_dir_.CreateUniqueTempDir());
   }
 
+  void TearDown() override {
+    FullRestoreSaveHandler::GetInstance()->ClearForTesting();
+  }
+
   const base::FilePath& GetPath() { return tmp_dir_.GetPath(); }
 
   void ReadFromFile(const base::FilePath& file_path) {
diff --git a/components/full_restore/full_restore_save_handler.cc b/components/full_restore/full_restore_save_handler.cc
index b5690d31..149704ce 100644
--- a/components/full_restore/full_restore_save_handler.cc
+++ b/components/full_restore/full_restore_save_handler.cc
@@ -339,6 +339,18 @@
   return arc_save_handler_->GetArcSessionId();
 }
 
+void FullRestoreSaveHandler::ClearForTesting() {
+  profile_path_to_file_handler_.clear();
+  profile_path_to_restore_data_.clear();
+  app_id_to_app_launch_infos_.clear();
+  active_profile_path_.clear();
+  primary_profile_path_.clear();
+  save_running_.clear();
+  pending_save_profile_paths_.clear();
+  window_id_to_app_restore_info_.clear();
+  app_id_to_app_launch_infos_.clear();
+}
+
 void FullRestoreSaveHandler::MaybeStartSaveTimer() {
   if (!save_timer_.IsRunning() && save_running_.empty()) {
     save_timer_.Start(FROM_HERE, kSaveDelay,
diff --git a/components/full_restore/full_restore_save_handler.h b/components/full_restore/full_restore_save_handler.h
index 503ab44c..d94bd86 100644
--- a/components/full_restore/full_restore_save_handler.h
+++ b/components/full_restore/full_restore_save_handler.h
@@ -127,6 +127,9 @@
 
   base::OneShotTimer* GetTimerForTesting() { return &save_timer_; }
 
+  // Since this is a singleton, tests may need to clear it between tests.
+  void ClearForTesting();
+
  private:
   friend class FullRestoreSaveHandlerTestApi;
 
diff --git a/components/messages/android/internal/java/src/org/chromium/components/messages/MessageBannerRenderTest.java b/components/messages/android/internal/java/src/org/chromium/components/messages/MessageBannerRenderTest.java
index c0851af3..ebb1b23 100644
--- a/components/messages/android/internal/java/src/org/chromium/components/messages/MessageBannerRenderTest.java
+++ b/components/messages/android/internal/java/src/org/chromium/components/messages/MessageBannerRenderTest.java
@@ -129,4 +129,28 @@
                 () -> { getActivity().setContentView(view, params); });
         mRenderTestRule.render(view, "message_banner_basic_with_spannable_description");
     }
+
+    @Test
+    @SmallTest
+    @Feature({"RenderTest", "Messages"})
+    public void testBasic_multilineDescriptionMaxLines() throws Exception {
+        Activity activity = getActivity();
+        final String multilineDescription = "Line 1\nLine 2\nLine 3\nLine 4";
+        PropertyModel model =
+                new PropertyModel.Builder(MessageBannerProperties.ALL_KEYS)
+                        .with(MessageBannerProperties.TITLE, "Primary Title")
+                        .with(MessageBannerProperties.DESCRIPTION, multilineDescription)
+                        .with(MessageBannerProperties.DESCRIPTION_MAX_LINES, 2)
+                        .with(MessageBannerProperties.PRIMARY_BUTTON_TEXT, "Action")
+                        .build();
+        MessageBannerView view = (MessageBannerView) LayoutInflater.from(activity).inflate(
+                R.layout.message_banner_view, null, false);
+        PropertyModelChangeProcessor.create(model, view, MessageBannerViewBinder::bind);
+        LayoutParams params =
+                new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
+
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> { getActivity().setContentView(view, params); });
+        mRenderTestRule.render(view, "message_banner_basic_with_multiline_description");
+    }
 }
\ No newline at end of file
diff --git a/components/messages/android/internal/java/src/org/chromium/components/messages/MessageBannerView.java b/components/messages/android/internal/java/src/org/chromium/components/messages/MessageBannerView.java
index 7615ef13..8d882ec 100644
--- a/components/messages/android/internal/java/src/org/chromium/components/messages/MessageBannerView.java
+++ b/components/messages/android/internal/java/src/org/chromium/components/messages/MessageBannerView.java
@@ -8,6 +8,7 @@
 import android.content.Context;
 import android.content.res.ColorStateList;
 import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.View;
@@ -70,6 +71,11 @@
         mDescription.setText(description);
     }
 
+    void setDescriptionMaxLines(int maxLines) {
+        mDescription.setMaxLines(maxLines);
+        mDescription.setEllipsize(TextUtils.TruncateAt.END);
+    }
+
     void setIcon(Drawable icon) {
         mIconView.setImageDrawable(icon);
     }
diff --git a/components/messages/android/internal/java/src/org/chromium/components/messages/MessageBannerViewBinder.java b/components/messages/android/internal/java/src/org/chromium/components/messages/MessageBannerViewBinder.java
index f4b147f..988c5a0 100644
--- a/components/messages/android/internal/java/src/org/chromium/components/messages/MessageBannerViewBinder.java
+++ b/components/messages/android/internal/java/src/org/chromium/components/messages/MessageBannerViewBinder.java
@@ -6,6 +6,7 @@
 
 import static org.chromium.components.messages.MessageBannerProperties.ALPHA;
 import static org.chromium.components.messages.MessageBannerProperties.DESCRIPTION;
+import static org.chromium.components.messages.MessageBannerProperties.DESCRIPTION_MAX_LINES;
 import static org.chromium.components.messages.MessageBannerProperties.ICON;
 import static org.chromium.components.messages.MessageBannerProperties.ICON_RESOURCE_ID;
 import static org.chromium.components.messages.MessageBannerProperties.ICON_TINT_COLOR;
@@ -42,6 +43,8 @@
             view.setTitle(model.get(TITLE));
         } else if (propertyKey == DESCRIPTION) {
             view.setDescription(model.get(DESCRIPTION));
+        } else if (propertyKey == DESCRIPTION_MAX_LINES) {
+            view.setDescriptionMaxLines(model.get(DESCRIPTION_MAX_LINES));
         } else if (propertyKey == ICON) {
             view.setIcon(model.get(ICON));
         } else if (propertyKey == ICON_RESOURCE_ID) {
diff --git a/components/messages/android/java/src/org/chromium/components/messages/MessageBannerProperties.java b/components/messages/android/java/src/org/chromium/components/messages/MessageBannerProperties.java
index 4fc6017..a21dff10 100644
--- a/components/messages/android/java/src/org/chromium/components/messages/MessageBannerProperties.java
+++ b/components/messages/android/java/src/org/chromium/components/messages/MessageBannerProperties.java
@@ -34,6 +34,11 @@
     public static final WritableObjectPropertyKey<String> TITLE = new WritableObjectPropertyKey<>();
     public static final WritableObjectPropertyKey<CharSequence> DESCRIPTION =
             new WritableObjectPropertyKey<>();
+    /**
+     * DESCRIPTION_MAX_LINES allows limiting description view to the specified number of lines. The
+     * description will be ellipsized with TruncateAt.END option.
+     */
+    public static final WritableIntPropertyKey DESCRIPTION_MAX_LINES = new WritableIntPropertyKey();
 
     public static final WritableObjectPropertyKey<Drawable> ICON =
             new WritableObjectPropertyKey<>();
@@ -74,8 +79,9 @@
             new WritableObjectPropertyKey<>();
 
     public static final PropertyKey[] ALL_KEYS = new PropertyKey[] {PRIMARY_BUTTON_TEXT,
-            PRIMARY_BUTTON_CLICK_LISTENER, TITLE, DESCRIPTION, ICON, ICON_RESOURCE_ID,
-            ICON_TINT_COLOR, SECONDARY_ICON, SECONDARY_ICON_RESOURCE_ID, SECONDARY_BUTTON_MENU_TEXT,
-            SECONDARY_ICON_CONTENT_DESCRIPTION, DISMISSAL_DURATION, TRANSLATION_X, TRANSLATION_Y,
-            ALPHA, ON_TOUCH_RUNNABLE, ON_PRIMARY_ACTION, ON_SECONDARY_ACTION, ON_DISMISSED};
+            PRIMARY_BUTTON_CLICK_LISTENER, TITLE, DESCRIPTION, DESCRIPTION_MAX_LINES, ICON,
+            ICON_RESOURCE_ID, ICON_TINT_COLOR, SECONDARY_ICON, SECONDARY_ICON_RESOURCE_ID,
+            SECONDARY_BUTTON_MENU_TEXT, SECONDARY_ICON_CONTENT_DESCRIPTION, DISMISSAL_DURATION,
+            TRANSLATION_X, TRANSLATION_Y, ALPHA, ON_TOUCH_RUNNABLE, ON_PRIMARY_ACTION,
+            ON_SECONDARY_ACTION, ON_DISMISSED};
 }
diff --git a/components/messages/android/java/src/org/chromium/components/messages/MessageWrapper.java b/components/messages/android/java/src/org/chromium/components/messages/MessageWrapper.java
index b130bc07..153f72b 100644
--- a/components/messages/android/java/src/org/chromium/components/messages/MessageWrapper.java
+++ b/components/messages/android/java/src/org/chromium/components/messages/MessageWrapper.java
@@ -66,6 +66,16 @@
     }
 
     @CalledByNative
+    int getDescriptionMaxLines() {
+        return mMessageProperties.get(MessageBannerProperties.DESCRIPTION_MAX_LINES);
+    }
+
+    @CalledByNative
+    void setDescriptionMaxLines(int maxLines) {
+        mMessageProperties.set(MessageBannerProperties.DESCRIPTION_MAX_LINES, maxLines);
+    }
+
+    @CalledByNative
     String getPrimaryButtonText() {
         return mMessageProperties.get(MessageBannerProperties.PRIMARY_BUTTON_TEXT);
     }
diff --git a/components/messages/android/java/src/org/chromium/components/messages/MessageWrapperTest.java b/components/messages/android/java/src/org/chromium/components/messages/MessageWrapperTest.java
index e995666..4213b1f4 100644
--- a/components/messages/android/java/src/org/chromium/components/messages/MessageWrapperTest.java
+++ b/components/messages/android/java/src/org/chromium/components/messages/MessageWrapperTest.java
@@ -58,6 +58,10 @@
         Assert.assertEquals("Description doesn't match provided value", "Description",
                 messageProperties.get(MessageBannerProperties.DESCRIPTION));
 
+        message.setDescriptionMaxLines(2);
+        Assert.assertEquals("Description max lines doesn't match provided value", 2,
+                messageProperties.get(MessageBannerProperties.DESCRIPTION_MAX_LINES));
+
         message.setPrimaryButtonText("Primary button");
         Assert.assertEquals("Button text doesn't match provided value", "Primary button",
                 messageProperties.get(MessageBannerProperties.PRIMARY_BUTTON_TEXT));
diff --git a/components/messages/android/message_wrapper.cc b/components/messages/android/message_wrapper.cc
index 5d55ca7..4433a66c 100644
--- a/components/messages/android/message_wrapper.cc
+++ b/components/messages/android/message_wrapper.cc
@@ -56,6 +56,17 @@
   Java_MessageWrapper_setDescription(env, java_message_wrapper_, jdescription);
 }
 
+int MessageWrapper::GetDescriptionMaxLines() {
+  JNIEnv* env = base::android::AttachCurrentThread();
+  return Java_MessageWrapper_getDescriptionMaxLines(env, java_message_wrapper_);
+}
+
+void MessageWrapper::SetDescriptionMaxLines(int max_lines) {
+  JNIEnv* env = base::android::AttachCurrentThread();
+  Java_MessageWrapper_setDescriptionMaxLines(env, java_message_wrapper_,
+                                             max_lines);
+}
+
 std::u16string MessageWrapper::GetPrimaryButtonText() {
   JNIEnv* env = base::android::AttachCurrentThread();
   base::android::ScopedJavaLocalRef<jstring> jprimary_button_text =
diff --git a/components/messages/android/message_wrapper.h b/components/messages/android/message_wrapper.h
index 8e29bfc..889acff 100644
--- a/components/messages/android/message_wrapper.h
+++ b/components/messages/android/message_wrapper.h
@@ -37,6 +37,12 @@
   void SetTitle(const std::u16string& title);
   std::u16string GetDescription();
   void SetDescription(const std::u16string& description);
+
+  // SetDescriptionMaxLines allows limiting description view to the specified
+  // number of lines. The description will be ellipsized with TruncateAt.END
+  // option.
+  int GetDescriptionMaxLines();
+  void SetDescriptionMaxLines(int max_lines);
   std::u16string GetPrimaryButtonText();
   void SetPrimaryButtonText(const std::u16string& primary_button_text);
   std::u16string GetSecondaryButtonMenuText();
diff --git a/components/mirroring/service/captured_audio_input.cc b/components/mirroring/service/captured_audio_input.cc
index eeed16f9..2e543c6 100644
--- a/components/mirroring/service/captured_audio_input.cc
+++ b/components/mirroring/service/captured_audio_input.cc
@@ -6,6 +6,7 @@
 
 #include "base/check_op.h"
 #include "base/notreached.h"
+#include "media/mojo/common/input_error_code_converter.h"
 #include "media/mojo/mojom/audio_data_pipe.mojom.h"
 #include "mojo/public/cpp/system/platform_handle.h"
 
@@ -85,7 +86,7 @@
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(delegate_);
 
-  delegate_->OnError();
+  delegate_->OnError(media::ConvertToCaptureCallbackCode(code));
 }
 
 void CapturedAudioInput::OnMutedStateChanged(bool is_muted) {
diff --git a/components/mirroring/service/captured_audio_input_unittest.cc b/components/mirroring/service/captured_audio_input_unittest.cc
index cdb8940..102263db 100644
--- a/components/mirroring/service/captured_audio_input_unittest.cc
+++ b/components/mirroring/service/captured_audio_input_unittest.cc
@@ -23,6 +23,8 @@
 
 namespace mirroring {
 
+using AudioSourceErrorCode = media::AudioCapturerSource::ErrorCode;
+
 namespace {
 
 class MockStream final : public media::mojom::AudioInputStream {
@@ -37,7 +39,7 @@
   ~MockDelegate() override {}
 
   MOCK_METHOD0(StreamCreated, void());
-  MOCK_METHOD0(OnError, void());
+  MOCK_METHOD1(OnError, void(AudioSourceErrorCode code));
   MOCK_METHOD1(OnMuted, void(bool muted));
   MOCK_METHOD0(OnIPCClosed, void());
 
@@ -103,7 +105,7 @@
   void SignalStreamError() {
     EXPECT_TRUE(stream_client_.is_bound());
     base::RunLoop run_loop;
-    EXPECT_CALL(delegate_, OnError())
+    EXPECT_CALL(delegate_, OnError(AudioSourceErrorCode::kUnknown))
         .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
     stream_client_->OnError(media::mojom::InputStreamErrorCode::kUnknown);
     run_loop.Run();
@@ -112,7 +114,7 @@
   void SignalStreamPermissionsError() {
     EXPECT_TRUE(stream_client_.is_bound());
     base::RunLoop run_loop;
-    EXPECT_CALL(delegate_, OnError())
+    EXPECT_CALL(delegate_, OnError(AudioSourceErrorCode::kSystemPermissions))
         .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
     stream_client_->OnError(
         media::mojom::InputStreamErrorCode::kSystemPermissions);
diff --git a/components/mirroring/service/session.cc b/components/mirroring/service/session.cc
index d855ac6..dc6e3ce 100644
--- a/components/mirroring/service/session.cc
+++ b/components/mirroring/service/session.cc
@@ -354,7 +354,8 @@
     audio_data_callback_.Run(std::move(captured_audio), audio_capture_time);
   }
 
-  void OnCaptureError(const std::string& message) override {
+  void OnCaptureError(media::AudioCapturerSource::ErrorCode code,
+                      const std::string& message) override {
     if (!error_callback_.is_null())
       std::move(error_callback_).Run();
   }
diff --git a/components/omnibox/browser/zero_suggest_provider_unittest.cc b/components/omnibox/browser/zero_suggest_provider_unittest.cc
index faf1b30..32bfa6f 100644
--- a/components/omnibox/browser/zero_suggest_provider_unittest.cc
+++ b/components/omnibox/browser/zero_suggest_provider_unittest.cc
@@ -165,12 +165,19 @@
   on_clobber_input.set_current_url(GURL(input_url));
   on_clobber_input.set_focus_type(OmniboxFocusType::DELETED_PERMANENT_TEXT);
 
-  // ZeroSuggest should never deal with prefix suggestions.
-  EXPECT_FALSE(provider_->AllowZeroSuggestSuggestions(prefix_input));
+  // Disable on-clobber.
+  {
+    base::test::ScopedFeatureList features;
+    features.InitAndDisableFeature(
+        omnibox::kClobberTriggersContextualWebZeroSuggest);
 
-  EXPECT_TRUE(provider_->AllowZeroSuggestSuggestions(on_focus_input));
+    // ZeroSuggest should never deal with prefix suggestions.
+    EXPECT_FALSE(provider_->AllowZeroSuggestSuggestions(prefix_input));
 
-  EXPECT_FALSE(provider_->AllowZeroSuggestSuggestions(on_clobber_input));
+    EXPECT_TRUE(provider_->AllowZeroSuggestSuggestions(on_focus_input));
+
+    EXPECT_FALSE(provider_->AllowZeroSuggestSuggestions(on_clobber_input));
+  }
 
   // Enable on-clobber.
   {
@@ -287,17 +294,27 @@
   const ZeroSuggestProvider::ResultType kDefaultContextualWebResultType =
       ZeroSuggestProvider::ResultType::NONE;
 
-  EXPECT_EQ(kDefaultContextualWebResultType,
-            ZeroSuggestProvider::TypeOfResultToRun(
-                client_.get(), on_focus_input, suggest_url));
-  EXPECT_EQ(kDefaultContextualWebResultType,
-            ZeroSuggestProvider::TypeOfResultToRun(
-                client_.get(), on_clobber_input, suggest_url));
+  // Disable on-clobber.
+  {
+    base::test::ScopedFeatureList features;
+    features.InitAndDisableFeature(
+        omnibox::kClobberTriggersContextualWebZeroSuggest);
+
+    EXPECT_EQ(kDefaultContextualWebResultType,
+              ZeroSuggestProvider::TypeOfResultToRun(
+                  client_.get(), on_focus_input, suggest_url));
+    EXPECT_EQ(kDefaultContextualWebResultType,
+              ZeroSuggestProvider::TypeOfResultToRun(
+                  client_.get(), on_clobber_input, suggest_url));
+  }
 
   // Enable on-focus only.
   {
     base::test::ScopedFeatureList features;
-    features.InitAndEnableFeature(omnibox::kOnFocusSuggestionsContextualWeb);
+    features.InitWithFeatures(
+        {omnibox::kOnFocusSuggestionsContextualWeb},         // Enabled
+        {omnibox::kClobberTriggersContextualWebZeroSuggest}  // Disabled
+    );
 
     EXPECT_EQ(ZeroSuggestProvider::ResultType::REMOTE_SEND_URL,
               ZeroSuggestProvider::TypeOfResultToRun(
@@ -324,8 +341,9 @@
     base::test::ScopedFeatureList features;
     features.InitWithFeatures(
         {omnibox::kOnFocusSuggestionsContextualWeb,
-         omnibox::kClobberTriggersContextualWebZeroSuggest},
-        {});
+         omnibox::kClobberTriggersContextualWebZeroSuggest},  // Enabled
+        {}                                                    // Disabled
+    );
 
     EXPECT_EQ(ZeroSuggestProvider::ResultType::REMOTE_SEND_URL,
               ZeroSuggestProvider::TypeOfResultToRun(
diff --git a/components/omnibox/common/omnibox_features.cc b/components/omnibox/common/omnibox_features.cc
index 29046f7..8d3d7da0 100644
--- a/components/omnibox/common/omnibox_features.cc
+++ b/components/omnibox/common/omnibox_features.cc
@@ -137,7 +137,7 @@
 // classification (contextual web).
 const base::Feature kClobberTriggersContextualWebZeroSuggest{
     "OmniboxClobberTriggersContextualWebZeroSuggest",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+    enabled_by_default_desktop_only};
 
 // Used to adjust the age threshold since the last visit in order to consider a
 // normalized keyword search term as a zero-prefix suggestion. If disabled, the
diff --git a/components/page_load_metrics/browser/observers/use_counter/ukm_features.cc b/components/page_load_metrics/browser/observers/use_counter/ukm_features.cc
index aedd8c94..62967f68 100644
--- a/components/page_load_metrics/browser/observers/use_counter/ukm_features.cc
+++ b/components/page_load_metrics/browser/observers/use_counter/ukm_features.cc
@@ -203,6 +203,12 @@
           WebFeature::
               kCrossBrowsingContextGroupMainFrameNulledNonEmptyNameAccessed,
           WebFeature::kControlledWorkerWillBeUncontrolled,
+          WebFeature::kUsbDeviceOpen,
+          WebFeature::kWebBluetoothRemoteServerConnect,
+          WebFeature::kSerialRequestPort,
+          WebFeature::kSerialPortOpen,
+          WebFeature::kHidRequestDevice,
+          WebFeature::kHidDeviceOpen,
       }));
   return *opt_in_features;
 }
diff --git a/components/policy/core/common/mac_util_unittest.cc b/components/policy/core/common/mac_util_unittest.cc
index 554d7240..75d6136 100644
--- a/components/policy/core/common/mac_util_unittest.cc
+++ b/components/policy/core/common/mac_util_unittest.cc
@@ -42,7 +42,7 @@
   base::ListValue list;
   for (base::DictionaryValue::Iterator it(root); !it.IsAtEnd(); it.Advance())
     list.Append(std::make_unique<base::Value>(it.value().Clone()));
-  EXPECT_EQ(root.size(), list.GetSize());
+  EXPECT_EQ(root.DictSize(), list.GetSize());
   list.Append(std::make_unique<base::Value>(root.Clone()));
   root.SetKey("list", list.Clone());
 
diff --git a/components/power_scheduler/power_scheduler.cc b/components/power_scheduler/power_scheduler.cc
index 4ef10ef..661b8f6 100644
--- a/components/power_scheduler/power_scheduler.cc
+++ b/components/power_scheduler/power_scheduler.cc
@@ -7,6 +7,7 @@
 #include "base/command_line.h"
 #include "base/cpu.h"
 #include "base/cpu_affinity_posix.h"
+#include "base/lazy_instance.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/no_destructor.h"
@@ -218,10 +219,17 @@
     base::TimeTicks now = base::TimeTicks::Now();
     if (new_affinity == base::CpuAffinityMode::kDefault &&
         !enforced_affinity_setup_time_.is_null()) {
+      auto throttling_duration = now - enforced_affinity_setup_time_;
       UMA_HISTOGRAM_CUSTOM_TIMES("Power.PowerScheduler.ThrottlingDuration",
-                                 now - enforced_affinity_setup_time_,
+                                 throttling_duration,
                                  base::TimeDelta::FromMilliseconds(1),
                                  base::TimeDelta::FromMinutes(10), 100);
+
+      UMA_HISTOGRAM_SCALED_ENUMERATION(
+          "Power.PowerScheduler.ThrottlingDurationPerCpuAffinityMode",
+          GetCpuAffinityModeForUma(enforced_affinity_),
+          throttling_duration.InMicroseconds(),
+          base::Time::kMicrosecondsPerMillisecond);
     }
     enforced_affinity_setup_time_ = now;
     enforced_affinity_ = new_affinity;
diff --git a/components/reporting/storage/storage_unittest.cc b/components/reporting/storage/storage_unittest.cc
index 7ec19d0..7ca4ce23 100644
--- a/components/reporting/storage/storage_unittest.cc
+++ b/components/reporting/storage/storage_unittest.cc
@@ -378,7 +378,7 @@
           .WillOnce(
               // Provision the storage with a key.
               // Key delivery must have been requested above.
-              Invoke(client_, &MockUploadClient::KeyGeneration));
+              WithoutArgs(Invoke(client_, &MockUploadClient::KeyGeneration)));
     }
 
    private:
diff --git a/components/reporting/storage_selector/storage_selector.cc b/components/reporting/storage_selector/storage_selector.cc
index b4d6137..7c103b27 100644
--- a/components/reporting/storage_selector/storage_selector.cc
+++ b/components/reporting/storage_selector/storage_selector.cc
@@ -9,6 +9,7 @@
 
 #include "base/feature_list.h"
 #include "base/files/file_path.h"
+#include "base/logging.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/path_service.h"
 #include "build/build_config.h"
@@ -83,12 +84,14 @@
                  "Missive Client has not returned Storage Module"));
       return;
     }
+    LOG(WARNING) << "Store reporting data by a Missive daemon";
     std::move(cb).Run(missive_module);
     return;
   }
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 
   // Use Storage in a local file system.
+  LOG(WARNING) << "Store reporting data locally";
   StorageModule::Create(
       StorageOptions()
           .set_directory(local_reporting_path)
diff --git a/components/safe_browsing/content/renderer/phishing_classifier/scorer.cc b/components/safe_browsing/content/renderer/phishing_classifier/scorer.cc
index 7892c70..7f751777 100644
--- a/components/safe_browsing/content/renderer/phishing_classifier/scorer.cc
+++ b/components/safe_browsing/content/renderer/phishing_classifier/scorer.cc
@@ -286,8 +286,8 @@
     base::ThreadPool::PostTaskAndReplyWithResult(
         FROM_HERE, {base::TaskPriority::BEST_EFFORT},
         base::BindOnce(&ApplyVisualTfLiteModelHelper, bitmap,
-                       model_.tflite_model_input_width(),
-                       model_.tflite_model_input_height(),
+                       model_.tflite_metadata().input_width(),
+                       model_.tflite_metadata().input_height(),
                        std::string(reinterpret_cast<const char*>(
                                        visual_tflite_model_.data()),
                                    visual_tflite_model_.length())),
@@ -334,12 +334,12 @@
 }
 
 int Scorer::tflite_model_version() const {
-  return model_.tflite_model_version();
+  return model_.tflite_metadata().model_version();
 }
 
-const google::protobuf::RepeatedPtrField<ClientSideModel::Threshold>&
+const google::protobuf::RepeatedPtrField<TfLiteModelMetadata::Threshold>&
 Scorer::tflite_thresholds() const {
-  return model_.tflite_thresholds();
+  return model_.tflite_metadata().thresholds();
 }
 
 double Scorer::ComputeRuleScore(const ClientSideModel::Rule& rule,
diff --git a/components/safe_browsing/content/renderer/phishing_classifier/scorer.h b/components/safe_browsing/content/renderer/phishing_classifier/scorer.h
index 52e1ae5..9ca73d0 100644
--- a/components/safe_browsing/content/renderer/phishing_classifier/scorer.h
+++ b/components/safe_browsing/content/renderer/phishing_classifier/scorer.h
@@ -99,7 +99,7 @@
   int tflite_model_version() const;
 
   // Returns the thresholds configured for the visual TFLite model categories.
-  const google::protobuf::RepeatedPtrField<ClientSideModel::Threshold>&
+  const google::protobuf::RepeatedPtrField<TfLiteModelMetadata::Threshold>&
   tflite_thresholds() const;
 
  protected:
diff --git a/components/safe_browsing/core/fbs/client_model.fbs b/components/safe_browsing/core/fbs/client_model.fbs
index c605e57..48f1fc7 100644
--- a/components/safe_browsing/core/fbs/client_model.fbs
+++ b/components/safe_browsing/core/fbs/client_model.fbs
@@ -33,8 +33,12 @@
   shingle_size:int = 4;
   threshold_probability:float = 0.5;
   vision_model:safe_browsing.flat.VisionModel;
-  tflite_model_version:int;
-  tflite_thresholds:[safe_browsing.flat.ClientSideModel_.Threshold];
+  tflite_model_version:int (deprecated);
+  tflite_thresholds:[safe_browsing.flat.ClientSideModel_.Threshold]
+  (deprecated);
+  tflite_model_input_width: int (deprecated);
+  tflite_model_input_height: int (deprecated);
+  tflite_metadata:safe_browsing.flat.TfLiteModelMetadata;
 }
 
 root_type ClientSideModel;
@@ -58,6 +62,13 @@
 
 namespace safe_browsing.flat;
 
+table TfLiteModelMetadata {
+  version:int;
+  thresholds:[safe_browsing.flat.ClientSideModel_.Threshold];
+  input_width: int;
+  input_height: int;
+}
+
 table VisionModel {
   targets:[safe_browsing.flat.VisualTarget];
 }
diff --git a/components/safe_browsing/core/proto/client_model.proto b/components/safe_browsing/core/proto/client_model.proto
index 4a89a31..a3587e0 100644
--- a/components/safe_browsing/core/proto/client_model.proto
+++ b/components/safe_browsing/core/proto/client_model.proto
@@ -103,8 +103,20 @@
   // The vision model.
   optional VisionModel vision_model = 12;
 
+  // Reserved tag numbers holding deprecated fields.
+  reserved 13;
+  reserved 14;
+  reserved 15;
+  reserved 16;
+
+  optional TfLiteModelMetadata tflite_metadata = 17;
+
+  // next available tag number: 18
+}
+
+message TfLiteModelMetadata {
   // The version number of the visual TFLite model.
-  optional int32 tflite_model_version = 13;
+  optional int32 model_version = 1;
 
   message Threshold {
     // The label for the category
@@ -117,13 +129,11 @@
   // The list of threshold values for each category in the TFLite model. Pages
   // where the model score exceeds one of these thresholds will be sent to
   // Safe Browsing for a more definitive classification.
-  repeated Threshold tflite_thresholds = 14;
+  repeated Threshold thresholds = 2;
 
   // The width and height of the input tensor to the corresponding TFLite model.
-  optional int32 tflite_model_input_width = 15;
-  optional int32 tflite_model_input_height = 16;
-
-  // next available tag number: 17
+  optional int32 input_width = 3;
+  optional int32 input_height = 4;
 }
 
 // Wrapper of the vision model for the similarity check target images.
diff --git a/components/security_state/content/BUILD.gn b/components/security_state/content/BUILD.gn
index cb1077b..0ba68a0b2 100644
--- a/components/security_state/content/BUILD.gn
+++ b/components/security_state/content/BUILD.gn
@@ -6,8 +6,6 @@
   sources = [
     "content_utils.cc",
     "content_utils.h",
-    "ssl_status_input_event_data.cc",
-    "ssl_status_input_event_data.h",
   ]
 
   public_deps = [
diff --git a/components/security_state/content/content_utils.cc b/components/security_state/content/content_utils.cc
index fed2551..31d762f 100644
--- a/components/security_state/content/content_utils.cc
+++ b/components/security_state/content/content_utils.cc
@@ -13,7 +13,6 @@
 #include "base/strings/utf_string_conversions.h"
 #include "components/dom_distiller/core/url_constants.h"
 #include "components/security_interstitials/core/common_string_util.h"
-#include "components/security_state/content/ssl_status_input_event_data.h"
 #include "components/security_state/core/security_state.h"
 #include "components/strings/grit/components_chromium_strings.h"
 #include "components/strings/grit/components_strings.h"
@@ -73,12 +72,6 @@
       security_style_explanations->summary =
           l10n_util::GetStringUTF8(IDS_HTTP_NONSECURE_SUMMARY);
     }
-    if (visible_security_state.insecure_input_events.insecure_field_edited) {
-      security_style_explanations->insecure_explanations.push_back(
-          content::SecurityStyleExplanation(
-              l10n_util::GetStringUTF8(IDS_EDITED_NONSECURE),
-              l10n_util::GetStringUTF8(IDS_EDITED_NONSECURE_DESCRIPTION)));
-    }
   }
 }
 
@@ -456,12 +449,6 @@
       !!(ssl.content_status &
          content::SSLStatus::DISPLAYED_FORM_WITH_INSECURE_ACTION);
 
-  SSLStatusInputEventData* input_events =
-      static_cast<SSLStatusInputEventData*>(ssl.user_data.get());
-
-  if (input_events)
-    state->insecure_input_events = *input_events->input_events();
-
   return state;
 }
 
diff --git a/components/security_state/content/content_utils_browsertest.cc b/components/security_state/content/content_utils_browsertest.cc
deleted file mode 100644
index f7a1362..0000000
--- a/components/security_state/content/content_utils_browsertest.cc
+++ /dev/null
@@ -1,96 +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 "components/security_state/content/content_utils.h"
-
-#include <memory>
-
-#include "base/files/file_path.h"
-#include "base/macros.h"
-#include "build/build_config.h"
-#include "components/security_state/content/ssl_status_input_event_data.h"
-#include "components/security_state/core/insecure_input_event_data.h"
-#include "components/security_state/core/security_state.h"
-#include "content/public/browser/navigation_controller.h"
-#include "content/public/browser/navigation_entry.h"
-#include "content/public/browser/ssl_status.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/test/browser_test.h"
-#include "content/public/test/content_browser_test.h"
-#include "content/public/test/content_browser_test_utils.h"
-#include "content/shell/browser/shell.h"
-#include "net/test/embedded_test_server/embedded_test_server.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "url/gurl.h"
-
-namespace {
-
-using content::NavigateToURL;
-using security_state::GetVisibleSecurityState;
-using security_state::InsecureInputEventData;
-using security_state::SSLStatusInputEventData;
-
-const base::FilePath::CharType kDocRoot[] =
-    FILE_PATH_LITERAL("components/security_state/content/testdata");
-
-class SecurityStateContentUtilsBrowserTest
-    : public content::ContentBrowserTest {
- public:
-  SecurityStateContentUtilsBrowserTest()
-      : https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {
-    https_server_.ServeFilesFromSourceDirectory(base::FilePath(kDocRoot));
-  }
-
- protected:
-  net::EmbeddedTestServer https_server_;
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(SecurityStateContentUtilsBrowserTest);
-};
-
-#if defined(OS_WIN)
-#define MAYBE_VisibleSecurityStateInsecureFieldEdit \
-  DISABLED_VisibleSecurityStateInsecureFieldEdit
-#else
-#define MAYBE_VisibleSecurityStateInsecureFieldEdit \
-  VisibleSecurityStateInsecureFieldEdit
-#endif
-// Tests that the flags for nonsecure editing are set correctly.
-IN_PROC_BROWSER_TEST_F(SecurityStateContentUtilsBrowserTest,
-                       MAYBE_VisibleSecurityStateInsecureFieldEdit) {
-  ASSERT_TRUE(https_server_.Start());
-  EXPECT_TRUE(NavigateToURL(shell(), https_server_.GetURL("/hello.html")));
-
-  content::WebContents* contents = shell()->web_contents();
-  ASSERT_TRUE(contents);
-
-  // First, ensure the flag is not set prematurely.
-  content::SSLStatus& ssl_status =
-      contents->GetController().GetVisibleEntry()->GetSSL();
-  SSLStatusInputEventData* ssl_status_input_events =
-      static_cast<SSLStatusInputEventData*>(ssl_status.user_data.get());
-  InsecureInputEventData events;
-  if (ssl_status_input_events)
-    events = *ssl_status_input_events->input_events();
-  EXPECT_FALSE(events.insecure_field_edited);
-
-  std::unique_ptr<security_state::VisibleSecurityState> visible_state =
-      GetVisibleSecurityState(contents);
-  EXPECT_FALSE(visible_state->insecure_input_events.insecure_field_edited);
-
-  // Simulate a field edit and update the SSLStatus' |user_data|.
-  events.insecure_field_edited = true;
-  ssl_status.user_data =
-      std::make_unique<security_state::SSLStatusInputEventData>(events);
-
-  // Verify the field edit was recorded properly in the |user_data|.
-  ssl_status_input_events =
-      static_cast<SSLStatusInputEventData*>(ssl_status.user_data.get());
-  EXPECT_TRUE(ssl_status_input_events->input_events()->insecure_field_edited);
-  // Verify the field edit was propagated to the VisibleSecurityState.
-  visible_state = GetVisibleSecurityState(contents);
-  EXPECT_TRUE(visible_state->insecure_input_events.insecure_field_edited);
-}
-
-}  // namespace
diff --git a/components/security_state/content/content_utils_unittest.cc b/components/security_state/content/content_utils_unittest.cc
index 91cde60..8e1cc40 100644
--- a/components/security_state/content/content_utils_unittest.cc
+++ b/components/security_state/content/content_utils_unittest.cc
@@ -599,21 +599,6 @@
   EXPECT_EQ(0u, explanations.neutral_explanations.size());
 }
 
-// Tests that a security level of DANGEROUS on an HTTP page with insecure form
-// edits produces blink::SecurityStyleInsecure and an explanation.
-TEST(SecurityStateContentUtilsTest, HTTPDangerous) {
-  security_state::VisibleSecurityState visible_security_state;
-  visible_security_state.url = GURL("http://scheme-is-not-cryptographic.test");
-  content::SecurityStyleExplanations explanations;
-  visible_security_state.insecure_input_events.insecure_field_edited = true;
-  blink::SecurityStyle security_style = GetSecurityStyle(
-      security_state::DANGEROUS, visible_security_state, &explanations);
-  // Verify that the security style was downgraded and an explanation shown
-  // because a form was edited.
-  EXPECT_EQ(blink::SecurityStyle::kInsecureBroken, security_style);
-  EXPECT_EQ(1u, explanations.insecure_explanations.size());
-}
-
 // Tests that an explanation is provided if a certificate is missing a
 // subjectAltName extension containing a domain name or IP address.
 TEST(SecurityStateContentUtilsTest, SubjectAltNameWarning) {
diff --git a/components/security_state/content/ssl_status_input_event_data.cc b/components/security_state/content/ssl_status_input_event_data.cc
deleted file mode 100644
index 2dc69e9..0000000
--- a/components/security_state/content/ssl_status_input_event_data.cc
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/security_state/content/ssl_status_input_event_data.h"
-
-#include <memory>
-#include <utility>
-
-namespace security_state {
-
-SSLStatusInputEventData::SSLStatusInputEventData() {}
-SSLStatusInputEventData::SSLStatusInputEventData(
-    const InsecureInputEventData& initial_data)
-    : data_(initial_data) {}
-
-SSLStatusInputEventData::~SSLStatusInputEventData() {}
-
-InsecureInputEventData* SSLStatusInputEventData::input_events() {
-  return &data_;
-}
-
-std::unique_ptr<SSLStatus::UserData> SSLStatusInputEventData::Clone() {
-  return std::make_unique<SSLStatusInputEventData>(data_);
-}
-
-}  // namespace security_state
diff --git a/components/security_state/content/ssl_status_input_event_data.h b/components/security_state/content/ssl_status_input_event_data.h
deleted file mode 100644
index 44ac585..0000000
--- a/components/security_state/content/ssl_status_input_event_data.h
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_SECURITY_STATE_CONTENT_SSL_STATUS_INPUT_EVENT_DATA_H_
-#define COMPONENTS_SECURITY_STATE_CONTENT_SSL_STATUS_INPUT_EVENT_DATA_H_
-
-#include <memory>
-
-#include "components/security_state/core/insecure_input_event_data.h"
-#include "content/public/browser/ssl_status.h"
-
-namespace security_state {
-
-using content::SSLStatus;
-
-// Stores flags about Input Events in the SSLStatus UserData to
-// influence the Security Level of the page.
-class SSLStatusInputEventData : public SSLStatus::UserData {
- public:
-  SSLStatusInputEventData();
-  explicit SSLStatusInputEventData(const InsecureInputEventData& initial_data);
-  ~SSLStatusInputEventData() override;
-
-  InsecureInputEventData* input_events();
-
-  // SSLStatus::UserData:
-  std::unique_ptr<SSLStatus::UserData> Clone() override;
-
- private:
-  InsecureInputEventData data_;
-
-  DISALLOW_COPY_AND_ASSIGN(SSLStatusInputEventData);
-};
-
-}  // namespace security_state
-
-#endif  // COMPONENTS_SECURITY_STATE_CONTENT_SSL_STATUS_INPUT_EVENT_DATA_H_
diff --git a/components/security_state/core/BUILD.gn b/components/security_state/core/BUILD.gn
index c76ee42..fde5a10 100644
--- a/components/security_state/core/BUILD.gn
+++ b/components/security_state/core/BUILD.gn
@@ -9,7 +9,6 @@
 
 static_library("core") {
   sources = [
-    "insecure_input_event_data.h",
     "security_state.cc",
     "security_state.h",
   ]
diff --git a/components/security_state/core/insecure_input_event_data.h b/components/security_state/core/insecure_input_event_data.h
deleted file mode 100644
index e6b9c913..0000000
--- a/components/security_state/core/insecure_input_event_data.h
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_SECURITY_STATE_CORE_INSECURE_INPUT_EVENT_DATA_H_
-#define COMPONENTS_SECURITY_STATE_CORE_INSECURE_INPUT_EVENT_DATA_H_
-
-namespace security_state {
-
-// Stores flags about Input Events in the page that may influence
-// its security level.
-struct InsecureInputEventData {
-  InsecureInputEventData() : insecure_field_edited(false) {}
-  ~InsecureInputEventData() {}
-
-  // True if the user edited a field on a non-secure page.
-  bool insecure_field_edited;
-};
-
-}  // namespace security_state
-
-#endif  // COMPONENTS_SECURITY_STATE_CORE_INSECURE_INPUT_EVENT_DATA_H_
diff --git a/components/security_state/core/security_state.h b/components/security_state/core/security_state.h
index ac0f03c1..0bed2c6 100644
--- a/components/security_state/core/security_state.h
+++ b/components/security_state/core/security_state.h
@@ -11,7 +11,6 @@
 
 #include "base/feature_list.h"
 #include "base/macros.h"
-#include "components/security_state/core/insecure_input_event_data.h"
 #include "net/base/url_util.h"
 #include "net/cert/cert_status_flags.h"
 #include "net/cert/sct_status_flags.h"
@@ -206,9 +205,6 @@
   // state perspective (for example, if a different warning is being shown for
   // them).
   bool should_treat_displayed_mixed_forms_as_secure;
-  // Contains information about input events that may impact the security
-  // level of the page.
-  InsecureInputEventData insecure_input_events;
 };
 
 // These security levels describe the treatment given to pages that
diff --git a/components/security_state/core/security_state_unittest.cc b/components/security_state/core/security_state_unittest.cc
index 600aad4..e43e35c54 100644
--- a/components/security_state/core/security_state_unittest.cc
+++ b/components/security_state/core/security_state_unittest.cc
@@ -13,7 +13,6 @@
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
 #include "components/security_state/core/features.h"
-#include "components/security_state/core/insecure_input_event_data.h"
 #include "net/cert/x509_certificate.h"
 #include "net/ssl/ssl_cipher_suite_names.h"
 #include "net/ssl/ssl_connection_status_flags.h"
@@ -94,9 +93,6 @@
     is_view_source_ = is_view_source;
   }
 
-  void set_insecure_field_edit(bool insecure_field_edit) {
-    insecure_input_events_.insecure_field_edited = insecure_field_edit;
-  }
   void set_has_policy_certificate(bool has_policy_cert) {
     has_policy_certificate_ = has_policy_cert;
   }
@@ -120,7 +116,6 @@
     state->malicious_content_status = malicious_content_status_;
     state->is_error_page = is_error_page_;
     state->is_view_source = is_view_source_;
-    state->insecure_input_events = insecure_input_events_;
     state->safety_tip_info = safety_tip_info_;
     return state;
   }
@@ -146,7 +141,6 @@
   bool is_error_page_;
   bool is_view_source_;
   bool has_policy_certificate_;
-  InsecureInputEventData insecure_input_events_;
   security_state::SafetyTipInfo safety_tip_info_;
 };
 
@@ -312,16 +306,12 @@
   EXPECT_EQ(DANGEROUS, helper.GetSecurityLevel());
 }
 
-// Tests that WARNING is set on normal http pages regardless of
-// form edits.
-TEST(SecurityStateTest, WarningOnHttpAndFormEdits) {
+// Tests that HTTP URLs cause a WARNING security level.
+TEST(SecurityStateTest, WarningOnHttp) {
   TestSecurityStateHelper helper;
   helper.SetUrl(GURL(kHttpUrl));
 
   EXPECT_EQ(WARNING, helper.GetSecurityLevel());
-
-  helper.set_insecure_field_edit(true);
-  EXPECT_EQ(WARNING, helper.GetSecurityLevel());
 }
 
 // Tests that |safety_tip_status| effects security level appropriately.
diff --git a/components/security_state/ios/BUILD.gn b/components/security_state/ios/BUILD.gn
index 3243ff0..22149a2a 100644
--- a/components/security_state/ios/BUILD.gn
+++ b/components/security_state/ios/BUILD.gn
@@ -5,12 +5,8 @@
 component("ios") {
   configs += [ "//build/config/compiler:enable_arc" ]
   sources = [
-    "insecure_input_tab_helper.h",
-    "insecure_input_tab_helper.mm",
     "security_state_utils.h",
     "security_state_utils.mm",
-    "ssl_status_input_event_data.h",
-    "ssl_status_input_event_data.mm",
   ]
   deps = [
     "//base",
diff --git a/components/security_state/ios/insecure_input_tab_helper.h b/components/security_state/ios/insecure_input_tab_helper.h
deleted file mode 100644
index d1535462..0000000
--- a/components/security_state/ios/insecure_input_tab_helper.h
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_SECURITY_STATE_IOS_INSECURE_INPUT_TAB_HELPER_H_
-#define COMPONENTS_SECURITY_STATE_IOS_INSECURE_INPUT_TAB_HELPER_H_
-
-#include "base/macros.h"
-#include "components/autofill/ios/form_util/form_activity_observer.h"
-#include "ios/web/public/web_state_observer.h"
-#import "ios/web/public/web_state_user_data.h"
-
-// Observes user activity on forms and receives notifications about page content
-// from autofill and updates the page's |SSLStatusUserData| to track insecure
-// input events. Such events may change the page's Security Level.
-class InsecureInputTabHelper
-    : public web::WebStateObserver,
-      public autofill::FormActivityObserver,
-      public web::WebStateUserData<InsecureInputTabHelper> {
- public:
-  ~InsecureInputTabHelper() override;
-
-  static InsecureInputTabHelper* GetOrCreateForWebState(
-      web::WebState* web_state);
-
-  // This method should be called when the user edits a field in a non-secure
-  // context.
-  void DidEditFieldInInsecureContext();
-
- private:
-  friend class web::WebStateUserData<InsecureInputTabHelper>;
-
-  explicit InsecureInputTabHelper(web::WebState* web_state);
-
-  // FormActivityObserver implementation.
-  void FormActivityRegistered(
-      web::WebState* web_state,
-      web::WebFrame* sender_frame,
-      const autofill::FormActivityParams& params) override;
-
-  // WebStateObserver implementation.
-  void DidFinishNavigation(web::WebState* web_state,
-                           web::NavigationContext* navigation_context) override;
-  void WebStateDestroyed(web::WebState* web_state) override;
-
-  bool IsInsecureContext();
-
-  // The WebState this instance is observing. Will be null after
-  // WebStateDestroyed has been called.
-  web::WebState* web_state_ = nullptr;
-
-  WEB_STATE_USER_DATA_KEY_DECL();
-
-  DISALLOW_COPY_AND_ASSIGN(InsecureInputTabHelper);
-};
-
-#endif  // COMPONENTS_SECURITY_STATE_IOS_INSECURE_INPUT_TAB_HELPER_H_
diff --git a/components/security_state/ios/insecure_input_tab_helper.mm b/components/security_state/ios/insecure_input_tab_helper.mm
deleted file mode 100644
index eea20df..0000000
--- a/components/security_state/ios/insecure_input_tab_helper.mm
+++ /dev/null
@@ -1,134 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#import "components/security_state/ios/insecure_input_tab_helper.h"
-
-#import <Foundation/Foundation.h>
-
-#include <memory>
-
-#include "base/check_op.h"
-#include "components/autofill/ios/form_util/form_activity_params.h"
-#include "components/autofill/ios/form_util/form_activity_tab_helper.h"
-#include "components/security_state/ios/ssl_status_input_event_data.h"
-#import "ios/web/public/navigation/navigation_context.h"
-#import "ios/web/public/navigation/navigation_item.h"
-#import "ios/web/public/navigation/navigation_manager.h"
-#import "ios/web/public/web_state.h"
-#import "ios/web/public/web_state_user_data.h"
-#include "services/network/public/cpp/is_potentially_trustworthy.h"
-#include "url/origin.h"
-
-#if !defined(__has_feature) || !__has_feature(objc_arc)
-#error "This file requires ARC support."
-#endif
-
-namespace {
-
-// Creates or retrieves the |user_data| object in the SSLStatus attached to the
-// WebState's NavigationItem.
-security_state::SSLStatusInputEventData* GetOrCreateSSLStatusInputEventData(
-    web::WebState* web_state) {
-  web::NavigationItem* item =
-      web_state->GetNavigationManager()->GetLastCommittedItem();
-
-  // We aren't guaranteed to always have a navigation item.
-  if (!item)
-    return nullptr;
-
-  web::SSLStatus& ssl = item->GetSSL();
-  security_state::SSLStatusInputEventData* input_events =
-      static_cast<security_state::SSLStatusInputEventData*>(
-          ssl.user_data.get());
-  if (!input_events) {
-    ssl.user_data = std::make_unique<security_state::SSLStatusInputEventData>();
-    input_events = static_cast<security_state::SSLStatusInputEventData*>(
-        ssl.user_data.get());
-  }
-  return input_events;
-}
-
-}  // namespace
-
-InsecureInputTabHelper::~InsecureInputTabHelper() = default;
-
-// static
-InsecureInputTabHelper* InsecureInputTabHelper::GetOrCreateForWebState(
-    web::WebState* web_state) {
-  InsecureInputTabHelper* helper = FromWebState(web_state);
-  if (!helper) {
-    CreateForWebState(web_state);
-    helper = FromWebState(web_state);
-    DCHECK(helper);
-  }
-  return helper;
-}
-
-bool InsecureInputTabHelper::IsInsecureContext() {
-  // We don't want to mark data URLs as secure, so we check the origin rather
-  // than calling network::IsUrlPotentiallyTrustworthy.
-  // See https://w3c.github.io/webappsec-secure-contexts/#is-url-trustworthy
-  return !network::IsOriginPotentiallyTrustworthy(
-      url::Origin::Create(web_state_->GetLastCommittedURL()));
-}
-
-void InsecureInputTabHelper::DidEditFieldInInsecureContext() {
-  DCHECK(IsInsecureContext());
-
-  security_state::SSLStatusInputEventData* input_events =
-      GetOrCreateSSLStatusInputEventData(web_state_);
-  if (!input_events)
-    return;
-
-  // If the first field edit in the web contents was just performed,
-  // update the SSLStatusInputEventData.
-  if (!input_events->input_events()->insecure_field_edited) {
-    input_events->input_events()->insecure_field_edited = true;
-    web_state_->DidChangeVisibleSecurityState();
-  }
-}
-
-InsecureInputTabHelper::InsecureInputTabHelper(web::WebState* web_state)
-    : web_state_(web_state) {
-  web_state_->AddObserver(this);
-  autofill::FormActivityTabHelper::GetOrCreateForWebState(web_state)
-      ->AddObserver(this);
-}
-
-void InsecureInputTabHelper::FormActivityRegistered(
-    web::WebState* web_state,
-    web::WebFrame* sender_frame,
-    const autofill::FormActivityParams& params) {
-  DCHECK_EQ(web_state_, web_state);
-  if (params.type == "input" && IsInsecureContext()) {
-    DidEditFieldInInsecureContext();
-  }
-}
-
-void InsecureInputTabHelper::DidFinishNavigation(
-    web::WebState* web_state,
-    web::NavigationContext* navigation_context) {
-  DCHECK_EQ(web_state_, web_state);
-  // Check if the navigation should clear insecure input event data (i.e., not a
-  // same-document navigation).
-  if (IsInsecureContext() && navigation_context->HasCommitted() &&
-      !navigation_context->IsSameDocument()) {
-    security_state::SSLStatusInputEventData* input_events =
-        GetOrCreateSSLStatusInputEventData(web_state_);
-    if (!input_events)
-      return;
-    input_events->input_events()->insecure_field_edited = false;
-    web_state_->DidChangeVisibleSecurityState();
-  }
-}
-
-void InsecureInputTabHelper::WebStateDestroyed(web::WebState* web_state) {
-  DCHECK_EQ(web_state_, web_state);
-  autofill::FormActivityTabHelper::GetOrCreateForWebState(web_state)
-      ->RemoveObserver(this);
-  web_state_->RemoveObserver(this);
-  web_state_ = nullptr;
-}
-
-WEB_STATE_USER_DATA_KEY_IMPL(InsecureInputTabHelper)
diff --git a/components/security_state/ios/security_state_utils.mm b/components/security_state/ios/security_state_utils.mm
index 88538a9..224106e 100644
--- a/components/security_state/ios/security_state_utils.mm
+++ b/components/security_state/ios/security_state_utils.mm
@@ -8,7 +8,6 @@
 
 #import "components/safe_browsing/ios/browser/safe_browsing_url_allow_list.h"
 #include "components/security_state/core/security_state.h"
-#include "components/security_state/ios/ssl_status_input_event_data.h"
 #include "ios/web/public/navigation/navigation_item.h"
 #import "ios/web/public/navigation/navigation_manager.h"
 #include "ios/web/public/security/security_style.h"
@@ -102,12 +101,6 @@
       (ssl.content_status & web::SSLStatus::DISPLAYED_INSECURE_CONTENT) ? true
                                                                         : false;
 
-  security_state::SSLStatusInputEventData* input_events =
-      static_cast<security_state::SSLStatusInputEventData*>(
-          ssl.user_data.get());
-  if (input_events)
-    state->insecure_input_events = *input_events->input_events();
-
   return state;
 }
 
diff --git a/components/security_state/ios/security_state_utils_unittest.mm b/components/security_state/ios/security_state_utils_unittest.mm
index e6a1544e..22a9ca4 100644
--- a/components/security_state/ios/security_state_utils_unittest.mm
+++ b/components/security_state/ios/security_state_utils_unittest.mm
@@ -6,73 +6,29 @@
 
 #import "components/safe_browsing/ios/browser/safe_browsing_url_allow_list.h"
 #include "components/security_state/core/security_state.h"
-#import "components/security_state/ios/insecure_input_tab_helper.h"
 #import "ios/web/public/navigation/navigation_item.h"
 #import "ios/web/public/navigation/navigation_manager.h"
-#include "ios/web/public/security/ssl_status.h"
 #import "ios/web/public/test/web_test_with_web_state.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
 #endif
 
-// This test fixture creates an IOSSecurityStateTabHelper and an
-// InsecureInputTabHelper for the WebState, then loads a non-secure
-// HTML document.
+// This test fixture creates an IOSSecurityStateTabHelper, then loads a
+// non-secure HTML document.
 class SecurityStateUtilsTest : public web::WebTestWithWebState {
  protected:
   void SetUp() override {
     web::WebTestWithWebState::SetUp();
     SafeBrowsingUrlAllowList::CreateForWebState(web_state());
-    InsecureInputTabHelper::CreateForWebState(web_state());
-    insecure_input_ = InsecureInputTabHelper::FromWebState(web_state());
-    ASSERT_TRUE(insecure_input_);
 
     url_ = GURL("http://chromium.test");
     LoadHtml(@"<html><body></body></html>", url_);
   }
 
-  // Returns the InsecureInputEventData for current WebState().
-  security_state::InsecureInputEventData GetInsecureInputEventData() const {
-    return security_state::GetVisibleSecurityStateForWebState(web_state())
-        ->insecure_input_events;
-  }
-
-  InsecureInputTabHelper* insecure_input() { return insecure_input_; }
-
-  InsecureInputTabHelper* insecure_input_;
   GURL url_;
 };
 
-// Ensures that |insecure_field_edited| is set only when an editing event has
-// been reported.
-TEST_F(SecurityStateUtilsTest, SecurityInfoAfterEditing) {
-  // Verify |insecure_field_edited| is not set prematurely.
-  security_state::InsecureInputEventData events = GetInsecureInputEventData();
-  EXPECT_FALSE(events.insecure_field_edited);
-
-  // Simulate an edit and verify |insecure_field_edited| is noted in the
-  // insecure_input_events.
-  insecure_input()->DidEditFieldInInsecureContext();
-  events = GetInsecureInputEventData();
-  EXPECT_TRUE(events.insecure_field_edited);
-}
-
-// Ensures that re-navigating to the same page does not keep
-// |insecure_field_set| set.
-TEST_F(SecurityStateUtilsTest, InsecureInputClearedOnRenavigation) {
-  // Simulate an edit and verify |insecure_field_edited| is noted in the
-  // insecure_input_events.
-  insecure_input()->DidEditFieldInInsecureContext();
-  security_state::InsecureInputEventData events = GetInsecureInputEventData();
-  EXPECT_TRUE(events.insecure_field_edited);
-
-  // Navigate to the same page again.
-  LoadHtml(@"<html><body></body></html>", GURL("http://chromium.test"));
-  events = GetInsecureInputEventData();
-  EXPECT_FALSE(events.insecure_field_edited);
-}
-
 // Verifies GetMaliciousContentStatus() return values.
 TEST_F(SecurityStateUtilsTest, GetMaliciousContentStatus) {
   SafeBrowsingUrlAllowList* allow_list =
diff --git a/components/security_state/ios/ssl_status_input_event_data.h b/components/security_state/ios/ssl_status_input_event_data.h
deleted file mode 100644
index f068411..0000000
--- a/components/security_state/ios/ssl_status_input_event_data.h
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_SECURITY_STATE_IOS_SSL_STATUS_INPUT_EVENT_DATA_H_
-#define COMPONENTS_SECURITY_STATE_IOS_SSL_STATUS_INPUT_EVENT_DATA_H_
-
-#include <memory>
-
-#include "components/security_state/core/insecure_input_event_data.h"
-#include "ios/web/public/security/ssl_status.h"
-
-namespace security_state {
-
-using web::SSLStatus;
-
-// Stores flags about Input Events in the SSLStatus UserData to
-// influence the Security Level of the page.
-class SSLStatusInputEventData : public SSLStatus::UserData {
- public:
-  SSLStatusInputEventData();
-  explicit SSLStatusInputEventData(
-      const security_state::InsecureInputEventData& initial_data);
-  ~SSLStatusInputEventData() override;
-
-  security_state::InsecureInputEventData* input_events();
-
-  // SSLStatus::UserData:
-  std::unique_ptr<SSLStatus::UserData> Clone() override;
-
- private:
-  security_state::InsecureInputEventData data_;
-
-  DISALLOW_COPY_AND_ASSIGN(SSLStatusInputEventData);
-};
-
-}  // namespace security_state
-
-#endif  // COMPONENTS_SECURITY_STATE_IOS_SSL_STATUS_INPUT_EVENT_DATA_H_
diff --git a/components/security_state/ios/ssl_status_input_event_data.mm b/components/security_state/ios/ssl_status_input_event_data.mm
deleted file mode 100644
index eb728d4..0000000
--- a/components/security_state/ios/ssl_status_input_event_data.mm
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/security_state/ios/ssl_status_input_event_data.h"
-
-#include <memory>
-
-namespace security_state {
-
-SSLStatusInputEventData::SSLStatusInputEventData() {}
-
-SSLStatusInputEventData::SSLStatusInputEventData(
-    const security_state::InsecureInputEventData& initial_data)
-    : data_(initial_data) {}
-
-SSLStatusInputEventData::~SSLStatusInputEventData() {}
-
-security_state::InsecureInputEventData*
-SSLStatusInputEventData::input_events() {
-  return &data_;
-}
-
-std::unique_ptr<web::SSLStatus::UserData> SSLStatusInputEventData::Clone() {
-  return std::make_unique<SSLStatusInputEventData>(data_);
-}
-
-}  // namespace security_state
diff --git a/components/security_state_strings.grdp b/components/security_state_strings.grdp
index 61654e0..9d90169 100644
--- a/components/security_state_strings.grdp
+++ b/components/security_state_strings.grdp
@@ -10,12 +10,6 @@
   <message name="IDS_HTTP_NONSECURE_SUMMARY" desc="Main summary for where the site is non-secure HTTP." translateable="false">
     This page is insecure (unencrypted HTTP).
   </message>
-  <message name="IDS_EDITED_NONSECURE" desc="Summary phrase for a security problem where the site is non-secure (HTTP) and user has entered data in a form field." translateable="false">
-    Form field edited on a non-secure page
-  </message>
-  <message name="IDS_EDITED_NONSECURE_DESCRIPTION" desc="Description of a security problem where the site is non-secure (HTTP) and user has entered data in a form field." translateable="false">
-    Data was entered in a field on a non-secure page. A warning has been added to the URL bar.
-  </message>
   <message name="IDS_SAFEBROWSING_WARNING" desc="Main summary for page when it has been deemed unsafe by the SafeBrowsing service." translateable="false">
     This page is dangerous (flagged by Google Safe Browsing).
   </message>
diff --git a/components/services/app_service/public/cpp/BUILD.gn b/components/services/app_service/public/cpp/BUILD.gn
index ba640fb..9b80a6e 100644
--- a/components/services/app_service/public/cpp/BUILD.gn
+++ b/components/services/app_service/public/cpp/BUILD.gn
@@ -179,6 +179,7 @@
     "capability_access_update_unittest.cc",
     "icon_cache_unittest.cc",
     "icon_coalescer_unittest.cc",
+    "intent_filter_util_unittest.cc",
     "intent_util_unittest.cc",
     "preferred_apps_converter_unittest.cc",
     "preferred_apps_list_unittest.cc",
diff --git a/components/services/app_service/public/cpp/intent_filter_util.cc b/components/services/app_service/public/cpp/intent_filter_util.cc
index b6e522ce..54b3f40 100644
--- a/components/services/app_service/public/cpp/intent_filter_util.cc
+++ b/components/services/app_service/public/cpp/intent_filter_util.cc
@@ -170,18 +170,19 @@
 // accept, to be used in listing all of the supported links for a given app.
 std::set<std::string> AppManagementGetSupportedLinks(
     const apps::mojom::IntentFilterPtr& intent_filter) {
-  std::set<std::string> supported_links;
-  std::set<std::string> schemes;
   std::set<std::string> hosts;
+  bool is_http_or_https = false;
 
   for (auto& condition : intent_filter->conditions) {
-    // For scheme conditions we add each value to the the |schemes| set.
+    // For scheme conditions we check if it's http or https and set a Boolean
+    // if this intent filter is for one of those schemes.
     if (condition->condition_type == apps::mojom::ConditionType::kScheme) {
       for (auto& condition_value : condition->condition_values) {
         // We only care about http and https schemes.
         if (condition_value->value == url::kHttpScheme ||
             condition_value->value == url::kHttpsScheme) {
-          schemes.insert(condition_value->value);
+          is_http_or_https = true;
+          break;
         }
       }
 
@@ -189,28 +190,20 @@
       // aren't any http or https scheme values this indicates that no http or
       // https scheme exists in the intent filter and thus we will have to
       // return an empty list.
-      if (schemes.empty()) {
+      if (!is_http_or_https) {
         break;
       }
     }
 
     // For host conditions we add each value to the the |hosts| set.
-    if (condition->condition_type != apps::mojom::ConditionType::kHost) {
+    if (condition->condition_type == apps::mojom::ConditionType::kHost) {
       for (auto& condition_value : condition->condition_values) {
         hosts.insert(condition_value->value);
       }
     }
   }
 
-  // Loop through all combinations of scheme and host and add to
-  // supported links.
-  for (auto& scheme : schemes) {
-    for (auto& host : hosts) {
-      supported_links.insert(scheme + url::kStandardSchemeSeparator + host);
-    }
-  }
-
-  return supported_links;
+  return is_http_or_https ? hosts : std::set<std::string>();
 }
 
 }  // namespace apps_util
diff --git a/components/services/app_service/public/cpp/intent_filter_util_unittest.cc b/components/services/app_service/public/cpp/intent_filter_util_unittest.cc
new file mode 100644
index 0000000..0b7a6d3
--- /dev/null
+++ b/components/services/app_service/public/cpp/intent_filter_util_unittest.cc
@@ -0,0 +1,167 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/services/app_service/public/cpp/intent_filter_util.h"
+
+#include "base/values.h"
+#include "components/services/app_service/public/cpp/intent_test_util.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+const char kHostUrlGoogle[] = "www.google.com";
+const char kHostUrlGmail[] = "www.gmail.com";
+}  // namespace
+
+class IntentFilterUtilTest : public testing::Test {};
+
+TEST_F(IntentFilterUtilTest, EmptyConditionList) {
+  auto intent_filter = apps::mojom::IntentFilter::New();
+
+  EXPECT_EQ(apps_util::AppManagementGetSupportedLinks(intent_filter).size(),
+            0u);
+}
+
+TEST_F(IntentFilterUtilTest, SingleSchemeAndHost) {
+  auto intent_filter = apps::mojom::IntentFilter::New();
+
+  apps_util::AddSingleValueCondition(
+      apps::mojom::ConditionType::kScheme, url::kHttpScheme,
+      apps::mojom::PatternMatchType::kNone, intent_filter);
+
+  apps_util::AddSingleValueCondition(
+      apps::mojom::ConditionType::kHost, kHostUrlGoogle,
+      apps::mojom::PatternMatchType::kNone, intent_filter);
+
+  std::set<std::string> links =
+      apps_util::AppManagementGetSupportedLinks(intent_filter);
+
+  EXPECT_EQ(links.size(), 1u);
+  EXPECT_EQ(links.count(kHostUrlGoogle), 1u);
+}
+
+TEST_F(IntentFilterUtilTest, InvalidScheme) {
+  auto intent_filter = apps::mojom::IntentFilter::New();
+
+  apps_util::AddSingleValueCondition(
+      apps::mojom::ConditionType::kScheme, url::kTelScheme,
+      apps::mojom::PatternMatchType::kNone, intent_filter);
+
+  apps_util::AddSingleValueCondition(
+      apps::mojom::ConditionType::kHost, kHostUrlGoogle,
+      apps::mojom::PatternMatchType::kNone, intent_filter);
+
+  std::set<std::string> links =
+      apps_util::AppManagementGetSupportedLinks(intent_filter);
+
+  EXPECT_EQ(links.size(), 0u);
+}
+
+TEST_F(IntentFilterUtilTest, MultipleValidSchemeAndOneHost) {
+  auto intent_filter = apps::mojom::IntentFilter::New();
+
+  std::vector<apps::mojom::ConditionValuePtr> condition_values;
+
+  condition_values.push_back(apps_util::MakeConditionValue(
+      url::kHttpScheme, apps::mojom::PatternMatchType::kNone));
+
+  condition_values.push_back(apps_util::MakeConditionValue(
+      url::kHttpsScheme, apps::mojom::PatternMatchType::kNone));
+
+  intent_filter->conditions.push_back(apps_util::MakeCondition(
+      apps::mojom::ConditionType::kScheme, std::move(condition_values)));
+
+  apps_util::AddSingleValueCondition(
+      apps::mojom::ConditionType::kHost, kHostUrlGoogle,
+      apps::mojom::PatternMatchType::kNone, intent_filter);
+
+  std::set<std::string> links =
+      apps_util::AppManagementGetSupportedLinks(intent_filter);
+
+  EXPECT_EQ(links.size(), 1u);
+  EXPECT_EQ(links.count(kHostUrlGoogle), 1u);
+}
+
+TEST_F(IntentFilterUtilTest, ValidAndInvalidSchemeAndOneHost) {
+  auto intent_filter = apps::mojom::IntentFilter::New();
+
+  std::vector<apps::mojom::ConditionValuePtr> condition_values;
+
+  condition_values.push_back(apps_util::MakeConditionValue(
+      url::kHttpScheme, apps::mojom::PatternMatchType::kNone));
+
+  condition_values.push_back(apps_util::MakeConditionValue(
+      url::kTelScheme, apps::mojom::PatternMatchType::kNone));
+
+  intent_filter->conditions.push_back(apps_util::MakeCondition(
+      apps::mojom::ConditionType::kScheme, std::move(condition_values)));
+
+  apps_util::AddSingleValueCondition(
+      apps::mojom::ConditionType::kHost, kHostUrlGoogle,
+      apps::mojom::PatternMatchType::kNone, intent_filter);
+
+  std::set<std::string> links =
+      apps_util::AppManagementGetSupportedLinks(intent_filter);
+
+  EXPECT_EQ(links.size(), 1u);
+  EXPECT_EQ(links.count(kHostUrlGoogle), 1u);
+}
+
+TEST_F(IntentFilterUtilTest, OneSchemeAndMultipleHosts) {
+  auto intent_filter = apps::mojom::IntentFilter::New();
+
+  apps_util::AddSingleValueCondition(
+      apps::mojom::ConditionType::kScheme, url::kHttpScheme,
+      apps::mojom::PatternMatchType::kNone, intent_filter);
+
+  std::vector<apps::mojom::ConditionValuePtr> condition_values;
+
+  condition_values.push_back(apps_util::MakeConditionValue(
+      kHostUrlGoogle, apps::mojom::PatternMatchType::kNone));
+
+  condition_values.push_back(apps_util::MakeConditionValue(
+      kHostUrlGmail, apps::mojom::PatternMatchType::kNone));
+
+  intent_filter->conditions.push_back(apps_util::MakeCondition(
+      apps::mojom::ConditionType::kHost, std::move(condition_values)));
+
+  std::set<std::string> links =
+      apps_util::AppManagementGetSupportedLinks(intent_filter);
+
+  EXPECT_EQ(links.size(), 2u);
+  EXPECT_EQ(links.count(kHostUrlGoogle), 1u);
+  EXPECT_EQ(links.count(kHostUrlGmail), 1u);
+}
+
+TEST_F(IntentFilterUtilTest, MultipleSchemesAndMultipleHosts) {
+  auto intent_filter = apps::mojom::IntentFilter::New();
+
+  std::vector<apps::mojom::ConditionValuePtr> condition_values_scheme;
+
+  condition_values_scheme.push_back(apps_util::MakeConditionValue(
+      url::kHttpScheme, apps::mojom::PatternMatchType::kNone));
+
+  condition_values_scheme.push_back(apps_util::MakeConditionValue(
+      url::kHttpsScheme, apps::mojom::PatternMatchType::kNone));
+
+  intent_filter->conditions.push_back(apps_util::MakeCondition(
+      apps::mojom::ConditionType::kScheme, std::move(condition_values_scheme)));
+
+  std::vector<apps::mojom::ConditionValuePtr> condition_values_host;
+
+  condition_values_host.push_back(apps_util::MakeConditionValue(
+      kHostUrlGoogle, apps::mojom::PatternMatchType::kNone));
+
+  condition_values_host.push_back(apps_util::MakeConditionValue(
+      kHostUrlGmail, apps::mojom::PatternMatchType::kNone));
+
+  intent_filter->conditions.push_back(apps_util::MakeCondition(
+      apps::mojom::ConditionType::kHost, std::move(condition_values_host)));
+
+  std::set<std::string> links =
+      apps_util::AppManagementGetSupportedLinks(intent_filter);
+
+  EXPECT_EQ(links.size(), 2u);
+  EXPECT_EQ(links.count(kHostUrlGoogle), 1u);
+  EXPECT_EQ(links.count(kHostUrlGmail), 1u);
+}
diff --git a/components/services/storage/BUILD.gn b/components/services/storage/BUILD.gn
index 3d540f5..ee08b3b 100644
--- a/components/services/storage/BUILD.gn
+++ b/components/services/storage/BUILD.gn
@@ -12,8 +12,6 @@
     "dom_storage/dom_storage_constants.h",
     "dom_storage/dom_storage_database.cc",
     "dom_storage/dom_storage_database.h",
-    "dom_storage/legacy_dom_storage_database.cc",
-    "dom_storage/legacy_dom_storage_database.h",
     "dom_storage/local_storage_impl.cc",
     "dom_storage/local_storage_impl.h",
     "dom_storage/session_storage_area_impl.cc",
@@ -94,7 +92,6 @@
     "//sql",
     "//third_party/blink/public/common",
     "//third_party/leveldatabase",
-    "//third_party/sqlite",
     "//url",
   ]
 
@@ -144,7 +141,6 @@
 
   sources = [
     "dom_storage/dom_storage_database_unittest.cc",
-    "dom_storage/legacy_dom_storage_database_unittest.cc",
     "dom_storage/local_storage_impl_unittest.cc",
     "dom_storage/session_storage_area_impl_unittest.cc",
     "dom_storage/session_storage_data_map_unittest.cc",
@@ -185,7 +181,6 @@
     "//mojo/public/cpp/system",
     "//net",
     "//net:test_support",
-    "//sql:test_support",
     "//testing/gmock",
     "//testing/gtest",
   ]
diff --git a/components/services/storage/dom_storage/legacy_dom_storage_database.cc b/components/services/storage/dom_storage/legacy_dom_storage_database.cc
deleted file mode 100644
index e953815..0000000
--- a/components/services/storage/dom_storage/legacy_dom_storage_database.cc
+++ /dev/null
@@ -1,258 +0,0 @@
-// Copyright 2013 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/services/storage/dom_storage/legacy_dom_storage_database.h"
-
-#include "base/bind.h"
-#include "base/files/file_util.h"
-#include "base/logging.h"
-#include "components/services/storage/public/cpp/filesystem/filesystem_proxy.h"
-#include "sql/database.h"
-#include "sql/statement.h"
-#include "sql/transaction.h"
-#include "third_party/sqlite/sqlite3.h"
-
-namespace storage {
-
-LegacyDomStorageDatabase::LegacyDomStorageDatabase(
-    const base::FilePath& file_path,
-    std::unique_ptr<FilesystemProxy> filesystem_proxy)
-    : file_path_(file_path), filesystem_proxy_(std::move(filesystem_proxy)) {
-  DCHECK(!file_path_.empty());
-  Init();
-}
-
-LegacyDomStorageDatabase::LegacyDomStorageDatabase(
-    std::unique_ptr<FilesystemProxy> filesystem_proxy)
-    : filesystem_proxy_(std::move(filesystem_proxy)) {
-  Init();
-}
-
-void LegacyDomStorageDatabase::Init() {
-  failed_to_open_ = false;
-  tried_to_recreate_ = false;
-  known_to_be_empty_ = false;
-}
-
-LegacyDomStorageDatabase::~LegacyDomStorageDatabase() {
-  if (known_to_be_empty_ && !file_path_.empty()) {
-    // Delete the db and any lingering journal file from disk.
-    Close();
-    sql::Database::Delete(file_path_);
-  }
-}
-
-void LegacyDomStorageDatabase::ReadAllValues(
-    LegacyDomStorageValuesMap* result) {
-  if (!LazyOpen(false))
-    return;
-
-  sql::Statement statement(
-      db_->GetCachedStatement(SQL_FROM_HERE, "SELECT * from ItemTable"));
-  DCHECK(statement.is_valid());
-
-  while (statement.Step()) {
-    std::u16string key = statement.ColumnString16(0);
-    std::u16string value;
-    statement.ColumnBlobAsString16(1, &value);
-    (*result)[key] = value;
-  }
-  known_to_be_empty_ = result->empty();
-
-  // Drop SQLite's caches.
-  db_->TrimMemory();
-}
-
-bool LegacyDomStorageDatabase::CommitChanges(
-    bool clear_all_first,
-    const LegacyDomStorageValuesMap& changes) {
-  if (!LazyOpen(!changes.empty())) {
-    // If we're being asked to commit changes that will result in an
-    // empty database, we return true if the database file doesn't exist.
-    return clear_all_first && changes.empty() &&
-           !filesystem_proxy_->PathExists(file_path_);
-  }
-
-  bool old_known_to_be_empty = known_to_be_empty_;
-  sql::Transaction transaction(db_.get());
-  if (!transaction.Begin())
-    return false;
-
-  if (clear_all_first) {
-    if (!db_->Execute("DELETE FROM ItemTable"))
-      return false;
-    known_to_be_empty_ = true;
-  }
-
-  bool did_delete = false;
-  bool did_insert = false;
-  auto it = changes.begin();
-  for (; it != changes.end(); ++it) {
-    sql::Statement statement;
-    const std::u16string& key = it->first;
-    const absl::optional<std::u16string>& value = it->second;
-    if (!value.has_value()) {
-      statement.Assign(db_->GetCachedStatement(
-          SQL_FROM_HERE, "DELETE FROM ItemTable WHERE key=?"));
-      statement.BindString16(0, key);
-      did_delete = true;
-    } else {
-      statement.Assign(db_->GetCachedStatement(
-          SQL_FROM_HERE, "INSERT INTO ItemTable VALUES (?,?)"));
-      statement.BindString16(0, key);
-      statement.BindBlob(1, value.value().data(),
-                         value.value().length() * sizeof(char16_t));
-      known_to_be_empty_ = false;
-      did_insert = true;
-    }
-    DCHECK(statement.is_valid());
-    statement.Run();
-  }
-
-  if (!known_to_be_empty_ && did_delete && !did_insert) {
-    sql::Statement statement(db_->GetCachedStatement(
-        SQL_FROM_HERE, "SELECT count(key) from ItemTable"));
-    if (statement.Step())
-      known_to_be_empty_ = statement.ColumnInt(0) == 0;
-  }
-
-  bool success = transaction.Commit();
-  if (!success)
-    known_to_be_empty_ = old_known_to_be_empty;
-
-  // Drop SQLite's caches.
-  db_->TrimMemory();
-
-  return success;
-}
-
-void LegacyDomStorageDatabase::ReportMemoryUsage(
-    base::trace_event::ProcessMemoryDump* pmd,
-    const std::string& name) {
-  if (IsOpen())
-    db_->ReportMemoryUsage(pmd, name);
-}
-
-bool LegacyDomStorageDatabase::LazyOpen(bool create_if_needed) {
-  if (failed_to_open_) {
-    // Don't try to open a database that we know has failed
-    // already.
-    return false;
-  }
-
-  if (IsOpen())
-    return true;
-
-  bool database_exists = filesystem_proxy_->PathExists(file_path_);
-
-  if (!database_exists && !create_if_needed) {
-    // If the file doesn't exist already and we haven't been asked to create
-    // a file on disk, then we don't bother opening the database. This means
-    // we wait until we absolutely need to put something onto disk before we
-    // do so.
-    return false;
-  }
-
-  db_ = std::make_unique<sql::Database>(sql::DatabaseOptions{
-      // This database should only be accessed from the process hosting the
-      // storage service, so exclusive locking is appropriate.
-      .exclusive_locking = true,
-      .page_size = 4096,
-      .cache_size = 500});
-  db_->set_histogram_tag("DOMStorageDatabase");
-
-  // This database is only opened to migrate DOMStorage data to a new backend.
-  // Given the use case, mmap()'s performance improvements are not worth the
-  // (tiny amount of) problems that mmap() may cause.
-  db_->set_mmap_disabled();
-
-  if (!db_->Open(file_path_)) {
-    LOG(ERROR) << "Unable to open DOM storage database at "
-               << file_path_.value() << " error: " << db_->GetErrorMessage();
-    if (database_exists && !tried_to_recreate_)
-      return DeleteFileAndRecreate();
-    failed_to_open_ = true;
-    return false;
-  }
-
-  // sql::Database uses UTF-8 encoding, but WebCore style databases use
-  // UTF-16, so ensure we match.
-  ignore_result(db_->Execute("PRAGMA encoding=\"UTF-16\""));
-
-  if (!database_exists) {
-    // This is a new database, create the table and we're done!
-    if (CreateTableV2())
-      return true;
-  } else {
-    // The database exists already - check if we need to upgrade
-    // and whether it's usable (i.e. not corrupted).
-    SchemaVersion current_version = DetectSchemaVersion();
-
-    if (current_version == V2)
-      return true;
-  }
-
-  // This is the exceptional case - to try and recover we'll attempt
-  // to delete the file and start again.
-  Close();
-  return DeleteFileAndRecreate();
-}
-
-LegacyDomStorageDatabase::SchemaVersion
-LegacyDomStorageDatabase::DetectSchemaVersion() {
-  DCHECK(IsOpen());
-
-  // Connection::Open() may succeed even if the file we try and open is not a
-  // database, however in the case that the database is corrupted to the point
-  // that SQLite doesn't actually think it's a database,
-  // sql::Database::GetCachedStatement will DCHECK when we later try and
-  // run statements. So we run a query here that will not DCHECK but fail
-  // on an invalid database to verify that what we've opened is usable.
-  if (db_->ExecuteAndReturnErrorCode("PRAGMA auto_vacuum") != SQLITE_OK)
-    return INVALID;
-
-  // Look at the current schema - if it doesn't look right, assume corrupt.
-  if (!db_->DoesTableExist("ItemTable") ||
-      !db_->DoesColumnExist("ItemTable", "key") ||
-      !db_->DoesColumnExist("ItemTable", "value"))
-    return INVALID;
-
-  return V2;
-}
-
-bool LegacyDomStorageDatabase::CreateTableV2() {
-  DCHECK(IsOpen());
-
-  return db_->Execute(
-      "CREATE TABLE ItemTable ("
-      "key TEXT UNIQUE ON CONFLICT REPLACE, "
-      "value BLOB NOT NULL ON CONFLICT FAIL)");
-}
-
-bool LegacyDomStorageDatabase::DeleteFileAndRecreate() {
-  DCHECK(!IsOpen());
-  DCHECK(filesystem_proxy_->PathExists(file_path_));
-
-  // We should only try and do this once.
-  if (tried_to_recreate_)
-    return false;
-
-  tried_to_recreate_ = true;
-
-  absl::optional<base::File::Info> info =
-      filesystem_proxy_->GetFileInfo(file_path_);
-  // If it's not a directory and we can delete the file, try and open it again.
-  if (info && !info->is_directory && sql::Database::Delete(file_path_)) {
-    return LazyOpen(true);
-  }
-
-  failed_to_open_ = true;
-  return false;
-}
-
-void LegacyDomStorageDatabase::Close() {
-  db_.reset(nullptr);
-}
-
-}  // namespace storage
diff --git a/components/services/storage/dom_storage/legacy_dom_storage_database.h b/components/services/storage/dom_storage/legacy_dom_storage_database.h
deleted file mode 100644
index f6ef243..0000000
--- a/components/services/storage/dom_storage/legacy_dom_storage_database.h
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright 2013 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_SERVICES_STORAGE_DOM_STORAGE_LEGACY_DOM_STORAGE_DATABASE_H_
-#define COMPONENTS_SERVICES_STORAGE_DOM_STORAGE_LEGACY_DOM_STORAGE_DATABASE_H_
-
-#include <map>
-#include <memory>
-#include <string>
-
-#include "base/files/file_path.h"
-#include "base/gtest_prod_util.h"
-#include "sql/database.h"
-#include "third_party/abseil-cpp/absl/types/optional.h"
-
-namespace base {
-namespace trace_event {
-class ProcessMemoryDump;
-}
-}  // namespace base
-
-namespace storage {
-
-class FilesystemProxy;
-
-using LegacyDomStorageValuesMap =
-    std::map<std::u16string, absl::optional<std::u16string>>;
-
-// Represents a SQLite based backing for DOM storage data. This
-// class is designed to be used on a single thread.
-class LegacyDomStorageDatabase {
- public:
-  LegacyDomStorageDatabase(const base::FilePath& file_path,
-                           std::unique_ptr<FilesystemProxy> filesystem_proxy);
-  virtual ~LegacyDomStorageDatabase();  // virtual for unit testing
-
-  // Reads all the key, value pairs stored in the database and returns them.
-  // |result| is assumed to be empty and any duplicate keys will be overwritten.
-  // If the database exists on disk then it will be opened. If it does not exist
-  // then it will not be created and |result| will be unmodified.
-  void ReadAllValues(LegacyDomStorageValuesMap* result);
-
-  // Updates the backing database. Will remove all keys before updating the
-  // database if |clear_all_first| is set. Then all entries in |changes| will be
-  // examined - keys mapped to a nullopt value will be removed and all others
-  // will be inserted/updated as appropriate.
-  bool CommitChanges(bool clear_all_first,
-                     const LegacyDomStorageValuesMap& changes);
-
-  // Adds memory statistics of the database to |pmd| for tracing.
-  void ReportMemoryUsage(base::trace_event::ProcessMemoryDump* pmd,
-                         const std::string& name);
-
-  // Simple getter for the path we were constructed with.
-  const base::FilePath& file_path() const { return file_path_; }
-
- protected:
-  // Constructor that uses an in-memory sqlite database, for testing.
-  explicit LegacyDomStorageDatabase(
-      std::unique_ptr<FilesystemProxy> filesystem_proxy);
-
- private:
-  friend class LocalStorageDatabaseAdapter;
-  FRIEND_TEST_ALL_PREFIXES(LegacyDomStorageDatabaseTest, SimpleOpenAndClose);
-  FRIEND_TEST_ALL_PREFIXES(LegacyDomStorageDatabaseTest, TestLazyOpenIsLazy);
-  FRIEND_TEST_ALL_PREFIXES(LegacyDomStorageDatabaseTest,
-                           TestDetectSchemaVersion);
-  FRIEND_TEST_ALL_PREFIXES(LegacyDomStorageDatabaseTest,
-                           TestLazyOpenUpgradesDatabase);
-  FRIEND_TEST_ALL_PREFIXES(LegacyDomStorageDatabaseTest,
-                           SimpleWriteAndReadBack);
-  FRIEND_TEST_ALL_PREFIXES(LegacyDomStorageDatabaseTest, WriteWithClear);
-  FRIEND_TEST_ALL_PREFIXES(LegacyDomStorageDatabaseTest,
-                           UpgradeFromV1ToV2WithData);
-  FRIEND_TEST_ALL_PREFIXES(LegacyDomStorageDatabaseTest,
-                           TestSimpleRemoveOneValue);
-  FRIEND_TEST_ALL_PREFIXES(LegacyDomStorageDatabaseTest,
-                           TestCanOpenAndReadWebCoreDatabase);
-  FRIEND_TEST_ALL_PREFIXES(LegacyDomStorageDatabaseTest,
-                           TestCanOpenFileThatIsNotADatabase);
-  FRIEND_TEST_ALL_PREFIXES(LegacyDomStorageAreaTest, BackingDatabaseOpened);
-  FRIEND_TEST_ALL_PREFIXES(LegacyDomStorageAreaParamTest,
-                           ShallowCopyWithBacking);
-  FRIEND_TEST_ALL_PREFIXES(LegacyDomStorageAreaTest,
-                           EnableDisableCachingWithBacking);
-  FRIEND_TEST_ALL_PREFIXES(LegacyDomStorageAreaTest, CommitTasks);
-  FRIEND_TEST_ALL_PREFIXES(LegacyDomStorageAreaTest, PurgeMemory);
-
-  enum SchemaVersion {
-    INVALID,
-
-    // V1 is deprecated.
-
-    // 2011-07-15 - https://bugs.webkit.org/show_bug.cgi?id=58762
-    V2,
-  };
-
-  // Open the database at file_path_ if it exists already and creates it if
-  // |create_if_needed| is true.
-  // Ensures we are at the correct database version and creates or updates
-  // tables as necessary. Returns false on failure.
-  bool LazyOpen(bool create_if_needed);
-
-  // Analyses the database to verify that the connection that is open is indeed
-  // a valid database and works out the schema version.
-  SchemaVersion DetectSchemaVersion();
-
-  // Creates the database table at V2. Returns true if the table was created
-  // successfully, false otherwise. Will return false if the table already
-  // exists.
-  bool CreateTableV2();
-
-  // If we have issues while trying to open the file (corrupted databse,
-  // failing to upgrade, that sort of thing) this function will remove
-  // the file from disk and attempt to create a new database from
-  // scratch.
-  bool DeleteFileAndRecreate();
-
-  void Close();
-  bool IsOpen() const { return db_.get() ? db_->is_open() : false; }
-
-  // Initialization code shared between the two constructors of this class.
-  void Init();
-
-  // Path to the database on disk.
-  const base::FilePath file_path_;
-  const std::unique_ptr<FilesystemProxy> filesystem_proxy_;
-  std::unique_ptr<sql::Database> db_;
-  bool failed_to_open_;
-  bool tried_to_recreate_;
-  bool known_to_be_empty_;
-
-  DISALLOW_COPY_AND_ASSIGN(LegacyDomStorageDatabase);
-};
-
-}  // namespace storage
-
-#endif  // COMPONENTS_SERVICES_STORAGE_DOM_STORAGE_LEGACY_DOM_STORAGE_DATABASE_H_
diff --git a/components/services/storage/dom_storage/legacy_dom_storage_database_unittest.cc b/components/services/storage/dom_storage/legacy_dom_storage_database_unittest.cc
deleted file mode 100644
index da7794e..0000000
--- a/components/services/storage/dom_storage/legacy_dom_storage_database_unittest.cc
+++ /dev/null
@@ -1,332 +0,0 @@
-// Copyright 2013 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/services/storage/dom_storage/legacy_dom_storage_database.h"
-
-#include "base/cxx17_backports.h"
-#include "base/files/file_path.h"
-#include "base/files/file_util.h"
-#include "base/files/scoped_temp_dir.h"
-#include "base/path_service.h"
-#include "base/strings/utf_string_conversions.h"
-#include "components/services/storage/public/cpp/filesystem/filesystem_proxy.h"
-#include "sql/statement.h"
-#include "sql/test/scoped_error_expecter.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using base::ASCIIToUTF16;
-
-namespace storage {
-
-namespace {
-
-std::unique_ptr<FilesystemProxy> MakeFilesystemProxy(
-    const base::FilePath& root = base::FilePath()) {
-  return std::make_unique<FilesystemProxy>(FilesystemProxy::UNRESTRICTED, root);
-}
-
-}  // namespace
-
-void CreateV2Table(sql::Database* db) {
-  ASSERT_TRUE(db->is_open());
-  ASSERT_TRUE(db->Execute("DROP TABLE IF EXISTS ItemTable"));
-  ASSERT_TRUE(
-      db->Execute("CREATE TABLE ItemTable ("
-                  "key TEXT UNIQUE ON CONFLICT REPLACE, "
-                  "value BLOB NOT NULL ON CONFLICT FAIL)"));
-}
-
-void CreateInvalidTable(sql::Database* db) {
-  // Create a table with out a key column - this is "invalid"
-  // as far as the DOM Storage db is concerned.
-  ASSERT_TRUE(db->is_open());
-  ASSERT_TRUE(db->Execute("DROP TABLE IF EXISTS ItemTable"));
-  ASSERT_TRUE(
-      db->Execute("CREATE TABLE IF NOT EXISTS ItemTable ("
-                  "value BLOB NOT NULL ON CONFLICT FAIL)"));
-}
-
-void CheckValuesMatch(LegacyDomStorageDatabase* db,
-                      const LegacyDomStorageValuesMap& expected) {
-  LegacyDomStorageValuesMap values_read;
-  db->ReadAllValues(&values_read);
-  EXPECT_EQ(expected.size(), values_read.size());
-
-  LegacyDomStorageValuesMap::const_iterator it = values_read.begin();
-  for (; it != values_read.end(); ++it) {
-    const std::u16string& key = it->first;
-    const absl::optional<std::u16string>& value = it->second;
-    const absl::optional<std::u16string>& expected_value =
-        expected.find(key)->second;
-    EXPECT_EQ(expected_value, value);
-  }
-}
-
-void CreateMapWithValues(LegacyDomStorageValuesMap* values) {
-  std::u16string kCannedKeys[] = {u"test", u"company", u"date", u"empty"};
-  std::u16string kCannedValues[] = {u"123", u"Google", u"18-01-2012", u""};
-  for (unsigned i = 0; i < base::size(kCannedKeys); i++)
-    (*values)[kCannedKeys[i]] = kCannedValues[i];
-}
-
-TEST(LegacyDomStorageDatabaseTest, SimpleOpenAndClose) {
-  LegacyDomStorageDatabase db(MakeFilesystemProxy());
-  EXPECT_FALSE(db.IsOpen());
-  ASSERT_TRUE(db.LazyOpen(true));
-  EXPECT_TRUE(db.IsOpen());
-  EXPECT_EQ(LegacyDomStorageDatabase::V2, db.DetectSchemaVersion());
-  db.Close();
-  EXPECT_FALSE(db.IsOpen());
-}
-
-TEST(LegacyDomStorageDatabaseTest, CloseEmptyDatabaseDeletesFile) {
-  base::ScopedTempDir temp_dir;
-  ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
-  base::FilePath file_name =
-      temp_dir.GetPath().AppendASCII("TestLegacyDomStorageDatabase.db");
-  LegacyDomStorageValuesMap storage;
-  CreateMapWithValues(&storage);
-
-  // First test the case that explicitly clearing the database will
-  // trigger its deletion from disk.
-  {
-    LegacyDomStorageDatabase db(file_name,
-                                MakeFilesystemProxy(temp_dir.GetPath()));
-    EXPECT_EQ(file_name, db.file_path());
-    ASSERT_TRUE(db.CommitChanges(false, storage));
-  }
-  EXPECT_TRUE(base::PathExists(file_name));
-
-  {
-    // Check that reading an existing db with data in it
-    // keeps the DB on disk on close.
-    LegacyDomStorageDatabase db(file_name,
-                                MakeFilesystemProxy(temp_dir.GetPath()));
-    LegacyDomStorageValuesMap values;
-    db.ReadAllValues(&values);
-    EXPECT_EQ(storage.size(), values.size());
-  }
-
-  EXPECT_TRUE(base::PathExists(file_name));
-  storage.clear();
-
-  {
-    LegacyDomStorageDatabase db(file_name,
-                                MakeFilesystemProxy(temp_dir.GetPath()));
-    ASSERT_TRUE(db.CommitChanges(true, storage));
-  }
-  EXPECT_FALSE(base::PathExists(file_name));
-
-  // Now ensure that a series of updates and removals whose net effect
-  // is an empty database also triggers deletion.
-  CreateMapWithValues(&storage);
-  {
-    LegacyDomStorageDatabase db(file_name,
-                                MakeFilesystemProxy(temp_dir.GetPath()));
-    ASSERT_TRUE(db.CommitChanges(false, storage));
-  }
-
-  EXPECT_TRUE(base::PathExists(file_name));
-
-  {
-    LegacyDomStorageDatabase db(file_name,
-                                MakeFilesystemProxy(temp_dir.GetPath()));
-    ASSERT_TRUE(db.CommitChanges(false, storage));
-    auto it = storage.begin();
-    for (; it != storage.end(); ++it)
-      it->second = absl::nullopt;
-    ASSERT_TRUE(db.CommitChanges(false, storage));
-  }
-  EXPECT_FALSE(base::PathExists(file_name));
-}
-
-TEST(LegacyDomStorageDatabaseTest, TestLazyOpenIsLazy) {
-  // This test needs to operate with a file on disk to ensure that we will
-  // open a file that already exists when only invoking ReadAllValues.
-  base::ScopedTempDir temp_dir;
-  ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
-  base::FilePath file_name =
-      temp_dir.GetPath().AppendASCII("TestLegacyDomStorageDatabase.db");
-
-  LegacyDomStorageDatabase db(file_name,
-                              MakeFilesystemProxy(temp_dir.GetPath()));
-  EXPECT_FALSE(db.IsOpen());
-  LegacyDomStorageValuesMap values;
-  db.ReadAllValues(&values);
-  // Reading an empty db should not open the database.
-  EXPECT_FALSE(db.IsOpen());
-
-  values[u"key"] = u"value";
-  db.CommitChanges(false, values);
-  // Writing content should open the database.
-  EXPECT_TRUE(db.IsOpen());
-
-  db.Close();
-  ASSERT_FALSE(db.IsOpen());
-
-  // Reading from an existing database should open the database.
-  CheckValuesMatch(&db, values);
-  EXPECT_TRUE(db.IsOpen());
-}
-
-TEST(LegacyDomStorageDatabaseTest, TestDetectSchemaVersion) {
-  LegacyDomStorageDatabase db(MakeFilesystemProxy());
-  db.db_ = std::make_unique<sql::Database>();
-  ASSERT_TRUE(db.db_->OpenInMemory());
-
-  CreateInvalidTable(db.db_.get());
-  EXPECT_EQ(LegacyDomStorageDatabase::INVALID, db.DetectSchemaVersion());
-
-  CreateV2Table(db.db_.get());
-  EXPECT_EQ(LegacyDomStorageDatabase::V2, db.DetectSchemaVersion());
-}
-
-TEST(LegacyDomStorageDatabaseTest, SimpleWriteAndReadBack) {
-  LegacyDomStorageDatabase db(MakeFilesystemProxy());
-
-  LegacyDomStorageValuesMap storage;
-  CreateMapWithValues(&storage);
-
-  EXPECT_TRUE(db.CommitChanges(false, storage));
-  CheckValuesMatch(&db, storage);
-}
-
-TEST(LegacyDomStorageDatabaseTest, WriteWithClear) {
-  LegacyDomStorageDatabase db(MakeFilesystemProxy());
-
-  LegacyDomStorageValuesMap storage;
-  CreateMapWithValues(&storage);
-
-  ASSERT_TRUE(db.CommitChanges(false, storage));
-  CheckValuesMatch(&db, storage);
-
-  // Insert some values, clearing the database first.
-  storage.clear();
-  storage[u"another_key"] = u"test";
-  ASSERT_TRUE(db.CommitChanges(true, storage));
-  CheckValuesMatch(&db, storage);
-
-  // Now clear the values without inserting any new ones.
-  storage.clear();
-  ASSERT_TRUE(db.CommitChanges(true, storage));
-  CheckValuesMatch(&db, storage);
-}
-
-TEST(LegacyDomStorageDatabaseTest, TestSimpleRemoveOneValue) {
-  LegacyDomStorageDatabase db(MakeFilesystemProxy());
-
-  ASSERT_TRUE(db.LazyOpen(true));
-  const std::u16string kCannedKey = u"test";
-  const std::u16string kCannedValue = u"data";
-  LegacyDomStorageValuesMap expected;
-  expected[kCannedKey] = kCannedValue;
-
-  // First write some data into the database.
-  ASSERT_TRUE(db.CommitChanges(false, expected));
-  CheckValuesMatch(&db, expected);
-
-  LegacyDomStorageValuesMap values;
-  // A null string in the map should mean that that key gets
-  // removed.
-  values[kCannedKey] = absl::nullopt;
-  EXPECT_TRUE(db.CommitChanges(false, values));
-
-  expected.clear();
-  CheckValuesMatch(&db, expected);
-}
-
-TEST(LegacyDomStorageDatabaseTest, TestCanOpenAndReadWebCoreDatabase) {
-  base::FilePath dir_test_data;
-  ASSERT_TRUE(base::PathService::Get(base::DIR_SOURCE_ROOT, &dir_test_data));
-  base::FilePath test_data = dir_test_data.AppendASCII("components")
-                                 .AppendASCII("services")
-                                 .AppendASCII("storage")
-                                 .AppendASCII("test_data");
-  test_data = test_data.AppendASCII("legacy_dom_storage_database.localstorage");
-  ASSERT_TRUE(base::PathExists(test_data));
-
-  // Create a temporary copy of the WebCore test database, so as to avoid
-  // modifying the source file.
-  base::ScopedTempDir temp_dir;
-  ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
-  base::FilePath webcore_database =
-      temp_dir.GetPath().AppendASCII("dom_storage");
-  ASSERT_TRUE(base::CopyFile(test_data, webcore_database));
-
-  LegacyDomStorageDatabase db(webcore_database,
-                              MakeFilesystemProxy(temp_dir.GetPath()));
-  LegacyDomStorageValuesMap values;
-  db.ReadAllValues(&values);
-  EXPECT_TRUE(db.IsOpen());
-  EXPECT_EQ(2u, values.size());
-
-  LegacyDomStorageValuesMap::const_iterator it = values.find(u"value");
-  EXPECT_TRUE(it != values.end());
-  EXPECT_EQ(u"I am in local storage!", it->second.value());
-
-  it = values.find(u"timestamp");
-  EXPECT_TRUE(it != values.end());
-  EXPECT_EQ(u"1326738338841", it->second.value());
-
-  it = values.find(u"not_there");
-  EXPECT_TRUE(it == values.end());
-}
-
-TEST(LegacyDomStorageDatabaseTest, TestCanOpenFileThatIsNotADatabase) {
-  // Write into the temporary file first.
-  base::ScopedTempDir temp_dir;
-  ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
-  base::FilePath file_name =
-      temp_dir.GetPath().AppendASCII("TestLegacyDomStorageDatabase.db");
-
-  const char kData[] = "I am not a database.";
-  base::WriteFile(file_name, kData, strlen(kData));
-
-  {
-    sql::test::ScopedErrorExpecter expecter;
-    expecter.ExpectError(SQLITE_NOTADB);
-
-    // Try and open the file. As it's not a database, we should end up deleting
-    // it and creating a new, valid file, so everything should actually
-    // succeed.
-    LegacyDomStorageDatabase db(file_name,
-                                MakeFilesystemProxy(temp_dir.GetPath()));
-    LegacyDomStorageValuesMap values;
-    CreateMapWithValues(&values);
-    EXPECT_TRUE(db.CommitChanges(true, values));
-    EXPECT_TRUE(db.CommitChanges(false, values));
-    EXPECT_TRUE(db.IsOpen());
-
-    CheckValuesMatch(&db, values);
-
-    ASSERT_TRUE(expecter.SawExpectedErrors());
-  }
-
-  {
-    sql::test::ScopedErrorExpecter expecter;
-    expecter.ExpectError(SQLITE_CANTOPEN);
-
-    // Try to open a directory, we should fail gracefully and not attempt
-    // to delete it.
-    LegacyDomStorageDatabase db(temp_dir.GetPath(),
-                                MakeFilesystemProxy(temp_dir.GetPath()));
-    LegacyDomStorageValuesMap values;
-    CreateMapWithValues(&values);
-    EXPECT_FALSE(db.CommitChanges(true, values));
-    EXPECT_FALSE(db.CommitChanges(false, values));
-    EXPECT_FALSE(db.IsOpen());
-
-    values.clear();
-
-    db.ReadAllValues(&values);
-    EXPECT_EQ(0u, values.size());
-    EXPECT_FALSE(db.IsOpen());
-
-    EXPECT_TRUE(base::PathExists(temp_dir.GetPath()));
-
-    ASSERT_TRUE(expecter.SawExpectedErrors());
-  }
-}
-
-}  // namespace storage
diff --git a/components/services/storage/dom_storage/local_storage_impl.cc b/components/services/storage/dom_storage/local_storage_impl.cc
index 53f4bcd..4c8dd65 100644
--- a/components/services/storage/dom_storage/local_storage_impl.cc
+++ b/components/services/storage/dom_storage/local_storage_impl.cc
@@ -34,13 +34,11 @@
 #include "components/services/storage/dom_storage/async_dom_storage_database.h"
 #include "components/services/storage/dom_storage/dom_storage_constants.h"
 #include "components/services/storage/dom_storage/dom_storage_database.h"
-#include "components/services/storage/dom_storage/legacy_dom_storage_database.h"
 #include "components/services/storage/dom_storage/local_storage_database.pb.h"
 #include "components/services/storage/dom_storage/storage_area_impl.h"
 #include "components/services/storage/filesystem_proxy_factory.h"
 #include "components/services/storage/public/cpp/constants.h"
 #include "mojo/public/cpp/bindings/self_owned_receiver.h"
-#include "sql/database.h"
 #include "storage/common/database/database_identifier.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 #include "third_party/leveldatabase/env_chromium.h"
@@ -85,9 +83,6 @@
 const size_t kMaxLocalStorageCacheSize = 20 * 1024 * 1024;
 #endif
 
-static const uint8_t kUTF16Format = 0;
-static const uint8_t kLatin1Format = 1;
-
 DomStorageDatabase::Key CreateMetaDataKey(const url::Origin& origin) {
   auto origin_str = origin.Serialize();
   std::vector<uint8_t> serialized_origin(origin_str.begin(), origin_str.end());
@@ -117,29 +112,6 @@
   std::move(callback).Run();
 }
 
-void MigrateStorageHelper(
-    base::FilePath db_path,
-    const scoped_refptr<base::SingleThreadTaskRunner> reply_task_runner,
-    base::OnceCallback<void(std::unique_ptr<StorageAreaImpl::ValueMap>)>
-        callback) {
-  LegacyDomStorageDatabase db(db_path, CreateFilesystemProxy());
-  LegacyDomStorageValuesMap map;
-  db.ReadAllValues(&map);
-  auto values = std::make_unique<StorageAreaImpl::ValueMap>();
-  for (const auto& it : map) {
-    (*values)[LocalStorageImpl::MigrateString(it.first)] =
-        LocalStorageImpl::MigrateString(it.second.value());
-  }
-  reply_task_runner->PostTask(
-      FROM_HERE, base::BindOnce(std::move(callback), std::move(values)));
-}
-
-// Helper to convert from OnceCallback to Callback.
-void CallMigrationCalback(StorageAreaImpl::ValueMapCallback callback,
-                          std::unique_ptr<StorageAreaImpl::ValueMap> data) {
-  std::move(callback).Run(std::move(data));
-}
-
 DomStorageDatabase::Key MakeOriginPrefix(const url::Origin& origin) {
   const char kDataPrefix = '_';
   const std::string serialized_origin = origin.Serialize();
@@ -210,46 +182,6 @@
   }
 }
 
-const base::FilePath::CharType kLegacyDatabaseFileExtension[] =
-    FILE_PATH_LITERAL(".localstorage");
-
-std::vector<mojom::StorageUsageInfoPtr> GetLegacyLocalStorageUsage(
-    const base::FilePath& directory) {
-  std::unique_ptr<FilesystemProxy> fs = CreateFilesystemProxy();
-  FileErrorOr<std::vector<base::FilePath>> result = fs->GetDirectoryEntries(
-      directory, FilesystemProxy::DirectoryEntryType::kFilesOnly);
-  if (result.is_error())
-    return {};
-
-  std::vector<mojom::StorageUsageInfoPtr> infos;
-  for (const auto& path : result.value()) {
-    if (!path.MatchesExtension(kLegacyDatabaseFileExtension))
-      continue;
-    absl::optional<base::File::Info> info = fs->GetFileInfo(path);
-    if (!info)
-      continue;
-    infos.emplace_back(mojom::StorageUsageInfo::New(
-        LocalStorageImpl::OriginFromLegacyDatabaseFileName(path), info->size,
-        info->last_modified));
-  }
-  return infos;
-}
-
-void InvokeLocalStorageUsageCallbackHelper(
-    LocalStorageImpl::GetUsageCallback callback,
-    std::unique_ptr<std::vector<mojom::StorageUsageInfoPtr>> infos) {
-  std::move(callback).Run(std::move(*infos));
-}
-
-void CollectLocalStorageUsage(std::vector<mojom::StorageUsageInfoPtr>* out_info,
-                              base::OnceClosure done_callback,
-                              std::vector<mojom::StorageUsageInfoPtr> in_info) {
-  out_info->reserve(out_info->size() + in_info.size());
-  for (auto& info : in_info)
-    out_info->push_back(std::move(info));
-  std::move(done_callback).Run();
-}
-
 }  // namespace
 
 class LocalStorageImpl::StorageAreaHolder final
@@ -328,83 +260,9 @@
                               leveldb_env::GetLevelDBStatusUMAValue(status),
                               leveldb_env::LEVELDB_STATUS_MAX);
 
-    // Delete any old database that might still exist if we successfully wrote
-    // data to LevelDB, and our LevelDB is actually disk backed.
-    if (status.ok() && !deleted_old_data_ && !context_->directory_.empty() &&
-        context_->legacy_task_runner_) {
-      deleted_old_data_ = true;
-      context_->legacy_task_runner_->PostTask(
-          FROM_HERE, base::BindOnce(base::IgnoreResult(&sql::Database::Delete),
-                                    sql_db_path()));
-    }
-
     context_->OnCommitResult(status);
   }
 
-  void MigrateData(StorageAreaImpl::ValueMapCallback callback) override {
-    if (context_->legacy_task_runner_ && !context_->directory_.empty()) {
-      context_->legacy_task_runner_->PostTask(
-          FROM_HERE, base::BindOnce(&MigrateStorageHelper, sql_db_path(),
-                                    base::ThreadTaskRunnerHandle::Get(),
-                                    base::BindOnce(&CallMigrationCalback,
-                                                   std::move(callback))));
-      return;
-    }
-    std::move(callback).Run(nullptr);
-  }
-
-  std::vector<StorageAreaImpl::Change> FixUpData(
-      const StorageAreaImpl::ValueMap& data) override {
-    std::vector<StorageAreaImpl::Change> changes;
-    // Chrome M61/M62 had a bug where keys that should have been encoded as
-    // Latin1 were instead encoded as UTF16. Fix this by finding any 8-bit only
-    // keys, and re-encode those. If two encodings of the key exist, the Latin1
-    // encoded value should take precedence.
-    size_t fix_count = 0;
-    for (const auto& it : data) {
-      // Skip over any Latin1 encoded keys, or unknown encodings/corrupted data.
-      if (it.first.empty() || it.first[0] != kUTF16Format)
-        continue;
-      // Check if key is actually 8-bit safe.
-      bool is_8bit = true;
-      for (size_t i = 1; i < it.first.size(); i += sizeof(char16_t)) {
-        // Don't just cast to char16* as that could be undefined behavior.
-        // Instead use memcpy for the conversion, which compilers will generally
-        // optimize away anyway.
-        char16_t char_val;
-        memcpy(&char_val, it.first.data() + i, sizeof(char16_t));
-        if (char_val & 0xff00) {
-          is_8bit = false;
-          break;
-        }
-      }
-      if (!is_8bit)
-        continue;
-      // Found a key that should have been encoded differently. Decode and
-      // re-encode.
-      std::vector<uint8_t> key(1 + (it.first.size() - 1) / 2);
-      key[0] = kLatin1Format;
-      for (size_t in = 1, out = 1; in < it.first.size();
-           in += sizeof(char16_t), out++) {
-        char16_t char_val;
-        memcpy(&char_val, it.first.data() + in, sizeof(char16_t));
-        key[out] = char_val;
-      }
-      // Delete incorrect key.
-      changes.push_back(std::make_pair(it.first, absl::nullopt));
-      fix_count++;
-      // Check if correct key already exists in data.
-      auto new_it = data.find(key);
-      if (new_it != data.end())
-        continue;
-      // Update value for correct key.
-      changes.push_back(std::make_pair(key, it.second));
-    }
-    UMA_HISTOGRAM_BOOLEAN("LocalStorageContext.MigrationFixUpNeeded",
-                          fix_count != 0);
-    return changes;
-  }
-
   void OnMapLoaded(leveldb::Status status) override {
     if (!status.ok()) {
       UMA_HISTOGRAM_ENUMERATION("LocalStorageContext.MapLoadError",
@@ -421,13 +279,6 @@
   bool has_bindings() const { return has_bindings_; }
 
  private:
-  base::FilePath sql_db_path() const {
-    if (context_->directory_.empty())
-      return base::FilePath();
-    return context_->directory_.Append(
-        LocalStorageImpl::LegacyDatabaseFileNameFromOrigin(origin_));
-  }
-
   LocalStorageImpl* context_;
   url::Origin origin_;
   // Holds the same value as |area_|. The reason for this is that
@@ -436,34 +287,12 @@
   // could already be null, but this field should still be valid.
   StorageAreaImpl* area_ptr_;
   std::unique_ptr<StorageAreaImpl> area_;
-  bool deleted_old_data_ = false;
   bool has_bindings_ = false;
 };
 
-// static
-base::FilePath LocalStorageImpl::LegacyDatabaseFileNameFromOrigin(
-    const url::Origin& origin) {
-  std::string filename = GetIdentifierFromOrigin(origin);
-  // There is no base::FilePath.AppendExtension() method, so start with just the
-  // extension as the filename, and then InsertBeforeExtension the desired
-  // name.
-  return base::FilePath()
-      .Append(kLegacyDatabaseFileExtension)
-      .InsertBeforeExtensionASCII(filename);
-}
-
-// static
-url::Origin LocalStorageImpl::OriginFromLegacyDatabaseFileName(
-    const base::FilePath& name) {
-  DCHECK(name.MatchesExtension(kLegacyDatabaseFileExtension));
-  std::string origin_id = name.BaseName().RemoveExtension().MaybeAsASCII();
-  return GetOriginFromIdentifier(origin_id);
-}
-
 LocalStorageImpl::LocalStorageImpl(
     const base::FilePath& storage_root,
     scoped_refptr<base::SequencedTaskRunner> task_runner,
-    scoped_refptr<base::SequencedTaskRunner> legacy_task_runner,
     mojo::PendingReceiver<mojom::LocalStorageControl> receiver)
     : directory_(storage_root.empty() ? storage_root
                                       : storage_root.Append(kLocalStoragePath)),
@@ -472,7 +301,6 @@
            base::TaskShutdownBehavior::BLOCK_SHUTDOWN})),
       memory_dump_id_(base::StringPrintf("LocalStorage/0x%" PRIXPTR,
                                          reinterpret_cast<uintptr_t>(this))),
-      legacy_task_runner_(std::move(legacy_task_runner)),
       is_low_end_device_(base::SysInfo::IsLowEndDevice()) {
   base::trace_event::MemoryDumpManager::GetInstance()
       ->RegisterDumpProviderWithSequencedTaskRunner(
@@ -529,14 +357,6 @@
   } else {
     std::move(callback).Run();
   }
-
-  if (!directory_.empty()) {
-    legacy_task_runner_->PostTask(
-        FROM_HERE,
-        base::BindOnce(
-            base::IgnoreResult(&sql::Database::Delete),
-            directory_.Append(LegacyDatabaseFileNameFromOrigin(origin))));
-  }
 }
 
 void LocalStorageImpl::CleanUpStorage(CleanUpStorageCallback callback) {
@@ -740,32 +560,6 @@
   return true;
 }
 
-// static
-std::vector<uint8_t> LocalStorageImpl::MigrateString(
-    const std::u16string& input) {
-  // TODO(mek): Deduplicate this somehow with the code in
-  // LocalStorageCachedArea::String16ToUint8Vector.
-  bool is_8bit = true;
-  for (const auto& c : input) {
-    if (c & 0xff00) {
-      is_8bit = false;
-      break;
-    }
-  }
-  if (is_8bit) {
-    std::vector<uint8_t> result(input.size() + 1);
-    result[0] = kLatin1Format;
-    std::copy(input.begin(), input.end(), result.begin() + 1);
-    return result;
-  }
-  const uint8_t* data = reinterpret_cast<const uint8_t*>(input.data());
-  std::vector<uint8_t> result;
-  result.reserve(input.size() * sizeof(char16_t) + 1);
-  result.push_back(kUTF16Format);
-  result.insert(result.end(), data, data + input.size() * sizeof(char16_t));
-  return result;
-}
-
 void LocalStorageImpl::SetDatabaseOpenCallbackForTesting(
     base::OnceClosure callback) {
   RunWhenConnected(std::move(callback));
@@ -997,25 +791,6 @@
 }
 
 void LocalStorageImpl::RetrieveStorageUsage(GetUsageCallback callback) {
-  auto infos = std::make_unique<std::vector<mojom::StorageUsageInfoPtr>>();
-  auto* infos_ptr = infos.get();
-  base::RepeatingClosure got_local_storage_usage = base::BarrierClosure(
-      2, base::BindOnce(&InvokeLocalStorageUsageCallbackHelper,
-                        std::move(callback), std::move(infos)));
-  auto collect_callback = base::BindRepeating(
-      CollectLocalStorageUsage, infos_ptr, std::move(got_local_storage_usage));
-
-  // Grab metadata about pre-migration Local Storage data in the background
-  // while we query |database_| below.
-  if (directory_.empty()) {
-    collect_callback.Run({});
-  } else {
-    base::PostTaskAndReplyWithResult(
-        legacy_task_runner_.get(), FROM_HERE,
-        base::BindOnce(&GetLegacyLocalStorageUsage, directory_),
-        base::BindOnce(collect_callback));
-  }
-
   if (!database_) {
     // If for whatever reason no leveldb database is available, no storage is
     // used, so return an array only containing the current areas.
@@ -1024,7 +799,7 @@
     for (const auto& it : areas_) {
       result.emplace_back(mojom::StorageUsageInfo::New(it.first, 0, now));
     }
-    collect_callback.Run(std::move(result));
+    std::move(callback).Run(std::move(result));
   } else {
     database_->RunDatabaseTask(
         base::BindOnce([](const DomStorageDatabase& db) {
@@ -1033,8 +808,7 @@
           return data;
         }),
         base::BindOnce(&LocalStorageImpl::OnGotMetaData,
-                       weak_ptr_factory_.GetWeakPtr(),
-                       base::BindOnce(collect_callback)));
+                       weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
   }
 }
 
diff --git a/components/services/storage/dom_storage/local_storage_impl.h b/components/services/storage/dom_storage/local_storage_impl.h
index e2f7916..acb3cbc9 100644
--- a/components/services/storage/dom_storage/local_storage_impl.h
+++ b/components/services/storage/dom_storage/local_storage_impl.h
@@ -38,11 +38,6 @@
 class LocalStorageImpl : public base::trace_event::MemoryDumpProvider,
                          public mojom::LocalStorageControl {
  public:
-  static base::FilePath LegacyDatabaseFileNameFromOrigin(
-      const url::Origin& origin);
-  static url::Origin OriginFromLegacyDatabaseFileName(
-      const base::FilePath& file_name);
-
   // Constructs a Local Storage implementation which will create its root
   // "Local Storage" directory in |storage_root| if non-empty. |task_runner|
   // run tasks on the same sequence as the one which constructs this object.
@@ -51,7 +46,6 @@
   // object to allow for remote control via the LocalStorageControl interface.
   LocalStorageImpl(const base::FilePath& storage_root,
                    scoped_refptr<base::SequencedTaskRunner> task_runner,
-                   scoped_refptr<base::SequencedTaskRunner> legacy_task_runner,
                    mojo::PendingReceiver<mojom::LocalStorageControl> receiver);
   ~LocalStorageImpl() override;
 
@@ -91,9 +85,6 @@
   bool OnMemoryDump(const base::trace_event::MemoryDumpArgs& args,
                     base::trace_event::ProcessMemoryDump* pmd) override;
 
-  // Converts a string from the old storage format to the new storage format.
-  static std::vector<uint8_t> MigrateString(const std::u16string& input);
-
   // Access the underlying DomStorageDatabase. May be null if the database is
   // not yet open.
   const base::SequenceBound<DomStorageDatabase>& GetDatabaseForTesting() const {
@@ -181,9 +172,6 @@
   // Maps between an origin and its prefixed LevelDB view.
   std::map<url::Origin, std::unique_ptr<StorageAreaHolder>> areas_;
 
-  // Used to access old data for migration.
-  scoped_refptr<base::SequencedTaskRunner> legacy_task_runner_;
-
   bool is_low_end_device_;
   // Counts consecutive commit errors. If this number reaches a threshold, the
   // whole database is thrown away.
diff --git a/components/services/storage/dom_storage/local_storage_impl_unittest.cc b/components/services/storage/dom_storage/local_storage_impl_unittest.cc
index cee7810..46bd281 100644
--- a/components/services/storage/dom_storage/local_storage_impl_unittest.cc
+++ b/components/services/storage/dom_storage/local_storage_impl_unittest.cc
@@ -17,7 +17,6 @@
 #include "base/test/bind.h"
 #include "base/test/task_environment.h"
 #include "build/build_config.h"
-#include "components/services/storage/dom_storage/legacy_dom_storage_database.h"
 #include "components/services/storage/dom_storage/storage_area_test_util.h"
 #include "components/services/storage/public/cpp/constants.h"
 #include "components/services/storage/public/cpp/filesystem/filesystem_proxy.h"
@@ -123,7 +122,7 @@
   void InitializeStorage(const base::FilePath& path) {
     DCHECK(!storage_);
     storage_ = std::make_unique<LocalStorageImpl>(
-        path, base::ThreadTaskRunnerHandle::Get(), task_runner_,
+        path, base::ThreadTaskRunnerHandle::Get(),
         /*receiver=*/mojo::NullReceiver());
   }
 
@@ -289,9 +288,6 @@
   base::test::TaskEnvironment task_environment_;
   base::ScopedTempDir temp_path_;
 
-  scoped_refptr<base::SequencedTaskRunner> task_runner_{
-      base::ThreadTaskRunnerHandle::Get()};
-
   std::unique_ptr<LocalStorageImpl> storage_;
 
   DISALLOW_COPY_AND_ASSIGN(LocalStorageImplTest);
@@ -674,138 +670,6 @@
   }
 }
 
-TEST_F(LocalStorageImplTest, Migration) {
-  url::Origin origin1 = url::Origin::Create(GURL("http://foobar.com"));
-  url::Origin origin2 = url::Origin::Create(GURL("http://example.com"));
-  std::u16string key = u"key";
-  std::u16string value = u"value";
-  std::u16string key2 = u"key2";
-  key2.push_back(0xd83d);
-  key2.push_back(0xde00);
-
-  // We want to populate the Local Storage directory before the implementation
-  // has created it, so we have to create it ourselves here.
-  const base::FilePath local_storage_path =
-      storage_path().Append(kLocalStoragePath);
-  ASSERT_TRUE(base::CreateDirectory(local_storage_path));
-
-  const base::FilePath old_db_path = local_storage_path.Append(
-      LocalStorageImpl::LegacyDatabaseFileNameFromOrigin(origin1));
-  {
-    LegacyDomStorageDatabase db(
-        old_db_path, std::make_unique<FilesystemProxy>(
-                         FilesystemProxy::UNRESTRICTED, local_storage_path));
-    LegacyDomStorageValuesMap data;
-    data[key] = value;
-    data[key2] = value;
-    db.CommitChanges(false, data);
-  }
-  EXPECT_TRUE(base::PathExists(old_db_path));
-
-  // Opening origin2 and accessing its data should not migrate anything.
-  ResetStorage(storage_path());
-  mojo::Remote<blink::mojom::StorageArea> area;
-  context()->BindStorageArea(origin2, area.BindNewPipeAndPassReceiver());
-
-  // To make sure values are cached.
-  mojo::Remote<blink::mojom::StorageArea> dummy_area;
-  context()->BindStorageArea(origin2, dummy_area.BindNewPipeAndPassReceiver());
-
-  area->Get(std::vector<uint8_t>(), base::DoNothing());
-  area.reset();
-  dummy_area.reset();
-  RunUntilIdle();
-
-  EXPECT_TRUE(GetDatabaseContents().empty());
-
-  // Opening origin1 and accessing its data should migrate its storage.
-  context()->BindStorageArea(origin1, area.BindNewPipeAndPassReceiver());
-  context()->BindStorageArea(origin1, dummy_area.BindNewPipeAndPassReceiver());
-
-  base::RunLoop loop;
-  area->Get(std::vector<uint8_t>(),
-            base::BindLambdaForTesting(
-                [&](bool, const std::vector<uint8_t>&) { loop.Quit(); }));
-  loop.Run();
-
-  EXPECT_FALSE(GetDatabaseContents().empty());
-
-  {
-    std::vector<uint8_t> result;
-    bool success = test::GetSync(area.get(),
-                                 LocalStorageImpl::MigrateString(key), &result);
-    EXPECT_TRUE(success);
-    EXPECT_EQ(LocalStorageImpl::MigrateString(value), result);
-  }
-
-  {
-    std::vector<uint8_t> result;
-    bool success = test::GetSync(
-        area.get(), LocalStorageImpl::MigrateString(key2), &result);
-    EXPECT_TRUE(success);
-    EXPECT_EQ(LocalStorageImpl::MigrateString(value), result);
-  }
-
-  // Origin1 should no longer exist in old storage.
-  EXPECT_FALSE(base::PathExists(old_db_path));
-}
-
-static std::string EncodeKeyAsUTF16(const std::string& origin,
-                                    const std::u16string& key) {
-  std::string result = '_' + origin + '\x00' + '\x00';
-  std::copy(
-      reinterpret_cast<const char*>(key.data()),
-      reinterpret_cast<const char*>(key.data()) + key.size() * sizeof(char16_t),
-      std::back_inserter(result));
-  return result;
-}
-
-TEST_F(LocalStorageImplTest, FixUp) {
-  SetDatabaseEntry("VERSION", "1");
-  // Add mock data for the "key" key, with both possible encodings for key.
-  // We expect the value of the correctly encoded key to take precedence over
-  // the incorrectly encoded key (and expect the incorrectly encoded key to be
-  // deleted.
-  SetDatabaseEntry(std::string("_http://foobar.com") + '\x00' + "\x01key",
-                   "value1");
-  SetDatabaseEntry(EncodeKeyAsUTF16("http://foobar.com", u"key"), "value2");
-  // Also add mock data for the "foo" key, this time only with the incorrec
-  // encoding. This should be updated to the correct encoding.
-  SetDatabaseEntry(EncodeKeyAsUTF16("http://foobar.com", u"foo"), "value3");
-
-  mojo::Remote<blink::mojom::StorageArea> area;
-  mojo::Remote<blink::mojom::StorageArea>
-      dummy_area;  // To make sure values are cached.
-  context()->BindStorageArea(url::Origin::Create(GURL("http://foobar.com")),
-                             area.BindNewPipeAndPassReceiver());
-  context()->BindStorageArea(url::Origin::Create(GURL("http://foobar.com")),
-                             dummy_area.BindNewPipeAndPassReceiver());
-
-  {
-    std::vector<uint8_t> result;
-    bool success =
-        test::GetSync(area.get(), StdStringToUint8Vector("\x01key"), &result);
-    EXPECT_TRUE(success);
-    EXPECT_EQ(StdStringToUint8Vector("value1"), result);
-  }
-  {
-    std::vector<uint8_t> result;
-    bool success = test::GetSync(area.get(),
-                                 StdStringToUint8Vector("\x01"
-                                                        "foo"),
-                                 &result);
-    EXPECT_TRUE(success);
-    EXPECT_EQ(StdStringToUint8Vector("value3"), result);
-  }
-
-  // Expect 4 rows in the database: VERSION, meta-data for the origin, and two
-  // rows of actual data.
-  auto contents = GetDatabaseContents();
-  EXPECT_EQ(4u, contents.size());
-  EXPECT_EQ("value1", contents.rbegin()->second);
-  EXPECT_EQ("value3", std::next(contents.rbegin())->second);
-}
-
 TEST_F(LocalStorageImplTest, ShutdownClearsData) {
   url::Origin origin1 = url::Origin::Create(GURL("http://foobar.com"));
   url::Origin origin2 = url::Origin::Create(GURL("http://example.com"));
diff --git a/components/services/storage/dom_storage/session_storage_impl_unittest.cc b/components/services/storage/dom_storage/session_storage_impl_unittest.cc
index ea367d1..0067a10 100644
--- a/components/services/storage/dom_storage/session_storage_impl_unittest.cc
+++ b/components/services/storage/dom_storage/session_storage_impl_unittest.cc
@@ -25,7 +25,6 @@
 #include "base/task/thread_pool.h"
 #include "base/test/bind.h"
 #include "base/test/task_environment.h"
-#include "components/services/storage/dom_storage/legacy_dom_storage_database.h"
 #include "components/services/storage/dom_storage/storage_area_test_util.h"
 #include "components/services/storage/dom_storage/testing_legacy_session_storage_database.h"
 #include "mojo/public/cpp/bindings/remote.h"
diff --git a/components/services/storage/dom_storage/session_storage_metadata_unittest.cc b/components/services/storage/dom_storage/session_storage_metadata_unittest.cc
index f0cfef3e..c873af7 100644
--- a/components/services/storage/dom_storage/session_storage_metadata_unittest.cc
+++ b/components/services/storage/dom_storage/session_storage_metadata_unittest.cc
@@ -20,7 +20,6 @@
 #include "base/threading/thread_task_runner_handle.h"
 #include "components/services/storage/dom_storage/async_dom_storage_database.h"
 #include "components/services/storage/dom_storage/dom_storage_database.h"
-#include "components/services/storage/dom_storage/legacy_dom_storage_database.h"
 #include "components/services/storage/dom_storage/testing_legacy_session_storage_database.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/components/services/storage/dom_storage/storage_area_impl.cc b/components/services/storage/dom_storage/storage_area_impl.cc
index c0b8c3d..fbba1e7 100644
--- a/components/services/storage/dom_storage/storage_area_impl.cc
+++ b/components/services/storage/dom_storage/storage_area_impl.cc
@@ -24,16 +24,6 @@
     std::vector<DomStorageDatabase::KeyValuePair>* extra_entries_to_add,
     std::vector<DomStorageDatabase::Key>* extra_keys_to_delete) {}
 
-void StorageAreaImpl::Delegate::MigrateData(
-    base::OnceCallback<void(std::unique_ptr<ValueMap>)> callback) {
-  std::move(callback).Run(nullptr);
-}
-
-std::vector<StorageAreaImpl::Change> StorageAreaImpl::Delegate::FixUpData(
-    const ValueMap& data) {
-  return std::vector<Change>();
-}
-
 void StorageAreaImpl::Delegate::OnMapLoaded(leveldb::Status) {}
 
 bool StorageAreaImpl::s_aggressive_flushing_enabled_ = false;
@@ -613,12 +603,6 @@
   DCHECK(keys_values_map_.empty());
   DCHECK_EQ(map_state_, MapState::LOADING_FROM_DATABASE);
 
-  if (data.empty() && status.ok()) {
-    delegate_->MigrateData(base::BindOnce(&StorageAreaImpl::OnGotMigrationData,
-                                          weak_ptr_factory_.GetWeakPtr()));
-    return;
-  }
-
   keys_only_map_.clear();
   map_state_ = MapState::LOADED_KEYS_AND_VALUES;
 
@@ -631,31 +615,6 @@
   }
   CalculateStorageAndMemoryUsed();
 
-  std::vector<Change> changes = delegate_->FixUpData(keys_values_map_);
-  if (!changes.empty()) {
-    DCHECK(database_);
-    CreateCommitBatchIfNeeded();
-    for (auto& change : changes) {
-      auto it = keys_values_map_.find(change.first);
-      if (!change.second) {
-        DCHECK(it != keys_values_map_.end());
-        keys_values_map_.erase(it);
-      } else {
-        if (it != keys_values_map_.end()) {
-          it->second = std::move(*change.second);
-        } else {
-          keys_values_map_[change.first] = std::move(*change.second);
-        }
-      }
-      // No need to store values in |commit_batch_| if values are already
-      // available in |keys_values_map_|, since CommitChanges() will take values
-      // from there.
-      commit_batch_->changed_keys.insert(std::move(change.first));
-    }
-    CalculateStorageAndMemoryUsed();
-    CommitChanges();
-  }
-
   // We proceed without using a backing store, nothing will be persisted but the
   // class is functional for the lifetime of the object.
   delegate_->OnMapLoaded(status);
@@ -670,23 +629,6 @@
   OnLoadComplete();
 }
 
-void StorageAreaImpl::OnGotMigrationData(std::unique_ptr<ValueMap> data) {
-  keys_only_map_.clear();
-  keys_values_map_ = data ? std::move(*data) : ValueMap();
-  map_state_ = MapState::LOADED_KEYS_AND_VALUES;
-  CalculateStorageAndMemoryUsed();
-  delegate_->OnMapLoaded(leveldb::Status::OK());
-
-  if (database_ && !empty()) {
-    CreateCommitBatchIfNeeded();
-    // CommitChanges() will take values from |keys_values_map_|.
-    for (const auto& it : keys_values_map_)
-      commit_batch_->changed_keys.insert(it.first);
-    CommitChanges();
-  }
-  OnLoadComplete();
-}
-
 void StorageAreaImpl::CalculateStorageAndMemoryUsed() {
   memory_used_ = 0;
   storage_used_ = 0;
diff --git a/components/services/storage/dom_storage/storage_area_impl.h b/components/services/storage/dom_storage/storage_area_impl.h
index 9bc8a4c..f994103 100644
--- a/components/services/storage/dom_storage/storage_area_impl.h
+++ b/components/services/storage/dom_storage/storage_area_impl.h
@@ -58,11 +58,6 @@
         std::vector<DomStorageDatabase::KeyValuePair>* extra_entries_to_add,
         std::vector<DomStorageDatabase::Key>* extra_keys_to_delete);
     virtual void DidCommit(leveldb::Status error) = 0;
-    // Called during loading if no data was found. Needs to call |callback|.
-    virtual void MigrateData(ValueMapCallback callback);
-    // Called during loading to give delegate a chance to modify the data as
-    // stored in the database.
-    virtual std::vector<Change> FixUpData(const ValueMap& data);
     virtual void OnMapLoaded(leveldb::Status status);
   };
 
@@ -286,7 +281,6 @@
   void LoadMap(base::OnceClosure completion_callback);
   void OnMapLoaded(leveldb::Status status,
                    std::vector<DomStorageDatabase::KeyValuePair> data);
-  void OnGotMigrationData(std::unique_ptr<ValueMap> data);
   void CalculateStorageAndMemoryUsed();
   void OnLoadComplete();
 
diff --git a/components/services/storage/dom_storage/storage_area_impl_unittest.cc b/components/services/storage/dom_storage/storage_area_impl_unittest.cc
index 0ff2e31..bac70a4e 100644
--- a/components/services/storage/dom_storage/storage_area_impl_unittest.cc
+++ b/components/services/storage/dom_storage/storage_area_impl_unittest.cc
@@ -85,15 +85,8 @@
       std::move(committed_).Run();
   }
   void OnMapLoaded(leveldb::Status) override { map_load_count_++; }
-  std::vector<StorageAreaImpl::Change> FixUpData(
-      const StorageAreaImpl::ValueMap& data) override {
-    return std::move(mock_changes_);
-  }
 
   int map_load_count() const { return map_load_count_; }
-  void set_mock_changes(std::vector<StorageAreaImpl::Change> changes) {
-    mock_changes_ = std::move(changes);
-  }
 
   void SetDidCommitCallback(base::OnceClosure committed) {
     committed_ = std::move(committed);
@@ -101,7 +94,6 @@
 
  private:
   int map_load_count_ = 0;
-  std::vector<StorageAreaImpl::Change> mock_changes_;
   base::OnceClosure committed_;
 };
 
@@ -776,28 +768,6 @@
   EXPECT_EQ(delegate()->map_load_count(), 1);
 }
 
-TEST_P(StorageAreaImplParamTest, FixUpData) {
-  storage_area_impl()->SetCacheModeForTesting(GetParam());
-  std::vector<StorageAreaImpl::Change> changes;
-  changes.push_back(std::make_pair(test_key1_bytes_, ToBytes("foo")));
-  changes.push_back(std::make_pair(test_key2_bytes_, absl::nullopt));
-  changes.push_back(std::make_pair(test_prefix_bytes_, ToBytes("bla")));
-  delegate()->set_mock_changes(std::move(changes));
-
-  std::vector<blink::mojom::KeyValuePtr> data;
-  EXPECT_TRUE(test::GetAllSync(storage_area(), &data));
-
-  ASSERT_EQ(2u, data.size());
-  EXPECT_EQ(test_prefix_, ToString(data[0]->key));
-  EXPECT_EQ("bla", ToString(data[0]->value));
-  EXPECT_EQ(test_key1_, ToString(data[1]->key));
-  EXPECT_EQ("foo", ToString(data[1]->value));
-
-  EXPECT_FALSE(HasDatabaseEntry(test_prefix_ + test_key2_));
-  EXPECT_EQ("foo", GetDatabaseEntry(test_prefix_ + test_key1_));
-  EXPECT_EQ("bla", GetDatabaseEntry(test_prefix_ + test_prefix_));
-}
-
 TEST_F(StorageAreaImplTest, SetOnlyKeysWithoutDatabase) {
   std::vector<uint8_t> key = test_key2_bytes_;
   std::vector<uint8_t> value = ToBytes("foo");
diff --git a/components/services/storage/dom_storage/testing_legacy_session_storage_database.h b/components/services/storage/dom_storage/testing_legacy_session_storage_database.h
index 21dd47af..34b535b 100644
--- a/components/services/storage/dom_storage/testing_legacy_session_storage_database.h
+++ b/components/services/storage/dom_storage/testing_legacy_session_storage_database.h
@@ -22,7 +22,7 @@
 #include "base/sequenced_task_runner.h"
 #include "base/synchronization/lock.h"
 #include "base/thread_annotations.h"
-#include "components/services/storage/dom_storage/legacy_dom_storage_database.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
 #include "third_party/leveldatabase/src/include/leveldb/status.h"
 
 namespace url {
@@ -43,6 +43,9 @@
 
 namespace storage {
 
+using LegacyDomStorageValuesMap =
+    std::map<std::u16string, absl::optional<std::u16string>>;
+
 // A legacy implementation of Session Storage used only in tests to provide
 // coverage of session storage migration code.
 //
diff --git a/components/services/storage/partition_impl.cc b/components/services/storage/partition_impl.cc
index a462d52..c41a0b5 100644
--- a/components/services/storage/partition_impl.cc
+++ b/components/services/storage/partition_impl.cc
@@ -104,9 +104,6 @@
     mojo::PendingReceiver<mojom::LocalStorageControl> receiver) {
   local_storage_ = std::make_unique<LocalStorageImpl>(
       path_.value_or(base::FilePath()), base::SequencedTaskRunnerHandle::Get(),
-      base::ThreadPool::CreateSequencedTaskRunner(
-          {base::MayBlock(), base::WithBaseSyncPrimitives(),
-           base::TaskShutdownBehavior::BLOCK_SHUTDOWN}),
       std::move(receiver));
 }
 
diff --git a/components/sessions/core/command_storage_backend.cc b/components/sessions/core/command_storage_backend.cc
index 3b59e31..c96d82fd 100644
--- a/components/sessions/core/command_storage_backend.cc
+++ b/components/sessions/core/command_storage_backend.cc
@@ -30,6 +30,8 @@
 namespace {
 
 // File version number.
+// TODO(sky): remove these in ~1 year. They are no longer written as of
+// ~5/2021.
 constexpr int32_t kFileVersion1 = 1;
 constexpr int32_t kEncryptedFileVersion = 2;
 // The versions that are used if `use_marker` is true.
@@ -430,12 +432,10 @@
     scoped_refptr<base::SequencedTaskRunner> owning_task_runner,
     const base::FilePath& path,
     SessionType type,
-    bool use_marker,
     const std::vector<uint8_t>& decryption_key)
     : RefCountedDeleteOnSequence(owning_task_runner),
       type_(type),
       supplied_path_(path),
-      use_marker_(use_marker),
       initial_decryption_key_(decryption_key),
       callback_task_runner_(base::ThreadTaskRunnerHandle::Get()) {
   // This is invoked on the main thread, don't do file access here.
@@ -459,22 +459,16 @@
     DCHECK_NE(kInitialStateMarkerCommandId, command->id());
 #endif
 
-  // If `use_marker` is true, the consumer must call this with `truncate` set
-  // to true to indicate the initial state has been supplied. To do otherwise
-  // would mean the file never contains the marker, and would not be considered
+  // The consumer must call this with `truncate` set to true to indicate the
+  // initial state has been supplied. To do otherwise would mean the file never
+  // contains the marker, and would not be considered
   // valid. This includes first time through.
-  if (use_marker_ && !truncate && (!file_ || !file_->IsValid()))
+  if (!truncate && (!file_ || !file_->IsValid()))
     return;
 
   if (truncate) {
-    const bool was_encrypted = IsEncrypted();
+    CloseFile();
     const bool encrypt = !crypto_key.empty();
-
-    // The header is different when encrypting, so the file needs to be
-    // recreated.
-    if (use_marker_ || (was_encrypted != encrypt))
-      CloseFile();
-
     if (encrypt) {
       aead_ = std::make_unique<crypto::Aead>(crypto::Aead::AES_256_GCM);
       crypto_key_ = crypto_key;
@@ -482,10 +476,8 @@
     } else {
       aead_.reset();
     }
-    if (use_marker_) {
-      commands.push_back(
-          std::make_unique<SessionCommand>(kInitialStateMarkerCommandId, 0));
-    }
+    commands.push_back(
+        std::make_unique<SessionCommand>(kInitialStateMarkerCommandId, 0));
   } else {
     // |crypto_key| is only used when |truncate| is true.
     DCHECK(crypto_key.empty());
@@ -502,7 +494,7 @@
     CloseFile();
   }
 
-  if (use_marker_ && truncate && file_ && file_->IsValid()) {
+  if (truncate && file_ && file_->IsValid()) {
     did_write_marker_ = true;
     if (last_file_with_valid_marker_) {
       DCHECK_NE(*last_file_with_valid_marker_, current_path_);
@@ -573,14 +565,10 @@
 
   // Move current session to last.
   absl::optional<SessionInfo> new_last_session_info;
-  if (use_marker_) {
-    if (last_file_with_valid_marker_) {
-      new_last_session_info =
-          SessionInfo{*last_file_with_valid_marker_, timestamp_};
-      last_file_with_valid_marker_.reset();
-    }
-  } else if (base::PathExists(current_path_)) {
-    new_last_session_info = SessionInfo{current_path_, timestamp_};
+  if (last_file_with_valid_marker_) {
+    new_last_session_info =
+        SessionInfo{*last_file_with_valid_marker_, timestamp_};
+    last_file_with_valid_marker_.reset();
   }
   last_session_info_ = new_last_session_info;
 
@@ -624,7 +612,7 @@
   inited_ = true;
   base::CreateDirectory(GetSessionDirName(type_, supplied_path_));
 
-  // TODO(sky): with `use_marker_` this is expensive. See if it can be delayed.
+  // TODO(sky): this is expensive. See if it can be delayed.
   last_session_info_ = FindLastSessionFile();
 
   // Best effort delete all sessions except the current & last.
@@ -652,47 +640,30 @@
   file_.reset();
 
   // If a marker wasn't written, no need to keep the current file.
-  if (use_marker_ && !did_write_marker_ && !current_path_.empty())
+  if (!did_write_marker_ && !current_path_.empty())
     base::DeleteFile(current_path_);
 }
 
 void CommandStorageBackend::TruncateOrOpenFile() {
   DCHECK(inited_);
-  if (use_marker_)
-    CloseFile();
-  if (use_marker_ || current_path_.empty()) {
-    DCHECK(!file_);
-    base::Time new_timestamp = base::Time::Now();
-    // Ensure we don't reuse the current file (this is extremely unlikely to
-    // ever be true).
-    if (new_timestamp == timestamp_)
-      new_timestamp += base::TimeDelta::FromMicroseconds(1);
-    if (last_session_info_) {
-      // Ensure that the last session's timestamp is before the current file's.
-      // This might not be true if the system clock has changed.
-      if (last_session_info_->timestamp > new_timestamp) {
-        new_timestamp = last_session_info_->timestamp +
-                        base::TimeDelta::FromMicroseconds(1);
-      }
+  CloseFile();
+  DCHECK(!file_);
+  base::Time new_timestamp = base::Time::Now();
+  // Ensure we don't reuse the current file (this is extremely unlikely to
+  // ever be true).
+  if (new_timestamp == timestamp_)
+    new_timestamp += base::TimeDelta::FromMicroseconds(1);
+  if (last_session_info_) {
+    // Ensure that the last session's timestamp is before the current file's.
+    // This might not be true if the system clock has changed.
+    if (last_session_info_->timestamp > new_timestamp) {
+      new_timestamp =
+          last_session_info_->timestamp + base::TimeDelta::FromMicroseconds(1);
     }
-    timestamp_ = new_timestamp;
-    current_path_ = FilePathFromTime(type_, supplied_path_, timestamp_);
   }
-  if (file_) {
-    // If `use_marker_` is true, the file is always closed before being
-    // truncated.
-    DCHECK(!use_marker_);
-    // File is already open, truncate it. We truncate instead of closing and
-    // reopening to avoid the possibility of scanners locking the file out
-    // from under us once we close it. If truncation fails, we'll try to
-    // recreate.
-    const int header_size = static_cast<int>(sizeof(FileHeader));
-    if (file_->Seek(base::File::FROM_BEGIN, header_size) != header_size ||
-        !file_->SetLength(header_size))
-      file_.reset();
-  }
-  if (!file_)
-    file_ = OpenAndWriteHeader(current_path_);
+  timestamp_ = new_timestamp;
+  current_path_ = FilePathFromTime(type_, supplied_path_, timestamp_);
+  file_ = OpenAndWriteHeader(current_path_);
   commands_written_ = 0;
   did_write_marker_ = false;
 }
@@ -708,12 +679,8 @@
     return nullptr;
   FileHeader header;
   header.signature = kFileSignature;
-  if (use_marker_) {
-    header.version = IsEncrypted() ? kEncryptedFileVersionWithMarker
-                                   : kFileVersionWithMarker;
-  } else {
-    header.version = IsEncrypted() ? kEncryptedFileVersion : kFileVersion1;
-  }
+  header.version =
+      IsEncrypted() ? kEncryptedFileVersionWithMarker : kFileVersionWithMarker;
   if (file->WriteAtCurrentPos(reinterpret_cast<char*>(&header),
                               sizeof(header)) != sizeof(header)) {
     return nullptr;
@@ -866,9 +833,6 @@
 
 bool CommandStorageBackend::CanUseFileForLastSession(
     const base::FilePath& path) const {
-  if (!use_marker_)
-    return true;
-
   const SessionFileReader::MarkerStatus status =
       SessionFileReader::GetMarkerStatus(path, initial_decryption_key_);
   return !status.supports_marker || status.has_marker;
diff --git a/components/sessions/core/command_storage_backend.h b/components/sessions/core/command_storage_backend.h
index d6029cc8..1c7576d 100644
--- a/components/sessions/core/command_storage_backend.h
+++ b/components/sessions/core/command_storage_backend.h
@@ -34,8 +34,6 @@
 // CommandStorageBackend (mostly) does not interpret the commands in any way, it
 // simply reads/writes them.
 //
-// The following comment applies when `use_marker` is true, which will
-// eventually be the default (and there will not be an option to disable it).
 // CommandStorageBackend writes to a file with a suffix that indicates the
 // time the file was opened. The time stamp allows this code to determine the
 // most recently written file. When AppendCommands() is supplied a value of true
@@ -89,7 +87,6 @@
       scoped_refptr<base::SequencedTaskRunner> owning_task_runner,
       const base::FilePath& path,
       CommandStorageManager::SessionType type,
-      bool use_marker,
       const std::vector<uint8_t>& decryption_key = {});
   CommandStorageBackend(const CommandStorageBackend&) = delete;
   CommandStorageBackend& operator=(const CommandStorageBackend&) = delete;
@@ -235,8 +232,6 @@
   // constructor for details.
   const base::FilePath supplied_path_;
 
-  const bool use_marker_;
-
   // Used to decode the initial last session file.
   // TODO(sky): this is currently required because InitIfNecessary() determines
   // the last file. If that can be delayed, then this can be supplied to
diff --git a/components/sessions/core/command_storage_backend_unittest.cc b/components/sessions/core/command_storage_backend_unittest.cc
index 1dcc6f40..98ce68dd 100644
--- a/components/sessions/core/command_storage_backend_unittest.cc
+++ b/components/sessions/core/command_storage_backend_unittest.cc
@@ -50,7 +50,7 @@
 
 }  // namespace
 
-class CommandStorageBackendTest : public testing::TestWithParam<bool> {
+class CommandStorageBackendTest : public testing::Test {
  protected:
   // testing::TestWithParam:
   void SetUp() override {
@@ -83,16 +83,14 @@
       const std::vector<uint8_t>& decryption_key = {}) {
     return MakeRefCounted<CommandStorageBackend>(
         task_environment_.GetMainThreadTaskRunner(), file_path_,
-        CommandStorageManager::SessionType::kOther, IsUsingMarker(),
-        decryption_key);
+        CommandStorageManager::SessionType::kOther, decryption_key);
   }
 
   scoped_refptr<CommandStorageBackend> CreateBackendWithRestoreType() {
     const CommandStorageManager::SessionType type =
         CommandStorageManager::SessionType::kSessionRestore;
     return MakeRefCounted<CommandStorageBackend>(
-        task_environment_.GetMainThreadTaskRunner(), restore_path_, type,
-        IsUsingMarker());
+        task_environment_.GetMainThreadTaskRunner(), restore_path_, type);
   }
 
   // Functions that call into private members of CommandStorageBackend.
@@ -112,8 +110,6 @@
     return result;
   }
 
-  bool IsUsingMarker() const { return GetParam(); }
-
   static base::FilePath FilePathFromTime(
       CommandStorageManager::SessionType type,
       const base::FilePath& path,
@@ -134,7 +130,7 @@
   base::ScopedTempDir temp_dir_;
 };
 
-TEST_P(CommandStorageBackendTest, MigrateOther) {
+TEST_F(CommandStorageBackendTest, MigrateOther) {
   scoped_refptr<CommandStorageBackend> backend = CreateBackend();
   struct TestData data = {1, "a"};
   SessionCommands commands;
@@ -173,7 +169,7 @@
   AssertCommandEqualsData(data2, commands[0].get());
 }
 
-TEST_P(CommandStorageBackendTest, SimpleReadWriteEncrypted) {
+TEST_F(CommandStorageBackendTest, SimpleReadWriteEncrypted) {
   std::vector<uint8_t> key = CommandStorageManager::CreateCryptoKey();
   scoped_refptr<CommandStorageBackend> backend = CreateBackend();
   struct TestData data = {1, "a"};
@@ -197,7 +193,7 @@
   EXPECT_TRUE(commands.empty());
 }
 
-TEST_P(CommandStorageBackendTest, RandomDataEncrypted) {
+TEST_F(CommandStorageBackendTest, RandomDataEncrypted) {
   struct TestData data[] = {
       {1, "a"},
       {2, "ab"},
@@ -235,7 +231,7 @@
   }
 }
 
-TEST_P(CommandStorageBackendTest, BigDataEncrypted) {
+TEST_F(CommandStorageBackendTest, BigDataEncrypted) {
   struct TestData data[] = {
       {1, "a"},
       {2, "ab"},
@@ -272,7 +268,7 @@
             reinterpret_cast<char*>(commands[1]->contents())[big_size - 1]);
 }
 
-TEST_P(CommandStorageBackendTest, MarkerOnlyEncrypted) {
+TEST_F(CommandStorageBackendTest, MarkerOnlyEncrypted) {
   std::vector<uint8_t> key = CommandStorageManager::CreateCryptoKey();
   scoped_refptr<CommandStorageBackend> backend = CreateBackend();
   SessionCommands commands;
@@ -288,7 +284,7 @@
 
 // Writes a command, appends another command with reset to true, then reads
 // making sure we only get back the second command.
-TEST_P(CommandStorageBackendTest, TruncateEncrypted) {
+TEST_F(CommandStorageBackendTest, TruncateEncrypted) {
   std::vector<uint8_t> key = CommandStorageManager::CreateCryptoKey();
   scoped_refptr<CommandStorageBackend> backend = CreateBackend();
   struct TestData first_data = {1, "a"};
@@ -323,7 +319,7 @@
   return command;
 }
 
-TEST_P(CommandStorageBackendTest, MaxSizeTypeEncrypted) {
+TEST_F(CommandStorageBackendTest, MaxSizeTypeEncrypted) {
   std::vector<uint8_t> key = CommandStorageManager::CreateCryptoKey();
   scoped_refptr<CommandStorageBackend> backend = CreateBackend();
 
@@ -349,7 +345,7 @@
                      expected_size) == 0);
 }
 
-TEST_P(CommandStorageBackendTest, MaxSizeType) {
+TEST_F(CommandStorageBackendTest, MaxSizeType) {
   scoped_refptr<CommandStorageBackend> backend = CreateBackend();
 
   SessionCommands commands;
@@ -371,7 +367,7 @@
                      expected_size) == 0);
 }
 
-TEST_P(CommandStorageBackendTest, IsValidFileWithInvalidFiles) {
+TEST_F(CommandStorageBackendTest, IsValidFileWithInvalidFiles) {
   base::WriteFile(file_path(), "z");
   EXPECT_FALSE(CommandStorageBackend::IsValidFile(file_path()));
 
@@ -379,11 +375,7 @@
   EXPECT_FALSE(CommandStorageBackend::IsValidFile(file_path()));
 }
 
-TEST_P(CommandStorageBackendTest, IsNotValidFileWithoutMarker) {
-  // This test is only applicable when the marker is used.
-  if (!IsUsingMarker())
-    return;
-
+TEST_F(CommandStorageBackendTest, IsNotValidFileWithoutMarker) {
   scoped_refptr<CommandStorageBackend> backend = CreateBackend();
   const auto path = backend->current_path();
   backend->AppendCommands({}, true, base::DoNothing());
@@ -392,20 +384,7 @@
   EXPECT_FALSE(CommandStorageBackend::IsValidFile(path));
 }
 
-TEST_P(CommandStorageBackendTest, IsValidFileWithValidFile) {
-  // This test is only applicable when the marker is not used.
-  if (IsUsingMarker())
-    return;
-
-  scoped_refptr<CommandStorageBackend> backend = CreateBackend();
-  backend->AppendCommands({}, true, base::DoNothing());
-  const auto path = backend->current_path();
-  backend = nullptr;
-
-  EXPECT_TRUE(CommandStorageBackend::IsValidFile(path));
-}
-
-TEST_P(CommandStorageBackendTest, SimpleReadWriteWithRestoreType) {
+TEST_F(CommandStorageBackendTest, SimpleReadWriteWithRestoreType) {
   scoped_refptr<CommandStorageBackend> backend = CreateBackendWithRestoreType();
   struct TestData data = {1, "a"};
   SessionCommands commands;
@@ -434,7 +413,7 @@
   ASSERT_EQ(0U, commands.size());
 }
 
-TEST_P(CommandStorageBackendTest, RandomDataWithRestoreType) {
+TEST_F(CommandStorageBackendTest, RandomDataWithRestoreType) {
   struct TestData data[] = {
       {1, "a"},
       {2, "ab"},
@@ -471,7 +450,7 @@
   }
 }
 
-TEST_P(CommandStorageBackendTest, BigDataWithRestoreType) {
+TEST_F(CommandStorageBackendTest, BigDataWithRestoreType) {
   struct TestData data[] = {
       {1, "a"},
       {2, "ab"},
@@ -507,7 +486,7 @@
             reinterpret_cast<char*>(commands[1]->contents())[big_size - 1]);
 }
 
-TEST_P(CommandStorageBackendTest, CommandWithRestoreType) {
+TEST_F(CommandStorageBackendTest, CommandWithRestoreType) {
   scoped_refptr<CommandStorageBackend> backend = CreateBackendWithRestoreType();
   SessionCommands commands;
   backend->AppendCommands(std::move(commands), true, base::DoNothing());
@@ -519,7 +498,7 @@
 
 // Writes a command, appends another command with reset to true, then reads
 // making sure we only get back the second command.
-TEST_P(CommandStorageBackendTest, TruncateWithRestoreType) {
+TEST_F(CommandStorageBackendTest, TruncateWithRestoreType) {
   scoped_refptr<CommandStorageBackend> backend = CreateBackendWithRestoreType();
   struct TestData first_data = {1, "a"};
   SessionCommands commands;
@@ -543,7 +522,7 @@
 }
 
 // Test parsing the timestamp of a session from the path.
-TEST_P(CommandStorageBackendTest, TimestampFromPathWithRestoreType) {
+TEST_F(CommandStorageBackendTest, TimestampFromPathWithRestoreType) {
   const auto base_dir = base::FilePath(kSessionsDirectory);
 
   // Test parsing the timestamp from a valid session.
@@ -576,7 +555,7 @@
 }
 
 // Test serializing a timestamp to string.
-TEST_P(CommandStorageBackendTest, FilePathFromTimeWithRestoreType) {
+TEST_F(CommandStorageBackendTest, FilePathFromTimeWithRestoreType) {
   const auto base_dir = base::FilePath(kSessionsDirectory);
   const auto test_time_1 = base::Time();
   const auto result_path_1 =
@@ -594,14 +573,14 @@
 }
 
 // Test that the previous session is empty if no session files exist.
-TEST_P(CommandStorageBackendTest,
+TEST_F(CommandStorageBackendTest,
        DeterminePreviousSessionEmptyWithRestoreType) {
   scoped_refptr<CommandStorageBackend> backend = CreateBackendWithRestoreType();
   ASSERT_FALSE(GetLastSessionInfo(backend.get()));
 }
 
 // Test that the previous session is selected correctly when a file is present.
-TEST_P(CommandStorageBackendTest,
+TEST_F(CommandStorageBackendTest,
        DeterminePreviousSessionSingleWithRestoreType) {
   const auto prev_path = restore_path().Append(
       base::FilePath(kSessionsDirectory)
@@ -617,7 +596,7 @@
 
 // Test that the previous session is selected correctly when multiple session
 // files are present.
-TEST_P(CommandStorageBackendTest,
+TEST_F(CommandStorageBackendTest,
        DeterminePreviousSessionMultipleWithRestoreType) {
   const auto sessions_dir =
       restore_path().Append(base::FilePath(kSessionsDirectory));
@@ -638,7 +617,7 @@
 }
 
 // Test that the a file with an invalid name won't be used.
-TEST_P(CommandStorageBackendTest,
+TEST_F(CommandStorageBackendTest,
        DeterminePreviousSessionInvalidWithRestoreType) {
   const auto prev_path =
       restore_path().Append(base::FilePath(kSessionsDirectory)
@@ -652,7 +631,7 @@
 }
 
 // Tests that MoveCurrentSessionToLastSession deletes the last session file.
-TEST_P(CommandStorageBackendTest,
+TEST_F(CommandStorageBackendTest,
        MoveCurrentSessionToLastDeletesLastSessionWithRestoreType) {
   const auto sessions_dir =
       restore_path().Append(base::FilePath(kSessionsDirectory));
@@ -668,7 +647,7 @@
   ASSERT_EQ(-1, base::ReadFile(last_session, buffer, 0));
 }
 
-TEST_P(CommandStorageBackendTest, GetSessionFiles) {
+TEST_F(CommandStorageBackendTest, GetSessionFiles) {
   EXPECT_TRUE(CommandStorageBackend::GetSessionFilePaths(
                   file_path(), CommandStorageManager::kOther)
                   .empty());
@@ -688,12 +667,12 @@
   EXPECT_EQ("Session_124", paths.begin()->BaseName().MaybeAsASCII());
 }
 
-TEST_P(CommandStorageBackendTest, TimestampSeparatorIsAscii) {
+TEST_F(CommandStorageBackendTest, TimestampSeparatorIsAscii) {
   // Code in WebLayer relies on the timestamp separator being ascii.
   ASSERT_TRUE(!base::FilePath(kTimestampSeparator).MaybeAsASCII().empty());
 }
 
-TEST_P(CommandStorageBackendTest, GetSessionFilesAreSortedByReverseTimestamp) {
+TEST_F(CommandStorageBackendTest, GetSessionFilesAreSortedByReverseTimestamp) {
   ASSERT_EQ(0, base::WriteFile(file_path().DirName().AppendASCII("Session_130"),
                                "", 0));
   ASSERT_EQ(0, base::WriteFile(file_path().DirName().AppendASCII("Session_120"),
@@ -710,11 +689,7 @@
   EXPECT_EQ("Session_120", paths[3].BaseName().MaybeAsASCII());
 }
 
-TEST_P(CommandStorageBackendTest, UseMarkerWithoutValidMarker) {
-  // This test is only interesting when the marker is used.
-  if (!IsUsingMarker())
-    return;
-
+TEST_F(CommandStorageBackendTest, UseMarkerWithoutValidMarker) {
   scoped_refptr<CommandStorageBackend> backend = CreateBackend();
   struct TestData data = {1, "a"};
   SessionCommands commands;
@@ -735,7 +710,7 @@
 // This test moves a previously written file into the expected location and
 // ensures it's read. This is to verify reading hasn't changed in an
 // incompatible manner.
-TEST_P(CommandStorageBackendTest, ReadPreviouslyWrittenData) {
+TEST_F(CommandStorageBackendTest, ReadPreviouslyWrittenData) {
   base::FilePath test_data_path;
   ASSERT_TRUE(base::PathService::Get(base::DIR_SOURCE_ROOT, &test_data_path));
   test_data_path = test_data_path.AppendASCII("components")
@@ -766,11 +741,7 @@
                            backend->ReadLastSessionCommands().commands);
 }
 
-TEST_P(CommandStorageBackendTest, NewFileOnTruncate) {
-  // This test is only applicable with marker.
-  if (!IsUsingMarker())
-    return;
-
+TEST_F(CommandStorageBackendTest, NewFileOnTruncate) {
   scoped_refptr<CommandStorageBackend> backend = CreateBackendWithRestoreType();
   struct TestData data = {1, "a"};
   SessionCommands commands;
@@ -793,7 +764,7 @@
   EXPECT_FALSE(base::PathExists(path1));
 }
 
-TEST_P(CommandStorageBackendTest, AppendCommandsCallbackRunOnError) {
+TEST_F(CommandStorageBackendTest, AppendCommandsCallbackRunOnError) {
   scoped_refptr<CommandStorageBackend> backend = CreateBackend();
   backend->ForceAppendCommandsToFailForTesting();
   base::RunLoop run_loop;
@@ -801,11 +772,7 @@
   run_loop.Run();
 }
 
-TEST_P(CommandStorageBackendTest, RestoresFileWithMarkerAfterFailure) {
-  // This test is only applicable with marker.
-  if (!IsUsingMarker())
-    return;
-
+TEST_F(CommandStorageBackendTest, RestoresFileWithMarkerAfterFailure) {
   // Write `data` and a marker.
   scoped_refptr<CommandStorageBackend> backend = CreateBackend();
   struct TestData data = {11, "X"};
@@ -835,8 +802,4 @@
   AssertCommandEqualsData(data, commands[0].get());
 }
 
-INSTANTIATE_TEST_SUITE_P(,
-                         CommandStorageBackendTest,
-                         testing::Values(false, true));
-
 }  // namespace sessions
diff --git a/components/sessions/core/command_storage_manager.cc b/components/sessions/core/command_storage_manager.cc
index a8546d51..8c7980f 100644
--- a/components/sessions/core/command_storage_manager.cc
+++ b/components/sessions/core/command_storage_manager.cc
@@ -36,7 +36,6 @@
     SessionType type,
     const base::FilePath& path,
     CommandStorageManagerDelegate* delegate,
-    bool use_marker,
     bool enable_crypto,
     const std::vector<uint8_t>& decryption_key,
     scoped_refptr<base::SequencedTaskRunner> backend_task_runner)
@@ -45,10 +44,8 @@
                               : CreateDefaultBackendTaskRunner(),
           path,
           type,
-          use_marker,
           decryption_key)),
       use_crypto_(enable_crypto),
-      pending_reset_(use_marker),
       delegate_(delegate),
       backend_task_runner_(backend_->owning_task_runner()) {}
 
diff --git a/components/sessions/core/command_storage_manager.h b/components/sessions/core/command_storage_manager.h
index 9b2dd8d..94c1c2b 100644
--- a/components/sessions/core/command_storage_manager.h
+++ b/components/sessions/core/command_storage_manager.h
@@ -54,13 +54,10 @@
   // `kOther`, then it is a path to a directory. The actual file name used
   // depends upon the type. Once SessionType can be removed, this logic can
   // standardize on that of `kOther`.
-  //
-  // See CommandStorageBackend for details on `use_marker`.
   CommandStorageManager(
       SessionType type,
       const base::FilePath& path,
       CommandStorageManagerDelegate* delegate,
-      bool use_marker = false,
       bool enable_crypto = false,
       const std::vector<uint8_t>& decryption_key = {},
       scoped_refptr<base::SequencedTaskRunner> backend_task_runner = nullptr);
@@ -151,7 +148,7 @@
 
   // Whether the backend file should be recreated the next time we send
   // over the commands.
-  bool pending_reset_;
+  bool pending_reset_ = true;
 
   // The number of commands sent to the backend before doing a reset.
   int commands_since_reset_ = 0;
diff --git a/components/sessions/core/command_storage_manager_unittest.cc b/components/sessions/core/command_storage_manager_unittest.cc
index 2545f7dd..092826f79 100644
--- a/components/sessions/core/command_storage_manager_unittest.cc
+++ b/components/sessions/core/command_storage_manager_unittest.cc
@@ -47,8 +47,8 @@
 
 TEST_F(CommandStorageManagerTest, OnErrorWritingSessionCommands) {
   TestCommandStorageManagerDelegate delegate;
-  CommandStorageManager manager(CommandStorageManager::kOther, path_, &delegate,
-                                /* use_marker */ true);
+  CommandStorageManager manager(CommandStorageManager::kOther, path_,
+                                &delegate);
   CommandStorageManagerTestHelper test_helper(&manager);
   manager.set_pending_reset(true);
   // Write a command, the delegate should not be notified of an error.
diff --git a/components/sessions/core/tab_restore_service_impl.cc b/components/sessions/core/tab_restore_service_impl.cc
index ac99ffa..00ec6a5a 100644
--- a/components/sessions/core/tab_restore_service_impl.cc
+++ b/components/sessions/core/tab_restore_service_impl.cc
@@ -512,8 +512,7 @@
       command_storage_manager_(std::make_unique<CommandStorageManager>(
           CommandStorageManager::kTabRestore,
           client_->GetPathToSaveTo(),
-          this,
-          /* use_marker */ true)),
+          this)),
       tab_restore_service_helper_(nullptr),
       entries_to_write_(0),
       entries_written_(0),
diff --git a/content/browser/accessibility/browser_accessibility_manager.cc b/content/browser/accessibility/browser_accessibility_manager.cc
index 7dd5c028..a80ca3a 100644
--- a/content/browser/accessibility/browser_accessibility_manager.cc
+++ b/content/browser/accessibility/browser_accessibility_manager.cc
@@ -225,9 +225,9 @@
   LOG(ERROR) << ax_tree()->error();
   LOG(ERROR) << tree_update.ToString();
 
-  static auto* ax_tree_error = base::debug::AllocateCrashKeyString(
+  static auto* const ax_tree_error = base::debug::AllocateCrashKeyString(
       "ax_tree_error", base::debug::CrashKeySize::Size256);
-  static auto* ax_tree_update = base::debug::AllocateCrashKeyString(
+  static auto* const ax_tree_update = base::debug::AllocateCrashKeyString(
       "ax_tree_update", base::debug::CrashKeySize::Size256);
   // Temporarily log some additional crash keys so we can try to
   // figure out why we're getting bad accessibility trees here.
diff --git a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
index 73a989cb..228bc70 100644
--- a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
+++ b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
@@ -2332,6 +2332,10 @@
   RunHtmlTest(FILE_PATH_LITERAL("main.html"));
 }
 
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityMapAnyContents) {
+  RunHtmlTest(FILE_PATH_LITERAL("map-any-contents.html"));
+}
+
 IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityMapUnused) {
   RunHtmlTest(FILE_PATH_LITERAL("map-unused.html"));
 }
diff --git a/content/browser/appcache/appcache_host.cc b/content/browser/appcache/appcache_host.cc
index 67b5d05..99b4eb3 100644
--- a/content/browser/appcache/appcache_host.cc
+++ b/content/browser/appcache/appcache_host.cc
@@ -73,8 +73,9 @@
 }
 
 base::debug::CrashKeyString* GetDocumentUrlCrashKey() {
-  static auto* appcache_document_url_key = base::debug::AllocateCrashKeyString(
-      "appcache_document_url", base::debug::CrashKeySize::Size256);
+  static auto* const appcache_document_url_key =
+      base::debug::AllocateCrashKeyString("appcache_document_url",
+                                          base::debug::CrashKeySize::Size256);
   return appcache_document_url_key;
 }
 
diff --git a/content/browser/appcache/appcache_subresource_url_factory.cc b/content/browser/appcache/appcache_subresource_url_factory.cc
index 9b51af2..7b6c294e 100644
--- a/content/browser/appcache/appcache_subresource_url_factory.cc
+++ b/content/browser/appcache/appcache_subresource_url_factory.cc
@@ -372,10 +372,8 @@
   if (request.request_initiator.has_value() && appcache_host_ &&
       !appcache_host_->security_policy_handle()->CanAccessDataForOrigin(
           request.request_initiator.value())) {
-    static auto* initiator_origin_key = base::debug::AllocateCrashKeyString(
-        "initiator_origin", base::debug::CrashKeySize::Size64);
-    base::debug::SetCrashKeyString(
-        initiator_origin_key, request.request_initiator.value().Serialize());
+    SCOPED_CRASH_KEY_STRING64("AppCacheURLLoader", "initiator_origin",
+                              request.request_initiator.value().Serialize());
 
     mojo::ReportBadMessage(
         "APPCACHE_SUBRESOURCE_URL_FACTORY_INVALID_INITIATOR");
diff --git a/content/browser/back_forward_cache_browsertest.cc b/content/browser/back_forward_cache_browsertest.cc
index b3e07c4..3a71829 100644
--- a/content/browser/back_forward_cache_browsertest.cc
+++ b/content/browser/back_forward_cache_browsertest.cc
@@ -8478,8 +8478,17 @@
 // On the Android test environments, the test might fail due to IP restrictions.
 // See the discussion at http://crrev.com/c/2564926.
 #if !defined(OS_ANDROID)
+
+// TODO(https://crbug.com/1213145): The test is consistently failing on some Mac
+// bots.
+#if defined(OS_MAC)
+#define MAYBE_TrivialRTCPeerConnectionCached \
+  DISABLED_TrivialRTCPeerConnectionCached
+#else
+#define MAYBE_TrivialRTCPeerConnectionCached TrivialRTCPeerConnectionCached
+#endif
 IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest,
-                       TrivialRTCPeerConnectionCached) {
+                       MAYBE_TrivialRTCPeerConnectionCached) {
   ASSERT_TRUE(CreateHttpsServer()->Start());
 
   GURL url_a(https_server()->GetURL("/title1.html"));
@@ -8552,8 +8561,18 @@
 // On the Android test environments, the test might fail due to IP restrictions.
 // See the discussion at http://crrev.com/c/2564926.
 #if !defined(OS_ANDROID)
+
+// TODO(https://crbug.com/1213145): The test is consistently failing on some Mac
+// bots.
+#if defined(OS_MAC)
+#define MAYBE_NonTrivialRTCPeerConnectionNotCached \
+  DISABLED_NonTrivialRTCPeerConnectionNotCached
+#else
+#define MAYBE_NonTrivialRTCPeerConnectionNotCached \
+  NonTrivialRTCPeerConnectionNotCached
+#endif
 IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest,
-                       NonTrivialRTCPeerConnectionNotCached) {
+                       MAYBE_NonTrivialRTCPeerConnectionNotCached) {
   ASSERT_TRUE(CreateHttpsServer()->Start());
 
   GURL url_a(https_server()->GetURL("/title1.html"));
diff --git a/content/browser/bad_message.cc b/content/browser/bad_message.cc
index 1759ee2..bde4a3ab 100644
--- a/content/browser/bad_message.cc
+++ b/content/browser/bad_message.cc
@@ -21,7 +21,7 @@
 namespace {
 
 void LogBadMessage(BadMessageReason reason) {
-  static auto* bad_message_reason = base::debug::AllocateCrashKeyString(
+  static auto* const bad_message_reason = base::debug::AllocateCrashKeyString(
       "bad_message_reason", base::debug::CrashKeySize::Size64);
 
   TRACE_EVENT_INSTANT1("ipc,security", "content::ReceivedBadMessage",
@@ -73,7 +73,7 @@
 }
 
 base::debug::CrashKeyString* GetRequestedSiteInfoKey() {
-  static auto* crash_key = base::debug::AllocateCrashKeyString(
+  static auto* const crash_key = base::debug::AllocateCrashKeyString(
       "requested_site_info", base::debug::CrashKeySize::Size256);
   return crash_key;
 }
diff --git a/content/browser/browser_context_impl.cc b/content/browser/browser_context_impl.cc
index 08134909..c3e97f5 100644
--- a/content/browser/browser_context_impl.cc
+++ b/content/browser/browser_context_impl.cc
@@ -86,10 +86,8 @@
   if (!rph_crash_key_value.empty()) {
     NOTREACHED() << "rph_with_bc_reference : " << rph_crash_key_value;
 
-    static auto* crash_key = base::debug::AllocateCrashKeyString(
-        "rph_with_bc_reference", base::debug::CrashKeySize::Size256);
-    base::debug::ScopedCrashKeyString auto_clear(crash_key,
-                                                 rph_crash_key_value);
+    SCOPED_CRASH_KEY_STRING256("BrowserContext", "dangling_rph",
+                               rph_crash_key_value);
     base::debug::DumpWithoutCrashing();
   }
 
diff --git a/content/browser/browser_interface_binders.cc b/content/browser/browser_interface_binders.cc
index 3a9417b0..7b1c3d6 100644
--- a/content/browser/browser_interface_binders.cc
+++ b/content/browser/browser_interface_binders.cc
@@ -118,7 +118,6 @@
 #include "third_party/blink/public/mojom/idle/idle_manager.mojom.h"
 #include "third_party/blink/public/mojom/indexeddb/indexeddb.mojom.h"
 #include "third_party/blink/public/mojom/input/input_host.mojom.h"
-#include "third_party/blink/public/mojom/insecure_input/insecure_input_service.mojom.h"
 #include "third_party/blink/public/mojom/keyboard_lock/keyboard_lock.mojom.h"
 #include "third_party/blink/public/mojom/loader/content_security_notifier.mojom.h"
 #include "third_party/blink/public/mojom/loader/navigation_predictor.mojom.h"
@@ -870,8 +869,6 @@
   // by blink.
   // This avoids renderer kills when no binder is found in the absence of the
   // production embedder (such as in tests).
-  map->Add<blink::mojom::InsecureInputService>(base::BindRepeating(
-      &EmptyBinderForFrame<blink::mojom::InsecureInputService>));
   map->Add<blink::mojom::NoStatePrefetchProcessor>(base::BindRepeating(
       &EmptyBinderForFrame<blink::mojom::NoStatePrefetchProcessor>));
   map->Add<payments::mojom::PaymentCredential>(base::BindRepeating(
diff --git a/content/browser/conversions/conversion_storage_sql_migrations.cc b/content/browser/conversions/conversion_storage_sql_migrations.cc
index cee3b56f..dd6043e 100644
--- a/content/browser/conversions/conversion_storage_sql_migrations.cc
+++ b/content/browser/conversions/conversion_storage_sql_migrations.cc
@@ -4,29 +4,36 @@
 
 #include "content/browser/conversions/conversion_storage_sql_migrations.h"
 
+#include <vector>
+
 #include "base/metrics/histogram_functions.h"
 #include "base/time/time.h"
 #include "content/browser/conversions/conversion_storage_sql.h"
 #include "content/browser/conversions/sql_utils.h"
 #include "content/browser/conversions/storable_impression.h"
+#include "net/base/schemeful_site.h"
 #include "sql/database.h"
 #include "sql/meta_table.h"
 #include "sql/statement.h"
 #include "sql/transaction.h"
+#include "url/origin.h"
 
 namespace content {
 
 namespace {
 
-// |ConversionStorageSql::GetActiveImpressions()| cannot be used for migration
-// logic as it may use columns that are not present in older versions.
-std::vector<StorableImpression> GetImpressions(sql::Database* db,
-                                               int64_t start_impression_id,
-                                               int num_impressions) {
+struct ImpressionIdAndConversionOrigin {
+  int64_t impression_id;
+  url::Origin conversion_origin;
+};
+
+std::vector<ImpressionIdAndConversionOrigin>
+GetImpressionIdAndConversionOrigins(sql::Database* db,
+                                    int64_t start_impression_id,
+                                    int num_impressions) {
   DCHECK_GE(num_impressions, 0);
   const char kGetImpressionsSql[] =
-      "SELECT impression_data, impression_origin, conversion_origin, "
-      "reporting_origin, impression_time, expiry_time, impression_id "
+      "SELECT impression_id, conversion_origin "
       "FROM impressions "
       "WHERE impression_id >= ? "
       "ORDER BY impression_id "
@@ -37,26 +44,13 @@
   statement.BindInt64(0, start_impression_id);
   statement.BindInt(1, num_impressions);
 
-  std::vector<StorableImpression> impressions;
+  std::vector<ImpressionIdAndConversionOrigin> impressions;
   while (statement.Step()) {
-    std::string impression_data = statement.ColumnString(0);
-    url::Origin impression_origin =
+    int64_t impression_id = statement.ColumnInt64(0);
+    url::Origin conversion_origin =
         DeserializeOrigin(statement.ColumnString(1));
-    url::Origin conversion_destination =
-        DeserializeOrigin(statement.ColumnString(2));
-    url::Origin reporting_origin = DeserializeOrigin(statement.ColumnString(3));
-    base::Time impression_time = statement.ColumnTime(4);
-    base::Time expiry_time = statement.ColumnTime(5);
-    int64_t impression_id = statement.ColumnInt64(6);
 
-    // All impressions prior to the addition of the |source_type| column are
-    // |kNavigation|.
-    StorableImpression impression(impression_data, impression_origin,
-                                  conversion_destination, reporting_origin,
-                                  impression_time, expiry_time,
-                                  StorableImpression::SourceType::kNavigation,
-                                  /*priority=*/0, impression_id);
-    impressions.push_back(std::move(impression));
+    impressions.push_back({impression_id, std::move(conversion_origin)});
   }
   if (!statement.Succeeded())
     return {};
@@ -161,8 +155,9 @@
   // entire impressions table into memory.
   int64_t start_impression_id = 0;
   const size_t kNumImpressionsPerUpdate = 100u;
-  std::vector<StorableImpression> impressions =
-      GetImpressions(db, start_impression_id, kNumImpressionsPerUpdate);
+  std::vector<ImpressionIdAndConversionOrigin> impressions =
+      GetImpressionIdAndConversionOrigins(db, start_impression_id,
+                                          kNumImpressionsPerUpdate);
 
   const char kUpdateDestinationSql[] =
       "UPDATE impressions SET conversion_destination = ? WHERE impression_id = "
@@ -178,20 +173,20 @@
       // The conversion destination is derived from the conversion origin
       // dynamically.
       update_destination_statement.BindString(
-          0, impression.ConversionDestination().Serialize());
-      update_destination_statement.BindInt64(1, *impression.impression_id());
+          0, net::SchemefulSite(impression.conversion_origin).Serialize());
+      update_destination_statement.BindInt64(1, impression.impression_id);
       update_destination_statement.Run();
 
       // Track the largest row id. This is more efficient than sorting all the
       // rows.
-      if (*impression.impression_id() > start_impression_id)
-        start_impression_id = *impression.impression_id();
+      if (impression.impression_id > start_impression_id)
+        start_impression_id = impression.impression_id;
     }
 
     // Fetch the next batch of rows from the database.
     start_impression_id += 1;
-    impressions =
-        GetImpressions(db, start_impression_id, kNumImpressionsPerUpdate);
+    impressions = GetImpressionIdAndConversionOrigins(db, start_impression_id,
+                                                      kNumImpressionsPerUpdate);
   }
 
   // Create the pre-existing impression table indices on the new table.
diff --git a/content/browser/dom_storage/dom_storage_browsertest.cc b/content/browser/dom_storage/dom_storage_browsertest.cc
index 2e1595ec..bce98a2 100644
--- a/content/browser/dom_storage/dom_storage_browsertest.cc
+++ b/content/browser/dom_storage/dom_storage_browsertest.cc
@@ -9,7 +9,6 @@
 #include "base/test/bind.h"
 #include "base/threading/thread_restrictions.h"
 #include "build/build_config.h"
-#include "components/services/storage/dom_storage/legacy_dom_storage_database.h"
 #include "components/services/storage/dom_storage/local_storage_impl.h"
 #include "components/services/storage/public/cpp/constants.h"
 #include "components/services/storage/public/cpp/filesystem/filesystem_proxy.h"
@@ -163,36 +162,4 @@
 }
 #endif
 
-IN_PROC_BROWSER_TEST_F(DOMStorageBrowserTest, DataMigrates) {
-  const base::FilePath legacy_local_storage_path =
-      partition()->GetPath().Append(storage::kLocalStoragePath);
-  base::FilePath db_path = legacy_local_storage_path.Append(
-      storage::LocalStorageImpl::LegacyDatabaseFileNameFromOrigin(
-          url::Origin::Create(GetTestUrl("dom_storage", "store_data.html"))));
-  {
-    base::ScopedAllowBlockingForTesting allow_blocking;
-    EXPECT_TRUE(base::CreateDirectory(legacy_local_storage_path));
-    storage::LegacyDomStorageDatabase db(
-        db_path,
-        std::make_unique<storage::FilesystemProxy>(
-            storage::FilesystemProxy::UNRESTRICTED, legacy_local_storage_path));
-    storage::LegacyDomStorageValuesMap data;
-    data[u"foo"] = u"bar";
-    db.CommitChanges(false, data);
-    EXPECT_TRUE(base::PathExists(db_path));
-  }
-  std::vector<StorageUsageInfo> usage = GetUsage();
-  ASSERT_EQ(1U, usage.size());
-  EXPECT_GT(usage[0].total_size_bytes, 6u);
-
-  SimpleTest(GetTestUrl("dom_storage", "verify_data.html"), kNotIncognito);
-  usage = GetUsage();
-  ASSERT_EQ(1U, usage.size());
-  EXPECT_GT(usage[0].total_size_bytes, 6u);
-  {
-    base::ScopedAllowBlockingForTesting allow_blocking;
-    EXPECT_FALSE(base::PathExists(db_path));
-  }
-}
-
 }  // namespace content
diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/browser/loader/navigation_url_loader_impl.cc
index 178a234..16d8ef1 100644
--- a/content/browser/loader/navigation_url_loader_impl.cc
+++ b/content/browser/loader/navigation_url_loader_impl.cc
@@ -948,10 +948,8 @@
   // URLLoaderClient has already been transferred to the renderer process and
   // OnComplete is not expected to be called here.
   if (status.error_code == net::OK) {
-    base::debug::SetCrashKeyString(
-        base::debug::AllocateCrashKeyString("navigate_url",
-                                            base::debug::CrashKeySize::Size256),
-        url_.spec());
+    SCOPED_CRASH_KEY_STRING256("NavigationURLLoader::Complete", "url",
+                               url_.spec());
     base::debug::DumpWithoutCrashing();
     return;
   }
diff --git a/content/browser/loader/object_navigation_fallback_body_loader.cc b/content/browser/loader/object_navigation_fallback_body_loader.cc
index 4290ddfd..d3f79cd 100644
--- a/content/browser/loader/object_navigation_fallback_body_loader.cc
+++ b/content/browser/loader/object_navigation_fallback_body_loader.cc
@@ -188,21 +188,21 @@
 
 }  // namespace
 
+NAVIGATION_HANDLE_USER_DATA_KEY_IMPL(ObjectNavigationFallbackBodyLoader)
+
 // static
 void ObjectNavigationFallbackBodyLoader::CreateAndStart(
+    NavigationRequest& navigation_request,
     const mojom::CommonNavigationParams& common_params,
     const mojom::CommitNavigationParams& commit_params,
     const network::mojom::URLResponseHead& response_head,
     mojo::ScopedDataPipeConsumerHandle response_body,
     network::mojom::URLLoaderClientEndpointsPtr url_loader_client_endpoints,
-    base::WeakPtr<NavigationRequest> navigation_request,
     base::OnceClosure completion_closure) {
   // This should only be called for HTTP errors.
   DCHECK(response_head.headers);
-  // And `navigation_request` should certainly be live at this point.
-  DCHECK(navigation_request);
   RenderFrameHostImpl* render_frame_host =
-      navigation_request->frame_tree_node()->current_frame_host();
+      navigation_request.frame_tree_node()->current_frame_host();
   // A frame owned by <object> should always have a parent.
   DCHECK(render_frame_host->GetParent());
   // It's safe to snapshot the parent origin in the calculation here; if the
@@ -214,22 +214,23 @@
   std::string server_timing_value =
       ExtractServerTimingValueIfNeeded(response_head);
 
-  new ObjectNavigationFallbackBodyLoader(
-      std::move(timing_info), std::move(server_timing_value),
-      std::move(response_body), std::move(url_loader_client_endpoints),
-      std::move(navigation_request), std::move(completion_closure));
+  CreateForNavigationHandle(
+      navigation_request, std::move(timing_info),
+      std::move(server_timing_value), std::move(response_body),
+      std::move(url_loader_client_endpoints), std::move(completion_closure));
 }
 
 ObjectNavigationFallbackBodyLoader::~ObjectNavigationFallbackBodyLoader() {}
 
 ObjectNavigationFallbackBodyLoader::ObjectNavigationFallbackBodyLoader(
+    NavigationHandle& navigation_handle,
     blink::mojom::ResourceTimingInfoPtr timing_info,
     std::string server_timing_value,
     mojo::ScopedDataPipeConsumerHandle response_body,
     network::mojom::URLLoaderClientEndpointsPtr url_loader_client_endpoints,
-    base::WeakPtr<NavigationRequest> navigation_request,
     base::OnceClosure completion_closure)
-    : url_loader_(std::move(url_loader_client_endpoints->url_loader)),
+    : navigation_request_(static_cast<NavigationRequest&>(navigation_handle)),
+      url_loader_(std::move(url_loader_client_endpoints->url_loader)),
       url_loader_client_receiver_(
           this,
           std::move(url_loader_client_endpoints->url_loader_client)),
@@ -238,12 +239,12 @@
                                                   std::move(response_body))),
       timing_info_(std::move(timing_info)),
       server_timing_value_(std::move(server_timing_value)),
-      navigation_request_(std::move(navigation_request)),
       completion_closure_(std::move(completion_closure)) {
   // Unretained is safe; `url_loader_` is owned by `this` and will not dispatch
   // callbacks after it is destroyed.
-  url_loader_client_receiver_.set_disconnect_handler(base::BindOnce(
-      &ObjectNavigationFallbackBodyLoader::DeleteThis, base::Unretained(this)));
+  url_loader_client_receiver_.set_disconnect_handler(
+      base::BindOnce(&ObjectNavigationFallbackBodyLoader::BodyLoadFailed,
+                     base::Unretained(this)));
 }
 
 void ObjectNavigationFallbackBodyLoader::MaybeComplete() {
@@ -252,24 +253,18 @@
   if (!status_ || response_body_drainer_)
     return;
 
-  // At this point, `this` is done and should be deleted no matter what. Ensure
-  // that this happens, even with early returns.
-  base::ScopedClosureRunner cleanup(base::BindOnce(
-      &ObjectNavigationFallbackBodyLoader::DeleteThis, base::Unretained(this)));
-
-  // If the navigation request is gone, the navigation was replaced with a new
-  // navigation, and there's no point in reporting the performance entry
-  // anymore.
-  if (!navigation_request_) {
-    return;
-  }
+  // At this point, `this` is done and the associated NavigationRequest and
+  // `this` must be cleaned up, no matter what else happens. Running
+  // `completion_closure_` will delete the NavigationRequest, which will delete
+  // `this`.
+  base::ScopedClosureRunner cleanup(std::move(completion_closure_));
 
   timing_info_->response_end = status_->completion_time;
   timing_info_->encoded_body_size = status_->encoded_body_length;
   timing_info_->decoded_body_size = status_->decoded_body_length;
 
   RenderFrameHostManager* render_manager =
-      navigation_request_->frame_tree_node()->render_manager();
+      navigation_request_.frame_tree_node()->render_manager();
   if (RenderFrameProxyHost* proxy = render_manager->GetProxyToParent()) {
     proxy->GetAssociatedRemoteFrame()->RenderFallbackContentWithResourceTiming(
         std::move(timing_info_), server_timing_value_);
@@ -279,13 +274,19 @@
         ->RenderFallbackContentWithResourceTiming(std::move(timing_info_),
                                                   server_timing_value_);
   }
-
-  // Clean up the NavigationRequest that `this` was bound to.
-  std::move(completion_closure_).Run();
 }
 
-void ObjectNavigationFallbackBodyLoader::DeleteThis() {
-  delete this;
+void ObjectNavigationFallbackBodyLoader::BodyLoadFailed() {
+  // At this point, `this` is done and the associated NavigationRequest and
+  // `this` must be cleaned up, no matter what else happens. Running
+  // `completion_closure_` will delete the NavigationRequest, which will delete
+  // `this`.
+  base::ScopedClosureRunner cleanup(std::move(completion_closure_));
+
+  // The endpoint for the URL loader client was closed before the body load
+  // completed. This is considered failure, so trigger the fallback content, but
+  // without any timing info, since it can't be calculated.
+  navigation_request_.RenderFallbackContentForObjectTag();
 }
 
 void ObjectNavigationFallbackBodyLoader::OnReceiveEarlyHints(
diff --git a/content/browser/loader/object_navigation_fallback_body_loader.h b/content/browser/loader/object_navigation_fallback_body_loader.h
index 4f80c47..007f89a 100644
--- a/content/browser/loader/object_navigation_fallback_body_loader.h
+++ b/content/browser/loader/object_navigation_fallback_body_loader.h
@@ -9,6 +9,7 @@
 #include <string>
 
 #include "base/callback.h"
+#include "content/public/browser/navigation_handle_user_data.h"
 #include "mojo/public/cpp/bindings/receiver.h"
 #include "mojo/public/cpp/bindings/remote.h"
 #include "mojo/public/cpp/system/data_pipe.h"
@@ -57,7 +58,8 @@
 // duplicating significant amounts of the resource timing code in the browser.
 // It would be nice to do better somehow in the future...
 class ObjectNavigationFallbackBodyLoader
-    : public network::mojom::URLLoaderClient,
+    : public NavigationHandleUserData<ObjectNavigationFallbackBodyLoader>,
+      public network::mojom::URLLoaderClient,
       public mojo::DataPipeDrainer::Client {
  public:
   // `common_params, `commit_params`, and `response_head`  are used to
@@ -75,27 +77,30 @@
   // `completion_closure` is used to clean up the navigation request if the
   // response body is successfully loaded.
   static void CreateAndStart(
+      NavigationRequest& navigation_request,
       const mojom::CommonNavigationParams& common_params,
       const mojom::CommitNavigationParams& commit_params,
       const network::mojom::URLResponseHead& response_head,
       mojo::ScopedDataPipeConsumerHandle response_body,
       network::mojom::URLLoaderClientEndpointsPtr url_loader_client_endpoints,
-      base::WeakPtr<NavigationRequest> navigation_request,
       base::OnceClosure completion_closure);
 
   ~ObjectNavigationFallbackBodyLoader() override;
 
  private:
+  friend NavigationHandleUserData<ObjectNavigationFallbackBodyLoader>;
+  NAVIGATION_HANDLE_USER_DATA_KEY_DECL();
+
   ObjectNavigationFallbackBodyLoader(
+      NavigationHandle& navigation_handle,
       blink::mojom::ResourceTimingInfoPtr timing_info,
       std::string server_timing_value,
       mojo::ScopedDataPipeConsumerHandle response_body,
       network::mojom::URLLoaderClientEndpointsPtr url_loader_client_endpoints,
-      base::WeakPtr<NavigationRequest> navigation_request,
       base::OnceClosure completion_closure);
 
   void MaybeComplete();
-  void DeleteThis();
+  void BodyLoadFailed();
 
   // URLLoaderClient overrides:
   void OnReceiveEarlyHints(network::mojom::EarlyHintsPtr) override;
@@ -115,6 +120,7 @@
   void OnDataAvailable(const void* data, size_t num_bytes) override;
   void OnDataComplete() override;
 
+  NavigationRequest& navigation_request_;
   // `url_loader_` must be kept alive while reading the response body.
   mojo::Remote<network::mojom::URLLoader> url_loader_;
   mojo::Receiver<network::mojom::URLLoaderClient> url_loader_client_receiver_;
@@ -124,7 +130,6 @@
   absl::optional<network::URLLoaderCompletionStatus> status_;
   blink::mojom::ResourceTimingInfoPtr timing_info_;
   std::string server_timing_value_;
-  base::WeakPtr<NavigationRequest> navigation_request_;
   base::OnceClosure completion_closure_;
 };
 
diff --git a/content/browser/media/capture/aura_window_video_capture_device.cc b/content/browser/media/capture/aura_window_video_capture_device.cc
index 90f2ba7..947367f0 100644
--- a/content/browser/media/capture/aura_window_video_capture_device.cc
+++ b/content/browser/media/capture/aura_window_video_capture_device.cc
@@ -126,7 +126,6 @@
     target_window_->RemoveObserver(this);
     target_window_ = nullptr;
 
-    capture_request_ = aura::ScopedWindowCaptureRequest();
 #if BUILDFLAG(IS_CHROMEOS_ASH)
     force_visible_.reset();
 #endif
diff --git a/content/browser/renderer_host/agent_scheduling_group_host.cc b/content/browser/renderer_host/agent_scheduling_group_host.cc
index 5249e91..05c5d45 100644
--- a/content/browser/renderer_host/agent_scheduling_group_host.cc
+++ b/content/browser/renderer_host/agent_scheduling_group_host.cc
@@ -342,13 +342,14 @@
     const absl::optional<blink::FrameToken>& opener_frame_token,
     int32_t view_routing_id,
     int32_t parent_routing_id,
+    blink::mojom::TreeScopeType tree_scope_type,
     blink::mojom::FrameReplicationStatePtr replicated_state,
     const base::UnguessableToken& devtools_frame_token,
     mojom::RemoteMainFrameInterfacesPtr remote_main_frame_interfaces) {
   DCHECK_EQ(state_, LifecycleState::kBound);
   mojo_remote_.get()->CreateFrameProxy(
       token, routing_id, opener_frame_token, view_routing_id, parent_routing_id,
-      std::move(replicated_state), devtools_frame_token,
+      tree_scope_type, std::move(replicated_state), devtools_frame_token,
       std::move(remote_main_frame_interfaces));
 }
 
diff --git a/content/browser/renderer_host/agent_scheduling_group_host.h b/content/browser/renderer_host/agent_scheduling_group_host.h
index 066e796..aea3625 100644
--- a/content/browser/renderer_host/agent_scheduling_group_host.h
+++ b/content/browser/renderer_host/agent_scheduling_group_host.h
@@ -98,6 +98,7 @@
       const absl::optional<blink::FrameToken>& opener_frame_token,
       int32_t view_routing_id,
       int32_t parent_routing_id,
+      blink::mojom::TreeScopeType tree_scope_type,
       blink::mojom::FrameReplicationStatePtr replicated_state,
       const base::UnguessableToken& devtools_frame_token,
       mojom::RemoteMainFrameInterfacesPtr remote_main_frame_interfaces);
diff --git a/content/browser/renderer_host/frame_tree_node.cc b/content/browser/renderer_host/frame_tree_node.cc
index f9c12cf..1faf917 100644
--- a/content/browser/renderer_host/frame_tree_node.cc
+++ b/content/browser/renderer_host/frame_tree_node.cc
@@ -108,7 +108,7 @@
 FrameTreeNode::FrameTreeNode(
     FrameTree* frame_tree,
     RenderFrameHostImpl* parent,
-    blink::mojom::TreeScopeType scope,
+    blink::mojom::TreeScopeType tree_scope_type,
     const std::string& name,
     const std::string& unique_name,
     bool is_created_by_script,
@@ -120,6 +120,7 @@
       parent_(parent),
       depth_(parent ? parent->frame_tree_node()->depth_ + 1 : 0u),
       frame_owner_element_type_(owner_type),
+      tree_scope_type_(tree_scope_type),
       replication_state_(blink::mojom::FrameReplicationState::New(
           url::Origin(),
           name,
@@ -127,7 +128,6 @@
           blink::ParsedPermissionsPolicy(),
           network::mojom::WebSandboxFlags::kNone,
           blink::FramePolicy(),
-          scope,
           // should enforce strict mixed content checking
           blink::mojom::InsecureRequestPolicy::kLeaveInsecureRequestsAlone,
           // hashes of hosts for insecure request upgrades
diff --git a/content/browser/renderer_host/frame_tree_node.h b/content/browser/renderer_host/frame_tree_node.h
index f494c69..a14ddd69 100644
--- a/content/browser/renderer_host/frame_tree_node.h
+++ b/content/browser/renderer_host/frame_tree_node.h
@@ -27,6 +27,7 @@
 #include "third_party/blink/public/mojom/frame/frame_owner_element_type.mojom.h"
 #include "third_party/blink/public/mojom/frame/frame_owner_properties.mojom.h"
 #include "third_party/blink/public/mojom/frame/frame_replication_state.mojom-forward.h"
+#include "third_party/blink/public/mojom/frame/tree_scope_type.mojom.h"
 #include "third_party/blink/public/mojom/frame/user_activation_update_types.mojom.h"
 #include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-forward.h"
 
@@ -79,7 +80,7 @@
   FrameTreeNode(
       FrameTree* frame_tree,
       RenderFrameHostImpl* parent,
-      blink::mojom::TreeScopeType scope,
+      blink::mojom::TreeScopeType tree_scope_type,
       const std::string& name,
       const std::string& unique_name,
       bool is_created_by_script,
@@ -423,6 +424,10 @@
     return frame_owner_element_type_;
   }
 
+  blink::mojom::TreeScopeType tree_scope_type() const {
+    return tree_scope_type_;
+  }
+
   void SetAdFrameType(blink::mojom::AdFrameType ad_frame_type);
 
   // The initial popup URL for new window opened using:
@@ -538,10 +543,18 @@
   // Whether the frame's owner element in the parent document is collapsed.
   bool is_collapsed_ = false;
 
-  // The type of frame owner for this frame, if any.
+  // The type of frame owner for this frame. This is only relevant for non-main
+  // frames.
   const blink::mojom::FrameOwnerElementType frame_owner_element_type_ =
       blink::mojom::FrameOwnerElementType::kNone;
 
+  // The tree scope type of frame owner element, i.e. whether the element is in
+  // the document tree (https://dom.spec.whatwg.org/#document-trees) or the
+  // shadow tree (https://dom.spec.whatwg.org/#shadow-trees). This is only
+  // relevant for non-main frames.
+  const blink::mojom::TreeScopeType tree_scope_type_ =
+      blink::mojom::TreeScopeType::kDocument;
+
   // Track information that needs to be replicated to processes that have
   // proxies for this frame.
   blink::mojom::FrameReplicationStatePtr replication_state_;
diff --git a/content/browser/renderer_host/navigation_entry_impl_unittest.cc b/content/browser/renderer_host/navigation_entry_impl_unittest.cc
index e7a0ed1e..0994418 100644
--- a/content/browser/renderer_host/navigation_entry_impl_unittest.cc
+++ b/content/browser/renderer_host/navigation_entry_impl_unittest.cc
@@ -28,30 +28,6 @@
 
 namespace {
 
-// A test class for testing SSLStatus user data.
-class TestSSLStatusData : public SSLStatus::UserData {
- public:
-  TestSSLStatusData() {}
-  ~TestSSLStatusData() override {}
-
-  void set_user_data_flag(bool user_data_flag) {
-    user_data_flag_ = user_data_flag;
-  }
-  bool user_data_flag() { return user_data_flag_; }
-
-  // SSLStatus implementation:
-  std::unique_ptr<SSLStatus::UserData> Clone() override {
-    std::unique_ptr<TestSSLStatusData> cloned =
-        std::make_unique<TestSSLStatusData>();
-    cloned->set_user_data_flag(user_data_flag_);
-    return std::move(cloned);
-  }
-
- private:
-  bool user_data_flag_ = false;
-  DISALLOW_COPY_AND_ASSIGN(TestSSLStatusData);
-};
-
 blink::PageState CreateTestPageState() {
   blink::ExplodedPageState exploded_state;
   std::string encoded_data;
@@ -198,25 +174,6 @@
   EXPECT_FALSE(!!(content_status & SSLStatus::RAN_INSECURE_CONTENT));
 }
 
-// Tests that SSLStatus user data can be added, retrieved, and copied.
-TEST_F(NavigationEntryTest, SSLStatusUserData) {
-  // Set up an SSLStatus with some user data on it.
-  SSLStatus ssl;
-  ssl.user_data = std::make_unique<TestSSLStatusData>();
-  TestSSLStatusData* ssl_data =
-      static_cast<TestSSLStatusData*>(ssl.user_data.get());
-  ASSERT_TRUE(ssl_data);
-  ssl_data->set_user_data_flag(true);
-
-  // Clone the SSLStatus and test that the user data has been cloned.
-  SSLStatus cloned(ssl);
-  TestSSLStatusData* cloned_ssl_data =
-      static_cast<TestSSLStatusData*>(cloned.user_data.get());
-  ASSERT_TRUE(cloned_ssl_data);
-  EXPECT_TRUE(cloned_ssl_data->user_data_flag());
-  EXPECT_NE(cloned_ssl_data, ssl_data);
-}
-
 // Test other basic accessors
 TEST_F(NavigationEntryTest, NavigationEntryAccessors) {
   // SiteInstance
diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc
index 9049e1a..29fec4d 100644
--- a/content/browser/renderer_host/navigation_request.cc
+++ b/content/browser/renderer_host/navigation_request.cc
@@ -3577,16 +3577,13 @@
       // helper will request fallback content (triggering completion) and report
       // the resource timing info once the entire response body is drained.
       //
-      // The response body fetcher has a lifetime that's weakly associated with
-      // `this`. The helper will check if `this` is still live before requesting
-      // fallback content and reporting the timing info to the renderer.
-      //
-      // TODO(dcheng): Migrate this to be a NavigationRequest::UserData once
-      // that's implemented.
+      // The response body fetcher takes advantage of base::SupportsUserData to
+      // ensure that the fetcher does not outlive `this`. This ensures that the
+      // fallback / resource timing are only reported if the navigation request
+      // is logically still pending.
       ObjectNavigationFallbackBodyLoader::CreateAndStart(
-          *common_params_, *commit_params_, *response(),
+          *this, *common_params_, *commit_params_, *response(),
           std::move(response_body_), std::move(url_loader_client_endpoints_),
-          weak_factory_.GetWeakPtr(),
           base::BindOnce(&NavigationRequest::OnRequestFailedInternal,
                          weak_factory_.GetWeakPtr(),
                          network::URLLoaderCompletionStatus(net::ERR_ABORTED),
diff --git a/content/browser/renderer_host/navigation_request.h b/content/browser/renderer_host/navigation_request.h
index f5a5260..cc1fb8b 100644
--- a/content/browser/renderer_host/navigation_request.h
+++ b/content/browser/renderer_host/navigation_request.h
@@ -614,6 +614,11 @@
     complete_callback_for_testing_ = std::move(callback);
   }
 
+  network::mojom::URLLoaderClientEndpointsPtr&
+  mutable_url_loader_client_endpoints_for_testing() {
+    return url_loader_client_endpoints_;
+  }
+
   void set_ready_to_commit_callback_for_testing(base::OnceClosure callback) {
     ready_to_commit_callback_for_testing_ = std::move(callback);
   }
@@ -881,6 +886,8 @@
     return prerender_frame_tree_node_id_;
   }
 
+  void RenderFallbackContentForObjectTag();
+
  private:
   friend class NavigationRequestTest;
 
@@ -1320,7 +1327,6 @@
 
   bool ShouldRenderFallbackContentForResponse(
       const net::HttpResponseHeaders& response_head) const;
-  void RenderFallbackContentForObjectTag();
 
   // Never null. The pointee node owns this navigation request instance.
   FrameTreeNode* const frame_tree_node_;
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
index 65b5806..b0b606b 100644
--- a/content/browser/renderer_host/render_frame_host_impl.cc
+++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -661,13 +661,13 @@
 // kill.  Note that the commit URL is already reported in a crash key, and
 // additional keys are logged in RenderProcessHostImpl::ShutdownForBadMessage.
 void LogRendererKillCrashKeys(const SiteInfo& site_info) {
-  static auto* site_info_key = base::debug::AllocateCrashKeyString(
+  static auto* const site_info_key = base::debug::AllocateCrashKeyString(
       "current_site_info", base::debug::CrashKeySize::Size256);
   base::debug::SetCrashKeyString(site_info_key, site_info.GetDebugString());
 }
 
 void LogCanCommitOriginAndUrlFailureReason(const std::string& failure_reason) {
-  static auto* failure_reason_key = base::debug::AllocateCrashKeyString(
+  static auto* const failure_reason_key = base::debug::AllocateCrashKeyString(
       "rfhi_can_commit_failure_reason", base::debug::CrashKeySize::Size64);
   base::debug::SetCrashKeyString(failure_reason_key, failure_reason);
 }
@@ -2807,6 +2807,7 @@
   params->opener_frame_token = opener_frame_token;
   params->parent_routing_id = parent_routing_id;
   params->previous_sibling_routing_id = previous_sibling_routing_id;
+  params->tree_scope_type = frame_tree_node()->tree_scope_type();
   params->replication_state =
       frame_tree_node()->current_replication_state().Clone();
   params->token = frame_token_;
@@ -6489,9 +6490,11 @@
       // If an MHTML subframe commits in a different process (even one that
       // appears correct for the subframe's URL), then we aren't correctly
       // loading it from the archive and should kill the renderer.
-      base::debug::SetCrashKeyString(
+      static auto* const oopif_in_mhtml_page_key =
           base::debug::AllocateCrashKeyString(
-              "oopif_in_mhtml_page", base::debug::CrashKeySize::Size32),
+              "oopif_in_mhtml_page", base::debug::CrashKeySize::Size32);
+      base::debug::SetCrashKeyString(
+          oopif_in_mhtml_page_key,
           is_mhtml_document() ? "is_mhtml_doc" : "not_mhtml_doc");
       LogCanCommitOriginAndUrlFailureReason("oopif_in_mhtml_page");
       return CanCommitStatus::CANNOT_COMMIT_URL;
@@ -6984,18 +6987,12 @@
       // the origin to commit calculated on the browser side.
       !policy->CanAccessDataForOrigin(
           GetProcess()->GetID(), url::Origin::Create(common_params->url))) {
-    base::debug::SetCrashKeyString(
-        base::debug::AllocateCrashKeyString("lock_url",
-                                            base::debug::CrashKeySize::Size64),
-        process_lock.ToString());
-    base::debug::SetCrashKeyString(
-        base::debug::AllocateCrashKeyString("commit_origin",
-                                            base::debug::CrashKeySize::Size64),
-        common_params->url.GetOrigin().spec());
-    base::debug::SetCrashKeyString(
-        base::debug::AllocateCrashKeyString("is_main_frame",
-                                            base::debug::CrashKeySize::Size32),
-        frame_tree_node_->IsMainFrame() ? "true" : "false");
+    SCOPED_CRASH_KEY_STRING64("CommitNavigation", "lock_url",
+                              process_lock.ToString());
+    SCOPED_CRASH_KEY_STRING64("CommitNavigation", "commit_origin",
+                              common_params->url.GetOrigin().spec());
+    SCOPED_CRASH_KEY_BOOL("CommitNavigation", "is_main_frame",
+                          frame_tree_node_->IsMainFrame());
     NOTREACHED() << "Commiting in incompatible process for URL: "
                  << process_lock.lock_url() << " lock vs "
                  << common_params->url.GetOrigin();
@@ -8758,14 +8755,13 @@
     mojo::PendingReceiver<blink::mojom::AppCacheBackend> receiver) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   DCHECK(StoragePartition::IsAppCacheEnabled());
-  static auto* crash_key = base::debug::AllocateCrashKeyString(
-      "CreateAppCacheBackend-data", base::debug::CrashKeySize::Size64);
-  std::string data = base::StringPrintf(
-      "f=%d br=%d irfl=%d iiand=%d fid=%d", frame_.is_bound(),
-      broker_receiver_.is_bound(), IsRenderFrameLive(),
-      GetProcess()->IsInitializedAndNotDead(),
-      RenderProcessHost::FromID(GetProcess()->GetID()) != nullptr);
-  base::debug::ScopedCrashKeyString scoped_crash_key(crash_key, data);
+  SCOPED_CRASH_KEY_STRING64(
+      "CreateAppCacheBackend", "data",
+      base::StringPrintf(
+          "f=%d br=%d irfl=%d iiand=%d fid=%d", frame_.is_bound(),
+          broker_receiver_.is_bound(), IsRenderFrameLive(),
+          GetProcess()->IsInitializedAndNotDead(),
+          RenderProcessHost::FromID(GetProcess()->GetID()) != nullptr));
 
   auto* storage_partition_impl =
       static_cast<StoragePartitionImpl*>(GetProcess()->GetStoragePartition());
@@ -10192,112 +10188,132 @@
   // terminations. See https://crbug.com/931895.
   auto bool_to_crash_key = [](bool b) { return b ? "true" : "false"; };
 
-  base::debug::SetCrashKeyString(
-      base::debug::AllocateCrashKeyString("navigation_url",
-                                          base::debug::CrashKeySize::Size256),
-      url.spec());
+  static auto* const navigation_url_key = base::debug::AllocateCrashKeyString(
+      "navigation_url", base::debug::CrashKeySize::Size256);
+  base::debug::SetCrashKeyString(navigation_url_key, url.spec());
 
+  static auto* const is_same_document_key = base::debug::AllocateCrashKeyString(
+      "is_same_document", base::debug::CrashKeySize::Size32);
   base::debug::SetCrashKeyString(
-      base::debug::AllocateCrashKeyString("is_same_document",
-                                          base::debug::CrashKeySize::Size32),
-      bool_to_crash_key(is_same_document_navigation));
+      is_same_document_key, bool_to_crash_key(is_same_document_navigation));
 
+  static auto* const is_main_frame_key = base::debug::AllocateCrashKeyString(
+      "is_main_frame", base::debug::CrashKeySize::Size32);
   base::debug::SetCrashKeyString(
-      base::debug::AllocateCrashKeyString("is_main_frame",
-                                          base::debug::CrashKeySize::Size32),
-      bool_to_crash_key(frame_tree_node_->IsMainFrame()));
+      is_main_frame_key, bool_to_crash_key(frame_tree_node_->IsMainFrame()));
 
-  base::debug::SetCrashKeyString(
+  static auto* const is_cross_process_subframe_key =
       base::debug::AllocateCrashKeyString("is_cross_process_subframe",
-                                          base::debug::CrashKeySize::Size32),
-      bool_to_crash_key(IsCrossProcessSubframe()));
+                                          base::debug::CrashKeySize::Size32);
+  base::debug::SetCrashKeyString(is_cross_process_subframe_key,
+                                 bool_to_crash_key(IsCrossProcessSubframe()));
 
-  base::debug::SetCrashKeyString(
-      base::debug::AllocateCrashKeyString("is_local_root",
-                                          base::debug::CrashKeySize::Size32),
-      bool_to_crash_key(is_local_root()));
+  static auto* const is_local_root_key = base::debug::AllocateCrashKeyString(
+      "is_local_root", base::debug::CrashKeySize::Size32);
+  base::debug::SetCrashKeyString(is_local_root_key,
+                                 bool_to_crash_key(is_local_root()));
 
+  static auto* const site_lock_key = base::debug::AllocateCrashKeyString(
+      "site_lock", base::debug::CrashKeySize::Size256);
   base::debug::SetCrashKeyString(
-      base::debug::AllocateCrashKeyString("site_lock",
-                                          base::debug::CrashKeySize::Size256),
-      GetSiteInstance()->GetProcessLock().ToString());
+      site_lock_key, GetSiteInstance()->GetProcessLock().ToString());
 
   if (!GetSiteInstance()->IsDefaultSiteInstance()) {
-    base::debug::SetCrashKeyString(
+    static auto* const original_url_origin_key =
         base::debug::AllocateCrashKeyString("original_url_origin",
-                                            base::debug::CrashKeySize::Size256),
+                                            base::debug::CrashKeySize::Size256);
+    base::debug::SetCrashKeyString(
+        original_url_origin_key,
         GetSiteInstance()->original_url().GetOrigin().spec());
   }
 
-  base::debug::SetCrashKeyString(
+  static auto* const is_mhtml_document_key =
       base::debug::AllocateCrashKeyString("is_mhtml_document",
-                                          base::debug::CrashKeySize::Size32),
-      bool_to_crash_key(is_mhtml_document()));
+                                          base::debug::CrashKeySize::Size32);
+  base::debug::SetCrashKeyString(is_mhtml_document_key,
+                                 bool_to_crash_key(is_mhtml_document()));
 
-  base::debug::SetCrashKeyString(
+  static auto* const last_committed_url_origin_key =
       base::debug::AllocateCrashKeyString("last_committed_url_origin",
-                                          base::debug::CrashKeySize::Size256),
-      GetLastCommittedURL().GetOrigin().spec());
+                                          base::debug::CrashKeySize::Size256);
+  base::debug::SetCrashKeyString(last_committed_url_origin_key,
+                                 GetLastCommittedURL().GetOrigin().spec());
 
-  base::debug::SetCrashKeyString(
+  static auto* const last_successful_url_origin_key =
       base::debug::AllocateCrashKeyString("last_successful_url_origin",
-                                          base::debug::CrashKeySize::Size256),
-      last_successful_url().GetOrigin().spec());
+                                          base::debug::CrashKeySize::Size256);
+  base::debug::SetCrashKeyString(last_successful_url_origin_key,
+                                 last_successful_url().GetOrigin().spec());
 
   if (navigation_request && navigation_request->IsNavigationStarted()) {
-    base::debug::SetCrashKeyString(
+    static auto* const is_renderer_initiated_key =
         base::debug::AllocateCrashKeyString("is_renderer_initiated",
-                                            base::debug::CrashKeySize::Size32),
+                                            base::debug::CrashKeySize::Size32);
+    base::debug::SetCrashKeyString(
+        is_renderer_initiated_key,
         bool_to_crash_key(navigation_request->IsRendererInitiated()));
 
-    base::debug::SetCrashKeyString(
+    static auto* const is_server_redirect_key =
         base::debug::AllocateCrashKeyString("is_server_redirect",
-                                            base::debug::CrashKeySize::Size32),
+                                            base::debug::CrashKeySize::Size32);
+    base::debug::SetCrashKeyString(
+        is_server_redirect_key,
         bool_to_crash_key(navigation_request->WasServerRedirect()));
 
-    base::debug::SetCrashKeyString(
+    static auto* const is_form_submission_key =
         base::debug::AllocateCrashKeyString("is_form_submission",
-                                            base::debug::CrashKeySize::Size32),
+                                            base::debug::CrashKeySize::Size32);
+    base::debug::SetCrashKeyString(
+        is_form_submission_key,
         bool_to_crash_key(navigation_request->IsFormSubmission()));
 
+    static auto* const is_error_page_key = base::debug::AllocateCrashKeyString(
+        "is_error_page", base::debug::CrashKeySize::Size32);
     base::debug::SetCrashKeyString(
-        base::debug::AllocateCrashKeyString("is_error_page",
-                                            base::debug::CrashKeySize::Size32),
+        is_error_page_key,
         bool_to_crash_key(navigation_request->IsErrorPage()));
 
-    base::debug::SetCrashKeyString(
+    static auto* const from_begin_navigation_key =
         base::debug::AllocateCrashKeyString("from_begin_navigation",
-                                            base::debug::CrashKeySize::Size32),
+                                            base::debug::CrashKeySize::Size32);
+    base::debug::SetCrashKeyString(
+        from_begin_navigation_key,
         bool_to_crash_key(navigation_request->from_begin_navigation()));
 
+    static auto* const net_error_key = base::debug::AllocateCrashKeyString(
+        "net_error", base::debug::CrashKeySize::Size32);
     base::debug::SetCrashKeyString(
-        base::debug::AllocateCrashKeyString("net_error",
-                                            base::debug::CrashKeySize::Size32),
+        net_error_key,
         base::NumberToString(navigation_request->GetNetErrorCode()));
 
-    base::debug::SetCrashKeyString(
+    static auto* const initiator_origin_key =
         base::debug::AllocateCrashKeyString("initiator_origin",
-                                            base::debug::CrashKeySize::Size64),
+                                            base::debug::CrashKeySize::Size64);
+    base::debug::SetCrashKeyString(
+        initiator_origin_key,
         navigation_request->GetInitiatorOrigin()
             ? navigation_request->GetInitiatorOrigin()->GetDebugString()
             : "none");
 
-    base::debug::SetCrashKeyString(
+    static auto* const starting_site_instance_key =
         base::debug::AllocateCrashKeyString("starting_site_instance",
-                                            base::debug::CrashKeySize::Size256),
-        navigation_request->GetStartingSiteInstance()
-            ->GetSiteInfo()
-            .GetDebugString());
+                                            base::debug::CrashKeySize::Size256);
+    base::debug::SetCrashKeyString(starting_site_instance_key,
+                                   navigation_request->GetStartingSiteInstance()
+                                       ->GetSiteInfo()
+                                       .GetDebugString());
 
     // Recompute the target SiteInstance to see if it matches the current
     // one at commit time.
     scoped_refptr<SiteInstance> dest_instance =
         frame_tree_node_->render_manager()->GetSiteInstanceForNavigationRequest(
             navigation_request);
-    base::debug::SetCrashKeyString(
+    static auto* const does_recomputed_site_instance_match_key =
         base::debug::AllocateCrashKeyString(
             "does_recomputed_site_instance_match",
-            base::debug::CrashKeySize::Size32),
+            base::debug::CrashKeySize::Size32);
+    base::debug::SetCrashKeyString(
+        does_recomputed_site_instance_match_key,
         bool_to_crash_key(dest_instance == GetSiteInstance()));
   }
 }
@@ -10881,70 +10897,81 @@
   // Temporary instrumentation to debug the root cause of
   // https://crbug.com/923144.
   auto bool_to_crash_key = [](bool b) { return b ? "true" : "false"; };
+  static auto* const is_same_document_key = base::debug::AllocateCrashKeyString(
+      "is_same_document", base::debug::CrashKeySize::Size32);
   base::debug::SetCrashKeyString(
-      base::debug::AllocateCrashKeyString("is_same_document",
-                                          base::debug::CrashKeySize::Size32),
-      bool_to_crash_key(is_same_document_navigation));
+      is_same_document_key, bool_to_crash_key(is_same_document_navigation));
 
+  static auto* const is_subframe_key = base::debug::AllocateCrashKeyString(
+      "is_subframe", base::debug::CrashKeySize::Size32);
   base::debug::SetCrashKeyString(
-      base::debug::AllocateCrashKeyString("is_subframe",
-                                          base::debug::CrashKeySize::Size32),
-      bool_to_crash_key(!frame_tree_node_->IsMainFrame()));
+      is_subframe_key, bool_to_crash_key(!frame_tree_node_->IsMainFrame()));
 
-  base::debug::SetCrashKeyString(
-      base::debug::AllocateCrashKeyString("lifecycle_state",
-                                          base::debug::CrashKeySize::Size32),
-      LifecycleStateImplToString(lifecycle_state()));
+  static auto* const lifecycle_state_key = base::debug::AllocateCrashKeyString(
+      "lifecycle_state", base::debug::CrashKeySize::Size32);
+  base::debug::SetCrashKeyString(lifecycle_state_key,
+                                 LifecycleStateImplToString(lifecycle_state()));
 
-  base::debug::SetCrashKeyString(
-      base::debug::AllocateCrashKeyString("is_current",
-                                          base::debug::CrashKeySize::Size32),
-      bool_to_crash_key(IsCurrent()));
+  static auto* const is_current_key = base::debug::AllocateCrashKeyString(
+      "is_current", base::debug::CrashKeySize::Size32);
+  base::debug::SetCrashKeyString(is_current_key,
+                                 bool_to_crash_key(IsCurrent()));
 
-  base::debug::SetCrashKeyString(
+  static auto* const is_cross_process_subframe_key =
       base::debug::AllocateCrashKeyString("is_cross_process_subframe",
-                                          base::debug::CrashKeySize::Size32),
-      bool_to_crash_key(IsCrossProcessSubframe()));
+                                          base::debug::CrashKeySize::Size32);
+  base::debug::SetCrashKeyString(is_cross_process_subframe_key,
+                                 bool_to_crash_key(IsCrossProcessSubframe()));
 
-  base::debug::SetCrashKeyString(
-      base::debug::AllocateCrashKeyString("is_local_root",
-                                          base::debug::CrashKeySize::Size32),
-      bool_to_crash_key(is_local_root()));
+  static auto* const is_local_root_key = base::debug::AllocateCrashKeyString(
+      "is_local_root", base::debug::CrashKeySize::Size32);
+  base::debug::SetCrashKeyString(is_local_root_key,
+                                 bool_to_crash_key(is_local_root()));
 
   if (navigation_request && navigation_request->IsNavigationStarted()) {
-    base::debug::SetCrashKeyString(
+    static auto* const is_renderer_initiated_key =
         base::debug::AllocateCrashKeyString("is_renderer_initiated",
-                                            base::debug::CrashKeySize::Size32),
+                                            base::debug::CrashKeySize::Size32);
+    base::debug::SetCrashKeyString(
+        is_renderer_initiated_key,
         bool_to_crash_key(navigation_request->IsRendererInitiated()));
 
-    base::debug::SetCrashKeyString(
+    static auto* const is_server_redirect_key =
         base::debug::AllocateCrashKeyString("is_server_redirect",
-                                            base::debug::CrashKeySize::Size32),
+                                            base::debug::CrashKeySize::Size32);
+    base::debug::SetCrashKeyString(
+        is_server_redirect_key,
         bool_to_crash_key(navigation_request->WasServerRedirect()));
 
-    base::debug::SetCrashKeyString(
+    static auto* const is_form_submission_key =
         base::debug::AllocateCrashKeyString("is_form_submission",
-                                            base::debug::CrashKeySize::Size32),
+                                            base::debug::CrashKeySize::Size32);
+    base::debug::SetCrashKeyString(
+        is_form_submission_key,
         bool_to_crash_key(navigation_request->IsFormSubmission()));
 
+    static auto* const is_error_page_key = base::debug::AllocateCrashKeyString(
+        "is_error_page", base::debug::CrashKeySize::Size32);
     base::debug::SetCrashKeyString(
-        base::debug::AllocateCrashKeyString("is_error_page",
-                                            base::debug::CrashKeySize::Size32),
+        is_error_page_key,
         bool_to_crash_key(navigation_request->IsErrorPage()));
 
-    base::debug::SetCrashKeyString(
+    static auto* const initiator_origin_key =
         base::debug::AllocateCrashKeyString("initiator_origin",
-                                            base::debug::CrashKeySize::Size64),
+                                            base::debug::CrashKeySize::Size64);
+    base::debug::SetCrashKeyString(
+        initiator_origin_key,
         navigation_request->GetInitiatorOrigin()
             ? navigation_request->GetInitiatorOrigin()->GetDebugString()
             : "none");
 
-    base::debug::SetCrashKeyString(
+    static auto* const starting_site_instance_key =
         base::debug::AllocateCrashKeyString("starting_site_instance",
-                                            base::debug::CrashKeySize::Size256),
-        navigation_request->GetStartingSiteInstance()
-            ->GetSiteInfo()
-            .GetDebugString());
+                                            base::debug::CrashKeySize::Size256);
+    base::debug::SetCrashKeyString(starting_site_instance_key,
+                                   navigation_request->GetStartingSiteInstance()
+                                       ->GetSiteInfo()
+                                       .GetDebugString());
   }
 }
 
diff --git a/content/browser/renderer_host/render_frame_host_manager.cc b/content/browser/renderer_host/render_frame_host_manager.cc
index 62a3d251..eb92d5c5 100644
--- a/content/browser/renderer_host/render_frame_host_manager.cc
+++ b/content/browser/renderer_host/render_frame_host_manager.cc
@@ -1099,22 +1099,14 @@
           navigation_rfh->GetProcess()->GetID(),
           url::Origin::Create(request->common_params().url)) &&
       !request->IsForMhtmlSubframe()) {
-    base::debug::SetCrashKeyString(
-        base::debug::AllocateCrashKeyString("lock_url",
-                                            base::debug::CrashKeySize::Size256),
-        process_lock.ToString());
-    base::debug::SetCrashKeyString(
-        base::debug::AllocateCrashKeyString("commit_origin",
-                                            base::debug::CrashKeySize::Size64),
-        request->common_params().url.GetOrigin().spec());
-    base::debug::SetCrashKeyString(
-        base::debug::AllocateCrashKeyString("is_main_frame",
-                                            base::debug::CrashKeySize::Size32),
-        frame_tree_node_->IsMainFrame() ? "true" : "false");
-    base::debug::SetCrashKeyString(
-        base::debug::AllocateCrashKeyString("use_current_rfh",
-                                            base::debug::CrashKeySize::Size32),
-        use_current_rfh ? "true" : "false");
+    SCOPED_CRASH_KEY_STRING256("GetFrameHostForNav", "lock_url",
+                               process_lock.ToString());
+    SCOPED_CRASH_KEY_STRING64("GetFrameHostForNav", "commit_origin",
+                              request->common_params().url.GetOrigin().spec());
+    SCOPED_CRASH_KEY_BOOL("GetFrameHostForNav", "is_main_frame",
+                          frame_tree_node_->IsMainFrame());
+    SCOPED_CRASH_KEY_BOOL("GetFrameHostForNav", "use_current_rfh",
+                          use_current_rfh);
     NOTREACHED() << "Picked an incompatible process for URL: "
                  << process_lock.ToString() << " lock vs "
                  << request->common_params().url.GetOrigin();
diff --git a/content/browser/renderer_host/render_frame_proxy_host.cc b/content/browser/renderer_host/render_frame_proxy_host.cc
index 728f52c..9f4c72d 100644
--- a/content/browser/renderer_host/render_frame_proxy_host.cc
+++ b/content/browser/renderer_host/render_frame_proxy_host.cc
@@ -311,6 +311,7 @@
       ->GetAgentSchedulingGroup()
       .CreateFrameProxy(frame_token_, routing_id_, opener_frame_token,
                         view_routing_id, parent_routing_id,
+                        frame_tree_node_->tree_scope_type(),
                         frame_tree_node_->current_replication_state().Clone(),
                         frame_tree_node_->devtools_frame_token(),
                         BindAndPassRemoteMainFrameInterfaces());
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
index 8bcdeaa..cb45b60 100644
--- a/content/browser/renderer_host/render_process_host_impl.cc
+++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -2956,9 +2956,8 @@
     if (site_isolation_mode.empty())
       site_isolation_mode = "(none)";
 
-    static auto* isolation_mode_key = base::debug::AllocateCrashKeyString(
-        "site_isolation_mode", base::debug::CrashKeySize::Size32);
-    base::debug::SetCrashKeyString(isolation_mode_key, site_isolation_mode);
+    SCOPED_CRASH_KEY_STRING32("RPH.BadMessageKill", "isolation_mode",
+                              site_isolation_mode);
 
     // Report a crash, since none will be generated by the killed renderer.
     base::debug::DumpWithoutCrashing();
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 ce0a83f..804ea37b 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
@@ -832,13 +832,9 @@
     if (RenderWidgetHostViewBase::IsValidRWHVBPointer(target) != 1 &&
         !has_dumped_) {
       has_dumped_ = true;
-      auto* invalid_rwhvb_ptr_string = base::debug::AllocateCrashKeyString(
-          "invalid_rwhvb_pointer_status", base::debug::CrashKeySize::Size32);
-      base::debug::ScopedCrashKeyString key(
-          invalid_rwhvb_ptr_string,
-          base::StringPrintf(
-              "Invalid RWHVB ptr: status = %d",
-              RenderWidgetHostViewBase::IsValidRWHVBPointer(target)));
+      SCOPED_CRASH_KEY_NUMBER(
+          "DispatchTouchEvent", "ptr_status",
+          RenderWidgetHostViewBase::IsValidRWHVBPointer(target));
       base::debug::DumpWithoutCrashing();
     }
     touch_target_ = target;
diff --git a/content/browser/service_worker/service_worker_script_loader_factory.cc b/content/browser/service_worker/service_worker_script_loader_factory.cc
index a9493be..575cf24 100644
--- a/content/browser/service_worker/service_worker_script_loader_factory.cc
+++ b/content/browser/service_worker/service_worker_script_loader_factory.cc
@@ -167,10 +167,9 @@
           network::mojom::RequestDestination::kServiceWorker &&
       resource_request.destination !=
           network::mojom::RequestDestination::kScript) {
-    static auto* key = base::debug::AllocateCrashKeyString(
-        "swslf_bad_type", base::debug::CrashKeySize::Size32);
-    base::debug::SetCrashKeyString(
-        key, network::RequestDestinationToString(resource_request.destination));
+    SCOPED_CRASH_KEY_STRING32(
+        "ServiceWorkerSLF", "bad_type",
+        network::RequestDestinationToString(resource_request.destination));
     mojo::ReportBadMessage("SWSLF_BAD_REQUEST_DESTINATION");
     return false;
   }
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc
index cad85bc..1c9e03f6 100644
--- a/content/browser/service_worker/service_worker_version.cc
+++ b/content/browser/service_worker/service_worker_version.cc
@@ -875,12 +875,10 @@
     CHECK(base::Contains(controllees_to_be_evicted_, client_uuid));
     // TODO(crbug.com/1021718): Remove DumpWithoutCrashing once we confirm the
     // cause of the crash.
-    static auto* no_controllee_reason = base::debug::AllocateCrashKeyString(
-        "no_controllee_reason", base::debug::CrashKeySize::Size32);
     BackForwardCacheCanStoreDocumentResult can_store;
     can_store.No(controllees_to_be_evicted_.at(client_uuid));
-    base::debug::ScopedCrashKeyString scoped_no_controllee_reason(
-        no_controllee_reason, can_store.ToString());
+    SCOPED_CRASH_KEY_STRING32("RestoreForBFCache", "no_controllee_reason",
+                              can_store.ToString());
     base::debug::DumpWithoutCrashing();
     return;
   }
diff --git a/content/browser/site_instance_impl.cc b/content/browser/site_instance_impl.cc
index 00033b6..c555769 100644
--- a/content/browser/site_instance_impl.cc
+++ b/content/browser/site_instance_impl.cc
@@ -443,10 +443,8 @@
     // TODO(acolwell): Once we have confidence all callers are setting
     // |is_site_url| correctly, replace crash reporting with code that returns a
     // default config for this scheme in the non-site URL case.
-    static auto* guest_url_crash_key = base::debug::AllocateCrashKeyString(
-        "guest_url", base::debug::CrashKeySize::Size256);
-    base::debug::SetCrashKeyString(guest_url_crash_key,
-                                   url.possibly_invalid_spec());
+    SCOPED_CRASH_KEY_STRING256("StoragePartitionConfigForUrl", "guest_url",
+                               url.possibly_invalid_spec());
     base::debug::DumpWithoutCrashing();
   }
 
@@ -1354,17 +1352,10 @@
       storage_partition_config.partition_domain()) {
     // Trigger crash logging if we encounter a case that violates our
     // assumptions.
-    static auto* storage_partition_domain_key =
-        base::debug::AllocateCrashKeyString("storage_partition_domain",
-                                            base::debug::CrashKeySize::Size256);
-    static auto* storage_partition_config_domain_key =
-        base::debug::AllocateCrashKeyString(
-            "storage_partition_config_domain_key",
-            base::debug::CrashKeySize::Size256);
-    base::debug::SetCrashKeyString(storage_partition_domain_key,
-                                   storage_partition->GetPartitionDomain());
-    base::debug::SetCrashKeyString(storage_partition_config_domain_key,
-                                   storage_partition_config.partition_domain());
+    SCOPED_CRASH_KEY_STRING256("GetPartitionDomain", "domain",
+                               storage_partition->GetPartitionDomain());
+    SCOPED_CRASH_KEY_STRING256("GetPartitionDomain", "config_domain_key",
+                               storage_partition_config.partition_domain());
 
     base::debug::DumpWithoutCrashing();
 
diff --git a/content/browser/site_per_process_browsertest.cc b/content/browser/site_per_process_browsertest.cc
index 4c8efe9..0001863 100644
--- a/content/browser/site_per_process_browsertest.cc
+++ b/content/browser/site_per_process_browsertest.cc
@@ -108,6 +108,8 @@
 #include "content/public/test/render_frame_host_test_support.h"
 #include "content/public/test/test_frame_navigation_observer.h"
 #include "content/public/test/test_navigation_observer.h"
+#include "content/public/test/test_navigation_throttle.h"
+#include "content/public/test/test_navigation_throttle_inserter.h"
 #include "content/public/test/test_utils.h"
 #include "content/public/test/url_loader_interceptor.h"
 #include "content/shell/browser/shell.h"
@@ -6223,7 +6225,8 @@
   // anymore.
   agent_scheduling_group_a->CreateFrameProxy(
       blink::RemoteFrameToken(), new_routing_id, absl::nullopt, view_routing_id,
-      parent_routing_id, blink::mojom::FrameReplicationState::New(),
+      parent_routing_id, blink::mojom::TreeScopeType::kDocument,
+      blink::mojom::FrameReplicationState::New(),
       base::UnguessableToken::Create(),
       std::move(remote_main_frame_interfaces));
 
@@ -10631,10 +10634,30 @@
   EXPECT_EQ(using_speculative_rfh, nav_manager.was_committed());
 }
 
-// Test that triggering fallback handling for <object> with an HTTP error does
-// not result in the renderer ignoring a `CommitNavigation()` IPC.
+namespace {
+
+// Helper for various <object> navigation test cases that trigger fallback
+// handling. Fallback handling should never reach ready-to-commit navigation, so
+// this helper forces test failure if a ReadyToCommitNavigation() is received.
+class AssertNoReadyToCommitNavigationCalls : public WebContentsObserver {
+ public:
+  explicit AssertNoReadyToCommitNavigationCalls(WebContents* contents)
+      : WebContentsObserver(contents) {}
+
+ private:
+  // WebContentsObserver overrides:
+  void ReadyToCommitNavigation(NavigationHandle* handle) override {
+    ASSERT_TRUE(false);
+  }
+};
+
+}  // namespace
+
+// Test that a same-site navigation in <object> that fails with an HTTP error
+// directly triggers fallback handling, rather than triggering fallback handling
+// in the renderer after it receives a `CommitNavigation()` IPC.
 IN_PROC_BROWSER_TEST_P(SitePerProcessBrowserTest,
-                       CommitNavigationWithHTTPErrorInObjectTag) {
+                       ObjectTagSameSiteNavigationWithHTTPError) {
   // Set up a test page with a same-site child frame hosted in an <object> tag.
   // TODO(dcheng): In the future, it might be useful to also have a test where
   // the child frame is same-site but cross-origin, and have the parent
@@ -10647,9 +10670,11 @@
   // And there should be no fallback content displayed.
   EXPECT_EQ("", EvalJs(web_contents(), "document.body.innerText"));
 
-  // Now navigate the first child to another same-site page that will result in
-  // a 404. Note that with subframe RenderDocument, this will create a
-  // speculative RFH.
+  // <object> fallback handling should never reach ReadyToCommitNavigation.
+  AssertNoReadyToCommitNavigationCalls asserter(web_contents());
+
+  // Now navigate the first child to a same-site page that will result in a 404.
+  // Note that with subframe RenderDocument, this will create a speculative RFH.
   FrameTreeNode* root = web_contents()->GetFrameTree()->root();
   GURL url2(embedded_test_server()->GetURL("a.com", "/page404.html"));
   TestNavigationManager nav_manager(web_contents(), url2);
@@ -10657,6 +10682,11 @@
   EXPECT_TRUE(BeginNavigateToURLFromRenderer(
       first_child->render_manager()->current_frame_host(), url2));
 
+  const bool using_speculative_rfh =
+      !!first_child->render_manager()->speculative_frame_host();
+  EXPECT_EQ(using_speculative_rfh,
+            GetRenderDocumentLevel() == RenderDocumentLevel::kSubframe);
+
   nav_manager.WaitForNavigationFinished();
   // There should be no commit...
   EXPECT_FALSE(nav_manager.was_committed());
@@ -10671,16 +10701,233 @@
   EXPECT_EQ("fallback", EvalJs(web_contents(), "document.body.innerText"));
 }
 
-// Test that triggering fallback handling for <object> with a network error that
-// is routed via a `CommitFailedNavigation()` IPC ends up being ignored.
+// Test that a cross-site navigation in <object> that fails with an HTTP error
+// directly triggers fallback handling, rather than triggering fallback handling
+// in the renderer after it receives a `CommitNavigation()` IPC.
 IN_PROC_BROWSER_TEST_P(SitePerProcessBrowserTest,
-                       CommitFailedNavigationInObjectTag) {
+                       ObjectTagCrossSiteNavigationWithHTTPError) {
+  // Set up a test page with a same-site child frame hosted in an <object> tag.
+  // TODO(dcheng): In the future, it might be useful to also have a test where
+  // the child frame is same-site but cross-origin, and have the parent
+  // initiate the navigation in the child frame.
+  GURL url1(embedded_test_server()->GetURL("a.com", "/object-frame.html"));
+  EXPECT_TRUE(NavigateToURL(web_contents(), url1));
+
+  // There should be one nested browsing context.
+  EXPECT_EQ(1, EvalJs(web_contents(), "window.length"));
+  // And there should be no fallback content displayed.
+  EXPECT_EQ("", EvalJs(web_contents(), "document.body.innerText"));
+
+  // <object> fallback handling should never reach ReadyToCommitNavigation.
+  AssertNoReadyToCommitNavigationCalls asserter(web_contents());
+
+  // Now navigate the first child to a cross-site page that will result in a
+  // 404.
+  FrameTreeNode* root = web_contents()->GetFrameTree()->root();
+  GURL url2(embedded_test_server()->GetURL("b.com", "/page404.html"));
+  TestNavigationManager nav_manager(web_contents(), url2);
+  FrameTreeNode* first_child = root->child_at(0);
+  EXPECT_TRUE(BeginNavigateToURLFromRenderer(
+      first_child->render_manager()->current_frame_host(), url2));
+
+  // Cross-site navigations always force a speculative RFH to be created.
+  EXPECT_TRUE(first_child->render_manager()->speculative_frame_host());
+
+  nav_manager.WaitForNavigationFinished();
+  // There should be no commit...
+  EXPECT_FALSE(nav_manager.was_committed());
+  // .. and the navigation should have been aborted.
+  EXPECT_FALSE(nav_manager.was_successful());
+  // Fallback handling should discard the child browsing context and render the
+  // fallback contents.
+  // TODO(dcheng): Chrome is not compliant with the spec. An HTTP error triggers
+  // fallback content, which is supposed to discard the nested browsing
+  // context...
+  EXPECT_EQ(1, EvalJs(web_contents(), "window.length"));
+  EXPECT_EQ("fallback", EvalJs(web_contents(), "document.body.innerText"));
+}
+
+// Test that a same-site navigation in <object> that fails with an HTTP error
+// and also subsequently fails to load the body still directly triggers fallback
+// handling, rather than triggering fallback handling in the renderer after it
+// receives a `CommitNavigation()` IPC.
+IN_PROC_BROWSER_TEST_P(
+    SitePerProcessBrowserTest,
+    ObjectTagSameSiteNavigationWithHTTPErrorAndFailedBodyLoad) {
+  // Set up a test page with a same-site child frame hosted in an <object> tag.
+  // TODO(dcheng): In the future, it might be useful to also have a test where
+  // the child frame is same-site but cross-origin, and have the parent
+  // initiate the navigation in the child frame.
+  GURL url1(embedded_test_server()->GetURL("a.com", "/object-frame.html"));
+  EXPECT_TRUE(NavigateToURL(web_contents(), url1));
+
+  // There should be one nested browsing context.
+  EXPECT_EQ(1, EvalJs(web_contents(), "window.length"));
+  // And there should be no fallback content displayed.
+  EXPECT_EQ("", EvalJs(web_contents(), "document.body.innerText"));
+
+  // This test differs from CommitNavigationWithHTTPErrorInObjectTag by
+  // triggering a body load failure. `ObjectNavigationFallbackBodyLoader`
+  // detects this by setting a disconnect handler on the `mojo::Receiver` for
+  // `network:;mojom::URLLoaderClient`. Exercise this code path by:
+  // 1. inserting a test `NavigationThrottle`
+  // 2. replacing the `network::mojom::URLLoaderClient` endpoint with one where
+  //    the corresponding `mojo::Remote` is simply closed at
+  //    `WILL_PROCESS_RESPONSE` time.
+  TestNavigationThrottleInserter navigation_throttle_inserter(
+      web_contents(),
+      base::BindRepeating(
+          [](NavigationHandle* handle) -> std::unique_ptr<NavigationThrottle> {
+            auto throttle = std::make_unique<TestNavigationThrottle>(handle);
+            throttle->SetCallback(
+                TestNavigationThrottle::WILL_PROCESS_RESPONSE,
+                base::BindLambdaForTesting([handle]() {
+                  // Swap out the URL loader client endpoint and just drop the
+                  // mojo::Remote. This will trigger the mojo::Receiver to be
+                  // disconnected, which should still trigger fallback handling
+                  // despite body loading failing.
+                  mojo::Remote<network::mojom::URLLoaderClient>
+                      remote_to_be_dropped;
+                  auto* request = static_cast<NavigationRequest*>(handle);
+                  request->mutable_url_loader_client_endpoints_for_testing()
+                      ->url_loader_client =
+                      remote_to_be_dropped.BindNewPipeAndPassReceiver();
+                }));
+            return throttle;
+          }));
+
+  // <object> fallback handling should never reach ReadyToCommitNavigation.
+  AssertNoReadyToCommitNavigationCalls asserter(web_contents());
+
+  // Now navigate the first child to a same-site page that will result in a 404,
+  // though the body loading will fail. Note that with subframe RenderDocument,
+  // this will create a speculative RFH.
+  FrameTreeNode* root = web_contents()->GetFrameTree()->root();
+  GURL url2(embedded_test_server()->GetURL("a.com", "/page404.html"));
+  TestNavigationManager nav_manager(web_contents(), url2);
+  FrameTreeNode* first_child = root->child_at(0);
+  EXPECT_TRUE(BeginNavigateToURLFromRenderer(
+      first_child->render_manager()->current_frame_host(), url2));
+
+  const bool using_speculative_rfh =
+      !!first_child->render_manager()->speculative_frame_host();
+  EXPECT_EQ(using_speculative_rfh,
+            GetRenderDocumentLevel() == RenderDocumentLevel::kSubframe);
+
+  nav_manager.WaitForNavigationFinished();
+  // There should be no commit...
+  EXPECT_FALSE(nav_manager.was_committed());
+  // .. and the navigation should have been aborted.
+  EXPECT_FALSE(nav_manager.was_successful());
+  // Fallback handling should discard the child browsing context and render the
+  // fallback contents.
+  // TODO(dcheng): Chrome is not compliant with the spec. An HTTP error triggers
+  // fallback content, which is supposed to discard the nested browsing
+  // context...
+  EXPECT_EQ(1, EvalJs(web_contents(), "window.length"));
+  EXPECT_EQ("fallback", EvalJs(web_contents(), "document.body.innerText"));
+
+  // `WaitForNavigationFinished()` should imply the `NavigationRequest` has been
+  // cleaned up as well, but check to be sure.
+  EXPECT_FALSE(first_child->navigation_request());
+}
+
+// Test that a cross-site navigation in <object> that fails with an HTTP error
+// and also subsequently fails to load the body still directly triggers fallback
+// handling, rather than triggering fallback handling in the renderer after it
+// receives a `CommitNavigation()` IPC.
+IN_PROC_BROWSER_TEST_P(
+    SitePerProcessBrowserTest,
+    ObjectTagCrossSiteNavigationWithHTTPErrorAndFailedBodyLoad) {
+  // Set up a test page with a same-site child frame hosted in an <object> tag.
+  // TODO(dcheng): In the future, it might be useful to also have a test where
+  // the child frame is same-site but cross-origin, and have the parent
+  // initiate the navigation in the child frame.
+  GURL url1(embedded_test_server()->GetURL("a.com", "/object-frame.html"));
+  EXPECT_TRUE(NavigateToURL(web_contents(), url1));
+
+  // There should be one nested browsing context.
+  EXPECT_EQ(1, EvalJs(web_contents(), "window.length"));
+  // And there should be no fallback content displayed.
+  EXPECT_EQ("", EvalJs(web_contents(), "document.body.innerText"));
+
+  // This test differs from CommitNavigationWithHTTPErrorInObjectTag by
+  // triggering a body load failure. `ObjectNavigationFallbackBodyLoader`
+  // detects this by setting a disconnect handler on the `mojo::Receiver` for
+  // `network:;mojom::URLLoaderClient`. Exercise this code path by:
+  // 1. inserting a test `NavigationThrottle`
+  // 2. replacing the `network::mojom::URLLoaderClient` endpoint with one where
+  //    the corresponding `mojo::Remote` is simply closed at
+  //    `WILL_PROCESS_RESPONSE` time.
+  TestNavigationThrottleInserter navigation_throttle_inserter(
+      web_contents(),
+      base::BindRepeating(
+          [](NavigationHandle* handle) -> std::unique_ptr<NavigationThrottle> {
+            auto throttle = std::make_unique<TestNavigationThrottle>(handle);
+            throttle->SetCallback(
+                TestNavigationThrottle::WILL_PROCESS_RESPONSE,
+                base::BindLambdaForTesting([handle]() {
+                  // Swap out the URL loader client endpoint and just drop the
+                  // mojo::Remote. This will trigger the mojo::Receiver to be
+                  // disconnected, which should still trigger fallback handling
+                  // despite body loading failing.
+                  mojo::Remote<network::mojom::URLLoaderClient>
+                      remote_to_be_dropped;
+                  auto* request = static_cast<NavigationRequest*>(handle);
+                  request->mutable_url_loader_client_endpoints_for_testing()
+                      ->url_loader_client =
+                      remote_to_be_dropped.BindNewPipeAndPassReceiver();
+                }));
+            return throttle;
+          }));
+
+  // <object> fallback handling should never reach ReadyToCommitNavigation.
+  AssertNoReadyToCommitNavigationCalls asserter(web_contents());
+
+  // Now navigate the first child to a cross-site page that will result in a
+  // 404, though the body loading will fail.
+  FrameTreeNode* root = web_contents()->GetFrameTree()->root();
+  GURL url2(embedded_test_server()->GetURL("b.com", "/page404.html"));
+  TestNavigationManager nav_manager(web_contents(), url2);
+  FrameTreeNode* first_child = root->child_at(0);
+  EXPECT_TRUE(BeginNavigateToURLFromRenderer(
+      first_child->render_manager()->current_frame_host(), url2));
+
+  // Cross-site navigations always force a speculative RFH to be created.
+  EXPECT_TRUE(first_child->render_manager()->speculative_frame_host());
+
+  nav_manager.WaitForNavigationFinished();
+  // There should be no commit...
+  EXPECT_FALSE(nav_manager.was_committed());
+  // .. and the navigation should have been aborted.
+  EXPECT_FALSE(nav_manager.was_successful());
+  // Fallback handling should discard the child browsing context and render the
+  // fallback contents.
+  // TODO(dcheng): Chrome is not compliant with the spec. An HTTP error triggers
+  // fallback content, which is supposed to discard the nested browsing
+  // context...
+  EXPECT_EQ(1, EvalJs(web_contents(), "window.length"));
+  EXPECT_EQ("fallback", EvalJs(web_contents(), "document.body.innerText"));
+
+  // `WaitForNavigationFinished()` should imply the `NavigationRequest` has been
+  // cleaned up as well, but check to be sure.
+  EXPECT_FALSE(first_child->navigation_request());
+}
+
+// Test that a same-site navigation in <object> that fails with a network error
+// directly triggers fallback handling, rather than triggering fallback handling
+// in the renderer after it receives a `CommitFailedNavigation()` IPC.
+IN_PROC_BROWSER_TEST_P(SitePerProcessBrowserTest,
+                       ObjectTagSameSiteNavigationWithNetworkError) {
   // Set up a test page with a same-site child frame hosted in an <object> tag.
   GURL url1(embedded_test_server()->GetURL("a.com", "/object-frame.html"));
   EXPECT_TRUE(NavigateToURL(web_contents(), url1));
 
-  // Now navigate the first child to another same-site page that will result in
-  // a network error. Note that with subframe RenderDocument, this will create a
+  // <object> fallback handling should never reach ReadyToCommitNavigation.
+  AssertNoReadyToCommitNavigationCalls asserter(web_contents());
+
+  // Now navigate the first child to a same-site page that will result in a
+  // network error. Note that with subframe RenderDocument, this will create a
   // speculative RFH.
   FrameTreeNode* root = web_contents()->GetFrameTree()->root();
   GURL error_url(embedded_test_server()->GetURL("a.com", "/empty.html"));
@@ -10692,15 +10939,51 @@
   EXPECT_TRUE(BeginNavigateToURLFromRenderer(
       first_child->render_manager()->current_frame_host(), error_url));
 
-  // Note: this needs to be checked before `WaitForResponse()`, as the
-  // `CommitFailedNavigation()` IPC is sent somewhere inside
-  // `WaitForResponse()`.
-  bool using_speculative_rfh =
+  const bool using_speculative_rfh =
       !!first_child->render_manager()->speculative_frame_host();
   EXPECT_EQ(using_speculative_rfh,
             GetRenderDocumentLevel() == RenderDocumentLevel::kSubframe);
 
-  // Returns false the test server has already been shutdown.
+  // `WaitForResponse()` should signal failure by returning `false` false since
+  // the URLLoaderInterceptor forces a network error.
+  EXPECT_FALSE(nav_manager.WaitForResponse());
+
+  nav_manager.WaitForNavigationFinished();
+  EXPECT_FALSE(nav_manager.was_committed());
+
+  // Make sure that the speculative RFH has been cleaned up, if needed.
+  EXPECT_EQ(nullptr, first_child->render_manager()->speculative_frame_host());
+}
+
+// Test that a cross-site navigation in <object> that fails with a network error
+// directly triggers fallback handling, rather than triggering fallback handling
+// in the renderer after it receives a `CommitFailedNavigation()` IPC.
+IN_PROC_BROWSER_TEST_P(SitePerProcessBrowserTest,
+                       ObjectTagCrossSiteNavigationWithNetworkError) {
+  // Set up a test page with a same-site child frame hosted in an <object> tag.
+  GURL url1(embedded_test_server()->GetURL("a.com", "/object-frame.html"));
+  EXPECT_TRUE(NavigateToURL(web_contents(), url1));
+
+  // <object> fallback handling should never reach ReadyToCommitNavigation.
+  AssertNoReadyToCommitNavigationCalls asserter(web_contents());
+
+  // Now navigate the first child to a cross-site page that will result in a
+  // network error.
+  FrameTreeNode* root = web_contents()->GetFrameTree()->root();
+  GURL error_url(embedded_test_server()->GetURL("b.com", "/empty.html"));
+  std::unique_ptr<URLLoaderInterceptor> interceptor =
+      URLLoaderInterceptor::SetupRequestFailForURL(error_url,
+                                                   net::ERR_CONNECTION_REFUSED);
+  TestNavigationManager nav_manager(web_contents(), error_url);
+  FrameTreeNode* first_child = root->child_at(0);
+  EXPECT_TRUE(BeginNavigateToURLFromRenderer(
+      first_child->render_manager()->current_frame_host(), error_url));
+
+  // Cross-site navigations always force a speculative RFH to be created.
+  EXPECT_TRUE(first_child->render_manager()->speculative_frame_host());
+
+  // `WaitForResponse()` should signal failure by returning `false` false since
+  // the URLLoaderInterceptor forces a network error.
   EXPECT_FALSE(nav_manager.WaitForResponse());
 
   nav_manager.WaitForNavigationFinished();
diff --git a/content/browser/speech/speech_recognizer_impl.cc b/content/browser/speech/speech_recognizer_impl.cc
index 87e8906..28dbb3c 100644
--- a/content/browser/speech/speech_recognizer_impl.cc
+++ b/content/browser/speech/speech_recognizer_impl.cc
@@ -294,7 +294,9 @@
   CHECK(audio_converter_->data_was_converted());
 }
 
-void SpeechRecognizerImpl::OnCaptureError(const std::string& message) {
+void SpeechRecognizerImpl::OnCaptureError(
+    media::AudioCapturerSource::ErrorCode code,
+    const std::string& message) {
   FSMEventArgs event_args(EVENT_AUDIO_ERROR);
   GetIOThreadTaskRunner({})->PostTask(
       FROM_HERE, base::BindOnce(&SpeechRecognizerImpl::DispatchEvent,
diff --git a/content/browser/speech/speech_recognizer_impl.h b/content/browser/speech/speech_recognizer_impl.h
index 43bfbd8..fd0acc4 100644
--- a/content/browser/speech/speech_recognizer_impl.h
+++ b/content/browser/speech/speech_recognizer_impl.h
@@ -146,7 +146,8 @@
                base::TimeTicks audio_capture_time,
                double volume,
                bool key_pressed) final;
-  void OnCaptureError(const std::string& message) final;
+  void OnCaptureError(media::AudioCapturerSource::ErrorCode code,
+                      const std::string& message) final;
   void OnCaptureMuted(bool is_muted) final {}
 
   // SpeechRecognitionEngineDelegate methods.
diff --git a/content/browser/speech/speech_recognizer_impl_unittest.cc b/content/browser/speech/speech_recognizer_impl_unittest.cc
index a3c8e49..48f9788 100644
--- a/content/browser/speech/speech_recognizer_impl_unittest.cc
+++ b/content/browser/speech/speech_recognizer_impl_unittest.cc
@@ -269,7 +269,8 @@
     auto* capture_callback =
         static_cast<media::AudioCapturerSource::CaptureCallback*>(
             recognizer_.get());
-    capture_callback->OnCaptureError("");
+    capture_callback->OnCaptureError(
+        media::AudioCapturerSource::ErrorCode::kUnknown, "");
   }
 
   void WaitForAudioThreadToPostDeviceInfo() {
diff --git a/content/browser/ssl/ssl_manager.cc b/content/browser/ssl/ssl_manager.cc
index bb9873b97..677ad33 100644
--- a/content/browser/ssl/ssl_manager.cc
+++ b/content/browser/ssl/ssl_manager.cc
@@ -198,9 +198,6 @@
     // |entry| points to the NavigationEntry that has just committed and it may
     // contain existing ssl flags which we do not want to reset.
     remove_content_status_flags = ~0;
-    // Also clear any UserData from the SSLStatus.
-    if (entry)
-      entry->GetSSL().user_data = nullptr;
   }
 
   if (!UpdateEntry(entry, add_content_status_flags,
diff --git a/content/browser/webui/web_ui_controller_factory_registry.cc b/content/browser/webui/web_ui_controller_factory_registry.cc
index 6c5061a0..c0cd3bc 100644
--- a/content/browser/webui/web_ui_controller_factory_registry.cc
+++ b/content/browser/webui/web_ui_controller_factory_registry.cc
@@ -25,6 +25,12 @@
   g_web_ui_controller_factories.Pointer()->push_back(factory);
 }
 
+int WebUIControllerFactory::GetNumRegisteredFactoriesForTesting() {
+  if (!g_web_ui_controller_factories.IsCreated())
+    return 0;
+  return g_web_ui_controller_factories.Get().size();
+}
+
 WebUIControllerFactoryRegistry* WebUIControllerFactoryRegistry::GetInstance() {
   return base::Singleton<WebUIControllerFactoryRegistry>::get();
 }
diff --git a/content/browser/webui/web_ui_url_loader_factory.cc b/content/browser/webui/web_ui_url_loader_factory.cc
index d2b2a5b..82f318c 100644
--- a/content/browser/webui/web_ui_url_loader_factory.cc
+++ b/content/browser/webui/web_ui_url_loader_factory.cc
@@ -266,9 +266,7 @@
         (!request.url.has_host() ||
          allowed_hosts_.find(request.url.host()) == allowed_hosts_.end())) {
       // Temporary reporting the bad WebUI host for for http://crbug.com/837328.
-      static auto* crash_key = base::debug::AllocateCrashKeyString(
-          "webui_url", base::debug::CrashKeySize::Size64);
-      base::debug::SetCrashKeyString(crash_key, request.url.spec());
+      SCOPED_CRASH_KEY_STRING64("WebUIURLLoader", "url", request.url.spec());
 
       DVLOG(1) << "Bad host: \"" << request.url.host() << '"';
       mojo::ReportBadMessage("Incorrect host");
diff --git a/content/child/dwrite_font_proxy/dwrite_font_proxy_win.cc b/content/child/dwrite_font_proxy/dwrite_font_proxy_win.cc
index 0aea845..2cd804b 100644
--- a/content/child/dwrite_font_proxy/dwrite_font_proxy_win.cc
+++ b/content/child/dwrite_font_proxy/dwrite_font_proxy_win.cc
@@ -542,10 +542,10 @@
   SCOPED_UMA_HISTOGRAM_TIMER("DirectWrite.Fonts.Proxy.LoadFamilyTime");
   TRACE_EVENT0("dwrite,fonts", "DWriteFontFamilyProxy::LoadFamily");
 
-  auto* font_key_name = base::debug::AllocateCrashKeyString(
-      "font_key_name", base::debug::CrashKeySize::Size32);
-  base::debug::ScopedCrashKeyString crash_key(font_key_name,
-                                              base::WideToUTF8(family_name_));
+  // TODO(dcheng): Is this crash key still used? There does not appear to be
+  // anything obvious below that would trigger a crash report.
+  SCOPED_CRASH_KEY_STRING32("LoadFamily", "font_key_name",
+                            base::WideToUTF8(family_name_));
 
   mswr::ComPtr<IDWriteFontCollection> collection;
   if (!proxy_collection_->LoadFamily(family_index_, &collection)) {
diff --git a/content/common/agent_scheduling_group.mojom b/content/common/agent_scheduling_group.mojom
index f99eb01..104949ea 100644
--- a/content/common/agent_scheduling_group.mojom
+++ b/content/common/agent_scheduling_group.mojom
@@ -9,6 +9,7 @@
 import "content/common/native_types.mojom";
 import "mojo/public/mojom/base/unguessable_token.mojom";
 import "third_party/blink/public/mojom/frame/frame_replication_state.mojom";
+import "third_party/blink/public/mojom/frame/tree_scope_type.mojom";
 import "third_party/blink/public/mojom/tokens/tokens.mojom";
 
 // Interface for general communication between the renderer process's
@@ -65,6 +66,10 @@
   //     Must not be `MSG_ROUTING_NONE`.
   // `parent_routing_id`: `MSG_ROUTING_NONE` for a top-level RenderFrameProxy;
   //     otherwise, Identifies the parent frame of the RenderFrameProxy.
+  // `tree_scope_type`: Whether the owner element (e.g. <iframe>, <object>, et
+  //     cetera) for this frame is in the document tree or the shadow tree. This
+  //     parameter has no meaning for main frames, and any passed value will be
+  //     ignored for main frames.
   // `devtools_frame_token`: Used for devtools instrumentation and
   //    trace-ability. The token is shared across all frames (local or remotes)
   //    representing the same logical frame tree node, and is used by Blink and
@@ -77,6 +82,7 @@
   CreateFrameProxy(blink.mojom.RemoteFrameToken token, int32 routing_id,
                    blink.mojom.FrameToken? opener_frame_token,
                    int32 view_routing_id, int32 parent_routing_id,
+                   blink.mojom.TreeScopeType tree_scope_type,
                    blink.mojom.FrameReplicationState replication_state,
                    mojo_base.mojom.UnguessableToken devtools_frame_token,
                    RemoteMainFrameInterfaces remote_main_frame_interfaces);
diff --git a/content/common/frame.mojom b/content/common/frame.mojom
index 642e02a6..e729348 100644
--- a/content/common/frame.mojom
+++ b/content/common/frame.mojom
@@ -231,6 +231,8 @@
 
   pending_remote<blink.mojom.BrowserInterfaceBroker> interface_broker;
 
+  blink.mojom.TreeScopeType tree_scope_type;
+
   // When the new frame has a parent, |replication_state| holds the new frame's
   // properties replicated from the process rendering the parent frame, such as
   // the new frame's sandbox flags.
diff --git a/content/ppapi_plugin/ppapi_thread.cc b/content/ppapi_plugin/ppapi_thread.cc
index 7b56219..4e7967a9 100644
--- a/content/ppapi_plugin/ppapi_thread.cc
+++ b/content/ppapi_plugin/ppapi_thread.cc
@@ -232,7 +232,9 @@
                                const ppapi::PpapiPermissions& permissions) {
   // In case of crashes, the crash dump doesn't indicate which plugin
   // it came from.
-  static auto* ppapi_path_key = base::debug::AllocateCrashKeyString(
+  // TODO(dcheng): Would a scoped crash key be sufficient here? It's probably a
+  // moot point, as this code is going to go away.
+  static auto* const ppapi_path_key = base::debug::AllocateCrashKeyString(
       "ppapi_path", base::debug::CrashKeySize::Size64);
   base::debug::SetCrashKeyString(ppapi_path_key, path.MaybeAsASCII());
 
diff --git a/content/public/browser/navigation_handle_user_data.h b/content/public/browser/navigation_handle_user_data.h
index c38c177..5cd8374b 100644
--- a/content/public/browser/navigation_handle_user_data.h
+++ b/content/public/browser/navigation_handle_user_data.h
@@ -32,7 +32,7 @@
 //   // ... more public stuff here ...
 //  private:
 //   explicit FooData(content::NavigationHandle& navigation_handle);
-//   friend class content::NavigationHandleUserData<FooData>;
+//   friend NavigationHandleUserData<FooData>;
 //   NAVIGATION_HANDLE_USER_DATA_KEY_DECL();
 //   // ... more private stuff here ...
 // };
diff --git a/content/public/browser/ssl_status.cc b/content/public/browser/ssl_status.cc
index bd9b1ff..9f6957e5 100644
--- a/content/public/browser/ssl_status.cc
+++ b/content/public/browser/ssl_status.cc
@@ -4,7 +4,6 @@
 
 #include "content/public/browser/ssl_status.h"
 
-#include "net/cert/sct_status_flags.h"
 #include "net/ssl/ssl_info.h"
 
 namespace content {
@@ -40,8 +39,7 @@
       connection_status(other.connection_status),
       content_status(other.content_status),
       pkp_bypassed(other.pkp_bypassed),
-      ct_policy_compliance(other.ct_policy_compliance),
-      user_data(other.user_data ? other.user_data->Clone() : nullptr) {}
+      ct_policy_compliance(other.ct_policy_compliance) {}
 
 SSLStatus& SSLStatus::operator=(SSLStatus other) {
   initialized = other.initialized;
@@ -53,7 +51,6 @@
   content_status = other.content_status;
   pkp_bypassed = other.pkp_bypassed;
   ct_policy_compliance = other.ct_policy_compliance;
-  user_data = other.user_data ? other.user_data->Clone() : nullptr;
   return *this;
 }
 
diff --git a/content/public/browser/ssl_status.h b/content/public/browser/ssl_status.h
index f177d33..f91c416b 100644
--- a/content/public/browser/ssl_status.h
+++ b/content/public/browser/ssl_status.h
@@ -7,9 +7,6 @@
 
 #include <stdint.h>
 
-#include <memory>
-#include <vector>
-
 #include "content/common/content_export.h"
 #include "net/cert/cert_status_flags.h"
 #include "net/cert/ct_policy_status.h"
@@ -24,20 +21,6 @@
 
 // Collects the SSL information for this NavigationEntry.
 struct CONTENT_EXPORT SSLStatus {
-  // SSLStatus consumers can attach instances of derived UserData classes to an
-  // SSLStatus. This allows an embedder to attach data to the NavigationEntry
-  // without SSLStatus having to know about it. Derived UserData classes have to
-  // be cloneable since NavigationEntrys are cloned during navigations.
-  class UserData {
-   public:
-    UserData() {}
-    virtual ~UserData() = default;
-    virtual std::unique_ptr<UserData> Clone() = 0;
-
-   private:
-    DISALLOW_COPY_AND_ASSIGN(UserData);
-  };
-
   // Flags used for the page security content status.
   enum ContentStatusFlags {
     // HTTP page, or HTTPS page with no insecure content.
@@ -81,10 +64,6 @@
   // Whether the page's main resource complied with the Certificate Transparency
   // policy.
   net::ct::CTPolicyCompliance ct_policy_compliance;
-  // Embedder-specific data attached to the SSLStatus is cloned when an
-  // |SSLStatus| is assigned or copy-constructed, and is cleared when a
-  // navigation commits.
-  std::unique_ptr<UserData> user_data;
 
   // If you add new fields here, be sure to add them in the copy constructor and
   // copy assignment operator definitions in ssl_status.cc.
diff --git a/content/public/browser/web_ui_controller_factory.h b/content/public/browser/web_ui_controller_factory.h
index 0988b85..eb068fb9 100644
--- a/content/public/browser/web_ui_controller_factory.h
+++ b/content/public/browser/web_ui_controller_factory.h
@@ -21,11 +21,14 @@
 // and creates WebUIController instances for given URLs.
 class CONTENT_EXPORT WebUIControllerFactory {
  public:
-  virtual ~WebUIControllerFactory() {}
+  virtual ~WebUIControllerFactory() = default;
 
   // Call to register a factory.
   static void RegisterFactory(WebUIControllerFactory* factory);
 
+  // Returns the number of registered factories.
+  static int GetNumRegisteredFactoriesForTesting();
+
   // Returns a WebUIController instance for the given URL, or nullptr if the URL
   // doesn't correspond to a WebUI.
   virtual std::unique_ptr<WebUIController> CreateWebUIControllerForURL(
diff --git a/content/public/test/scoped_web_ui_controller_factory_registration.cc b/content/public/test/scoped_web_ui_controller_factory_registration.cc
index 3aa5062..65f9d478 100644
--- a/content/public/test/scoped_web_ui_controller_factory_registration.cc
+++ b/content/public/test/scoped_web_ui_controller_factory_registration.cc
@@ -29,4 +29,21 @@
     content::WebUIControllerFactory::RegisterFactory(factory_to_replace_);
 }
 
-}  // namespace content
\ No newline at end of file
+void CheckForLeakedWebUIControllerFactoryRegistrations::OnTestStart(
+    const testing::TestInfo& test_info) {
+  initial_num_registered_ =
+      content::WebUIControllerFactory::GetNumRegisteredFactoriesForTesting();
+}
+
+void CheckForLeakedWebUIControllerFactoryRegistrations::OnTestEnd(
+    const testing::TestInfo& test_info) {
+  EXPECT_EQ(
+      initial_num_registered_,
+      content::WebUIControllerFactory::GetNumRegisteredFactoriesForTesting())
+      << "A WebUIControllerFactory was registered by a test but never "
+         "unregistered. This can cause flakiness in later tests. Please use "
+         "ScopedWebUIControllerFactoryRegistration to ensure that registered "
+         "factories are unregistered.";
+}
+
+}  // namespace content
diff --git a/content/public/test/scoped_web_ui_controller_factory_registration.h b/content/public/test/scoped_web_ui_controller_factory_registration.h
index 16fb9224..3e1110c 100644
--- a/content/public/test/scoped_web_ui_controller_factory_registration.h
+++ b/content/public/test/scoped_web_ui_controller_factory_registration.h
@@ -5,6 +5,8 @@
 #ifndef CONTENT_PUBLIC_TEST_SCOPED_WEB_UI_CONTROLLER_FACTORY_REGISTRATION_H_
 #define CONTENT_PUBLIC_TEST_SCOPED_WEB_UI_CONTROLLER_FACTORY_REGISTRATION_H_
 
+#include "testing/gtest/include/gtest/gtest.h"
+
 namespace content {
 
 class WebUIControllerFactory;
@@ -27,6 +29,21 @@
   content::WebUIControllerFactory* factory_to_replace_;
 };
 
+// A class used in tests to ensure that registered WebUIControllerFactory
+// instances are unregistered. This should be enforced on unit-test suites
+// with tests that register WebUIControllerFactory instances, to prevent those
+// tests from causing flakiness in later tests run in the same process. This is
+// not needed for browser tests, which are each run in their own process.
+class CheckForLeakedWebUIControllerFactoryRegistrations
+    : public testing::EmptyTestEventListener {
+ public:
+  void OnTestStart(const testing::TestInfo& test_info) override;
+  void OnTestEnd(const testing::TestInfo& test_info) override;
+
+ private:
+  int initial_num_registered_;
+};
+
 }  // namespace content
 
 #endif  // CONTENT_PUBLIC_TEST_SCOPED_WEB_UI_CONTROLLER_FACTORY_REGISTRATION_H_
diff --git a/content/public/test/unittest_test_suite.cc b/content/public/test/unittest_test_suite.cc
index d5bd015..a8c70b6 100644
--- a/content/public/test/unittest_test_suite.cc
+++ b/content/public/test/unittest_test_suite.cc
@@ -16,6 +16,7 @@
 #include "content/browser/network_service_instance_impl.h"
 #include "content/browser/storage_partition_impl.h"
 #include "content/public/browser/network_service_instance.h"
+#include "content/public/test/scoped_web_ui_controller_factory_registration.h"
 #include "content/public/test/test_host_resolver.h"
 #include "content/test/test_blink_web_unit_test_support.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -74,6 +75,7 @@
   testing::TestEventListeners& listeners =
       testing::UnitTest::GetInstance()->listeners();
   listeners.Append(new ResetNetworkServiceBetweenTests);
+  listeners.Append(new CheckForLeakedWebUIControllerFactoryRegistrations);
 
   // The ThreadPool created by the test launcher is never destroyed.
   // Similarly, the FeatureList created here is never destroyed so it
diff --git a/content/renderer/accessibility/render_accessibility_impl.cc b/content/renderer/accessibility/render_accessibility_impl.cc
index 45b9613..c68b426 100644
--- a/content/renderer/accessibility/render_accessibility_impl.cc
+++ b/content/renderer/accessibility/render_accessibility_impl.cc
@@ -83,10 +83,9 @@
   // least one renderer in the same process had that flag.
   // Examples of when multiple renderers could share the same process:
   // 1) Android, 2) When many tabs are open.
-  static auto* ax_mode_crash_key = base::debug::AllocateCrashKeyString(
+  static auto* const ax_mode_crash_key = base::debug::AllocateCrashKeyString(
       "ax_mode", base::debug::CrashKeySize::Size64);
-  if (ax_mode_crash_key)
-    base::debug::SetCrashKeyString(ax_mode_crash_key, mode.ToString());
+  base::debug::SetCrashKeyString(ax_mode_crash_key, mode.ToString());
 }
 
 }  // namespace
diff --git a/content/renderer/agent_scheduling_group.cc b/content/renderer/agent_scheduling_group.cc
index dc537a3..a7202e9 100644
--- a/content/renderer/agent_scheduling_group.cc
+++ b/content/renderer/agent_scheduling_group.cc
@@ -209,7 +209,8 @@
       std::move(params->interface_broker), params->previous_routing_id,
       params->opener_frame_token, params->parent_routing_id,
       params->previous_sibling_routing_id, params->devtools_frame_token,
-      std::move(params->replication_state), std::move(params->widget_params),
+      params->tree_scope_type, std::move(params->replication_state),
+      std::move(params->widget_params),
       std::move(params->frame_owner_properties),
       params->has_committed_real_load, std::move(params->policy_container));
 }
@@ -220,13 +221,14 @@
     const absl::optional<blink::FrameToken>& opener_frame_token,
     int32_t view_routing_id,
     int32_t parent_routing_id,
+    blink::mojom::TreeScopeType tree_scope_type,
     blink::mojom::FrameReplicationStatePtr replicated_state,
     const base::UnguessableToken& devtools_frame_token,
     mojom::RemoteMainFrameInterfacesPtr remote_main_frame_interfaces) {
   RenderFrameProxy::CreateFrameProxy(
       *this, token, routing_id, opener_frame_token, view_routing_id,
-      parent_routing_id, std::move(replicated_state), devtools_frame_token,
-      std::move(remote_main_frame_interfaces));
+      parent_routing_id, tree_scope_type, std::move(replicated_state),
+      devtools_frame_token, std::move(remote_main_frame_interfaces));
 }
 
 void AgentSchedulingGroup::BindAssociatedInterfaces(
diff --git a/content/renderer/agent_scheduling_group.h b/content/renderer/agent_scheduling_group.h
index cf259ff2d..9ddee24e 100644
--- a/content/renderer/agent_scheduling_group.h
+++ b/content/renderer/agent_scheduling_group.h
@@ -96,6 +96,7 @@
       const absl::optional<blink::FrameToken>& opener_frame_token,
       int32_t view_routing_id,
       int32_t parent_routing_id,
+      blink::mojom::TreeScopeType tree_scope_type,
       blink::mojom::FrameReplicationStatePtr replicated_state,
       const base::UnguessableToken& devtools_frame_token,
       mojom::RemoteMainFrameInterfacesPtr remote_main_frame_interfaces)
diff --git a/content/renderer/media/media_factory.cc b/content/renderer/media/media_factory.cc
index 2384f99..1126da2 100644
--- a/content/renderer/media/media_factory.cc
+++ b/content/renderer/media/media_factory.cc
@@ -489,7 +489,9 @@
   if (!fetch_context_) {
     fetch_context_ = std::make_unique<FrameFetchContext>(web_frame);
     DCHECK(!url_index_);
-    url_index_ = std::make_unique<media::UrlIndex>(fetch_context_.get());
+    url_index_ = std::make_unique<media::UrlIndex>(
+        fetch_context_.get(),
+        render_frame_->GetTaskRunner(blink::TaskType::kInternalMedia));
   }
   DCHECK_EQ(static_cast<FrameFetchContext*>(fetch_context_.get())->frame(),
             web_frame);
diff --git a/content/renderer/pepper/pepper_platform_audio_input.cc b/content/renderer/pepper/pepper_platform_audio_input.cc
index 40a4c1f84..e1160185 100644
--- a/content/renderer/pepper/pepper_platform_audio_input.cc
+++ b/content/renderer/pepper/pepper_platform_audio_input.cc
@@ -109,7 +109,8 @@
   }
 }
 
-void PepperPlatformAudioInput::OnError() {}
+void PepperPlatformAudioInput::OnError(
+    media::AudioCapturerSource::ErrorCode code) {}
 
 void PepperPlatformAudioInput::OnMuted(bool is_muted) {}
 
diff --git a/content/renderer/pepper/pepper_platform_audio_input.h b/content/renderer/pepper/pepper_platform_audio_input.h
index 1d9bb05..4815584 100644
--- a/content/renderer/pepper/pepper_platform_audio_input.h
+++ b/content/renderer/pepper/pepper_platform_audio_input.h
@@ -14,6 +14,7 @@
 #include "base/memory/weak_ptr.h"
 #include "ipc/ipc_message.h"
 #include "media/audio/audio_input_ipc.h"
+#include "media/base/audio_capturer_source.h"
 #include "media/base/audio_parameters.h"
 #include "third_party/blink/public/common/tokens/tokens.h"
 
@@ -60,7 +61,7 @@
   void OnStreamCreated(base::ReadOnlySharedMemoryRegion shared_memory_region,
                        base::SyncSocket::ScopedHandle socket_handle,
                        bool initially_muted) override;
-  void OnError() override;
+  void OnError(media::AudioCapturerSource::ErrorCode code) override;
   void OnMuted(bool is_muted) override;
   void OnIPCClosed() override;
 
diff --git a/content/renderer/pepper/pepper_webplugin_impl.cc b/content/renderer/pepper/pepper_webplugin_impl.cc
index 2f11012d..a765a58 100644
--- a/content/renderer/pepper/pepper_webplugin_impl.cc
+++ b/content/renderer/pepper/pepper_webplugin_impl.cc
@@ -84,9 +84,8 @@
   init_data_->url = params.url;
 
   // Set subresource URL for crash reporting.
-  static base::debug::CrashKeyString* subresource_url =
-      base::debug::AllocateCrashKeyString("subresource_url",
-                                          base::debug::CrashKeySize::Size256);
+  static auto* const subresource_url = base::debug::AllocateCrashKeyString(
+      "subresource_url", base::debug::CrashKeySize::Size256);
   base::debug::SetCrashKeyString(subresource_url, init_data_->url.spec());
 }
 
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index bdb030e..9e814d8 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -1503,6 +1503,7 @@
     int parent_routing_id,
     int previous_sibling_routing_id,
     const base::UnguessableToken& devtools_frame_token,
+    blink::mojom::TreeScopeType tree_scope_type,
     blink::mojom::FrameReplicationStatePtr replicated_state,
     mojom::CreateFrameWidgetParamsPtr widget_params,
     blink::mojom::FrameOwnerPropertiesPtr frame_owner_properties,
@@ -1549,7 +1550,7 @@
     if (opener_frame_token)
       opener = WebFrame::FromFrameToken(opener_frame_token.value());
     web_frame = parent_web_frame->CreateLocalChild(
-        replicated_state->scope, WebString::FromUTF8(replicated_state->name),
+        tree_scope_type, WebString::FromUTF8(replicated_state->name),
         replicated_state->frame_policy, render_frame,
         render_frame->blink_interface_registry_.get(),
         previous_sibling_web_frame,
@@ -2075,7 +2076,7 @@
   CHECK_NE(proxy_routing_id, MSG_ROUTING_NONE);
   RenderFrameProxy* proxy = RenderFrameProxy::CreateProxyToReplaceFrame(
       agent_scheduling_group_, this, proxy_routing_id,
-      replicated_frame_state->scope, proxy_frame_token);
+      frame_->GetTreeScopeType(), proxy_frame_token);
 
   RenderViewImpl* render_view = render_view_;
   bool is_main_frame = is_main_frame_;
@@ -4503,15 +4504,10 @@
     if (params->origin.scheme() != url::kFileScheme ||
         !GetBlinkPreferences().allow_universal_access_from_file_urls) {
       if (!params->origin.IsSameOriginWith(url::Origin::Create(params->url))) {
-        base::debug::CrashKeyString* url = base::debug::AllocateCrashKeyString(
-            "mismatched_url", base::debug::CrashKeySize::Size256);
-        base::debug::CrashKeyString* origin =
-            base::debug::AllocateCrashKeyString(
-                "mismatched_origin", base::debug::CrashKeySize::Size256);
-        base::debug::ScopedCrashKeyString scoped_url(
-            url, params->url.possibly_invalid_spec());
-        base::debug::ScopedCrashKeyString scoped_origin(
-            origin, params->origin.GetDebugString());
+        SCOPED_CRASH_KEY_STRING256("MakeDCPLParams", "mismatched_url",
+                                   params->url.possibly_invalid_spec());
+        SCOPED_CRASH_KEY_STRING256("MakeDCPLParams", "mismatched_origin",
+                                   params->origin.GetDebugString());
         CHECK(false) << " url:" << params->url << " origin:" << params->origin;
       }
     }
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index 4d6eacae..1e57b61 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -209,6 +209,7 @@
       int parent_routing_id,
       int previous_sibling_routing_id,
       const base::UnguessableToken& devtools_frame_token,
+      blink::mojom::TreeScopeType tree_scope_type,
       blink::mojom::FrameReplicationStatePtr replicated_state,
       mojom::CreateFrameWidgetParamsPtr widget_params,
       blink::mojom::FrameOwnerPropertiesPtr frame_owner_properties,
diff --git a/content/renderer/render_frame_impl_browsertest.cc b/content/renderer/render_frame_impl_browsertest.cc
index 748af347..e695796 100644
--- a/content/renderer/render_frame_impl_browsertest.cc
+++ b/content/renderer/render_frame_impl_browsertest.cc
@@ -50,6 +50,7 @@
 #include "third_party/blink/public/common/widget/screen_infos.h"
 #include "third_party/blink/public/mojom/frame/frame_owner_properties.mojom.h"
 #include "third_party/blink/public/mojom/frame/frame_replication_state.mojom.h"
+#include "third_party/blink/public/mojom/frame/tree_scope_type.mojom.h"
 #include "third_party/blink/public/mojom/frame/viewport_intersection_state.mojom-blink.h"
 #include "third_party/blink/public/mojom/page/record_content_to_visible_time_request.mojom.h"
 #include "third_party/blink/public/mojom/page/widget.mojom.h"
@@ -149,8 +150,10 @@
         TestRenderFrame::CreateStubFrameReceiver(),
         TestRenderFrame::CreateStubBrowserInterfaceBrokerRemote(),
         MSG_ROUTING_NONE, absl::nullopt, kFrameProxyRouteId, MSG_ROUTING_NONE,
-        base::UnguessableToken::Create(), std::move(frame_replication_state),
-        std::move(widget_params), blink::mojom::FrameOwnerProperties::New(),
+        base::UnguessableToken::Create(),
+        blink::mojom::TreeScopeType::kDocument,
+        std::move(frame_replication_state), std::move(widget_params),
+        blink::mojom::FrameOwnerProperties::New(),
         /*has_committed_real_load=*/true,
         blink::mojom::PolicyContainer::New(
             blink::mojom::PolicyContainerPolicies::New(),
diff --git a/content/renderer/render_frame_proxy.cc b/content/renderer/render_frame_proxy.cc
index c8ce37ea..fb0f97b8 100644
--- a/content/renderer/render_frame_proxy.cc
+++ b/content/renderer/render_frame_proxy.cc
@@ -61,7 +61,7 @@
     AgentSchedulingGroup& agent_scheduling_group,
     RenderFrameImpl* frame_to_replace,
     int routing_id,
-    blink::mojom::TreeScopeType scope,
+    blink::mojom::TreeScopeType tree_scope_type,
     const blink::RemoteFrameToken& proxy_frame_token) {
   CHECK_NE(routing_id, MSG_ROUTING_NONE);
 
@@ -72,7 +72,7 @@
   // always come from WebRemoteFrame::create and a call to WebFrame::swap must
   // follow later.
   blink::WebRemoteFrame* web_frame = blink::WebRemoteFrame::Create(
-      scope, proxy.get(), proxy->blink_interface_registry_.get(),
+      tree_scope_type, proxy.get(), proxy->blink_interface_registry_.get(),
       proxy->GetRemoteAssociatedInterfaces(), proxy_frame_token);
 
   proxy->Init(web_frame, frame_to_replace->render_view());
@@ -87,6 +87,7 @@
     const absl::optional<blink::FrameToken>& opener_frame_token,
     int render_view_routing_id,
     int parent_routing_id,
+    blink::mojom::TreeScopeType tree_scope_type,
     blink::mojom::FrameReplicationStatePtr replicated_state,
     const base::UnguessableToken& devtools_frame_token,
     mojom::RemoteMainFrameInterfacesPtr remote_main_frame_interfaces) {
@@ -128,8 +129,7 @@
     // to be a RenderFrameProxy, because navigations initiated by local frames
     // should not wind up here.
     web_frame = parent->web_frame()->CreateRemoteChild(
-        replicated_state->scope,
-        blink::WebString::FromUTF8(replicated_state->name),
+        tree_scope_type, blink::WebString::FromUTF8(replicated_state->name),
         replicated_state->frame_policy, proxy.get(),
         proxy->blink_interface_registry_.get(),
         proxy->GetRemoteAssociatedInterfaces(), frame_token,
diff --git a/content/renderer/render_frame_proxy.h b/content/renderer/render_frame_proxy.h
index 7196f04..9d4b66b 100644
--- a/content/renderer/render_frame_proxy.h
+++ b/content/renderer/render_frame_proxy.h
@@ -70,7 +70,7 @@
       AgentSchedulingGroup& agent_scheduling_group,
       RenderFrameImpl* frame_to_replace,
       int routing_id,
-      blink::mojom::TreeScopeType scope,
+      blink::mojom::TreeScopeType tree_scope_type,
       const blink::RemoteFrameToken& proxy_frame_token);
 
   // This method should be used to create a RenderFrameProxy, when there isn't
@@ -93,6 +93,7 @@
       const absl::optional<blink::FrameToken>& opener_frame_token,
       int render_view_routing_id,
       int parent_routing_id,
+      blink::mojom::TreeScopeType tree_scope_type,
       blink::mojom::FrameReplicationStatePtr replicated_state,
       const base::UnguessableToken& devtools_frame_token,
       mojom::RemoteMainFrameInterfacesPtr remote_main_frame_interfaces);
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
index 33a4391..5b5a71c 100644
--- a/content/renderer/render_thread_impl.cc
+++ b/content/renderer/render_thread_impl.cc
@@ -258,35 +258,35 @@
 }
 
 void AddCrashKey(v8::CrashKeyId id, const std::string& value) {
-  namespace bd = base::debug;
+  using base::debug::AllocateCrashKeyString;
+  using base::debug::CrashKeySize;
+  using base::debug::SetCrashKeyString;
+
   switch (id) {
     case v8::CrashKeyId::kIsolateAddress:
-      static bd::CrashKeyString* isolate_address = bd::AllocateCrashKeyString(
-          "v8_isolate_address", bd::CrashKeySize::Size32);
-      bd::SetCrashKeyString(isolate_address, value);
+      static auto* const isolate_address =
+          AllocateCrashKeyString("v8_isolate_address", CrashKeySize::Size32);
+      SetCrashKeyString(isolate_address, value);
       break;
     case v8::CrashKeyId::kReadonlySpaceFirstPageAddress:
-      static bd::CrashKeyString* ro_space_firstpage_address =
-          bd::AllocateCrashKeyString("v8_ro_space_firstpage_address",
-                                     bd::CrashKeySize::Size32);
-      bd::SetCrashKeyString(ro_space_firstpage_address, value);
+      static auto* const ro_space_firstpage_address = AllocateCrashKeyString(
+          "v8_ro_space_firstpage_address", CrashKeySize::Size32);
+      SetCrashKeyString(ro_space_firstpage_address, value);
       break;
     case v8::CrashKeyId::kMapSpaceFirstPageAddress:
-      static bd::CrashKeyString* map_space_firstpage_address =
-          bd::AllocateCrashKeyString("v8_map_space_firstpage_address",
-                                     bd::CrashKeySize::Size32);
-      bd::SetCrashKeyString(map_space_firstpage_address, value);
+      static auto* const map_space_firstpage_address = AllocateCrashKeyString(
+          "v8_map_space_firstpage_address", CrashKeySize::Size32);
+      SetCrashKeyString(map_space_firstpage_address, value);
       break;
     case v8::CrashKeyId::kCodeSpaceFirstPageAddress:
-      static bd::CrashKeyString* code_space_firstpage_address =
-          bd::AllocateCrashKeyString("v8_code_space_firstpage_address",
-                                     bd::CrashKeySize::Size32);
-      bd::SetCrashKeyString(code_space_firstpage_address, value);
+      static auto* const code_space_firstpage_address = AllocateCrashKeyString(
+          "v8_code_space_firstpage_address", CrashKeySize::Size32);
+      SetCrashKeyString(code_space_firstpage_address, value);
       break;
     case v8::CrashKeyId::kDumpType:
-      static bd::CrashKeyString* dump_type =
-          bd::AllocateCrashKeyString("dump-type", bd::CrashKeySize::Size32);
-      bd::SetCrashKeyString(dump_type, value);
+      static auto* const dump_type =
+          AllocateCrashKeyString("dump-type", CrashKeySize::Size32);
+      SetCrashKeyString(dump_type, value);
       break;
     default:
       // Doing nothing for new keys is a valid option. Having this case allows
diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc
index 2701354..f8e74033 100644
--- a/content/renderer/render_view_browsertest.cc
+++ b/content/renderer/render_view_browsertest.cc
@@ -79,6 +79,7 @@
 #include "third_party/blink/public/common/widget/device_emulation_params.h"
 #include "third_party/blink/public/mojom/frame/frame_owner_properties.mojom.h"
 #include "third_party/blink/public/mojom/frame/frame_replication_state.mojom.h"
+#include "third_party/blink/public/mojom/frame/tree_scope_type.mojom.h"
 #include "third_party/blink/public/mojom/loader/request_context_frame_type.mojom.h"
 #include "third_party/blink/public/platform/modules/service_worker/web_service_worker_network_provider.h"
 #include "third_party/blink/public/platform/scheduler/test/renderer_scheduler_test_support.h"
@@ -1194,8 +1195,9 @@
       TestRenderFrame::CreateStubFrameReceiver(),
       TestRenderFrame::CreateStubBrowserInterfaceBrokerRemote(),
       kProxyRoutingId, absl::nullopt, MSG_ROUTING_NONE, MSG_ROUTING_NONE,
-      base::UnguessableToken::Create(), std::move(replication_state),
-      std::move(widget_params), blink::mojom::FrameOwnerProperties::New(),
+      base::UnguessableToken::Create(), blink::mojom::TreeScopeType::kDocument,
+      std::move(replication_state), std::move(widget_params),
+      blink::mojom::FrameOwnerProperties::New(),
       /*has_committed_real_load=*/true, CreateStubPolicyContainer());
 
   TestRenderFrame* provisional_frame =
@@ -1254,7 +1256,8 @@
       TestRenderFrame::CreateStubFrameReceiver(),
       TestRenderFrame::CreateStubBrowserInterfaceBrokerRemote(),
       kProxyRoutingId, absl::nullopt, frame()->GetRoutingID(), MSG_ROUTING_NONE,
-      base::UnguessableToken::Create(), std::move(replication_state),
+      base::UnguessableToken::Create(), blink::mojom::TreeScopeType::kDocument,
+      std::move(replication_state),
       /*widget_params=*/nullptr, blink::mojom::FrameOwnerProperties::New(),
       /*has_committed_real_load=*/true, CreateStubPolicyContainer());
   {
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index be0a2a33..8cc8c14 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -151,6 +151,7 @@
         agent_scheduling_group_, params->main_frame->get_remote_params()->token,
         params->main_frame->get_remote_params()->routing_id,
         params->opener_frame_token, GetRoutingID(), MSG_ROUTING_NONE,
+        blink::mojom::TreeScopeType::kDocument /* ignored for main frames */,
         std::move(params->replication_state), params->devtools_main_frame_token,
         std::move(
             params->main_frame->get_remote_params()->main_frame_interfaces));
diff --git a/content/test/data/accessibility/aria/aria-img-child-expected-auralinux.txt b/content/test/data/accessibility/aria/aria-img-child-expected-auralinux.txt
new file mode 100644
index 0000000..a0de7e1
--- /dev/null
+++ b/content/test/data/accessibility/aria/aria-img-child-expected-auralinux.txt
@@ -0,0 +1,2 @@
+[document web]
+++[image]
diff --git a/content/test/data/accessibility/aria/aria-img-child-expected-blink.txt b/content/test/data/accessibility/aria/aria-img-child-expected-blink.txt
index 361ad03..80d76d4e9 100644
--- a/content/test/data/accessibility/aria/aria-img-child-expected-blink.txt
+++ b/content/test/data/accessibility/aria/aria-img-child-expected-blink.txt
@@ -2,3 +2,6 @@
 ++genericContainer ignored
 ++++genericContainer ignored
 ++++++image
+++++++++genericContainer
+++++++++++staticText name='Img.jpg'
+++++++++++++inlineTextBox name='Img.jpg'
diff --git a/content/test/data/accessibility/aria/aria-img-expected-blink.txt b/content/test/data/accessibility/aria/aria-img-expected-blink.txt
index 361ad03..c2bedfa 100644
--- a/content/test/data/accessibility/aria/aria-img-expected-blink.txt
+++ b/content/test/data/accessibility/aria/aria-img-expected-blink.txt
@@ -2,3 +2,5 @@
 ++genericContainer ignored
 ++++genericContainer ignored
 ++++++image
+++++++++image
+++++++++image
diff --git a/content/test/data/accessibility/css/alt-text-expected-auralinux.txt b/content/test/data/accessibility/css/alt-text-expected-auralinux.txt
new file mode 100644
index 0000000..82c087d0b
--- /dev/null
+++ b/content/test/data/accessibility/css/alt-text-expected-auralinux.txt
@@ -0,0 +1,44 @@
+[document web]
+++[section]
+++++[static] name='item1item2'
+++++[image]
+++++[static] name=' '
+++++[section]
+++++++[static] name='Some Text'
+++[section]
+++++[static] name='code'
+++++[static] name=' '
+++++[section]
+++++++[static] name='Some Text'
+++[section]
+++++[static] name=' '
+++++[section]
+++++++[static] name='Some Text'
+++[section]
+++++[image] name='star'
+++++[static] name=' '
+++++[section]
+++++++[static] name='Some Text'
+++[section]
+++++[image]
+++++[static] name=' '
+++++[section]
+++++++[static] name='Some Text'
+++[section]
+++++[static] name='a list of items'
+++++[static] name=' '
+++++[section]
+++++++[static] name='Some Text'
+++[section]
+++++[image]
+++++[static] name=' '
+++++[section]
+++++++[static] name='Some Text'
+++[section]
+++++[paragraph]
+++++++[static] name='Some Text'
+++[image] name='alt'
+++[section]
+++++[static] name='DOM Text'
+++[section]
+++++[static] name='DOM Text'
diff --git a/content/test/data/accessibility/html/map-any-contents-expected-auralinux.txt b/content/test/data/accessibility/html/map-any-contents-expected-auralinux.txt
new file mode 100644
index 0000000..a5de671
--- /dev/null
+++ b/content/test/data/accessibility/html/map-any-contents-expected-auralinux.txt
@@ -0,0 +1,12 @@
+[document web]
+++[image map] name='pipe'
+++++[heading] name='Headings are allowed in a map'
+++++++[static] name='Headings are allowed in a map'
+++++[link] name='pipe1'
+++++[paragraph]
+++++++[static] name='So are '
+++++++[static]
+++++++++[static] name='other elements'
+++++++[static] name='!'
+++++[static] name='pipe2'
+++++[push button] name='Even a button'
\ No newline at end of file
diff --git a/content/test/data/accessibility/html/map-any-contents-expected-blink.txt b/content/test/data/accessibility/html/map-any-contents-expected-blink.txt
new file mode 100644
index 0000000..b4d6e31
--- /dev/null
+++ b/content/test/data/accessibility/html/map-any-contents-expected-blink.txt
@@ -0,0 +1,20 @@
+rootWebArea
+++genericContainer ignored
+++++genericContainer ignored
+++++++image name='pipe'
+++++++++heading name='Headings are allowed in a map'
+++++++++++staticText name='Headings are allowed in a map'
+++++++++++++inlineTextBox name='Headings are allowed in a map'
+++++++++link name='pipe1'
+++++++++paragraph
+++++++++++staticText name='So are '
+++++++++++++inlineTextBox name='So are '
+++++++++++mark
+++++++++++++staticText name='other elements'
+++++++++++++++inlineTextBox name='other elements'
+++++++++++staticText name='!'
+++++++++++++inlineTextBox name='!'
+++++++++staticText name='pipe2'
+++++++++button name='Even a button'
+++++++++++staticText name='Even a button'
+++++++++++++inlineTextBox name='Even a button'
\ No newline at end of file
diff --git a/content/test/data/accessibility/html/map-any-contents.html b/content/test/data/accessibility/html/map-any-contents.html
new file mode 100644
index 0000000..8ca3a0c
--- /dev/null
+++ b/content/test/data/accessibility/html/map-any-contents.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<body>
+
+<img src="pipe.jpg" width="145" height="126" alt="pipe" usemap="#pipe">
+<map name="pipe">
+  <h1>Headings are allowed in a map</h1>
+  <area shape="rect" coords="0,0,145,126" alt="pipe1" href="fake.htm">
+  <p>So are <mark>other elements</mark>!</p>
+  <area shape="rect" coords="0,0,145,126" alt="pipe2">
+  <button>Even a button</button>
+</map>
+
+</body>
+</html>
diff --git a/content/test/gpu/gpu_tests/test_expectations/gpu_process_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/gpu_process_expectations.txt
index 87168af..f3b45557 100644
--- a/content/test/gpu/gpu_tests/test_expectations/gpu_process_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/gpu_process_expectations.txt
@@ -87,8 +87,5 @@
 crbug.com/1099576 [ mac amd ] GpuProcess_mac_webgl_backgrounded_high_performance [ Skip ]
 crbug.com/1099576 [ mac intel ] GpuProcess_mac_webgl_backgrounded_high_performance [ Skip ]
 
-# Flaky on Fuchsia
-crbug.com/1087298 [ fuchsia ] GpuProcess_webgl_disabled_extension [ Failure ]
-
 # Flakily hits a DCHECK during shared image creation.
 crbug.com/1188437 [ linux intel display-server-wayland ] GpuProcess_webgl [ RetryOnFailure ]
diff --git a/content/test/gpu/gpu_tests/test_expectations/hardware_accelerated_feature_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/hardware_accelerated_feature_expectations.txt
index 52436c6..2dc6367 100644
--- a/content/test/gpu/gpu_tests/test_expectations/hardware_accelerated_feature_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/hardware_accelerated_feature_expectations.txt
@@ -58,4 +58,3 @@
 # results: [ Failure RetryOnFailure Skip ]
 # END TAG HEADER
 
-crbug.com/1203234 [ fuchsia fuchsia-board-qemu-x64 ] HardwareAcceleratedFeature_canvas_accelerated [ Failure ]
diff --git a/content/test/gpu/gpu_tests/test_expectations/info_collection_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/info_collection_expectations.txt
index 0598a50..ecd901f 100644
--- a/content/test/gpu/gpu_tests/test_expectations/info_collection_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/info_collection_expectations.txt
@@ -62,7 +62,7 @@
 crbug.com/1079393 [ win intel-0x3e92 ] InfoCollection_direct_composition [ Failure ]
 
 # NVIDIA bots need 456.38+ drivers to use SOFTWARE overlays.
-crbug.com/1113893 [ win nvidia ] InfoCollection_direct_composition [ Failure ]
+crbug.com/1113893 [ win10 nvidia ] InfoCollection_direct_composition [ Failure ]
 
 # InfoCollection_basic is flaky on Fuchsia.
 crbug.com/1154597 [ fuchsia ] InfoCollection_basic [ RetryOnFailure ]
diff --git a/content/test/gpu/gpu_tests/test_expectations/maps_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/maps_expectations.txt
index 568efb34..2dc6367 100644
--- a/content/test/gpu/gpu_tests/test_expectations/maps_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/maps_expectations.txt
@@ -58,4 +58,3 @@
 # results: [ Failure RetryOnFailure Skip ]
 # END TAG HEADER
 
-crbug.com/1009137 [ android android-nexus-5 ] Maps_maps [ RetryOnFailure ]
diff --git a/content/utility/utility_service_factory.cc b/content/utility/utility_service_factory.cc
index 7cd30d34..b43f8dc6 100644
--- a/content/utility/utility_service_factory.cc
+++ b/content/utility/utility_service_factory.cc
@@ -27,8 +27,9 @@
   if (trace_log->IsProcessNameEmpty())
     trace_log->set_process_name("Service: " + service_name);
 
-  static auto* service_name_crash_key = base::debug::AllocateCrashKeyString(
-      "service-name", base::debug::CrashKeySize::Size32);
+  static auto* const service_name_crash_key =
+      base::debug::AllocateCrashKeyString("service-name",
+                                          base::debug::CrashKeySize::Size32);
   base::debug::SetCrashKeyString(service_name_crash_key, service_name);
 
   if (GetContentClient()->utility()->HandleServiceRequestDeprecated(
diff --git a/content/utility/utility_thread_impl.cc b/content/utility/utility_thread_impl.cc
index 363574f5..6c73929 100644
--- a/content/utility/utility_thread_impl.cc
+++ b/content/utility/utility_thread_impl.cc
@@ -45,8 +45,9 @@
   void BindServiceInterface(mojo::GenericPendingReceiver* receiver) {
     // Set a crash key so utility process crash reports indicate which service
     // was running in the process.
-    static auto* service_name_crash_key = base::debug::AllocateCrashKeyString(
-        "service-name", base::debug::CrashKeySize::Size32);
+    static auto* const service_name_crash_key =
+        base::debug::AllocateCrashKeyString("service-name",
+                                            base::debug::CrashKeySize::Size32);
     const std::string& service_name = receiver->interface_name().value();
     base::debug::SetCrashKeyString(service_name_crash_key, service_name);
 
diff --git a/device/bluetooth/bluetooth_adapter_mac.mm b/device/bluetooth/bluetooth_adapter_mac.mm
index c1b17a7..717daca 100644
--- a/device/bluetooth/bluetooth_adapter_mac.mm
+++ b/device/bluetooth/bluetooth_adapter_mac.mm
@@ -25,7 +25,6 @@
 #include "base/memory/ptr_util.h"
 #include "base/numerics/safe_conversions.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/sys_string_conversions.h"
 #include "base/task/task_traits.h"
 #include "base/threading/thread_task_runner_handle.h"
diff --git a/device/bluetooth/bluetooth_device_winrt.cc b/device/bluetooth/bluetooth_device_winrt.cc
index 1bc002ff..2ce8971 100644
--- a/device/bluetooth/bluetooth_device_winrt.cc
+++ b/device/bluetooth/bluetooth_device_winrt.cc
@@ -12,7 +12,6 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/stringprintf.h"
 #include "base/win/core_winrt_util.h"
diff --git a/device/bluetooth/dbus/bluetooth_admin_policy_client.cc b/device/bluetooth/dbus/bluetooth_admin_policy_client.cc
index 2fa4b43..1609aafd 100644
--- a/device/bluetooth/dbus/bluetooth_admin_policy_client.cc
+++ b/device/bluetooth/dbus/bluetooth_admin_policy_client.cc
@@ -9,7 +9,6 @@
 #include "base/macros.h"
 #include "base/memory/ptr_util.h"
 #include "base/observer_list.h"
-#include "base/stl_util.h"
 #include "dbus/bus.h"
 #include "dbus/message.h"
 #include "dbus/object_manager.h"
diff --git a/device/bluetooth/dbus/bluetooth_battery_client.cc b/device/bluetooth/dbus/bluetooth_battery_client.cc
index 7a112e4..54e4bff 100644
--- a/device/bluetooth/dbus/bluetooth_battery_client.cc
+++ b/device/bluetooth/dbus/bluetooth_battery_client.cc
@@ -7,7 +7,6 @@
 #include "base/logging.h"
 #include "base/macros.h"
 #include "base/memory/ptr_util.h"
-#include "base/stl_util.h"
 #include "dbus/bus.h"
 #include "dbus/message.h"
 #include "dbus/object_manager.h"
diff --git a/device/bluetooth/dbus/bluetooth_device_client.cc b/device/bluetooth/dbus/bluetooth_device_client.cc
index 2c63ddfc..1dab0bd 100644
--- a/device/bluetooth/dbus/bluetooth_device_client.cc
+++ b/device/bluetooth/dbus/bluetooth_device_client.cc
@@ -11,7 +11,6 @@
 #include "base/logging.h"
 #include "base/macros.h"
 #include "base/memory/ptr_util.h"
-#include "base/stl_util.h"
 #include "dbus/bus.h"
 #include "dbus/message.h"
 #include "dbus/object_manager.h"
diff --git a/device/bluetooth/dbus/bluetooth_input_client.cc b/device/bluetooth/dbus/bluetooth_input_client.cc
index 08d75fb..1ac48939 100644
--- a/device/bluetooth/dbus/bluetooth_input_client.cc
+++ b/device/bluetooth/dbus/bluetooth_input_client.cc
@@ -9,7 +9,6 @@
 #include "base/bind.h"
 #include "base/check.h"
 #include "base/macros.h"
-#include "base/stl_util.h"
 #include "dbus/bus.h"
 #include "dbus/message.h"
 #include "dbus/object_manager.h"
diff --git a/device/fido/auth_token_requester.cc b/device/fido/auth_token_requester.cc
index 8ca8309..0b5aee6 100644
--- a/device/fido/auth_token_requester.cc
+++ b/device/fido/auth_token_requester.cc
@@ -10,7 +10,6 @@
 #include "base/bind.h"
 #include "base/containers/contains.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "components/device_event_log/device_event_log.h"
 #include "device/fido/authenticator_supported_options.h"
diff --git a/device/fido/cable/fido_cable_discovery_unittest.cc b/device/fido/cable/fido_cable_discovery_unittest.cc
index fc2ed269..c65dd661 100644
--- a/device/fido/cable/fido_cable_discovery_unittest.cc
+++ b/device/fido/cable/fido_cable_discovery_unittest.cc
@@ -10,7 +10,6 @@
 
 #include "base/containers/span.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/test/task_environment.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "build/build_config.h"
diff --git a/device/fido/fido_task.cc b/device/fido/fido_task.cc
index f0f48c95..609f99b3 100644
--- a/device/fido/fido_task.cc
+++ b/device/fido/fido_task.cc
@@ -7,7 +7,6 @@
 #include <utility>
 
 #include "base/bind.h"
-#include "base/stl_util.h"
 #include "base/threading/sequenced_task_runner_handle.h"
 #include "device/fido/fido_constants.h"
 
diff --git a/device/fido/mac/authenticator.mm b/device/fido/mac/authenticator.mm
index 8e2faf1..ac71d680 100644
--- a/device/fido/mac/authenticator.mm
+++ b/device/fido/mac/authenticator.mm
@@ -12,7 +12,6 @@
 #include "base/feature_list.h"
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
-#include "base/stl_util.h"
 #include "base/strings/string_piece.h"
 #include "base/threading/sequenced_task_runner_handle.h"
 #include "components/device_event_log/device_event_log.h"
diff --git a/device/fido/mac/get_assertion_operation.mm b/device/fido/mac/get_assertion_operation.mm
index 7870957..f444e1a 100644
--- a/device/fido/mac/get_assertion_operation.mm
+++ b/device/fido/mac/get_assertion_operation.mm
@@ -13,7 +13,6 @@
 #include "base/mac/foundation_util.h"
 #include "base/mac/mac_logging.h"
 #include "base/mac/scoped_cftyperef.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "components/device_event_log/device_event_log.h"
diff --git a/device/fido/win/authenticator.cc b/device/fido/win/authenticator.cc
index a5dc2794..b38d593 100644
--- a/device/fido/win/authenticator.cc
+++ b/device/fido/win/authenticator.cc
@@ -14,7 +14,6 @@
 #include "base/containers/flat_map.h"
 #include "base/memory/ref_counted.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/post_task.h"
 #include "base/task/task_traits.h"
diff --git a/device/fido/win/fake_webauthn_api.cc b/device/fido/win/fake_webauthn_api.cc
index 072d002..040f48d9 100644
--- a/device/fido/win/fake_webauthn_api.cc
+++ b/device/fido/win/fake_webauthn_api.cc
@@ -9,7 +9,6 @@
 #include "base/check.h"
 #include "base/containers/span.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/strings/string_piece_forward.h"
 #include "base/strings/utf_string_conversions.h"
 #include "components/cbor/values.h"
diff --git a/device/gamepad/gamepad_platform_data_fetcher_linux.cc b/device/gamepad/gamepad_platform_data_fetcher_linux.cc
index a1c6ed5..842fe185 100644
--- a/device/gamepad/gamepad_platform_data_fetcher_linux.cc
+++ b/device/gamepad/gamepad_platform_data_fetcher_linux.cc
@@ -12,7 +12,6 @@
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/trace_event/trace_event.h"
diff --git a/device/gamepad/gamepad_standard_mappings_linux.cc b/device/gamepad/gamepad_standard_mappings_linux.cc
index 133c11f..f5cfb9f 100644
--- a/device/gamepad/gamepad_standard_mappings_linux.cc
+++ b/device/gamepad/gamepad_standard_mappings_linux.cc
@@ -8,7 +8,6 @@
 #include <iterator>
 
 #include "base/macros.h"
-#include "base/stl_util.h"
 #include "device/gamepad/gamepad_id_list.h"
 #include "device/gamepad/gamepad_standard_mappings.h"
 
diff --git a/device/gamepad/gamepad_standard_mappings_mac.mm b/device/gamepad/gamepad_standard_mappings_mac.mm
index ce4f2559..44933a1 100644
--- a/device/gamepad/gamepad_standard_mappings_mac.mm
+++ b/device/gamepad/gamepad_standard_mappings_mac.mm
@@ -8,7 +8,6 @@
 #include <iterator>
 
 #include "base/macros.h"
-#include "base/stl_util.h"
 #include "device/gamepad/gamepad_id_list.h"
 #include "device/gamepad/gamepad_standard_mappings.h"
 
diff --git a/device/gamepad/gamepad_standard_mappings_win.cc b/device/gamepad/gamepad_standard_mappings_win.cc
index 8ace5d2..33955e1 100644
--- a/device/gamepad/gamepad_standard_mappings_win.cc
+++ b/device/gamepad/gamepad_standard_mappings_win.cc
@@ -8,7 +8,6 @@
 #include <iterator>
 
 #include "base/macros.h"
-#include "base/stl_util.h"
 #include "device/gamepad/gamepad_id_list.h"
 #include "device/gamepad/gamepad_standard_mappings.h"
 
diff --git a/device/vr/android/arcore/ar_compositor_frame_sink.cc b/device/vr/android/arcore/ar_compositor_frame_sink.cc
index bcf211e..dcc0637e 100644
--- a/device/vr/android/arcore/ar_compositor_frame_sink.cc
+++ b/device/vr/android/arcore/ar_compositor_frame_sink.cc
@@ -289,7 +289,7 @@
 void ArCompositorFrameSink::OnBeginFrame(
     const viz::BeginFrameArgs& args,
     const viz::FrameTimingDetailsMap& timing_details) {
-  on_begin_frame_.Run(args);
+  on_begin_frame_.Run(args, timing_details);
 }
 
 void ArCompositorFrameSink::OnFrameSubmitAck(const viz::BeginFrameAck& ack) {
diff --git a/device/vr/android/arcore/ar_compositor_frame_sink.h b/device/vr/android/arcore/ar_compositor_frame_sink.h
index 32b1d6e..69f113a 100644
--- a/device/vr/android/arcore/ar_compositor_frame_sink.h
+++ b/device/vr/android/arcore/ar_compositor_frame_sink.h
@@ -56,7 +56,8 @@
   // Used when the compositor acknowledges that it is ready to begin processing
   // or working on the frame that previously requested to Begin.
   using BeginFrameCallback =
-      base::RepeatingCallback<void(const viz::BeginFrameArgs& args)>;
+      base::RepeatingCallback<void(const viz::BeginFrameArgs& args,
+                                   const viz::FrameTimingDetailsMap&)>;
 
   using CompositorReceivedFrameCallback = base::RepeatingClosure;
 
diff --git a/device/vr/android/arcore/arcore_gl.cc b/device/vr/android/arcore/arcore_gl.cc
index c8114487..18bbb89d5 100644
--- a/device/vr/android/arcore/arcore_gl.cc
+++ b/device/vr/android/arcore/arcore_gl.cc
@@ -1054,6 +1054,10 @@
   }
   base::TimeTicks now = base::TimeTicks::Now();
 
+  // Get the time when rendering completed from the render completion fence.
+  // TODO(klausw): This is an overestimate in AR compositor mode, the fence
+  // completes one frame late. The average_render_time_ calculation should use
+  // the WritesDone time reported via OnBeginFrame's timing_data instead.
   base::TimeTicks completion_time = now;
   DCHECK(frame->render_completion_fence);
   completion_time = static_cast<gl::GLFenceAndroidNativeFenceSync*>(
@@ -1075,33 +1079,32 @@
 
   average_render_time_.AddSample(completion_time - frame->time_copied);
 
-  // Save a GPU load estimate for use in GetFrameData. This is somewhat
-  // arbitrary, use the most recent rendering time divided by the nominal frame
-  // time. If this is greater than 1.0, it's not possible to hit the target
-  // framerate and the application should reduce its workload.
-  // (Intentionally not using averages here since the blink side is expected
-  // to do its own smoothing when using this data.)
   base::TimeDelta copied_to_completion = completion_time - frame->time_copied;
-  base::TimeDelta arcore_frametime = EstimatedArCoreFrameTime();
-  DCHECK(!arcore_frametime.is_zero());
-  // When using the ar_compositor, we tend to get our fences completed about one
-  // frame late. So assume that the copy actually took about half as much time.
-  // Since this is all multiplication/division, this results in just multiplying
-  // the new ratio by half.
-  // TODO(https://crbug.com/1188302): Improve ratio calculation so that this
-  // correction is not necessary.
-  float ratio_correction_factor = ar_compositor_ ? 0.5f : 1.0f;
-  rendering_time_ratio_ =
-      (copied_to_completion / arcore_frametime) * ratio_correction_factor;
+  if (ar_compositor_) {
+    // AR compositor mode uses timing data received in OnBeginFrame() for the
+    // GPU load estimate.
+    DVLOG(3) << __func__ << " time_js_submit=" << frame->time_js_submit
+             << " time_pose=" << frame->time_pose
+             << " time_copied=" << frame->time_copied
+             << " copied_to_completion=" << copied_to_completion;
+  } else {
+    // Save a GPU load estimate for use in GetFrameData. This is somewhat
+    // arbitrary, use the most recent rendering time divided by the nominal
+    // frame time.
+    base::TimeDelta arcore_frametime = EstimatedArCoreFrameTime();
+    DCHECK(!arcore_frametime.is_zero());
 
-  DVLOG(3) << __func__ << " time_js_submit=" << frame->time_js_submit
-           << " time_pose=" << frame->time_pose
-           << " time_copied=" << frame->time_copied
-           << " copied_to_completion=" << copied_to_completion
-           << " arcore_frametime=" << arcore_frametime
-           << ": rendering time ratio (%)=" << rendering_time_ratio_ * 100;
-  TRACE_COUNTER1("xr", "WebXR rendering time ratio (%)",
-                 rendering_time_ratio_ * 100);
+    rendering_time_ratio_ = copied_to_completion / arcore_frametime;
+    TRACE_COUNTER1("xr", "WebXR rendering time ratio (%)",
+                   rendering_time_ratio_ * 100);
+
+    DVLOG(3) << __func__ << " time_js_submit=" << frame->time_js_submit
+             << " time_pose=" << frame->time_pose
+             << " time_copied=" << frame->time_copied
+             << " copied_to_completion=" << copied_to_completion
+             << " arcore_frametime=" << arcore_frametime
+             << " rendering_time_ratio_=" << rendering_time_ratio_;
+  }
 
   // Add Animating/Processing/Rendering async annotations to event traces.
 
@@ -1819,7 +1822,8 @@
   return weak_ptr_factory_.GetWeakPtr();
 }
 
-void ArCoreGl::OnBeginFrame(const viz::BeginFrameArgs& args) {
+void ArCoreGl::OnBeginFrame(const viz::BeginFrameArgs& args,
+                            const viz::FrameTimingDetailsMap& frame_timing) {
   // With the ExternalBeginFrameController driving our compositing, we shouldn't
   // request any frames unless we actually have a frame to animate.
   DCHECK(webxr_->HaveAnimatingFrame());
@@ -1829,6 +1833,40 @@
   webxr_->GetAnimatingFrame()->begin_frame_args =
       std::make_unique<viz::BeginFrameArgs>(args);
 
+  // If we have information about frame timing from completed frames, use that
+  // to update GPU load heuristics. Typically, there will be one reported old
+  // frame for each OnBeginFrame once it reaches a steady state.
+  for (auto& timing_data : frame_timing) {
+    const viz::FrameTimingDetails& details = timing_data.second;
+    base::TimeTicks writes_done =
+        details.presentation_feedback.writes_done_timestamp;
+
+    // The GPU driver isn't required to support writes_done timestamps, so
+    // this data may be unavailable. In that case, don't update the rendering
+    // time ratio estimate. This disables dynamic viewport scaling since that
+    // feature is only active when the ratio is nonzero.
+    if (writes_done.is_null())
+      continue;
+
+    // For the GPU load, use the drawing time (draw start to render completion)
+    // divided by the nominal frame time.
+
+    base::TimeDelta delta = writes_done - details.draw_start_timestamp;
+    base::TimeDelta arcore_frametime = EstimatedArCoreFrameTime();
+    DCHECK(!arcore_frametime.is_zero());
+    rendering_time_ratio_ = delta / arcore_frametime;
+
+    DVLOG(3) << __func__ << ": frame_token=" << timing_data.first
+             << " draw_start_timestamp=" << details.draw_start_timestamp
+             << " writes_done="
+             << details.presentation_feedback.writes_done_timestamp
+             << " delta=" << delta
+             << " rendering_time_ratio_=" << rendering_time_ratio_;
+    TRACE_COUNTER1("xr", "WebXR rendering time ratio (%)",
+                   rendering_time_ratio_ * 100);
+  }
+
   webxr_->TryDeferredProcessing();
 }
+
 }  // namespace device
diff --git a/device/vr/android/arcore/arcore_gl.h b/device/vr/android/arcore/arcore_gl.h
index 7137ddc..c6254412 100644
--- a/device/vr/android/arcore/arcore_gl.h
+++ b/device/vr/android/arcore/arcore_gl.h
@@ -237,7 +237,8 @@
   void SubmitVizFrame(int16_t frame_index,
                       ArCompositorFrameSink::FrameType frame_type);
   void DidNotProduceVizFrame(int16_t frame_index);
-  void OnBeginFrame(const viz::BeginFrameArgs& args);
+  void OnBeginFrame(const viz::BeginFrameArgs& args,
+                    const viz::FrameTimingDetailsMap&);
   void OnReclaimedGpuFenceAvailable(WebXrFrame* frame,
                                     std::unique_ptr<gfx::GpuFence> gpu_fence);
   void ClearRenderingFrame(WebXrFrame* frame);
@@ -336,6 +337,13 @@
   device::SlidingTimeDeltaAverage average_process_time_;
   device::SlidingTimeDeltaAverage average_render_time_;
 
+  // The rendering time ratio is an estimate of recent GPU utilization that's
+  // reported to blink through the GetFrameData response. If this is greater
+  // than 1.0, it's not possible to hit the target framerate and the application
+  // should reduce its workload. If utilization data is unavailable, it remains
+  // at zero which disables dynamic viewport scaling. (This value is an
+  // instantaneous snapshot and not an average, the blink side is expected to do
+  // its own smoothing when using this data.)
   float rendering_time_ratio_ = 0.0f;
 
   FPSMeter fps_meter_;
diff --git a/device/vr/openxr/openxr_input_helper.cc b/device/vr/openxr/openxr_input_helper.cc
index ec8b742..cb876d3e 100644
--- a/device/vr/openxr/openxr_input_helper.cc
+++ b/device/vr/openxr/openxr_input_helper.cc
@@ -4,7 +4,6 @@
 
 #include "device/vr/openxr/openxr_input_helper.h"
 
-#include "base/stl_util.h"
 #include "device/gamepad/public/cpp/gamepad.h"
 #include "device/vr/openxr/openxr_util.h"
 #include "device/vr/util/xr_standard_gamepad_builder.h"
diff --git a/device/vr/openxr/openxr_path_helper.cc b/device/vr/openxr/openxr_path_helper.cc
index e96bdab..5f5c4c6 100644
--- a/device/vr/openxr/openxr_path_helper.cc
+++ b/device/vr/openxr/openxr_path_helper.cc
@@ -5,7 +5,6 @@
 #include "device/vr/openxr/openxr_path_helper.h"
 
 #include "base/check.h"
-#include "base/stl_util.h"
 #include "device/vr/openxr/openxr_util.h"
 
 namespace device {
diff --git a/device/vr/util/gamepad_builder.cc b/device/vr/util/gamepad_builder.cc
index 6721c38..8cd7e48 100644
--- a/device/vr/util/gamepad_builder.cc
+++ b/device/vr/util/gamepad_builder.cc
@@ -5,7 +5,6 @@
 
 #include "base/check_op.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 
 namespace device {
diff --git a/extensions/browser/api/declarative/declarative_rule.h b/extensions/browser/api/declarative/declarative_rule.h
index 1f1e63a..6781327 100644
--- a/extensions/browser/api/declarative/declarative_rule.h
+++ b/extensions/browser/api/declarative/declarative_rule.h
@@ -19,7 +19,6 @@
 #include "base/callback.h"
 #include "base/macros.h"
 #include "base/memory/ptr_util.h"
-#include "base/stl_util.h"
 #include "base/time/time.h"
 #include "components/url_matcher/url_matcher.h"
 #include "extensions/common/api/events.h"
diff --git a/extensions/browser/api/idle/idle_manager.cc b/extensions/browser/api/idle/idle_manager.cc
index 61fc3e5..7f9397e2 100644
--- a/extensions/browser/api/idle/idle_manager.cc
+++ b/extensions/browser/api/idle/idle_manager.cc
@@ -6,7 +6,6 @@
 
 #include <utility>
 
-#include "base/stl_util.h"
 #include "build/chromeos_buildflags.h"
 #include "content/public/browser/browser_context.h"
 #include "extensions/browser/api/idle/idle_api_constants.h"
diff --git a/extensions/browser/api/storage/settings_storage_quota_enforcer.cc b/extensions/browser/api/storage/settings_storage_quota_enforcer.cc
index 6523da9..6fff22fd 100644
--- a/extensions/browser/api/storage/settings_storage_quota_enforcer.cc
+++ b/extensions/browser/api/storage/settings_storage_quota_enforcer.cc
@@ -9,7 +9,6 @@
 #include "base/bind.h"
 #include "base/json/json_writer.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "extensions/common/extension_api.h"
 
diff --git a/extensions/browser/api/system_storage/storage_info_provider.cc b/extensions/browser/api/system_storage/storage_info_provider.cc
index bee914f..8faa97d 100644
--- a/extensions/browser/api/system_storage/storage_info_provider.cc
+++ b/extensions/browser/api/system_storage/storage_info_provider.cc
@@ -4,7 +4,6 @@
 
 #include "extensions/browser/api/system_storage/storage_info_provider.h"
 
-#include "base/stl_util.h"
 #include "base/system/sys_info.h"
 #include "components/storage_monitor/storage_info.h"
 #include "components/storage_monitor/storage_monitor.h"
diff --git a/extensions/browser/device_local_account_util.cc b/extensions/browser/device_local_account_util.cc
index 2a0207b..60af0bb 100644
--- a/extensions/browser/device_local_account_util.cc
+++ b/extensions/browser/device_local_account_util.cc
@@ -47,7 +47,6 @@
     "kgimkbnclbekdkabkpjhpakhhalfanda",  // Bejeweled demo
     "joodangkbfjnajiiifokapkpmhfnpleo",  // Calculator
     "fpgfohogebplgnamlafljlcidjedbdeb",  // Calendar demo
-    "cdjikkcakjcdjemakobkmijmikhkegcj",  // Chrome Remote Desktop demo
     "jkoildpomkimndcphjpffmephmcmkfhn",  // Chromebook Demo App
     "lbhdhapagjhalobandnbdnmblnmocojh",  // Crackle demo
     "ielkookhdphmgbipcfmafkaiagademfp",  // Custom bookmarks
@@ -118,7 +117,6 @@
     "ongnjlefhnoajpbodoldndkbkdgfomlp",  // Show Managed Storage
     "ilnpadgckeacioehlommkaafedibdeob",  // Enterprise DeviceAttributes
     "oflckobdemeldmjddmlbaiaookhhcngo",  // Citrix Receiver QA version
-    "ljacajndfccfgnfohlgkdphmbnpkjflk",  // Chrome Remote Desktop (Dev Build)
     "behllobkkfkfnphdnhnkndlbkcpglgmj",  // Autotest
 
     // Google Apps:
@@ -141,7 +139,6 @@
     "khpfeaanjngmcnplbdlpegiifgpfgdco",  // Smart Card Connector
     "hmjkmjkepdijhoojdojkdfohbdgmmhki",  // Google Keep - notes and lists
     "felcaaldnbdncclmgdcncolpebgiejap",  // Google Sheets
-    "gbchcmhmhahfdphkhkmpfmihenigjmpp",  // Chrome Remote Desktop
     "khkjfddibboofomnlkndfedpoccieiee",  // Study Kit
     "becloognjehhioodmnimnehjcibkloed",  // Coding with Chrome
     "hfhhnacclhffhdffklopdkcgdhifgngh",  // Camera
diff --git a/extensions/browser/event_router.cc b/extensions/browser/event_router.cc
index cf697b1..75c28a1 100644
--- a/extensions/browser/event_router.cc
+++ b/extensions/browser/event_router.cc
@@ -13,7 +13,6 @@
 #include "base/bind.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
-#include "base/stl_util.h"
 #include "base/task/post_task.h"
 #include "base/values.h"
 #include "components/crx_file/id_util.h"
diff --git a/extensions/browser/updater/extension_downloader.cc b/extensions/browser/updater/extension_downloader.cc
index 671a88f..235683b 100644
--- a/extensions/browser/updater/extension_downloader.cc
+++ b/extensions/browser/updater/extension_downloader.cc
@@ -16,7 +16,6 @@
 #include "base/metrics/histogram.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
diff --git a/extensions/browser/verified_contents_unittest.cc b/extensions/browser/verified_contents_unittest.cc
index 358610f3..7bd95f3 100644
--- a/extensions/browser/verified_contents_unittest.cc
+++ b/extensions/browser/verified_contents_unittest.cc
@@ -11,7 +11,6 @@
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/path_service.h"
-#include "base/stl_util.h"
 #include "build/build_config.h"
 #include "extensions/browser/content_verifier/content_verifier_utils.h"
 #include "extensions/browser/verified_contents.h"
diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
index 3e6b0b2c..6678fa9 100644
--- a/extensions/common/extension.cc
+++ b/extensions/common/extension.cc
@@ -19,7 +19,6 @@
 #include "base/i18n/rtl.h"
 #include "base/json/json_writer.h"
 #include "base/memory/singleton.h"
-#include "base/stl_util.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece.h"
diff --git a/extensions/common/manifest_handler_unittest.cc b/extensions/common/manifest_handler_unittest.cc
index 623fc47..1b196d6 100644
--- a/extensions/common/manifest_handler_unittest.cc
+++ b/extensions/common/manifest_handler_unittest.cc
@@ -11,7 +11,6 @@
 #include <vector>
 
 #include "base/files/file_path.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "extensions/common/extension.h"
 #include "extensions/common/extension_builder.h"
diff --git a/extensions/common/permissions/api_permission_set.cc b/extensions/common/permissions/api_permission_set.cc
index 2c32f9b..c5086f4 100644
--- a/extensions/common/permissions/api_permission_set.cc
+++ b/extensions/common/permissions/api_permission_set.cc
@@ -7,7 +7,6 @@
 #include "base/containers/contains.h"
 #include "base/logging.h"
 #include "base/ranges/algorithm.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/values.h"
 #include "extensions/common/error_utils.h"
diff --git a/extensions/renderer/bindings/argument_spec_unittest.cc b/extensions/renderer/bindings/argument_spec_unittest.cc
index 312205d1..7665dcd 100644
--- a/extensions/renderer/bindings/argument_spec_unittest.cc
+++ b/extensions/renderer/bindings/argument_spec_unittest.cc
@@ -6,7 +6,6 @@
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/macros.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/values.h"
 #include "extensions/renderer/bindings/api_binding_test_util.h"
diff --git a/extensions/renderer/safe_builtins.cc b/extensions/renderer/safe_builtins.cc
index 8b891cb..86d8795 100644
--- a/extensions/renderer/safe_builtins.cc
+++ b/extensions/renderer/safe_builtins.cc
@@ -6,7 +6,6 @@
 
 #include "base/check.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "extensions/renderer/script_context.h"
 #include "extensions/renderer/v8_helpers.h"
diff --git a/extensions/test/test_extensions_client.cc b/extensions/test/test_extensions_client.cc
index 9fad578..9bb4c3f 100644
--- a/extensions/test/test_extensions_client.cc
+++ b/extensions/test/test_extensions_client.cc
@@ -10,7 +10,6 @@
 
 #include "base/command_line.h"
 #include "base/files/file_path.h"
-#include "base/stl_util.h"
 #include "extensions/common/core_extensions_api_provider.h"
 #include "extensions/common/extension_urls.h"
 #include "extensions/common/url_pattern_set.h"
diff --git a/fuchsia/engine/BUILD.gn b/fuchsia/engine/BUILD.gn
index 52bc13e..5adfa24 100644
--- a/fuchsia/engine/BUILD.gn
+++ b/fuchsia/engine/BUILD.gn
@@ -104,7 +104,7 @@
     "//base/util/memory_pressure",
     "//components/cast/message_port:message_port_fuchsia",
     "//components/cast_streaming/browser",
-    "//components/cast_streaming/mojo:mojom",
+    "//components/cast_streaming/public/mojom",
     "//components/cast_streaming/renderer",
     "//components/cdm/renderer",
     "//components/keyed_service/content",
@@ -524,7 +524,7 @@
     ":web_engine_core",
     ":web_engine_unittests_fake_instance_manifest",
     "//base/test:test_support",
-    "//components/cast_streaming/mojo:mojom",
+    "//components/cast_streaming/public/mojom",
     "//content/test:test_support",
     "//fuchsia/base/test:test_support",
     "//fuchsia/engine/web_instance_host",
diff --git a/headless/lib/browser/headless_clipboard.cc b/headless/lib/browser/headless_clipboard.cc
index e076898..7f4f04c 100644
--- a/headless/lib/browser/headless_clipboard.cc
+++ b/headless/lib/browser/headless_clipboard.cc
@@ -10,6 +10,7 @@
 #include "base/strings/utf_string_conversions.h"
 #include "ui/base/clipboard/clipboard_constants.h"
 #include "ui/base/data_transfer_policy/data_transfer_endpoint.h"
+#include "ui/gfx/codec/png_codec.h"
 
 namespace headless {
 
@@ -63,7 +64,7 @@
   if (IsFormatAvailable(ui::ClipboardFormatType::GetRtfType(), buffer,
                         data_dst))
     types->push_back(base::UTF8ToUTF16(ui::kMimeTypeRTF));
-  if (IsFormatAvailable(ui::ClipboardFormatType::GetBitmapType(), buffer,
+  if (IsFormatAvailable(ui::ClipboardFormatType::GetPngType(), buffer,
                         data_dst))
     types->push_back(base::UTF8ToUTF16(ui::kMimeTypePNG));
 }
@@ -155,8 +156,7 @@
 void HeadlessClipboard::ReadPng(ui::ClipboardBuffer buffer,
                                 const ui::DataTransferEndpoint* data_dst,
                                 ReadPngCallback callback) const {
-  // TODO(crbug.com/1201018): Implement this.
-  NOTIMPLEMENTED();
+  std::move(callback).Run(GetStore(buffer).png);
 }
 
 // |data_dst| is not used. It's only passed to be consistent with other
@@ -164,7 +164,10 @@
 void HeadlessClipboard::ReadImage(ui::ClipboardBuffer buffer,
                                   const ui::DataTransferEndpoint* data_dst,
                                   ReadImageCallback callback) const {
-  std::move(callback).Run(GetStore(buffer).image);
+  const std::vector<uint8_t>& png_data = GetStore(buffer).png;
+  SkBitmap bitmap;
+  gfx::PNGCodec::Decode(png_data.data(), png_data.size(), &bitmap);
+  std::move(callback).Run(bitmap);
 }
 
 // |data_dst| is not used. It's only passed to be consistent with other
@@ -287,11 +290,9 @@
 
 void HeadlessClipboard::WriteBitmap(const SkBitmap& bitmap) {
   // Create a dummy entry.
-  GetDefaultStore().data[ui::ClipboardFormatType::GetBitmapType()];
-  SkBitmap& dst = GetDefaultStore().image;
-  if (dst.tryAllocPixels(bitmap.info())) {
-    bitmap.readPixels(dst.info(), dst.getPixels(), dst.rowBytes(), 0, 0);
-  }
+  GetDefaultStore().data[ui::ClipboardFormatType::GetPngType()];
+  gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, /*discard_transparency=*/false,
+                                    &GetDefaultStore().png);
 }
 
 void HeadlessClipboard::WriteData(const ui::ClipboardFormatType& format,
@@ -310,7 +311,7 @@
   data.clear();
   url_title.clear();
   html_src_url.clear();
-  image = SkBitmap();
+  png.clear();
 }
 
 const HeadlessClipboard::DataStore& HeadlessClipboard::GetStore(
diff --git a/headless/lib/browser/headless_clipboard.h b/headless/lib/browser/headless_clipboard.h
index 198984953..dd24323 100644
--- a/headless/lib/browser/headless_clipboard.h
+++ b/headless/lib/browser/headless_clipboard.h
@@ -114,7 +114,7 @@
     std::map<ui::ClipboardFormatType, std::string> data;
     std::string url_title;
     std::string html_src_url;
-    SkBitmap image;
+    std::vector<uint8_t> png;
     std::vector<ui::FileInfo> filenames;
   };
 
diff --git a/infra/DIR_METADATA b/infra/DIR_METADATA
index d2d9af5..c9e376bb 100644
--- a/infra/DIR_METADATA
+++ b/infra/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Infra>Client>Chrome"
diff --git a/infra/config/PRESUBMIT.py b/infra/config/PRESUBMIT.py
index 906654e..8b6cd0e4 100644
--- a/infra/config/PRESUBMIT.py
+++ b/infra/config/PRESUBMIT.py
@@ -122,19 +122,19 @@
                               for k, v in sorted(outages_config.items())]
       return [
           output_api.PresubmitError('\n'.join([
-              'The following outages configuration is in effect:\n  {}'
-              .format('\n  '.join(outages_config_lines)),
+              'The following outages configuration is in effect:\n  {}'.format(
+                  '\n  '.join(outages_config_lines)),
               ('The effect of your change may not be visible '
                'in the generated configuration.'),
               ('If your change is addressing the outage, '
-               'please add the footer {} with a link for the outage.')
-              .format(_OUTAGE_ACTION_FOOTER),
+               'please add the footer {} with a link for the outage.'
+               ).format(_OUTAGE_ACTION_FOOTER),
               ('If your change is not addressing the outage '
                'but you still wish to land it, please add the footer '
-               '{} with a reason.')
-              .format(_IGNORE_OUTAGE_FOOTER),
+               '{} with a reason.').format(_IGNORE_OUTAGE_FOOTER),
               ('For more information on outages configuration, '
-               'see https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/outages'),
+               'see https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/outages'
+               ),
           ])),
       ]
 
diff --git a/infra/config/README.md b/infra/config/README.md
index 7314c84..0d236b0 100644
--- a/infra/config/README.md
+++ b/infra/config/README.md
@@ -1,6 +1,6 @@
 **IMPORTANT:** This branch only has an effect for branches that have projects
 set up in
-https://chrome-internal.googlesource.com/infradata/config/+/refs/heads/master/configs/luci-config/projects.cfg
+https://chrome-internal.googlesource.com/infradata/config/+/refs/heads/main/configs/luci-config/projects.cfg
 
 This directory contains chromium project-wide configurations
 for Chrome Operations services.
diff --git a/infra/config/dev/chromium-header.textpb b/infra/config/dev/chromium-header.textpb
index 521cc65f..a6ed7cb 100644
--- a/infra/config/dev/chromium-header.textpb
+++ b/infra/config/dev/chromium-header.textpb
@@ -93,7 +93,7 @@
   }
   links: {
     text: "customize"
-    url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo-dev.cfg"
+    url: "https://chromium.googlesource.com/chromium/src/+/main/infra/config/luci-milo-dev.cfg"
       alt: "Customize this console"
   }
 }
diff --git a/infra/config/generated/commit-queue.cfg b/infra/config/generated/commit-queue.cfg
index 1439a26..07c6a99 100644
--- a/infra/config/generated/commit-queue.cfg
+++ b/infra/config/generated/commit-queue.cfg
@@ -1380,8 +1380,7 @@
         location_regexp: ".+/[+]/third_party/blink/renderer/core/svg/.+"
         location_regexp: ".+/[+]/third_party/blink/renderer/platform/fonts/shaping/.+"
         location_regexp: ".+/[+]/third_party/blink/renderer/platform/graphics/.+"
-        location_regexp: ".+/[+]/third_party/blink/web_tests/FlagExpectations/disable-layout-ng"
-        location_regexp: ".+/[+]/third_party/blink/web_tests/flag-specific/disable-layout-ng/.+"
+        location_regexp: ".+/[+]/third_party/blink/web_tests/.+"
         location_regexp_exclude: ".+/[+]/docs/.+"
         location_regexp_exclude: ".+/[+]/infra/config/.+"
       }
diff --git a/infra/config/generated/cq-builders.md b/infra/config/generated/cq-builders.md
index c8173f78..815a336 100644
--- a/infra/config/generated/cq-builders.md
+++ b/infra/config/generated/cq-builders.md
@@ -310,8 +310,7 @@
   * [`//third_party/blink/renderer/core/svg/.+`](https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/svg/)
   * [`//third_party/blink/renderer/platform/fonts/shaping/.+`](https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/fonts/shaping/)
   * [`//third_party/blink/renderer/platform/graphics/.+`](https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/graphics/)
-  * [`//third_party/blink/web_tests/FlagExpectations/disable-layout-ng`](https://cs.chromium.org/chromium/src/third_party/blink/web_tests/FlagExpectations/disable-layout-ng)
-  * [`//third_party/blink/web_tests/flag-specific/disable-layout-ng/.+`](https://cs.chromium.org/chromium/src/third_party/blink/web_tests/flag-specific/disable-layout-ng/)
+  * [`//third_party/blink/web_tests/.+`](https://cs.chromium.org/chromium/src/third_party/blink/web_tests/)
 
 * [linux_optional_gpu_tests_rel](https://ci.chromium.org/p/chromium/builders/try/linux_optional_gpu_tests_rel) ([definition](https://cs.chromium.org/search?q=package:%5Echromium$+file:/cq.star$+-file:/beta/+-file:/stable/+linux_optional_gpu_tests_rel)) ([matching builders](https://cs.chromium.org/search?q=+file:trybots.py+linux_optional_gpu_tests_rel))
 
diff --git a/infra/config/generated/cr-buildbucket.cfg b/infra/config/generated/cr-buildbucket.cfg
index cc795fd..132d26e 100644
--- a/infra/config/generated/cr-buildbucket.cfg
+++ b/infra/config/generated/cr-buildbucket.cfg
@@ -58,7 +58,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -124,7 +124,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -190,7 +190,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -256,7 +256,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -322,7 +322,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -388,7 +388,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -454,7 +454,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -520,7 +520,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -586,7 +586,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -652,7 +652,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -719,7 +719,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -786,7 +786,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -853,7 +853,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -919,7 +919,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -986,7 +986,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -1053,7 +1053,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -1120,7 +1120,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -1187,7 +1187,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -1254,7 +1254,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -1321,7 +1321,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -1388,7 +1388,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -1455,7 +1455,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -1522,7 +1522,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -1589,7 +1589,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -1656,7 +1656,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -1723,7 +1723,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -1789,7 +1789,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -1855,7 +1855,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -1921,7 +1921,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -1987,7 +1987,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -2053,7 +2053,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -2119,7 +2119,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -2185,7 +2185,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -2251,7 +2251,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -2321,7 +2321,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -2388,7 +2388,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -2454,7 +2454,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -2520,7 +2520,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -2587,7 +2587,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -2653,7 +2653,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -2719,7 +2719,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -2785,7 +2785,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -2851,7 +2851,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -2917,7 +2917,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -2984,7 +2984,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -3051,7 +3051,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -3117,7 +3117,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -3187,7 +3187,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -3257,7 +3257,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -3323,7 +3323,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -3389,7 +3389,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -3454,7 +3454,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -3519,7 +3519,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -3584,7 +3584,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -3649,7 +3649,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -3717,7 +3717,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -3785,7 +3785,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -3850,7 +3850,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -3915,7 +3915,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -3980,7 +3980,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -4045,7 +4045,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -4115,7 +4115,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -4185,7 +4185,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -4255,7 +4255,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -4320,7 +4320,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -4385,7 +4385,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -4450,7 +4450,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -4515,7 +4515,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -4585,7 +4585,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -4655,7 +4655,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -4720,7 +4720,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -4785,7 +4785,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -4850,7 +4850,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -4915,7 +4915,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -4981,7 +4981,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -5047,7 +5047,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -5113,7 +5113,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -5179,7 +5179,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -5245,7 +5245,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -5311,7 +5311,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -5377,7 +5377,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -5444,7 +5444,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -5511,7 +5511,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -5578,7 +5578,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -5645,7 +5645,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -5714,7 +5714,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -5783,7 +5783,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -5850,7 +5850,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -5921,7 +5921,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -5992,7 +5992,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -6063,7 +6063,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -6134,7 +6134,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -6205,7 +6205,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -6276,7 +6276,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -6342,7 +6342,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -6408,7 +6408,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -6476,7 +6476,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -6544,7 +6544,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -6614,7 +6614,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -6684,7 +6684,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -6750,7 +6750,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -6816,7 +6816,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -6882,7 +6882,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -6948,7 +6948,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -7014,7 +7014,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -7080,7 +7080,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -7146,7 +7146,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -7211,7 +7211,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -7277,7 +7277,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -7343,7 +7343,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -7409,7 +7409,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -7475,7 +7475,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -7541,7 +7541,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -7607,7 +7607,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -7676,7 +7676,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -7745,7 +7745,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -7811,7 +7811,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -7877,7 +7877,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -7943,7 +7943,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -8013,7 +8013,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -8079,7 +8079,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -8145,7 +8145,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -8211,7 +8211,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -8277,7 +8277,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -8343,7 +8343,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -8409,7 +8409,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -8475,7 +8475,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -8541,7 +8541,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -8607,7 +8607,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -8673,7 +8673,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -8739,7 +8739,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -8805,7 +8805,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -8871,7 +8871,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -8937,7 +8937,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -9002,7 +9002,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -9068,7 +9068,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -9134,7 +9134,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -9200,7 +9200,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -9267,7 +9267,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -9333,7 +9333,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -9399,7 +9399,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -9465,7 +9465,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -9531,7 +9531,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -9598,7 +9598,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -9664,7 +9664,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -9730,7 +9730,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -9796,7 +9796,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -9862,7 +9862,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -9928,7 +9928,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -9994,7 +9994,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -10060,7 +10060,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -10126,7 +10126,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -10192,7 +10192,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -10257,7 +10257,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -10323,7 +10323,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -10389,7 +10389,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -10455,7 +10455,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -10521,7 +10521,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -10587,7 +10587,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -10653,7 +10653,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -10719,7 +10719,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -10785,7 +10785,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -10850,7 +10850,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -10916,7 +10916,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -10982,7 +10982,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -11048,7 +11048,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -11114,7 +11114,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -11180,7 +11180,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -11246,7 +11246,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -11315,7 +11315,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -11384,7 +11384,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -11452,7 +11452,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -11521,7 +11521,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -11589,7 +11589,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -11657,7 +11657,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -11720,7 +11720,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -11785,7 +11785,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -11851,7 +11851,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -11917,7 +11917,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -11983,7 +11983,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -12049,7 +12049,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -12118,7 +12118,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -12184,7 +12184,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -12250,7 +12250,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -12316,7 +12316,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -12382,7 +12382,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -12448,7 +12448,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -12514,7 +12514,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -12583,7 +12583,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -12649,7 +12649,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -12714,7 +12714,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -12779,7 +12779,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -12844,7 +12844,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -12912,7 +12912,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -12980,7 +12980,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -13045,7 +13045,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -13110,7 +13110,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -13175,7 +13175,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -13240,7 +13240,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -13305,7 +13305,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -13370,7 +13370,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -13435,7 +13435,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -13501,7 +13501,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -13567,7 +13567,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -13633,7 +13633,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -13699,7 +13699,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -13765,7 +13765,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -13834,7 +13834,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -13900,7 +13900,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -13966,7 +13966,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -14032,7 +14032,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -14098,7 +14098,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -14164,7 +14164,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -14230,7 +14230,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -14296,7 +14296,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -14362,7 +14362,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -14428,7 +14428,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -14494,7 +14494,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -14560,7 +14560,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -14626,7 +14626,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -14692,7 +14692,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -14758,7 +14758,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -14824,7 +14824,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -14890,7 +14890,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -14956,7 +14956,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -15022,7 +15022,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -15088,7 +15088,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -15154,7 +15154,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -15220,7 +15220,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -15286,7 +15286,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -15352,7 +15352,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -15418,7 +15418,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -15484,7 +15484,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -15549,7 +15549,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -15615,7 +15615,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -15681,7 +15681,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -15747,7 +15747,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -15813,7 +15813,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -15879,7 +15879,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -15950,7 +15950,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -16021,7 +16021,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -16092,7 +16092,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -16163,7 +16163,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -16232,7 +16232,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -16302,7 +16302,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -16372,7 +16372,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -16442,7 +16442,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -16511,7 +16511,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -16581,7 +16581,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -16651,7 +16651,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -16721,7 +16721,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -16795,7 +16795,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -16869,7 +16869,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -16935,7 +16935,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -17001,7 +17001,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -17067,7 +17067,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -17133,7 +17133,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -17199,7 +17199,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -17265,7 +17265,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -17331,7 +17331,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -17397,7 +17397,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -17466,7 +17466,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -17535,7 +17535,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -17605,7 +17605,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -17674,7 +17674,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -17743,7 +17743,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -17812,7 +17812,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -17881,7 +17881,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -17950,7 +17950,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -18020,7 +18020,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -18090,7 +18090,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -18156,7 +18156,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -18222,7 +18222,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -18288,7 +18288,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -18354,7 +18354,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -18420,7 +18420,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -18486,7 +18486,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -18552,7 +18552,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -18618,7 +18618,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -18684,7 +18684,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -18750,7 +18750,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -18821,7 +18821,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -18887,7 +18887,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -18956,7 +18956,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -19025,7 +19025,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -19090,7 +19090,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -19155,7 +19155,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -19225,7 +19225,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -19291,7 +19291,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -19357,7 +19357,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -19423,7 +19423,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -19493,7 +19493,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -19563,7 +19563,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -19632,7 +19632,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -19698,7 +19698,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -19764,7 +19764,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -19829,7 +19829,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -19896,7 +19896,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -19962,7 +19962,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -20029,7 +20029,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -20095,7 +20095,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -20162,7 +20162,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -20228,7 +20228,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -20295,7 +20295,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -20361,7 +20361,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -20428,7 +20428,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -20494,7 +20494,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -20560,7 +20560,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -20626,7 +20626,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -20692,7 +20692,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -20758,7 +20758,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -20824,7 +20824,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -20890,7 +20890,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -20956,7 +20956,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -21022,7 +21022,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -21088,7 +21088,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -21155,7 +21155,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -21222,7 +21222,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -21288,7 +21288,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -21354,7 +21354,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -21420,7 +21420,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -21486,7 +21486,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -21552,7 +21552,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -21618,7 +21618,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -21684,7 +21684,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -21750,7 +21750,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -21813,7 +21813,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -21879,7 +21879,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -21945,7 +21945,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -22011,7 +22011,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -22077,7 +22077,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -22143,7 +22143,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -22209,7 +22209,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -22275,7 +22275,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -22341,7 +22341,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -22406,7 +22406,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -22472,7 +22472,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -22538,7 +22538,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -22604,7 +22604,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -22670,7 +22670,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -22736,7 +22736,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -22802,7 +22802,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -22868,7 +22868,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -22934,7 +22934,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -23000,7 +23000,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -23066,7 +23066,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -23132,7 +23132,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -23198,7 +23198,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -23264,7 +23264,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -23330,7 +23330,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -23396,7 +23396,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -23462,7 +23462,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -23528,7 +23528,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -23594,7 +23594,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -23660,7 +23660,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -23726,7 +23726,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -23792,7 +23792,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -23858,7 +23858,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -23924,7 +23924,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -23990,7 +23990,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -24056,7 +24056,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -24122,7 +24122,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -24188,7 +24188,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -24255,7 +24255,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -24321,7 +24321,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -24388,7 +24388,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -24454,7 +24454,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -24520,7 +24520,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -24586,7 +24586,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -24652,7 +24652,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -24718,7 +24718,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -24784,7 +24784,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -24850,7 +24850,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -24924,7 +24924,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -24990,7 +24990,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -25063,7 +25063,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -25136,7 +25136,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -25209,7 +25209,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -25284,7 +25284,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -25357,7 +25357,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -25430,7 +25430,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -25503,7 +25503,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -25576,7 +25576,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -25649,7 +25649,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -25722,7 +25722,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -25795,7 +25795,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -25868,7 +25868,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -25941,7 +25941,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -26014,7 +26014,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -26081,7 +26081,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -26147,7 +26147,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -26213,7 +26213,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -26279,7 +26279,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -26346,7 +26346,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -26413,7 +26413,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -26479,7 +26479,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -26545,7 +26545,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -26611,7 +26611,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -26677,7 +26677,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -26743,7 +26743,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -26809,7 +26809,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -26875,7 +26875,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -26942,7 +26942,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -27009,7 +27009,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -27075,7 +27075,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -27141,7 +27141,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -27207,7 +27207,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -27273,7 +27273,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -27339,7 +27339,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -27405,7 +27405,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -27471,7 +27471,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -27537,7 +27537,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -27604,7 +27604,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -27670,7 +27670,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -27737,7 +27737,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -27803,7 +27803,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -27869,7 +27869,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -27935,7 +27935,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -28002,7 +28002,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -28068,7 +28068,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -28134,7 +28134,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -28200,7 +28200,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -28265,7 +28265,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -28331,7 +28331,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -28397,7 +28397,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -28464,7 +28464,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -28530,7 +28530,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -28596,7 +28596,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -28662,7 +28662,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -28727,7 +28727,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -28793,7 +28793,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -28859,7 +28859,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -28925,7 +28925,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -28991,7 +28991,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -29057,7 +29057,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -29123,7 +29123,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -29189,7 +29189,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -29255,7 +29255,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -29321,7 +29321,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -29387,7 +29387,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -29454,7 +29454,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -29521,7 +29521,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -29588,7 +29588,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -29654,7 +29654,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -29720,7 +29720,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -29789,7 +29789,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -29855,7 +29855,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -29924,7 +29924,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -29990,7 +29990,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -30056,7 +30056,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -30122,7 +30122,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -30191,7 +30191,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -30260,7 +30260,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -30329,7 +30329,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -30398,7 +30398,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -30466,7 +30466,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -30531,7 +30531,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -30597,7 +30597,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -30668,7 +30668,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -30737,7 +30737,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -30806,7 +30806,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -30874,7 +30874,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -30940,7 +30940,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -31009,7 +31009,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -31078,7 +31078,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -31146,7 +31146,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -31214,7 +31214,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -31282,7 +31282,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -31351,7 +31351,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -31417,7 +31417,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -31483,7 +31483,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -31549,7 +31549,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -31615,7 +31615,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -31681,7 +31681,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -31747,7 +31747,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -31813,7 +31813,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -31875,7 +31875,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -31935,7 +31935,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -32006,7 +32006,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -32077,7 +32077,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -32148,7 +32148,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -32219,7 +32219,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -32289,7 +32289,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -32358,7 +32358,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -32427,7 +32427,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -32497,7 +32497,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -32567,7 +32567,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -32637,7 +32637,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -32710,7 +32710,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -32783,7 +32783,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -32852,7 +32852,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -32921,7 +32921,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -32987,7 +32987,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -33057,7 +33057,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -33127,7 +33127,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -33197,7 +33197,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -33267,7 +33267,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -33337,7 +33337,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -33407,7 +33407,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -33477,7 +33477,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -33547,7 +33547,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -33617,7 +33617,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -33687,7 +33687,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -33753,7 +33753,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -33819,7 +33819,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -33885,7 +33885,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -33951,7 +33951,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -34022,7 +34022,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -34088,7 +34088,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -34154,7 +34154,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -34223,7 +34223,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -34292,7 +34292,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -34361,7 +34361,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -34430,7 +34430,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -34500,7 +34500,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -34570,7 +34570,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -34636,7 +34636,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -34702,7 +34702,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -34768,7 +34768,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -34834,7 +34834,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -34900,7 +34900,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -34966,7 +34966,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -35032,7 +35032,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
@@ -37183,7 +37183,7 @@
       }
       experiments {
         key: "luci.buildbucket.use_bbagent"
-        value: 20
+        value: 50
       }
       experiments {
         key: "luci.use_realms"
diff --git a/infra/config/generated/luci-milo-dev.cfg b/infra/config/generated/luci-milo-dev.cfg
index 958fb36..6dbecb5 100644
--- a/infra/config/generated/luci-milo-dev.cfg
+++ b/infra/config/generated/luci-milo-dev.cfg
@@ -116,7 +116,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo-dev.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/main/infra/config/luci-milo-dev.cfg"
         alt: "Customize this console"
       }
     }
@@ -226,7 +226,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo-dev.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/main/infra/config/luci-milo-dev.cfg"
         alt: "Customize this console"
       }
     }
diff --git a/infra/config/generated/luci-milo.cfg b/infra/config/generated/luci-milo.cfg
index 12c43e97..c8cfc402 100644
--- a/infra/config/generated/luci-milo.cfg
+++ b/infra/config/generated/luci-milo.cfg
@@ -8,7 +8,7 @@
   id: "main"
   name: "Chromium Main Console"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/android-archive-dbg"
@@ -842,7 +842,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -875,7 +875,7 @@
   id: "mirrors"
   name: "Chromium CQ Mirrors Console"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/Win x64 Builder"
@@ -1595,7 +1595,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -1628,7 +1628,7 @@
   id: "sheriff.fuchsia"
   name: "Fuchsia Sheriff Console"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/Fuchsia ARM64"
@@ -1959,7 +1959,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -1992,7 +1992,7 @@
   id: "sheriff.ios"
   name: "iOS Sheriff Console"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/ios-device"
@@ -2288,7 +2288,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -2518,7 +2518,7 @@
   id: "chromium"
   name: "chromium"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/android-archive-dbg"
@@ -2859,7 +2859,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -2893,7 +2893,7 @@
   id: "chromium.android"
   name: "chromium.android"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/android-cronet-arm-dbg"
@@ -3397,7 +3397,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -3430,7 +3430,7 @@
   id: "chromium.android.fyi"
   name: "chromium.android.fyi"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/Android WebView P FYI (rel)"
@@ -3751,7 +3751,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -3784,7 +3784,7 @@
   id: "chromium.angle"
   name: "chromium.angle"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/android-angle-arm64-builder"
@@ -4230,7 +4230,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -4263,7 +4263,7 @@
   id: "chromium.chromiumos"
   name: "chromium.chromiumos"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/linux-ash-chromium-generator-rel"
@@ -4612,7 +4612,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -4645,7 +4645,7 @@
   id: "chromium.clang"
   name: "chromium.clang"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/ToTLinux"
@@ -5121,7 +5121,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -5154,7 +5154,7 @@
   id: "chromium.dawn"
   name: "chromium.dawn"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/Dawn Linux x64 Builder"
@@ -5540,7 +5540,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -5573,7 +5573,7 @@
   id: "chromium.fuzz"
   name: "chromium.fuzz"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/Afl Upload Linux ASan"
@@ -5988,7 +5988,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -6021,7 +6021,7 @@
   id: "chromium.fyi"
   name: "chromium.fyi"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/android-code-coverage"
@@ -6732,7 +6732,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -7123,7 +7123,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -7478,7 +7478,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -7512,7 +7512,7 @@
   id: "chromium.gpu"
   name: "chromium.gpu"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/GPU Win x64 Builder"
@@ -7833,7 +7833,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -7866,7 +7866,7 @@
   id: "chromium.gpu.fyi"
   name: "chromium.gpu.fyi"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/GPU FYI Win Builder"
@@ -8492,7 +8492,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -8525,7 +8525,7 @@
   id: "chromium.linux"
   name: "chromium.linux"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/Linux Builder"
@@ -8921,7 +8921,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -8954,7 +8954,7 @@
   id: "chromium.mac"
   name: "chromium.mac"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/Mac Builder"
@@ -9285,7 +9285,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -9318,7 +9318,7 @@
   id: "chromium.memory"
   name: "chromium.memory"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/win-asan"
@@ -9684,7 +9684,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -9717,7 +9717,7 @@
   id: "chromium.mojo"
   name: "chromium.mojo"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/Mojo Android"
@@ -9998,7 +9998,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -10031,7 +10031,7 @@
   id: "chromium.packager"
   name: "chromium.packager"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/3pp-linux-amd64-packager"
@@ -10317,7 +10317,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -10616,7 +10616,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -10650,7 +10650,7 @@
   id: "chromium.swangle"
   name: "chromium.swangle"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/win-swangle-x86"
@@ -10971,7 +10971,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -11004,7 +11004,7 @@
   id: "chromium.updater"
   name: "chromium.updater"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/mac10.15-updater-tester-dbg"
@@ -11390,7 +11390,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -11734,7 +11734,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -12118,7 +12118,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -12151,7 +12151,7 @@
   id: "chromium.win"
   name: "chromium.win"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/Win Builder"
@@ -12472,7 +12472,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -12840,7 +12840,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -13152,7 +13152,7 @@
       }
       links {
         text: "customize"
-        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/master/infra/config/generated/luci-milo.cfg"
+        url: "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/infra/config/generated/luci-milo.cfg"
         alt: "Customize this console"
       }
     }
@@ -14166,7 +14166,7 @@
   id: "metadata.exporter"
   name: "metadata.exporter"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  refs: "regexp:refs/heads/master"
+  refs: "regexp:refs/heads/main"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/metadata-exporter"
diff --git a/infra/config/generated/luci-scheduler.cfg b/infra/config/generated/luci-scheduler.cfg
index 530a0e02..65e9c8aa 100644
--- a/infra/config/generated/luci-scheduler.cfg
+++ b/infra/config/generated/luci-scheduler.cfg
@@ -7263,7 +7263,7 @@
   triggers: "WebRTC Chromium Win Builder"
   gitiles {
     repo: "https://chromium.googlesource.com/chromium/src"
-    refs: "regexp:refs/heads/master"
+    refs: "regexp:refs/heads/main"
   }
 }
 trigger {
diff --git a/infra/config/lib/builders.star b/infra/config/lib/builders.star
index 61d0129e..52b1676 100644
--- a/infra/config/lib/builders.star
+++ b/infra/config/lib/builders.star
@@ -381,7 +381,7 @@
     attribute with a `lucicfg.var` for all of the fields defined here as well as
     all of the parameters of `luci.builder` that support module-level defaults.
 
-    See https://chromium.googlesource.com/infra/luci/luci-go/+/refs/heads/master/lucicfg/doc/README.md#luci.builder
+    See https://chromium.googlesource.com/infra/luci/luci-go/+/refs/heads/main/lucicfg/doc/README.md#luci.builder
     for more information.
 
     Arguments:
diff --git a/infra/config/lib/ci.star b/infra/config/lib/ci.star
index 01e6ff79..b30238af 100644
--- a/infra/config/lib/ci.star
+++ b/infra/config/lib/ci.star
@@ -99,7 +99,7 @@
     experiments.setdefault("chromium.resultdb.result_sink.gtests_local", 100)
 
     # Migrate executable to bbagent incrementally.
-    experiments.setdefault("luci.buildbucket.use_bbagent", 20)
+    experiments.setdefault("luci.buildbucket.use_bbagent", 50)
 
     goma_enable_ats = defaults.get_value_from_kwargs("goma_enable_ats", kwargs)
     if goma_enable_ats == args.COMPUTE:
diff --git a/infra/config/lib/consoles.star b/infra/config/lib/consoles.star
index 2c870043..107a781 100644
--- a/infra/config/lib/consoles.star
+++ b/infra/config/lib/consoles.star
@@ -319,7 +319,7 @@
         short_name = None):
     """Specifies the details of a console view entry.
 
-    See https://chromium.googlesource.com/infra/luci/luci-go/+/refs/heads/master/lucicfg/doc/README.md#luci.console_view_entry
+    See https://chromium.googlesource.com/infra/luci/luci-go/+/refs/heads/main/lucicfg/doc/README.md#luci.console_view_entry
     for more details on the arguments.
 
     Args:
diff --git a/infra/config/lib/headers.star b/infra/config/lib/headers.star
index 0557799..321d370d 100644
--- a/infra/config/lib/headers.star
+++ b/infra/config/lib/headers.star
@@ -76,7 +76,7 @@
       text - The display text for the link.
       alt - The alt text for the link. This is supposed to be the hover text
         according to the proto
-        https://chromium.googlesource.com/infra/luci/luci-go/+/master/milo/api/config/project.proto,
+        https://chromium.googlesource.com/infra/luci/luci-go/+/main/milo/api/config/project.proto,
         but doesn't appear to produce any hover text.
       branch_selector - A branch selector value controlling whether the
         link definition is executed. See branches.star for more information.
diff --git a/infra/config/lib/try.star b/infra/config/lib/try.star
index 85bb40d..6fcb839 100644
--- a/infra/config/lib/try.star
+++ b/infra/config/lib/try.star
@@ -46,7 +46,7 @@
         add_default_excludes = True):
     """Specifies the details of a tryjob verifier.
 
-    See https://chromium.googlesource.com/infra/luci/luci-go/+/refs/heads/master/lucicfg/doc/README.md#luci.cq_tryjob_verifier
+    See https://chromium.googlesource.com/infra/luci/luci-go/+/refs/heads/main/lucicfg/doc/README.md#luci.cq_tryjob_verifier
     for details on the most of the arguments.
 
     Arguments:
diff --git a/infra/config/settings.json b/infra/config/settings.json
index 5c879c2..610343f 100644
--- a/infra/config/settings.json
+++ b/infra/config/settings.json
@@ -3,6 +3,6 @@
     "project_title": "Chromium",
     "is_main": true,
     "is_lts_branch": false,
-    "ref": "refs/heads/master",
+    "ref": "refs/heads/main",
     "chrome_project": "chrome"
 }
diff --git a/infra/config/subprojects/chromium/try.star b/infra/config/subprojects/chromium/try.star
index 193ef51e..529cc8f 100644
--- a/infra/config/subprojects/chromium/try.star
+++ b/infra/config/subprojects/chromium/try.star
@@ -1492,8 +1492,7 @@
             ".+/[+]/third_party/blink/renderer/core/svg/.+",
             ".+/[+]/third_party/blink/renderer/platform/fonts/shaping/.+",
             ".+/[+]/third_party/blink/renderer/platform/graphics/.+",
-            ".+/[+]/third_party/blink/web_tests/FlagExpectations/disable-layout-ng",
-            ".+/[+]/third_party/blink/web_tests/flag-specific/disable-layout-ng/.+",
+            ".+/[+]/third_party/blink/web_tests/.+",
         ],
     ),
 )
diff --git a/ios/build/bots/scripts/xcode_util.py b/ios/build/bots/scripts/xcode_util.py
index dfe45696..0d2b1d5 100644
--- a/ios/build/bots/scripts/xcode_util.py
+++ b/ios/build/bots/scripts/xcode_util.py
@@ -43,8 +43,9 @@
 def _is_legacy_xcode_package(xcode_app_path):
   """Checks and returns if the installed Xcode package is legacy version.
 
-  Legacy Xcode package are uploaded with legacy version of mac_toolchain. iOS
-  runtimes are packaged into legacy Xcode packages but not into new packages.
+  Legacy Xcode package are uploaded with legacy version of mac_toolchain.
+  Typically, multiple iOS runtimes are bundled into legacy Xcode packages. No
+  runtime is bundled into new format Xcode packages.
 
   Args:
     xcode_app_path: (string) Path to install the contents of Xcode.app.
@@ -52,11 +53,20 @@
   Returns:
     (bool) True if the package is legacy(with runtime bundled). False otherwise.
   """
-  # Existence of default iOS runtime indicates the downloaded Xcode is a legacy
-  # one (with runtime bundled).
-  return os.path.exists(
+  # More than one iOS runtimes indicate the downloaded Xcode is a legacy one.
+  # If no runtimes are found in the package, it's a new format package. If only
+  # one runtime is found in package, it typically means it's an incorrectly
+  # cached new format Xcode package. (The single runtime wasn't moved out from
+  # Xcode in the end of last task, because last task was killed before moving.)
+  runtimes_in_xcode = glob.glob(
       os.path.join(xcode_app_path, XcodeIOSSimulatorRuntimeRelPath,
-                   XcodeIOSSimulatorDefaultRuntimeFilename))
+                   '*.simruntime'))
+  is_legacy = len(runtimes_in_xcode) >= 2
+  if not is_legacy:
+    for runtime in runtimes_in_xcode:
+      LOGGER.warning('Removing %s from incorrectly cached Xcode.', runtime)
+      shutil.rmtree(runtime)
+  return is_legacy
 
 
 def _install_runtime(mac_toolchain, install_path, xcode_build_version,
@@ -104,8 +114,12 @@
 def move_runtime(runtime_cache_folder, xcode_app_path, into_xcode):
   """Moves runtime from runtime cache into xcode or vice versa.
 
+  The function is intended to only work with new Xcode packages.
+
   The function assumes that there's exactly one *.simruntime file in the source
-  folder. It's intended to only work with new Xcode packages.
+  folder. It also removes existing runtimes in the destination folder. The above
+  assumption & handling can ensure no incorrect Xcode package is cached from
+  corner cases.
 
   Args:
     runtime_cache_folder: (string) Path to the runtime cache directory.
@@ -128,14 +142,14 @@
         'Not exactly one runtime files (files: %s) to move from %s!' %
         (runtimes_in_src, src_folder))
 
+  runtimes_in_dst = glob.glob(os.path.join(dst_folder, '*.simruntime'))
+  for runtime in runtimes_in_dst:
+    LOGGER.warning('Removing existing %s in destination folder.', runtime)
+    shutil.rmtree(runtime)
+
   # Get the runtime package filename. It might not be the default name.
   runtime_name = os.path.basename(runtimes_in_src[0])
   dst_runtime = os.path.join(dst_folder, runtime_name)
-
-  # Remove if the runtime package already exists in dst.
-  if os.path.exists(dst_runtime):
-    shutil.rmtree(dst_runtime)
-
   LOGGER.debug('Moving %s from %s to %s.' %
                (runtime_name, src_folder, dst_folder))
   shutil.move(os.path.join(src_folder, runtime_name), dst_runtime)
diff --git a/ios/build/bots/scripts/xcode_util_test.py b/ios/build/bots/scripts/xcode_util_test.py
index 202450a..9203982 100644
--- a/ios/build/bots/scripts/xcode_util_test.py
+++ b/ios/build/bots/scripts/xcode_util_test.py
@@ -5,6 +5,7 @@
 
 import logging
 import mock
+import os
 import unittest
 
 import test_runner_errors
@@ -146,6 +147,10 @@
 
   def setUp(self):
     super(HelperFunctionTests, self).setUp()
+    self.xcode_runtime_dir_rel_path = (
+        'Contents/Developer/'
+        'Platforms/iPhoneOS.platform/Library/Developer/'
+        'CoreSimulator/Profiles/Runtimes')
     self.xcode_runtime_rel_path = (
         'Contents/Developer/'
         'Platforms/iPhoneOS.platform/Library/Developer/'
@@ -186,17 +191,51 @@
 Use "mac_toolchain help [command]" for more information about a command."""
     self.assertFalse(xcode_util._using_new_mac_toolchain('mac_toolchain'))
 
-  @mock.patch('os.path.exists', autospec=True, return_value=True)
-  def test_is_legacy_xcode_package_legacy(self, mock_exists):
-    self.assertTrue(xcode_util._is_legacy_xcode_package('test/path/Xcode.app'))
-    mock_exists.assert_called_with('test/path/Xcode.app/' +
-                                   self.xcode_runtime_rel_path)
+  @mock.patch('shutil.rmtree', autospec=True)
+  @mock.patch('glob.glob', autospec=True)
+  def test_is_legacy_xcode_package_legacy(self, mock_glob, mock_rmtree):
+    test_xcode_path = 'test/path/Xcode.app/'
+    runtime_names = ['iOS.simruntime', 'iOS 12.4.simruntime']
+    xcode_runtime_paths = [
+        os.path.join(test_xcode_path, self.xcode_runtime_dir_rel_path,
+                     runtime_name) for runtime_name in runtime_names
+    ]
+    mock_glob.return_value = xcode_runtime_paths
+    self.assertTrue(xcode_util._is_legacy_xcode_package(test_xcode_path))
+    mock_glob.assert_called_with(
+        os.path.join(test_xcode_path, self.xcode_runtime_dir_rel_path,
+                     '*.simruntime'))
+    self.assertFalse(mock_rmtree.called)
 
-  @mock.patch('os.path.exists', autospec=True, return_value=False)
-  def test_is_legacy_xcode_package_not_legacy(self, mock_exists):
-    self.assertFalse(xcode_util._is_legacy_xcode_package('test/path/Xcode.app'))
-    mock_exists.assert_called_with('test/path/Xcode.app/' +
-                                   self.xcode_runtime_rel_path)
+  @mock.patch('shutil.rmtree', autospec=True)
+  @mock.patch('glob.glob', autospec=True)
+  def test_is_legacy_xcode_package_no_runtime(self, mock_glob, mock_rmtree):
+    test_xcode_path = 'test/path/Xcode.app/'
+    xcode_runtime_paths = []
+    mock_glob.return_value = xcode_runtime_paths
+    self.assertFalse(xcode_util._is_legacy_xcode_package(test_xcode_path))
+    mock_glob.assert_called_with(
+        os.path.join(test_xcode_path, self.xcode_runtime_dir_rel_path,
+                     '*.simruntime'))
+    self.assertFalse(mock_rmtree.called)
+
+  @mock.patch('shutil.rmtree', autospec=True)
+  @mock.patch('glob.glob', autospec=True)
+  def test_is_legacy_xcode_package_single_runtime(self, mock_glob, mock_rmtree):
+    test_xcode_path = 'test/path/Xcode.app/'
+    runtime_names = ['iOS.simruntime']
+    xcode_runtime_paths = [
+        os.path.join(test_xcode_path, self.xcode_runtime_dir_rel_path,
+                     runtime_name) for runtime_name in runtime_names
+    ]
+    mock_glob.return_value = xcode_runtime_paths
+    self.assertFalse(xcode_util._is_legacy_xcode_package(test_xcode_path))
+    mock_glob.assert_called_with(
+        os.path.join(test_xcode_path, self.xcode_runtime_dir_rel_path,
+                     '*.simruntime'))
+    mock_rmtree.assert_called_with(
+        os.path.join(test_xcode_path, self.xcode_runtime_dir_rel_path,
+                     'iOS.simruntime'))
 
 
 class MoveRuntimeTests(XcodeUtilTest):
@@ -209,12 +248,10 @@
 
   @mock.patch('shutil.move', autospec=True)
   @mock.patch('shutil.rmtree', autospec=True)
-  @mock.patch('os.path.exists', autospec=True)
   @mock.patch('glob.glob', autospec=True)
-  def test_move_runtime_into_xcode(self, mock_glob, mock_exists, mock_rmtree,
-                                   mock_move):
-    mock_glob.return_value = ['test/path/Runtime/iOS.simruntime']
-    mock_exists.return_value = False
+  def test_move_runtime_into_xcode(self, mock_glob, mock_rmtree, mock_move):
+
+    mock_glob.side_effect = [['test/path/Runtime/iOS.simruntime'], []]
 
     xcode_util.move_runtime(self.runtime_cache_folder, self.xcode_app_path,
                             True)
@@ -222,60 +259,68 @@
     xcode_runtime_path = ('test/path/Xcode.app/Contents/Developer/'
                           'Platforms/iPhoneOS.platform/Library/Developer/'
                           'CoreSimulator/Profiles/Runtimes/iOS.simruntime')
-    mock_glob.assert_called_with('test/path/Runtime/*.simruntime')
-    mock_exists.assert_called_with(xcode_runtime_path)
+    calls = [
+        mock.call('test/path/Runtime/*.simruntime'),
+        mock.call(('test/path/Xcode.app/Contents/Developer/'
+                   'Platforms/iPhoneOS.platform/Library/Developer/'
+                   'CoreSimulator/Profiles/Runtimes/*.simruntime'))
+    ]
+    mock_glob.assert_has_calls(calls)
     self.assertFalse(mock_rmtree.called)
     mock_move.assert_called_with('test/path/Runtime/iOS.simruntime',
                                  xcode_runtime_path)
 
   @mock.patch('shutil.move', autospec=True)
   @mock.patch('shutil.rmtree', autospec=True)
-  @mock.patch('os.path.exists', autospec=True)
   @mock.patch('glob.glob', autospec=True)
-  def test_move_runtime_outside_xcode(self, mock_glob, mock_exists, mock_rmtree,
-                                      mock_move):
+  def test_move_runtime_outside_xcode(self, mock_glob, mock_rmtree, mock_move):
     xcode_runtime_folder = ('test/path/Xcode.app/Contents/Developer/'
                             'Platforms/iPhoneOS.platform/Library/Developer/'
                             'CoreSimulator/Profiles/Runtimes')
-    mock_glob.return_value = [xcode_runtime_folder + '/iOS.simruntime']
-    mock_exists.return_value = False
+    mock_glob.side_effect = [[xcode_runtime_folder + '/iOS.simruntime'], []]
 
     xcode_util.move_runtime(self.runtime_cache_folder, self.xcode_app_path,
                             False)
 
-    mock_glob.assert_called_with(xcode_runtime_folder + '/*.simruntime')
-    mock_exists.assert_called_with('test/path/Runtime/iOS.simruntime')
+    calls = [
+        mock.call(('test/path/Xcode.app/Contents/Developer/'
+                   'Platforms/iPhoneOS.platform/Library/Developer/'
+                   'CoreSimulator/Profiles/Runtimes/*.simruntime')),
+        mock.call('test/path/Runtime/*.simruntime')
+    ]
+    mock_glob.assert_has_calls(calls)
     self.assertFalse(mock_rmtree.called)
     mock_move.assert_called_with(xcode_runtime_folder + '/iOS.simruntime',
                                  'test/path/Runtime/iOS.simruntime')
 
   @mock.patch('shutil.move', autospec=True)
   @mock.patch('shutil.rmtree', autospec=True)
-  @mock.patch('os.path.exists', autospec=True)
   @mock.patch('glob.glob', autospec=True)
-  def test_move_runtime_multiple_in_src(self, mock_glob, mock_exists,
-                                        mock_rmtree, mock_move):
-    mock_glob.return_value = [
+  def test_move_runtime_multiple_in_src(self, mock_glob, mock_rmtree,
+                                        mock_move):
+    mock_glob.side_effect = [[
         'test/path/Runtime/iOS.simruntime',
         'test/path/Runtime/iOS 13.4.simruntime'
-    ]
+    ], []]
 
     with self.assertRaises(test_runner_errors.IOSRuntimeHandlingError):
       xcode_util.move_runtime(self.runtime_cache_folder, self.xcode_app_path,
                               True)
     mock_glob.assert_called_with('test/path/Runtime/*.simruntime')
-    self.assertFalse(mock_exists.called)
     self.assertFalse(mock_rmtree.called)
     self.assertFalse(mock_move.called)
 
   @mock.patch('shutil.move', autospec=True)
   @mock.patch('shutil.rmtree', autospec=True)
-  @mock.patch('os.path.exists', autospec=True)
   @mock.patch('glob.glob', autospec=True)
-  def test_move_runtime_remove_from_dst(self, mock_glob, mock_exists,
-                                        mock_rmtree, mock_move):
-    mock_glob.return_value = ['test/path/Runtime/iOS.simruntime']
-    mock_exists.return_value = True
+  def test_move_runtime_remove_from_dst(self, mock_glob, mock_rmtree,
+                                        mock_move):
+
+    mock_glob.side_effect = [['test/path/Runtime/iOS.simruntime'],
+                             [('test/path/Xcode.app/Contents/Developer/'
+                               'Platforms/iPhoneOS.platform/Library/Developer/'
+                               'CoreSimulator/Profiles/Runtimes/iOS.simruntime')
+                             ]]
 
     xcode_util.move_runtime(self.runtime_cache_folder, self.xcode_app_path,
                             True)
@@ -283,8 +328,13 @@
     xcode_runtime_path = ('test/path/Xcode.app/Contents/Developer/'
                           'Platforms/iPhoneOS.platform/Library/Developer/'
                           'CoreSimulator/Profiles/Runtimes/iOS.simruntime')
-    mock_glob.assert_called_with('test/path/Runtime/*.simruntime')
-    mock_exists.assert_called_with(xcode_runtime_path)
+    calls = [
+        mock.call('test/path/Runtime/*.simruntime'),
+        mock.call(('test/path/Xcode.app/Contents/Developer/'
+                   'Platforms/iPhoneOS.platform/Library/Developer/'
+                   'CoreSimulator/Profiles/Runtimes/*.simruntime'))
+    ]
+    mock_glob.assert_has_calls(calls)
     mock_rmtree.assert_called_with(xcode_runtime_path)
     mock_move.assert_called_with('test/path/Runtime/iOS.simruntime',
                                  xcode_runtime_path)
diff --git a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/common/BUILD.gn b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/common/BUILD.gn
index fa16ba1..49f6528c 100644
--- a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/common/BUILD.gn
+++ b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/common/BUILD.gn
@@ -17,6 +17,7 @@
   deps = [
     "//base",
     "//ios/chrome/browser/infobars",
+    "//ios/chrome/browser/infobars:public",
     "//ios/chrome/browser/infobars/overlays",
     "//ios/chrome/browser/infobars/overlays:util",
     "//ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers",
diff --git a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/common/infobar_banner_overlay_request_callback_installer.mm b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/common/infobar_banner_overlay_request_callback_installer.mm
index 98abbaf1..a3474702 100644
--- a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/common/infobar_banner_overlay_request_callback_installer.mm
+++ b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/common/infobar_banner_overlay_request_callback_installer.mm
@@ -7,6 +7,7 @@
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/check.h"
+#import "ios/chrome/browser/infobars/infobar_controller_delegate.h"
 #include "ios/chrome/browser/infobars/infobar_ios.h"
 #include "ios/chrome/browser/infobars/infobar_manager_impl.h"
 #import "ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/common/infobar_banner_interaction_handler.h"
@@ -68,10 +69,13 @@
     OverlayRequest* request,
     OverlayResponse* response) {
   InfoBarIOS* infobar = GetOverlayRequestInfobar(request);
-  if (!infobar)
+  InfoBarControllerDelegate* infobar_controller_delegate =
+      static_cast<InfoBarControllerDelegate*>(infobar);
+  if (!infobar || !infobar_controller_delegate->IsOwned() ||
+      !infobar->delegate())
     return;
 
-  static_cast<InfoBarControllerDelegate*>(infobar)->RemoveInfoBar();
+  infobar_controller_delegate->RemoveInfoBar();
 }
 
 #pragma mark - OverlayRequestCallbackInstaller
diff --git a/ios/chrome/browser/tabs/tab_helper_util.mm b/ios/chrome/browser/tabs/tab_helper_util.mm
index 9fad3af..975ce9b 100644
--- a/ios/chrome/browser/tabs/tab_helper_util.mm
+++ b/ios/chrome/browser/tabs/tab_helper_util.mm
@@ -19,7 +19,6 @@
 #import "components/language/ios/browser/ios_language_detection_tab_helper.h"
 #include "components/safe_browsing/core/features.h"
 #import "components/safe_browsing/ios/browser/safe_browsing_url_allow_list.h"
-#import "components/security_state/ios/insecure_input_tab_helper.h"
 #import "components/ukm/ios/ukm_url_recorder.h"
 #import "ios/chrome/browser/app_launcher/app_launcher_tab_helper.h"
 #import "ios/chrome/browser/autofill/autofill_tab_helper.h"
@@ -177,8 +176,6 @@
     AutofillTabHelper::FromWebState(web_state)->GetSuggestionProvider(),
   ]);
 
-  InsecureInputTabHelper::CreateForWebState(web_state);
-
   ukm::InitializeSourceUrlRecorderForWebState(web_state);
 
   ARQuickLookTabHelper::CreateForWebState(web_state);
diff --git a/ios/chrome/browser/ui/authentication/cells/table_view_account_item.mm b/ios/chrome/browser/ui/authentication/cells/table_view_account_item.mm
index 9a46276c8..dbacf379 100644
--- a/ios/chrome/browser/ui/authentication/cells/table_view_account_item.mm
+++ b/ios/chrome/browser/ui/authentication/cells/table_view_account_item.mm
@@ -109,7 +109,6 @@
 
   _imageView = [[UIImageView alloc] init];
   _imageView.translatesAutoresizingMaskIntoConstraints = NO;
-  _imageView.contentMode = UIViewContentModeCenter;
   _imageView.layer.masksToBounds = YES;
   _imageView.contentMode = UIViewContentModeScaleAspectFit;
   // Creates the image rounded corners.
diff --git a/ios/chrome/browser/ui/default_promo/BUILD.gn b/ios/chrome/browser/ui/default_promo/BUILD.gn
index 1126d55..532a9fbe 100644
--- a/ios/chrome/browser/ui/default_promo/BUILD.gn
+++ b/ios/chrome/browser/ui/default_promo/BUILD.gn
@@ -107,3 +107,29 @@
   ]
   frameworks = [ "UIKit.framework" ]
 }
+
+source_set("eg2_tests") {
+  defines = [ "CHROME_EARL_GREY_2" ]
+  configs += [
+    "//build/config/compiler:enable_arc",
+    "//build/config/ios:xctest_config",
+  ]
+  testonly = true
+  sources = [ "default_browser_promo_non_modal_egtest.mm" ]
+  deps = [
+    "//base",
+    "//base/test:test_support",
+    "//components/strings:components_strings_grit",
+    "//ios/chrome/app/strings:ios_chromium_strings_grit",
+    "//ios/chrome/app/strings:ios_strings_grit",
+    "//ios/chrome/browser/ui:feature_flags",
+    "//ios/chrome/browser/ui/infobars/banners:public",
+    "//ios/chrome/test:eg_test_support+eg2",
+    "//ios/chrome/test/earl_grey:eg_test_support+eg2",
+    "//ios/testing/earl_grey:eg_test_support+eg2",
+    "//ios/third_party/earl_grey2:test_lib",
+    "//net:test_support",
+    "//ui/base",
+  ]
+  frameworks = [ "UIKit.framework" ]
+}
diff --git a/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_egtest.mm b/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_egtest.mm
new file mode 100644
index 0000000..9216d7f1
--- /dev/null
+++ b/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_egtest.mm
@@ -0,0 +1,94 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/bind.h"
+#include "base/ios/ios_util.h"
+#import "base/test/ios/wait_util.h"
+#include "components/strings/grit/components_strings.h"
+#import "ios/chrome/browser/ui/infobars/banners/infobar_banner_constants.h"
+#include "ios/chrome/browser/ui/ui_feature_flags.h"
+#include "ios/chrome/grit/ios_chromium_strings.h"
+#include "ios/chrome/grit/ios_strings.h"
+#import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
+#import "ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.h"
+#import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h"
+#import "ios/chrome/test/earl_grey/chrome_test_case.h"
+#import "ios/testing/earl_grey/app_launch_manager.h"
+#import "ios/testing/earl_grey/earl_grey_test.h"
+#include "net/test/embedded_test_server/embedded_test_server.h"
+#include "net/test/embedded_test_server/http_request.h"
+#include "net/test/embedded_test_server/http_response.h"
+#include "ui/base/l10n/l10n_util_mac.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+using base::test::ios::WaitUntilConditionOrTimeout;
+using base::test::ios::kWaitForDownloadTimeout;
+
+namespace {
+
+// Returns a matcher to "Link You Copied" row.
+id<GREYMatcher> LinkYouCopiedMatcher() {
+  NSString* a11yLabelText = l10n_util::GetNSString(IDS_LINK_FROM_CLIPBOARD);
+  return grey_accessibilityLabel(a11yLabelText);
+}
+
+// Returns a matcher for the non modal promo title.
+id<GREYMatcher> NonModalTitleMatcher() {
+  NSString* a11yLabelText =
+      l10n_util::GetNSString(IDS_IOS_DEFAULT_BROWSER_NON_MODAL_TITLE);
+  return grey_accessibilityLabel(a11yLabelText);
+}
+
+// Returns a matcher for Omnibox in NTP.
+id<GREYMatcher> FakeOmniboxMatcher() {
+  NSString* a11yLabelText = l10n_util::GetNSString(IDS_OMNIBOX_EMPTY_HINT);
+  return grey_allOf(grey_accessibilityLabel(a11yLabelText),
+                    grey_kindOfClass([UIButton class]), nil);
+}
+
+}  // namespace
+
+// Tests Non Modal Default Promo.
+@interface NonModalEGTest : ChromeTestCase
+@end
+
+@implementation NonModalEGTest
+
+- (AppLaunchConfiguration)appConfigurationForTestCase {
+  AppLaunchConfiguration config;
+  config.features_enabled.push_back(kDefaultPromoNonModal);
+  return config;
+}
+
+- (void)setUp {
+  [super setUp];
+  [ChromeEarlGreyAppInterface clearDefaultBrowserPromoData];
+}
+
+- (void)tearDown {
+  [super tearDown];
+  [ChromeEarlGreyAppInterface clearDefaultBrowserPromoData];
+}
+
+// Test that a non modal default modal promo appears when it is triggered by
+// pasting a copied link.
+- (void)testNonModalAppears {
+  // Promos only appear on iOS 14 and up.
+  if (!base::ios::IsRunningOnIOS14OrLater()) {
+    return;
+  }
+
+  [ChromeEarlGreyAppInterface copyURLToPasteBoard];
+  [[EarlGrey selectElementWithMatcher:FakeOmniboxMatcher()]
+      performAction:grey_tap()];
+  [[EarlGrey selectElementWithMatcher:LinkYouCopiedMatcher()]
+      performAction:grey_tap()];
+  [[EarlGrey selectElementWithMatcher:NonModalTitleMatcher()]
+      assertWithMatcher:grey_sufficientlyVisible()];
+}
+
+@end
diff --git a/ios/chrome/browser/ui/default_promo/default_browser_utils.mm b/ios/chrome/browser/ui/default_promo/default_browser_utils.mm
index dc5cf2b..2df0a99 100644
--- a/ios/chrome/browser/ui/default_promo/default_browser_utils.mm
+++ b/ios/chrome/browser/ui/default_promo/default_browser_utils.mm
@@ -72,11 +72,11 @@
     "show_switch_description";
 
 // Time threshold before activity timestamps should be removed. Currently set to
-// seven days.
-const NSTimeInterval kUserActivityTimestampExpiration = 7 * 24 * 60 * 60;
+// 21 days.
+const NSTimeInterval kUserActivityTimestampExpiration = 21 * 24 * 60 * 60;
 // Time threshold for the last URL open before no URL opens likely indicates
 // Chrome is no longer the default browser.
-const NSTimeInterval kLatestURLOpenForDefaultBrowser = 7 * 24 * 60 * 60;
+const NSTimeInterval kLatestURLOpenForDefaultBrowser = 21 * 24 * 60 * 60;
 // Delay for the user to be reshown the fullscreen promo when the user taps on
 // the "Remind Me Later" button. 50 hours.
 const NSTimeInterval kRemindMeLaterPresentationDelay = 50 * 60 * 60;
@@ -84,7 +84,7 @@
 // Cool down between fullscreen promos. Currently set to 14 days.
 const NSTimeInterval kFullscreenPromoCoolDown = 14 * 24 * 60 * 60;
 
-// Helper function to clear all timestamps that occur later than 7 days ago and
+// Helper function to clear all timestamps that occur later than 21 days ago and
 // keep it only to 10 timestamps.
 NSMutableArray<NSDate*>* SanitizePastUserEvents(
     NSMutableArray<NSDate*>* pastUserEvents) {
diff --git a/ios/chrome/browser/ui/first_run/first_run_egtest.mm b/ios/chrome/browser/ui/first_run/first_run_egtest.mm
index 025b337..b4f9b82 100644
--- a/ios/chrome/browser/ui/first_run/first_run_egtest.mm
+++ b/ios/chrome/browser/ui/first_run/first_run_egtest.mm
@@ -25,6 +25,7 @@
 using chrome_test_util::ButtonWithAccessibilityLabel;
 using chrome_test_util::SyncSettingsConfirmButton;
 using chrome_test_util::MatchInWindowWithNumber;
+using chrome_test_util::MatchInBlockerWindowWithNumber;
 using chrome_test_util::FakeOmnibox;
 
 namespace {
@@ -177,12 +178,12 @@
   [[EarlGrey selectElementWithMatcher:MatchInWindowWithNumber(
                                           0, grey_accessibilityLabel(
                                                  @"Terms of Service"))]
-      assertWithMatcher:grey_sufficientlyVisible()];
+      assertWithMatcher:grey_notNil()];
 
   // Check UI Blocked in second window and that message is a button.
   [[EarlGrey
       selectElementWithMatcher:
-          MatchInWindowWithNumber(
+          MatchInBlockerWindowWithNumber(
               1,
               grey_text(l10n_util::GetNSString(
                   IDS_IOS_UI_BLOCKED_USE_OTHER_WINDOW_SWITCH_WINDOW_ACTION)))]
diff --git a/ios/chrome/browser/ui/main/ui_blocker_scene_agent.mm b/ios/chrome/browser/ui/main/ui_blocker_scene_agent.mm
index d5461ed..163af9f9 100644
--- a/ios/chrome/browser/ui/main/ui_blocker_scene_agent.mm
+++ b/ios/chrome/browser/ui/main/ui_blocker_scene_agent.mm
@@ -9,7 +9,6 @@
 #import "ios/chrome/app/blocking_scene_commands.h"
 #import "ios/chrome/browser/ui/blocking_overlay/blocking_overlay_view_controller.h"
 #import "ios/chrome/browser/ui/commands/command_dispatcher.h"
-#import "ios/chrome/common/ui/util/constraints_ui_util.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
@@ -17,10 +16,7 @@
 
 @interface UIBlockerSceneAgent ()
 
-// TODO(crbug.com/1107873): Create a coordinator to own this view controller.
-// The view controller that blocks all interactions with the scene.
-@property(nonatomic, strong)
-    BlockingOverlayViewController* blockingOverlayViewController;
+@property(nonatomic, strong) UIWindow* overlayWindow;
 
 @end
 
@@ -33,12 +29,11 @@
 }
 
 - (void)sceneStateWillHideModalOverlay:(SceneState*)sceneState {
-  if (!self.blockingOverlayViewController) {
+  if (!self.overlayWindow) {
     return;
   }
 
-  [self.blockingOverlayViewController.view removeFromSuperview];
-  self.blockingOverlayViewController = nil;
+  self.overlayWindow = nil;
 
   // When the scene has displayed the blocking overlay and isn't in foreground
   // when it exits it, the cached app switcher snapshot will have the overlay on
@@ -57,25 +52,34 @@
 #pragma mark - private
 
 - (void)displayBlockingOverlay {
-  if (self.blockingOverlayViewController) {
+  if (self.overlayWindow) {
     // The overlay is already displayed, nothing to do.
     return;
   }
 
-  // Make the window visible. This is because in safe mode it's not visible yet.
-  if (self.sceneState.window.hidden) {
-    [self.sceneState.window makeKeyAndVisible];
+  if (@available(iOS 13, *)) {
+    // No multiwindow before iOS 13 => no blocker necessary.
+    self.overlayWindow =
+        [[UIWindow alloc] initWithWindowScene:self.sceneState.scene];
   }
+  // The blocker is above everything, including the alerts, but below the status
+  // bar.
+  self.overlayWindow.windowLevel = UIWindowLevelStatusBar - 1;
+  NSString* a11yIdentifier = [@"blocker-"
+      stringByAppendingString:self.sceneState.window.accessibilityIdentifier];
+  self.overlayWindow.accessibilityIdentifier = a11yIdentifier;
 
-  self.blockingOverlayViewController =
+  // TODO(crbug.com/1107873): Create a coordinator to own this view controller.
+  // The view controller that blocks all interactions with the scene.
+  BlockingOverlayViewController* blockingOverlayViewController =
+
       [[BlockingOverlayViewController alloc] init];
-  self.blockingOverlayViewController.blockingSceneCommandHandler =
+  blockingOverlayViewController.blockingSceneCommandHandler =
       HandlerForProtocol(self.sceneState.appState.appCommandDispatcher,
                          BlockingSceneCommands);
-  UIView* overlayView = self.blockingOverlayViewController.view;
-  [self.sceneState.window addSubview:overlayView];
-  overlayView.translatesAutoresizingMaskIntoConstraints = NO;
-  AddSameConstraints(self.sceneState.window, overlayView);
+
+  self.overlayWindow.rootViewController = blockingOverlayViewController;
+  [self.overlayWindow makeKeyAndVisible];
 }
 
 @end
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_cell.h b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_cell.h
index 2798a2d..8dfc6d6 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_cell.h
+++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_cell.h
@@ -17,6 +17,13 @@
 - (void)closeButtonTappedForCell:(GridCell*)cell;
 @end
 
+// Values describing the editing state of the cell.
+typedef NS_ENUM(NSUInteger, GridCellState) {
+  GridCellStateNotEditing = 1,
+  GridCellStateEditingUnselected,
+  GridCellStateEditingSelected,
+};
+
 // A square-ish cell in a grid. Contains an icon, title, snapshot, and close
 // button.
 @interface GridCell : UICollectionViewCell
@@ -33,6 +40,8 @@
 @property(nonatomic, copy) NSString* title;
 @property(nonatomic, assign) BOOL titleHidden;
 @property(nonatomic, readonly) UIDragPreviewParameters* dragPreviewParameters;
+// The current state which the cell should display.
+@property(nonatomic, assign) GridCellState state;
 @end
 
 // A GridCell for use in animated transitions that only shows selection state
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_cell.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_cell.mm
index c92f5c1..7c16885 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_cell.mm
+++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_cell.mm
@@ -9,6 +9,7 @@
 #include "base/check.h"
 #include "base/notreached.h"
 #import "ios/chrome/browser/ui/elements/top_aligned_image_view.h"
+#import "ios/chrome/browser/ui/tab_switcher/tab_grid/features.h"
 #import "ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_constants.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
 #import "ios/chrome/common/ui/colors/semantic_color_names.h"
@@ -58,10 +59,13 @@
 @property(nonatomic, weak) TopAlignedImageView* snapshotView;
 @property(nonatomic, weak) UILabel* titleLabel;
 @property(nonatomic, weak) UIImageView* closeIconView;
+@property(nonatomic, weak) UIImageView* selectIconView;
 // Since the close icon dimensions are smaller than the recommended tap target
 // size, use an overlaid tap target button.
 @property(nonatomic, weak) UIButton* closeTapTargetButton;
 @property(nonatomic, weak) UIView* border;
+// Whether or not the cell is currently displaying an editing state.
+@property(nonatomic, readonly) BOOL isInSelectionMode;
 @end
 
 @implementation GridCell
@@ -71,6 +75,8 @@
 - (instancetype)initWithFrame:(CGRect)frame {
   self = [super initWithFrame:frame];
   if (self) {
+    _state = GridCellStateNotEditing;
+
     // The background color must be set to avoid the corners behind the rounded
     // layer from showing when dragging and dropping. Unfortunately, using
     // |UIColor.clearColor| here will not remain transparent, so a solid color
@@ -294,12 +300,27 @@
   UIImageView* closeIconView = [[UIImageView alloc] init];
   closeIconView.translatesAutoresizingMaskIntoConstraints = NO;
   closeIconView.contentMode = UIViewContentModeCenter;
+  closeIconView.hidden = self.isInSelectionMode;
   closeIconView.image = [[UIImage imageNamed:@"grid_cell_close_button"]
       imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
 
+  if (IsTabsBulkActionsEnabled()) {
+    UIImageView* selectIconView = [[UIImageView alloc] init];
+    selectIconView.translatesAutoresizingMaskIntoConstraints = NO;
+    selectIconView.contentMode = UIViewContentModeCenter;
+    selectIconView.hidden = !self.isInSelectionMode;
+
+    selectIconView.image = [[self selectIconImageForCurrentState]
+        imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
+
+    [topBar addSubview:selectIconView];
+    _selectIconView = selectIconView;
+  }
+
   [topBar addSubview:iconView];
   [topBar addSubview:titleLabel];
   [topBar addSubview:closeIconView];
+
   _iconView = iconView;
   _titleLabel = titleLabel;
   _closeIconView = closeIconView;
@@ -342,6 +363,20 @@
         constraintEqualToAnchor:topBar.trailingAnchor
                        constant:-kGridCellCloseButtonContentInset],
   ];
+
+  if (_selectIconView) {
+    constraints = [constraints arrayByAddingObjectsFromArray:@[
+      [closeIconView.leadingAnchor
+          constraintEqualToAnchor:_selectIconView.leadingAnchor],
+      [closeIconView.trailingAnchor
+          constraintEqualToAnchor:_selectIconView.trailingAnchor],
+      [closeIconView.topAnchor
+          constraintEqualToAnchor:_selectIconView.topAnchor],
+      [closeIconView.bottomAnchor
+          constraintEqualToAnchor:_selectIconView.bottomAnchor],
+    ]];
+  }
+
   [NSLayoutConstraint activateConstraints:constraints];
   [titleLabel
       setContentCompressionResistancePriority:UILayoutPriorityDefaultLow
@@ -354,6 +389,17 @@
   return topBar;
 }
 
+- (UIImage*)selectIconImageForCurrentState {
+  if (@available(iOS 13, *)) {
+    if (_state == GridCellStateEditingUnselected) {
+      return [UIImage systemImageNamed:@"circle"];
+    }
+    return [UIImage systemImageNamed:@"checkmark.circle.fill"];
+  }
+  NOTREACHED();
+  return nil;
+}
+
 // Update constraints of top bar when system font size changes. If accessibility
 // font size is chosen, the favicon will be hidden, and the title text will be
 // shown in two lines.
@@ -371,6 +417,48 @@
   }
 }
 
+- (BOOL)isInSelectionMode {
+  return self.state != GridCellStateNotEditing;
+}
+
+- (void)setState:(GridCellState)state {
+  if (state == _state) {
+    return;
+  }
+
+  _state = state;
+
+  _closeTapTargetButton.enabled = !self.isInSelectionMode;
+  self.selectIconView.image = [[self selectIconImageForCurrentState]
+      imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
+
+  __weak GridCell* weakSelf = self;
+  [UIView animateWithDuration:0.02f
+      animations:^{
+        GridCell* strongSelf = weakSelf;
+        if (strongSelf) {
+          if (strongSelf.isInSelectionMode) {
+            strongSelf.border.alpha = 0.0;
+            strongSelf.closeIconView.alpha = 0.0;
+            strongSelf.selectIconView.alpha = 1.0;
+          } else {
+            strongSelf.border.alpha = 1.0;
+            strongSelf.closeIconView.alpha = 1.0;
+            strongSelf.selectIconView.alpha = 0.0;
+          }
+        }
+      }
+      completion:^(BOOL finished) {
+        GridCell* strongSelf = weakSelf;
+        if (strongSelf) {
+          BOOL isInSelectionMode = strongSelf.isInSelectionMode;
+          strongSelf.border.hidden = isInSelectionMode;
+          strongSelf.closeIconView.hidden = isInSelectionMode;
+          strongSelf.selectIconView.hidden = !isInSelectionMode;
+        }
+      }];
+}
+
 // Sets up the selection border. The tint color is set when the theme is
 // selected.
 - (void)setupSelectedBackgroundView {
@@ -378,6 +466,7 @@
   self.selectedBackgroundView.backgroundColor =
       [UIColor colorNamed:kGridBackgroundColor];
   UIView* border = [[UIView alloc] init];
+  border.hidden = self.isInSelectionMode;
   border.translatesAutoresizingMaskIntoConstraints = NO;
   border.backgroundColor = [UIColor colorNamed:kGridBackgroundColor];
   border.layer.cornerRadius = kGridCellCornerRadius +
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.h b/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.h
index 441d0fe..6e2f4fb0 100644
--- a/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.h
+++ b/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.h
@@ -592,6 +592,14 @@
 // Clear the watcher list, stopping monitoring.
 + (void)stopWatcher;
 
+#pragma mark - Default Browser Promo Utilities
+
+// Clears default browser promo data to restart capping for the promos.
++ (void)clearDefaultBrowserPromoData;
+
+// Copies a chrome:// URL that doesn't require internet connection.
++ (void)copyURLToPasteBoard;
+
 @end
 
 #endif  // IOS_CHROME_TEST_EARL_GREY_CHROME_EARL_GREY_APP_INTERFACE_H_
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.mm b/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.mm
index e620a99..de82c2d 100644
--- a/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.mm
+++ b/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.mm
@@ -1206,4 +1206,25 @@
   }
 }
 
+#pragma mark - Default Browser Promo Utilities
+
++ (void)clearDefaultBrowserPromoData {
+  NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
+  NSArray<NSString*>* keys = @[
+    @"lastTimeUserInteractedWithFullscreenPromo",
+    @"userHasInteractedWithFullscreenPromo",
+    @"userHasInteractedWithTailoredFullscreenPromo",
+    @"userInteractedWithNonModalPromoCount",
+    @"remindMeLaterPromoActionInteraction",
+  ];
+  for (NSString* key in keys) {
+    [defaults removeObjectForKey:key];
+  }
+}
+
++ (void)copyURLToPasteBoard {
+  UIPasteboard* pasteboard = UIPasteboard.generalPasteboard;
+  pasteboard.URL = [NSURL URLWithString:@"chrome://version"];
+}
+
 @end
diff --git a/ios/chrome/test/earl_grey/chrome_matchers.h b/ios/chrome/test/earl_grey/chrome_matchers.h
index 3b14840..892b318b 100644
--- a/ios/chrome/test/earl_grey/chrome_matchers.h
+++ b/ios/chrome/test/earl_grey/chrome_matchers.h
@@ -26,6 +26,11 @@
 id<GREYMatcher> MatchInWindowWithNumber(int window_number,
                                         id<GREYMatcher> matcher);
 
+// Same as above, but for the blocking window which only appears when a blocking
+// UI is shown in another window.
+id<GREYMatcher> MatchInBlockerWindowWithNumber(int window_number,
+                                               id<GREYMatcher> matcher);
+
 // Matcher for element with accessibility label corresponding to |message_id|
 // and accessibility trait UIAccessibilityTraitButton.
 id<GREYMatcher> ButtonWithAccessibilityLabelId(int message_id);
diff --git a/ios/chrome/test/earl_grey/chrome_matchers.mm b/ios/chrome/test/earl_grey/chrome_matchers.mm
index 64dc408..7a265c5 100644
--- a/ios/chrome/test/earl_grey/chrome_matchers.mm
+++ b/ios/chrome/test/earl_grey/chrome_matchers.mm
@@ -20,12 +20,22 @@
   return [ChromeMatchersAppInterface windowWithNumber:window_number];
 }
 
+id<GREYMatcher> BlockerWindowWithNumber(int window_number) {
+  return [ChromeMatchersAppInterface blockerWindowWithNumber:window_number];
+}
+
 id<GREYMatcher> MatchInWindowWithNumber(int window_number,
                                         id<GREYMatcher> matcher) {
   return grey_allOf(matcher, grey_ancestor(WindowWithNumber(window_number)),
                     nil);
 }
 
+id<GREYMatcher> MatchInBlockerWindowWithNumber(int window_number,
+                                               id<GREYMatcher> matcher) {
+  return grey_allOf(matcher,
+                    grey_ancestor(BlockerWindowWithNumber(window_number)), nil);
+}
+
 id<GREYMatcher> ButtonWithAccessibilityLabel(NSString* label) {
   return [ChromeMatchersAppInterface buttonWithAccessibilityLabel:label];
 }
diff --git a/ios/chrome/test/earl_grey/chrome_matchers_app_interface.h b/ios/chrome/test/earl_grey/chrome_matchers_app_interface.h
index b0ec308..9f6a0edb 100644
--- a/ios/chrome/test/earl_grey/chrome_matchers_app_interface.h
+++ b/ios/chrome/test/earl_grey/chrome_matchers_app_interface.h
@@ -23,6 +23,10 @@
 // test will have consecutive numbers.
 + (id<GREYMatcher>)windowWithNumber:(int)windowNumber;
 
+// Same as above, but for the blocking window which only appears when a blocking
+// UI is shown in another window.
++ (id<GREYMatcher>)blockerWindowWithNumber:(int)windowNumber;
+
 // Matcher for element with accessibility label corresponding to |label| and
 // accessibility trait UIAccessibilityTraitButton.
 + (id<GREYMatcher>)buttonWithAccessibilityLabel:(NSString*)label;
diff --git a/ios/chrome/test/earl_grey/chrome_matchers_app_interface.mm b/ios/chrome/test/earl_grey/chrome_matchers_app_interface.mm
index 8172812e..044ba8e 100644
--- a/ios/chrome/test/earl_grey/chrome_matchers_app_interface.mm
+++ b/ios/chrome/test/earl_grey/chrome_matchers_app_interface.mm
@@ -143,6 +143,12 @@
       grey_kindOfClass([UIWindow class]), nil);
 }
 
++ (id<GREYMatcher>)blockerWindowWithNumber:(int)windowNumber {
+  return grey_allOf(grey_accessibilityID([NSString
+                        stringWithFormat:@"blocker-%d", windowNumber]),
+                    grey_kindOfClass([UIWindow class]), nil);
+}
+
 + (id<GREYMatcher>)buttonWithAccessibilityLabel:(NSString*)label {
   return grey_allOf(grey_accessibilityLabel(label),
                     grey_accessibilityTrait(UIAccessibilityTraitButton), nil);
diff --git a/ios/chrome/test/earl_grey2/BUILD.gn b/ios/chrome/test/earl_grey2/BUILD.gn
index 905ab4c..7ebe4e9 100644
--- a/ios/chrome/test/earl_grey2/BUILD.gn
+++ b/ios/chrome/test/earl_grey2/BUILD.gn
@@ -87,6 +87,7 @@
     "//ios/chrome/browser/ui/autofill:eg2_tests",
     "//ios/chrome/browser/ui/autofill/manual_fill:eg2_tests",
     "//ios/chrome/browser/ui/content_suggestions:eg2_tests",
+    "//ios/chrome/browser/ui/default_promo:eg2_tests",
     "//ios/chrome/browser/ui/integration_tests:eg2_tests",
   ]
   data_deps = [ ":ios_chrome_eg2tests" ]
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
index 1628b93..58fa0d8 100644
--- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-c1330f74a101803f7a4608f42e720b8ae9b56d5e
\ No newline at end of file
+c264710ebd92f1ae10819084c4222c34133e4616
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
index 67818c09..b36c03e 100644
--- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-0fba4c7a8f73d583e6d5b63bc30a51d3f750561f
\ No newline at end of file
+56f58e50a8e8fab40a8cd4071d9c1927f9edbf8e
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
index a8f261d..26ef6fc 100644
--- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-39762475023efcb71a580d966cd154bfc94428a0
\ No newline at end of file
+8326a6c82e1368752fd0f70ea247cd4181c43211
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1
index acc28696..2c18738 100644
--- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-182cd266f84620870ca6aa7aa0f5c2f37607e0c2
\ No newline at end of file
+2533f45acec3a6ba710290fbf37a94c2ff1e2289
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
index 0bab18d1..6aa1e334 100644
--- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-32a9de047a6bb5d7fd95eedc2e53408ed46484ae
\ No newline at end of file
+6b79013456ace4ba51f8706b6822c242e0bdb5d2
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
index 9ebdac7..a9b72cbd 100644
--- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-22264ef7acfd4a43651758e14fe264788feecced
\ No newline at end of file
+4c1f26c45e5bdb87351594a306bd8948a5e0961f
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
index 5b25701..59c26cc8 100644
--- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-bb2f3e0d0e2f6dd19cfd95bb8f530a68e11cc28d
\ No newline at end of file
+dc6c1a8b8dcc532253a05ffe26371a6cc7f51a8b
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
index 448fa581..ede89f2 100644
--- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-982b14152443d6da8024bbf3366c7f443f70207e
\ No newline at end of file
+4c5136e9f14b17937d6aa2f9237cd68230189cbf
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
index ca3d966d..bfb1a2f7 100644
--- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-5cfe103a0971a61984f18d1afeb5f1f7253741ec
\ No newline at end of file
+93264464e608adfee917c7c552876407cd00a5e9
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
index abaeaa21..79821cc3 100644
--- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-c45a32ffd1d253a9ceda75d90dd5921b460cf25a
\ No newline at end of file
+21f73900f91723771e80228f2ec4f76d4de91b1c
\ No newline at end of file
diff --git a/ios/web/public/security/ssl_status.h b/ios/web/public/security/ssl_status.h
index cdb6cff..fb83491 100644
--- a/ios/web/public/security/ssl_status.h
+++ b/ios/web/public/security/ssl_status.h
@@ -5,7 +5,6 @@
 #ifndef IOS_WEB_PUBLIC_SECURITY_SSL_STATUS_H_
 #define IOS_WEB_PUBLIC_SECURITY_SSL_STATUS_H_
 
-#include <memory>
 #include <string>
 
 #include "ios/web/public/security/security_style.h"
@@ -16,20 +15,6 @@
 
 // Collects the SSL information for this NavigationItem.
 struct SSLStatus {
-  // SSLStatus consumers can attach instances of derived UserData classes to an
-  // SSLStatus. This allows an embedder to attach data to the NavigationItem
-  // without SSLStatus having to know about it. Derived UserData classes have to
-  // be cloneable since NavigationItems are cloned during navigations.
-  class UserData {
-   public:
-    UserData() {}
-    virtual ~UserData() = default;
-    virtual std::unique_ptr<UserData> Clone() = 0;
-
-   private:
-    DISALLOW_COPY_AND_ASSIGN(UserData);
-  };
-
   // Flags used for the page security content status.
   enum ContentStatusFlags {
     // HTTP page, or HTTPS page with no insecure content.
@@ -56,7 +41,6 @@
            cert_status == status.cert_status &&
            content_status == status.content_status;
     // |cert_status_host| is not used for comparison intentionally.
-    // |user_data| also not used for comparison.
   }
 
   web::SecurityStyle security_style;
@@ -69,10 +53,6 @@
   // Used to check if |cert_status| is still valid or needs to be recalculated
   // (e.g. after redirect).
   std::string cert_status_host;
-  // Embedder-specific data attached to the SSLStatus is cloned when an
-  // |SSLStatus| is assigned or copy-constructed, and is cleared when a
-  // navigation commits.
-  std::unique_ptr<UserData> user_data;
 };
 
 }  // namespace web
diff --git a/ios/web/security/ssl_status.cc b/ios/web/security/ssl_status.cc
index 52502d0a..c5d15044 100644
--- a/ios/web/security/ssl_status.cc
+++ b/ios/web/security/ssl_status.cc
@@ -16,8 +16,7 @@
       certificate(other.certificate),
       cert_status(other.cert_status),
       content_status(other.content_status),
-      cert_status_host(other.cert_status_host),
-      user_data(other.user_data ? other.user_data->Clone() : nullptr) {}
+      cert_status_host(other.cert_status_host) {}
 
 SSLStatus& SSLStatus::operator=(SSLStatus other) {
   security_style = other.security_style;
@@ -25,7 +24,6 @@
   cert_status = other.cert_status;
   content_status = other.content_status;
   cert_status_host = other.cert_status_host;
-  user_data = other.user_data ? other.user_data->Clone() : nullptr;
   return *this;
 }
 
diff --git a/ios/web/security/ssl_status_unittest.cc b/ios/web/security/ssl_status_unittest.cc
index 542c959..fce7cd9 100644
--- a/ios/web/security/ssl_status_unittest.cc
+++ b/ios/web/security/ssl_status_unittest.cc
@@ -11,25 +11,6 @@
 
 using SSLStatusTest = PlatformTest;
 
-// The TrivialUserData class stores an integer and copies that integer when
-// its Clone() method is called.
-class TrivialUserData : public SSLStatus::UserData {
- public:
-  TrivialUserData() : value_(0) {}
-  explicit TrivialUserData(int value) : value_(value) {}
-  ~TrivialUserData() override {}
-
-  int value() { return value_; }
-
-  std::unique_ptr<SSLStatus::UserData> Clone() override {
-    return std::make_unique<TrivialUserData>(value_);
-  }
-
- private:
-  int value_;
-  DISALLOW_COPY_AND_ASSIGN(TrivialUserData);
-};
-
 // Tests the Equals() method of the SSLStatus class.
 TEST_F(SSLStatusTest, SSLStatusEqualityTest) {
   SSLStatus status;
@@ -49,28 +30,5 @@
   SSLStatus copied_status = status;
   EXPECT_TRUE(status.Equals(copied_status));
   EXPECT_TRUE(copied_status.Equals(status));
-
-  // Verify a copied SSLStatus still Equals() the original after a UserData is
-  // assigned to it.
-  copied_status.user_data = std::make_unique<TrivialUserData>();
-  EXPECT_TRUE(status.Equals(copied_status));
-  EXPECT_TRUE(copied_status.Equals(status));
 }
-
-// Tests that copying a SSLStatus class clones its UserData.
-TEST_F(SSLStatusTest, SSLStatusCloningTest) {
-  const int kMagic = 1234;
-  SSLStatus status;
-  status.user_data = std::make_unique<TrivialUserData>(kMagic);
-
-  // Verify that copying a SSLStatus with a UserData assigned will Clone()
-  // the UserData to the new copy.
-  SSLStatus copied_status = status;
-  EXPECT_TRUE(status.Equals(copied_status));
-  EXPECT_TRUE(copied_status.Equals(status));
-  TrivialUserData* data =
-      static_cast<TrivialUserData*>(copied_status.user_data.get());
-  EXPECT_EQ(kMagic, data->value());
-}
-
 }  // namespace web
diff --git a/media/audio/audio_input_device.cc b/media/audio/audio_input_device.cc
index f6c15f61..803c1430 100644
--- a/media/audio/audio_input_device.cc
+++ b/media/audio/audio_input_device.cc
@@ -290,7 +290,7 @@
     alive_checker_->Start();
 }
 
-void AudioInputDevice::OnError() {
+void AudioInputDevice::OnError(AudioCapturerSource::ErrorCode code) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   TRACE_EVENT0("audio", "AudioInputDevice::OnError");
 
@@ -298,7 +298,6 @@
   if (state_ < CREATING_STREAM)
     return;
 
-
   if (state_ == CREATING_STREAM) {
     // At this point, we haven't attempted to start the audio thread.
     // Accessing the hardware might have failed or we may have reached
@@ -308,7 +307,10 @@
     // a local audio source).
     had_error_ = kErrorDuringCreation;
     callback_->OnCaptureError(
-        "Maximum allowed input device limit reached or OS failure.");
+        code, code == AudioCapturerSource::ErrorCode::kSystemPermissions
+                  ? "Unable to open due to failing an OS Permissions check."
+                  : "Maximum allowed input device limit reached or an OS "
+                    "failure occured.");
   } else {
     // Don't dereference the callback object if the audio thread
     // is stopped or stopping.  That could mean that the callback
@@ -318,7 +320,7 @@
     // a callback object via Start() and clear it in Stop().
     had_error_ = kErrorDuringCapture;
     if (audio_thread_)
-      callback_->OnCaptureError("IPC delegate state error.");
+      callback_->OnCaptureError(code, "IPC delegate state error.");
   }
 }
 
@@ -351,7 +353,8 @@
 }
 
 void AudioInputDevice::DetectedDeadInputStream() {
-  callback_->OnCaptureError("No audio received from audio capture device.");
+  callback_->OnCaptureError(media::AudioCapturerSource::ErrorCode::kUnknown,
+                            "No audio received from audio capture device.");
 }
 
 // AudioInputDevice::AudioThreadCallback
@@ -431,14 +434,16 @@
         "Incorrect buffer sequence. Expected = %u. Actual = %u.",
         last_buffer_id_ + 1, buffer->params.id);
     LOG(ERROR) << message;
-    capture_callback_->OnCaptureError(message);
+    capture_callback_->OnCaptureError(
+        media::AudioCapturerSource::ErrorCode::kUnknown, message);
   }
   if (current_segment_id_ != pending_data) {
     std::string message = base::StringPrintf(
         "Segment id not matching. Remote = %u. Local = %" PRIuS ".",
         pending_data, current_segment_id_);
     LOG(ERROR) << message;
-    capture_callback_->OnCaptureError(message);
+    capture_callback_->OnCaptureError(
+        media::AudioCapturerSource::ErrorCode::kUnknown, message);
   }
   last_buffer_id_ = buffer->params.id;
 
diff --git a/media/audio/audio_input_device.h b/media/audio/audio_input_device.h
index a573c0d..ab9d0991 100644
--- a/media/audio/audio_input_device.h
+++ b/media/audio/audio_input_device.h
@@ -116,7 +116,7 @@
   void OnStreamCreated(base::ReadOnlySharedMemoryRegion shared_memory_region,
                        base::SyncSocket::ScopedHandle socket_handle,
                        bool initially_muted) override;
-  void OnError() override;
+  void OnError(AudioCapturerSource::ErrorCode code) override;
   void OnMuted(bool is_muted) override;
   void OnIPCClosed() override;
 
diff --git a/media/audio/audio_input_device_unittest.cc b/media/audio/audio_input_device_unittest.cc
index d951d34..b0c1eba9 100644
--- a/media/audio/audio_input_device_unittest.cc
+++ b/media/audio/audio_input_device_unittest.cc
@@ -57,7 +57,9 @@
                     double volume,
                     bool key_pressed));
 
-  MOCK_METHOD1(OnCaptureError, void(const std::string& message));
+  MOCK_METHOD2(OnCaptureError,
+               void(AudioCapturerSource::ErrorCode code,
+                    const std::string& message));
   MOCK_METHOD1(OnCaptureMuted, void(bool is_muted));
 };
 
@@ -77,7 +79,8 @@
 }
 
 ACTION_P(ReportStateChange, device) {
-  static_cast<AudioInputIPCDelegate*>(device)->OnError();
+  static_cast<AudioInputIPCDelegate*>(device)->OnError(
+      media::AudioCapturerSource::ErrorCode::kUnknown);
 }
 
 // Verify that we get an OnCaptureError() callback if CreateStream fails.
@@ -93,7 +96,8 @@
   device->Initialize(params, &callback);
   EXPECT_CALL(*input_ipc, CreateStream(_, _, _, _))
       .WillOnce(ReportStateChange(device.get()));
-  EXPECT_CALL(callback, OnCaptureError(_));
+  EXPECT_CALL(callback,
+              OnCaptureError(AudioCapturerSource::ErrorCode::kUnknown, _));
   EXPECT_CALL(*input_ipc, CloseStream());
   device->Start();
   device->Stop();
diff --git a/media/audio/audio_input_ipc.h b/media/audio/audio_input_ipc.h
index 1f2192a..28663a9 100644
--- a/media/audio/audio_input_ipc.h
+++ b/media/audio/audio_input_ipc.h
@@ -9,6 +9,7 @@
 
 #include "base/memory/read_only_shared_memory_region.h"
 #include "base/sync_socket.h"
+#include "media/base/audio_capturer_source.h"
 #include "media/base/audio_parameters.h"
 #include "media/base/media_export.h"
 
@@ -30,7 +31,7 @@
       bool initially_muted) = 0;
 
   // Called when state of an audio stream has changed.
-  virtual void OnError() = 0;
+  virtual void OnError(AudioCapturerSource::ErrorCode code) = 0;
 
   // Called when an audio stream is muted or unmuted.
   virtual void OnMuted(bool is_muted) = 0;
diff --git a/media/base/audio_capturer_source.h b/media/base/audio_capturer_source.h
index ca91a598..7ec2136e 100644
--- a/media/base/audio_capturer_source.h
+++ b/media/base/audio_capturer_source.h
@@ -23,6 +23,11 @@
 class AudioCapturerSource
     : public base::RefCountedThreadSafe<media::AudioCapturerSource> {
  public:
+  enum class ErrorCode {
+    kUnknown = 0,
+    kSystemPermissions = 1,
+  };
+
   class CaptureCallback {
    public:
     // Signals that audio recording has been started.  Called asynchronously
@@ -40,7 +45,7 @@
                          bool key_pressed) = 0;
 
     // Signals an error has occurred.
-    virtual void OnCaptureError(const std::string& message) = 0;
+    virtual void OnCaptureError(ErrorCode code, const std::string& message) = 0;
 
     // Signals the muted state has changed. May be called before
     // OnCaptureStarted.
diff --git a/media/blink/multibuffer.cc b/media/blink/multibuffer.cc
index 84bbc6b..d4d04e5 100644
--- a/media/blink/multibuffer.cc
+++ b/media/blink/multibuffer.cc
@@ -52,11 +52,11 @@
 // MultiBuffer::GlobalLRU
 //
 MultiBuffer::GlobalLRU::GlobalLRU(
-    const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
+    scoped_refptr<base::SingleThreadTaskRunner> task_runner)
     : max_size_(0),
       data_size_(0),
       background_pruning_pending_(false),
-      task_runner_(task_runner) {}
+      task_runner_(std::move(task_runner)) {}
 
 MultiBuffer::GlobalLRU::~GlobalLRU() {
   // By the time we're freed, all blocks should have been removed,
diff --git a/media/blink/multibuffer.h b/media/blink/multibuffer.h
index 96d6f204..1701254 100644
--- a/media/blink/multibuffer.h
+++ b/media/blink/multibuffer.h
@@ -138,8 +138,7 @@
   class MEDIA_BLINK_EXPORT GlobalLRU : public base::RefCounted<GlobalLRU> {
    public:
     typedef MultiBufferGlobalBlockId GlobalBlockId;
-    explicit GlobalLRU(
-        const scoped_refptr<base::SingleThreadTaskRunner>& task_runner);
+    explicit GlobalLRU(scoped_refptr<base::SingleThreadTaskRunner> task_runner);
 
     // Free elements from cache if possible.
     // Don't free more than |max_to_free| blocks.
diff --git a/media/blink/multibuffer_data_source.cc b/media/blink/multibuffer_data_source.cc
index c157471..ad7f8395 100644
--- a/media/blink/multibuffer_data_source.cc
+++ b/media/blink/multibuffer_data_source.cc
@@ -168,8 +168,8 @@
 
   SetReader(new MultiBufferReader(
       url_data_->multibuffer(), first_byte_position, last_byte_position,
-      base::BindRepeating(&MultibufferDataSource::ProgressCallback,
-                          weak_ptr_)));
+      base::BindRepeating(&MultibufferDataSource::ProgressCallback, weak_ptr_),
+      render_task_runner_));
   reader_->SetIsClientAudioElement(is_client_audio_element_);
   UpdateBufferSizes();
 }
@@ -182,7 +182,8 @@
 
   reader_ = std::make_unique<MultiBufferReader>(
       url_data_->multibuffer(), first_byte_position, last_byte_position,
-      base::BindRepeating(&MultibufferDataSource::ProgressCallback, weak_ptr_));
+      base::BindRepeating(&MultibufferDataSource::ProgressCallback, weak_ptr_),
+      render_task_runner_);
   UpdateBufferSizes();
 }
 
diff --git a/media/blink/multibuffer_data_source_unittest.cc b/media/blink/multibuffer_data_source_unittest.cc
index bf7e74c..68191fa 100644
--- a/media/blink/multibuffer_data_source_unittest.cc
+++ b/media/blink/multibuffer_data_source_unittest.cc
@@ -6,15 +6,20 @@
 #include <stdint.h>
 
 #include <memory>
+#include <utility>
 
 #include "base/bind.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/run_loop.h"
+#include "base/single_thread_task_runner.h"
 #include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/test/task_environment.h"
 #include "media/base/media_switches.h"
 #include "media/base/media_util.h"
 #include "media/base/mock_filters.h"
 #include "media/base/test_helpers.h"
+#include "media/blink/blink_platform_with_task_environment.h"
 #include "media/blink/buffered_data_source_host_impl.h"
 #include "media/blink/mock_resource_fetch_context.h"
 #include "media/blink/mock_webassociatedurlloader.h"
@@ -48,10 +53,14 @@
 
 class TestMultiBufferDataProvider : public ResourceMultiBufferDataProvider {
  public:
-  TestMultiBufferDataProvider(UrlData* url_data, MultiBuffer::BlockId pos)
+  TestMultiBufferDataProvider(
+      UrlData* url_data,
+      MultiBuffer::BlockId pos,
+      scoped_refptr<base::SingleThreadTaskRunner> task_runner)
       : ResourceMultiBufferDataProvider(url_data,
                                         pos,
-                                        false /* is_client_audio_element */) {
+                                        false /* is_client_audio_element */,
+                                        std::move(task_runner)) {
     CHECK(test_data_providers.insert(this).second);
   }
   ~TestMultiBufferDataProvider() override {
@@ -82,12 +91,17 @@
 
 class TestResourceMultiBuffer : public ResourceMultiBuffer {
  public:
-  explicit TestResourceMultiBuffer(UrlData* url_data, int shift)
-      : ResourceMultiBuffer(url_data, shift) {}
+  TestResourceMultiBuffer(
+      UrlData* url_data,
+      int shift,
+      scoped_refptr<base::SingleThreadTaskRunner> task_runner)
+      : ResourceMultiBuffer(url_data, shift, task_runner),
+        task_runner_(std::move(task_runner)) {}
 
   std::unique_ptr<MultiBuffer::DataProvider> CreateWriter(const BlockId& pos,
                                                           bool) override {
-    auto writer = std::make_unique<TestMultiBufferDataProvider>(url_data_, pos);
+    auto writer = std::make_unique<TestMultiBufferDataProvider>(url_data_, pos,
+                                                                task_runner_);
     writer->Start();
     return writer;
   }
@@ -112,45 +126,55 @@
       return false;
     return GetProvider()->loading();
   }
+
+ private:
+  const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
 };
 
 class TestUrlData : public UrlData {
  public:
-  TestUrlData(const GURL& url, CorsMode cors_mode, UrlIndex* url_index)
-      : UrlData(url, cors_mode, url_index),
-        block_shift_(url_index->block_shift()) {}
+  TestUrlData(const GURL& url,
+              CorsMode cors_mode,
+              UrlIndex* url_index,
+              scoped_refptr<base::SingleThreadTaskRunner> task_runner)
+      : UrlData(url, cors_mode, url_index, task_runner),
+        block_shift_(url_index->block_shift()),
+        task_runner_(std::move(task_runner)) {}
 
   ResourceMultiBuffer* multibuffer() override {
     if (!test_multibuffer_.get()) {
-      test_multibuffer_ =
-          std::make_unique<TestResourceMultiBuffer>(this, block_shift_);
+      test_multibuffer_ = std::make_unique<TestResourceMultiBuffer>(
+          this, block_shift_, task_runner_);
     }
     return test_multibuffer_.get();
   }
 
   TestResourceMultiBuffer* test_multibuffer() {
     if (!test_multibuffer_.get()) {
-      test_multibuffer_ =
-          std::make_unique<TestResourceMultiBuffer>(this, block_shift_);
+      test_multibuffer_ = std::make_unique<TestResourceMultiBuffer>(
+          this, block_shift_, task_runner_);
     }
     return test_multibuffer_.get();
   }
 
- protected:
+ private:
   ~TestUrlData() override = default;
-  const int block_shift_;
 
+  const int block_shift_;
   std::unique_ptr<TestResourceMultiBuffer> test_multibuffer_;
+  const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
 };
 
 class TestUrlIndex : public UrlIndex {
  public:
-  explicit TestUrlIndex(ResourceFetchContext* fetch_context)
-      : UrlIndex(fetch_context) {}
+  TestUrlIndex(ResourceFetchContext* fetch_context,
+               scoped_refptr<base::SingleThreadTaskRunner> task_runner)
+      : UrlIndex(fetch_context, task_runner),
+        task_runner_(std::move(task_runner)) {}
 
   scoped_refptr<UrlData> NewUrlData(const GURL& url,
                                     UrlData::CorsMode cors_mode) override {
-    last_url_data_ = new TestUrlData(url, cors_mode, this);
+    last_url_data_ = new TestUrlData(url, cors_mode, this, task_runner_);
     return last_url_data_;
   }
 
@@ -163,6 +187,7 @@
 
  private:
   scoped_refptr<TestUrlData> last_url_data_;
+  const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
 };
 
 class MockBufferedDataSourceHost : public BufferedDataSourceHost {
@@ -221,8 +246,6 @@
         .WillByDefault(Invoke([](const blink::WebAssociatedURLLoaderOptions&) {
           return std::make_unique<NiceMock<MockWebAssociatedURLLoader>>();
         }));
-
-    url_index_ = std::make_unique<TestUrlIndex>(&fetch_context_);
   }
 
   MOCK_METHOD1(OnInitialize, void(bool));
@@ -233,8 +256,8 @@
                           size_t file_size = kFileSize) {
     GURL gurl(url);
     data_source_ = std::make_unique<MockMultibufferDataSource>(
-        base::ThreadTaskRunnerHandle::Get(),
-        url_index_->GetByUrl(gurl, cors_mode, UrlIndex::kNormal), &host_);
+        task_runner_, url_index_.GetByUrl(gurl, cors_mode, UrlIndex::kNormal),
+        &host_);
     data_source_->SetPreload(preload_);
 
     response_generator_ =
@@ -410,7 +433,7 @@
   MultiBufferReader* loader() { return data_source_->reader_.get(); }
 
   TestResourceMultiBuffer* multibuffer() {
-    return url_index_->last_url_data()->test_multibuffer();
+    return url_index_.last_url_data()->test_multibuffer();
   }
 
   TestMultiBufferDataProvider* data_provider() {
@@ -459,7 +482,10 @@
  protected:
   MultibufferDataSource::Preload preload_;
   NiceMock<MockResourceFetchContext> fetch_context_;
-  std::unique_ptr<TestUrlIndex> url_index_;
+  const scoped_refptr<base::SingleThreadTaskRunner> task_runner_ =
+      BlinkPlatformWithTaskEnvironment::GetTaskEnvironment()
+          ->GetMainThreadTaskRunner();
+  TestUrlIndex url_index_{&fetch_context_, task_runner_};
 
   std::unique_ptr<MockMultibufferDataSource> data_source_;
 
@@ -996,9 +1022,9 @@
 
   StrictMock<MockBufferedDataSourceHost> host2;
   MockMultibufferDataSource source2(
-      base::ThreadTaskRunnerHandle::Get(),
-      url_index_->GetByUrl(GURL(kHttpUrl), UrlData::CORS_UNSPECIFIED,
-                           UrlIndex::kNormal),
+      task_runner_,
+      url_index_.GetByUrl(GURL(kHttpUrl), UrlData::CORS_UNSPECIFIED,
+                          UrlIndex::kNormal),
       &host2);
   source2.SetPreload(preload_);
 
@@ -1363,8 +1389,8 @@
 TEST_F(MultibufferDataSourceTest, SeekPastEOF) {
   GURL gurl(kHttpUrl);
   data_source_ = std::make_unique<MockMultibufferDataSource>(
-      base::ThreadTaskRunnerHandle::Get(),
-      url_index_->GetByUrl(gurl, UrlData::CORS_UNSPECIFIED, UrlIndex::kNormal),
+      task_runner_,
+      url_index_.GetByUrl(gurl, UrlData::CORS_UNSPECIFIED, UrlIndex::kNormal),
       &host_);
   data_source_->SetPreload(preload_);
 
@@ -1742,8 +1768,8 @@
 TEST_F(MultibufferDataSourceTest, Http_CheckLoadingTransition) {
   GURL gurl(kHttpUrl);
   data_source_ = std::make_unique<MockMultibufferDataSource>(
-      base::ThreadTaskRunnerHandle::Get(),
-      url_index_->GetByUrl(gurl, UrlData::CORS_UNSPECIFIED, UrlIndex::kNormal),
+      task_runner_,
+      url_index_.GetByUrl(gurl, UrlData::CORS_UNSPECIFIED, UrlIndex::kNormal),
       &host_);
   data_source_->SetPreload(preload_);
 
diff --git a/media/blink/multibuffer_reader.cc b/media/blink/multibuffer_reader.cc
index 9d6b864..68149df 100644
--- a/media/blink/multibuffer_reader.cc
+++ b/media/blink/multibuffer_reader.cc
@@ -4,11 +4,12 @@
 
 #include <stddef.h>
 
+#include <utility>
+
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/location.h"
 #include "base/single_thread_task_runner.h"
-#include "base/threading/thread_task_runner_handle.h"
 #include "media/blink/multibuffer_reader.h"
 #include "net/base/net_errors.h"
 
@@ -18,7 +19,8 @@
     MultiBuffer* multibuffer,
     int64_t start,
     int64_t end,
-    base::RepeatingCallback<void(int64_t, int64_t)> progress_callback)
+    base::RepeatingCallback<void(int64_t, int64_t)> progress_callback,
+    scoped_refptr<base::SingleThreadTaskRunner> task_runner)
     : multibuffer_(multibuffer),
       // If end is -1, we use a very large (but still supported) value instead.
       end_(end == -1LL ? (1LL << (multibuffer->block_size_shift() + 30)) : end),
@@ -32,7 +34,8 @@
       preload_pos_(-1),
       loading_(true),
       current_wait_size_(0),
-      progress_callback_(std::move(progress_callback)) {
+      progress_callback_(std::move(progress_callback)),
+      task_runner_(std::move(task_runner)) {
   DCHECK_GE(start, 0);
   DCHECK_GE(end_, 0);
 }
@@ -149,7 +152,7 @@
     // We redirect the call through a weak pointer to ourselves to guarantee
     // there are no callbacks from us after we've been destroyed.
     current_wait_size_ = 0;
-    base::ThreadTaskRunnerHandle::Get()->PostTask(
+    task_runner_->PostTask(
         FROM_HERE, base::BindOnce(&MultiBufferReader::Call,
                                   weak_factory_.GetWeakPtr(), std::move(cb_)));
   }
@@ -178,7 +181,7 @@
   }
   UpdateInternalState();
   if (!progress_callback_.is_null()) {
-    base::ThreadTaskRunnerHandle::Get()->PostTask(
+    task_runner_->PostTask(
         FROM_HERE,
         base::BindOnce(progress_callback_,
                        static_cast<int64_t>(range.begin)
diff --git a/media/blink/multibuffer_reader.h b/media/blink/multibuffer_reader.h
index ae67cca..20c8181 100644
--- a/media/blink/multibuffer_reader.h
+++ b/media/blink/multibuffer_reader.h
@@ -8,10 +8,15 @@
 #include <stdint.h>
 
 #include "base/callback.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/memory/weak_ptr.h"
 #include "media/blink/media_blink_export.h"
 #include "media/blink/multibuffer.h"
 
+namespace base {
+class SingleThreadTaskRunner;
+}
+
 namespace media {
 
 // Wrapper for MultiBuffer that offers a simple byte-reading
@@ -34,7 +39,8 @@
       MultiBuffer* multibuffer,
       int64_t start,
       int64_t end,
-      base::RepeatingCallback<void(int64_t, int64_t)> progress_callback);
+      base::RepeatingCallback<void(int64_t, int64_t)> progress_callback,
+      scoped_refptr<base::SingleThreadTaskRunner> task_runner);
 
   ~MultiBufferReader() override;
 
@@ -180,6 +186,8 @@
   // Progress callback.
   base::RepeatingCallback<void(int64_t, int64_t)> progress_callback_;
 
+  const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
+
   base::WeakPtrFactory<MultiBufferReader> weak_factory_{this};
 };
 
diff --git a/media/blink/multibuffer_unittest.cc b/media/blink/multibuffer_unittest.cc
index 29d81549..ba2b65b7 100644
--- a/media/blink/multibuffer_unittest.cc
+++ b/media/blink/multibuffer_unittest.cc
@@ -6,12 +6,14 @@
 #include <stdint.h>
 
 #include <string>
+#include <utility>
 #include <vector>
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/containers/circular_deque.h"
 #include "base/logging.h"
+#include "base/single_thread_task_runner.h"
 #include "base/test/simple_test_tick_clock.h"
 #include "media/base/fake_single_thread_task_runner.h"
 #include "media/base/test_random.h"
@@ -262,7 +264,8 @@
   size_t end = 10000;
   multibuffer_.SetFileSize(10000);
   multibuffer_.SetMustReadWholeFile(true);
-  MultiBufferReader reader(&multibuffer_, pos, end, base::NullCallback());
+  MultiBufferReader reader(&multibuffer_, pos, end, base::NullCallback(),
+                           task_runner_);
   reader.SetPinRange(2000, 5000);
   reader.SetPreload(1000, 1000);
   while (pos < end) {
@@ -289,7 +292,8 @@
   size_t end = 10000;
   multibuffer_.SetFileSize(10000);
   multibuffer_.SetMustReadWholeFile(true);
-  MultiBufferReader reader(&multibuffer_, pos, end, base::NullCallback());
+  MultiBufferReader reader(&multibuffer_, pos, end, base::NullCallback(),
+                           task_runner_);
   reader.SetPinRange(2000, 5000);
   reader.SetPreload(1000, 1000);
   while (pos < end) {
@@ -318,7 +322,8 @@
   multibuffer_.SetFileSize(10000);
   multibuffer_.SetMaxBlocksAfterDefer(-10000);
   multibuffer_.SetRangeSupported(true);
-  MultiBufferReader reader(&multibuffer_, pos, end, base::NullCallback());
+  MultiBufferReader reader(&multibuffer_, pos, end, base::NullCallback(),
+                           task_runner_);
   reader.SetPinRange(2000, 5000);
   reader.SetPreload(1000, 1000);
   while (pos < end) {
@@ -348,7 +353,8 @@
   multibuffer_.SetFileSize(10000);
   multibuffer_.SetMustReadWholeFile(true);
   multibuffer_.SetMaxBlocksAfterDefer(-10000);
-  MultiBufferReader reader(&multibuffer_, pos, end, base::NullCallback());
+  MultiBufferReader reader(&multibuffer_, pos, end, base::NullCallback(),
+                           task_runner_);
   reader.SetPinRange(2000, 5000);
   reader.SetPreload(1000, 1000);
   while (pos < end) {
@@ -377,7 +383,8 @@
   size_t pos = 0;
   size_t end = 10000;
   multibuffer_.SetFileSize(10000);
-  MultiBufferReader reader(&multibuffer_, pos, end, base::NullCallback());
+  MultiBufferReader reader(&multibuffer_, pos, end, base::NullCallback(),
+                           task_runner_);
   reader.SetPreload(10000, 10000);
   // Note, no pinning, all data should end up in LRU.
   EXPECT_EQ(current_size, lru_->Size());
@@ -405,7 +412,8 @@
   size_t pos = 0;
   size_t end = 10000;
   multibuffer_.SetFileSize(10000);
-  MultiBufferReader reader(&multibuffer_, pos, end, base::NullCallback());
+  MultiBufferReader reader(&multibuffer_, pos, end, base::NullCallback(),
+                           task_runner_);
   reader.SetPreload(10000, 10000);
   // Note, no pinning, all data should end up in LRU.
   EXPECT_EQ(current_size, lru_->Size());
@@ -434,7 +442,8 @@
   size_t pos = 0;
   size_t end = 10000;
   multibuffer_.SetFileSize(10000);
-  MultiBufferReader reader(&multibuffer_, pos, end, base::NullCallback());
+  MultiBufferReader reader(&multibuffer_, pos, end, base::NullCallback(),
+                           task_runner_);
   reader.SetPreload(10000, 10000);
   // Note, no pinning, all data should end up in LRU.
   EXPECT_EQ(current_size, lru_->Size());
@@ -473,13 +482,18 @@
   ReadHelper(size_t end,
              size_t max_read_size,
              MultiBuffer* multibuffer,
-             TestRandom* rnd)
+             TestRandom* rnd,
+             scoped_refptr<base::SingleThreadTaskRunner> task_runner)
       : pos_(0),
         end_(end),
         max_read_size_(max_read_size),
         read_size_(0),
         rnd_(rnd),
-        reader_(multibuffer, pos_, end_, base::NullCallback()) {
+        reader_(multibuffer,
+                pos_,
+                end_,
+                base::NullCallback(),
+                std::move(task_runner)) {
     reader_.SetPinRange(2000, 5000);
     reader_.SetPreload(1000, 1000);
   }
@@ -536,7 +550,7 @@
   std::vector<ReadHelper*> read_helpers;
   for (size_t i = 0; i < 20; i++) {
     read_helpers.push_back(
-        new ReadHelper(file_size, 1000, &multibuffer_, &rnd_));
+        new ReadHelper(file_size, 1000, &multibuffer_, &rnd_, task_runner_));
   }
   for (int i = 0; i < 100; i++) {
     for (int j = 0; j < 100; j++) {
@@ -567,7 +581,7 @@
   multibuffer_.SetRangeSupported(true);
   for (size_t i = 0; i < 20; i++) {
     read_helpers.push_back(
-        new ReadHelper(file_size, 1000, &multibuffer_, &rnd_));
+        new ReadHelper(file_size, 1000, &multibuffer_, &rnd_, task_runner_));
   }
   for (int i = 0; i < 100; i++) {
     for (int j = 0; j < 100; j++) {
diff --git a/media/blink/resource_multibuffer_data_provider.cc b/media/blink/resource_multibuffer_data_provider.cc
index 3b369c0..eceb0b90 100644
--- a/media/blink/resource_multibuffer_data_provider.cc
+++ b/media/blink/resource_multibuffer_data_provider.cc
@@ -15,7 +15,6 @@
 #include "base/single_thread_task_runner.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
-#include "base/threading/thread_task_runner_handle.h"
 #include "media/blink/cache_util.h"
 #include "media/blink/resource_fetch_context.h"
 #include "media/blink/url_index.h"
@@ -58,13 +57,15 @@
 ResourceMultiBufferDataProvider::ResourceMultiBufferDataProvider(
     UrlData* url_data,
     MultiBufferBlockId pos,
-    bool is_client_audio_element)
+    bool is_client_audio_element,
+    scoped_refptr<base::SingleThreadTaskRunner> task_runner)
     : pos_(pos),
       url_data_(url_data),
       retries_(0),
       cors_mode_(url_data->cors_mode()),
       origin_(url_data->url().GetOrigin()),
-      is_client_audio_element_(is_client_audio_element) {
+      is_client_audio_element_(is_client_audio_element),
+      task_runner_(std::move(task_runner)) {
   DCHECK(url_data_) << " pos = " << pos;
   DCHECK_GE(pos, 0);
 }
@@ -74,7 +75,7 @@
 void ResourceMultiBufferDataProvider::Start() {
   DVLOG(1) << __func__ << " @ " << byte_pos();
   if (url_data_->length() > 0 && byte_pos() >= url_data_->length()) {
-    base::ThreadTaskRunnerHandle::Get()->PostTask(
+    task_runner_->PostTask(
         FROM_HERE, base::BindOnce(&ResourceMultiBufferDataProvider::Terminate,
                                   weak_factory_.GetWeakPtr()));
     return;
@@ -444,7 +445,7 @@
     if (retries_ < kMaxRetries) {
       DVLOG(1) << " Partial data received.... @ pos = " << size;
       retries_++;
-      base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
+      task_runner_->PostDelayedTask(
           FROM_HERE,
           base::BindOnce(&ResourceMultiBufferDataProvider::Start,
                          weak_factory_.GetWeakPtr()),
@@ -476,7 +477,7 @@
 
   if (retries_ < kMaxRetries && pos_ != 0) {
     retries_++;
-    base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
+    task_runner_->PostDelayedTask(
         FROM_HERE,
         base::BindOnce(&ResourceMultiBufferDataProvider::Start,
                        weak_factory_.GetWeakPtr()),
diff --git a/media/blink/resource_multibuffer_data_provider.h b/media/blink/resource_multibuffer_data_provider.h
index 7e9271f..fdeb1210 100644
--- a/media/blink/resource_multibuffer_data_provider.h
+++ b/media/blink/resource_multibuffer_data_provider.h
@@ -11,6 +11,7 @@
 #include <string>
 
 #include "base/callback.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/memory/weak_ptr.h"
 #include "media/blink/media_blink_export.h"
 #include "media/blink/multibuffer.h"
@@ -20,6 +21,10 @@
 #include "third_party/blink/public/web/web_frame.h"
 #include "url/gurl.h"
 
+namespace base {
+class SingleThreadTaskRunner;
+}
+
 namespace blink {
 class WebAssociatedURLLoader;
 }  // namespace blink
@@ -33,9 +38,11 @@
   // NUmber of times we'll retry if the connection fails.
   enum { kMaxRetries = 30 };
 
-  ResourceMultiBufferDataProvider(UrlData* url_data,
-                                  MultiBufferBlockId pos,
-                                  bool is_client_audio_element);
+  ResourceMultiBufferDataProvider(
+      UrlData* url_data,
+      MultiBufferBlockId pos,
+      bool is_client_audio_element,
+      scoped_refptr<base::SingleThreadTaskRunner> task_runner);
   ~ResourceMultiBufferDataProvider() override;
 
   // Virtual for testing purposes.
@@ -123,6 +130,8 @@
   // Is the client an audio element?
   bool is_client_audio_element_ = false;
 
+  const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
+
   base::WeakPtrFactory<ResourceMultiBufferDataProvider> weak_factory_{this};
 };
 
diff --git a/media/blink/resource_multibuffer_data_provider_unittest.cc b/media/blink/resource_multibuffer_data_provider_unittest.cc
index 56df066b..5187992 100644
--- a/media/blink/resource_multibuffer_data_provider_unittest.cc
+++ b/media/blink/resource_multibuffer_data_provider_unittest.cc
@@ -12,10 +12,14 @@
 #include "base/bind.h"
 #include "base/format_macros.h"
 #include "base/macros.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/run_loop.h"
+#include "base/single_thread_task_runner.h"
 #include "base/strings/stringprintf.h"
+#include "base/test/task_environment.h"
 #include "media/base/media_log.h"
 #include "media/base/seekable_buffer.h"
+#include "media/blink/blink_platform_with_task_environment.h"
 #include "media/blink/mock_resource_fetch_context.h"
 #include "media/blink/mock_webassociatedurlloader.h"
 #include "media/blink/url_index.h"
@@ -76,8 +80,7 @@
 
 class ResourceMultiBufferDataProviderTest : public testing::Test {
  public:
-  ResourceMultiBufferDataProviderTest()
-      : url_index_(std::make_unique<UrlIndex>(&fetch_context_, 0)) {
+  ResourceMultiBufferDataProviderTest() {
     for (int i = 0; i < kDataSize; ++i) {
       data_[i] = i;
     }
@@ -89,8 +92,8 @@
   void Initialize(const char* url, int first_position) {
     want_frfr = false;
     gurl_ = GURL(url);
-    url_data_ = url_index_->GetByUrl(gurl_, UrlData::CORS_UNSPECIFIED,
-                                     UrlIndex::kNormal);
+    url_data_ = url_index_.GetByUrl(gurl_, UrlData::CORS_UNSPECIFIED,
+                                    UrlIndex::kNormal);
     url_data_->set_etag(kEtag);
     DCHECK(url_data_);
     url_data_->OnRedirect(
@@ -102,7 +105,9 @@
     std::unique_ptr<ResourceMultiBufferDataProvider> loader(
         new ResourceMultiBufferDataProvider(
             url_data_.get(), first_position_,
-            false /* is_client_audio_element */));
+            false /* is_client_audio_element */,
+            BlinkPlatformWithTaskEnvironment::GetTaskEnvironment()
+                ->GetMainThreadTaskRunner()));
     loader_ = loader.get();
     url_data_->multibuffer()->AddProvider(std::move(loader));
   }
@@ -222,7 +227,9 @@
   int64_t first_position_;
 
   NiceMock<MockResourceFetchContext> fetch_context_;
-  std::unique_ptr<UrlIndex> url_index_;
+  UrlIndex url_index_{&fetch_context_, 0,
+                      BlinkPlatformWithTaskEnvironment::GetTaskEnvironment()
+                          ->GetMainThreadTaskRunner()};
   scoped_refptr<UrlData> url_data_;
   scoped_refptr<UrlData> redirected_to_;
   // The loader is owned by the UrlData above.
diff --git a/media/blink/url_index.cc b/media/blink/url_index.cc
index af704d1..f4e6616 100644
--- a/media/blink/url_index.cc
+++ b/media/blink/url_index.cc
@@ -11,7 +11,6 @@
 #include "base/feature_list.h"
 #include "base/location.h"
 #include "base/single_thread_task_runner.h"
-#include "base/threading/thread_task_runner_handle.h"
 #include "base/time/time.h"
 #include "media/base/media_switches.h"
 #include "media/blink/resource_multibuffer_data_provider.h"
@@ -21,9 +20,13 @@
 const int kBlockSizeShift = 15;  // 1<<15 == 32kb
 const int kUrlMappingTimeoutSeconds = 300;
 
-ResourceMultiBuffer::ResourceMultiBuffer(UrlData* url_data, int block_shift)
+ResourceMultiBuffer::ResourceMultiBuffer(
+    UrlData* url_data,
+    int block_shift,
+    scoped_refptr<base::SingleThreadTaskRunner> task_runner)
     : MultiBuffer(block_shift, url_data->url_index_->lru_),
-      url_data_(url_data) {}
+      url_data_(url_data),
+      task_runner_(std::move(task_runner)) {}
 
 ResourceMultiBuffer::~ResourceMultiBuffer() = default;
 
@@ -31,7 +34,7 @@
     const MultiBufferBlockId& pos,
     bool is_client_audio_element) {
   auto writer = std::make_unique<ResourceMultiBufferDataProvider>(
-      url_data_, pos, is_client_audio_element);
+      url_data_, pos, is_client_audio_element, task_runner_);
   writer->Start();
   return writer;
 }
@@ -44,7 +47,10 @@
   url_data_->OnEmpty();
 }
 
-UrlData::UrlData(const GURL& url, CorsMode cors_mode, UrlIndex* url_index)
+UrlData::UrlData(const GURL& url,
+                 CorsMode cors_mode,
+                 UrlIndex* url_index,
+                 scoped_refptr<base::SingleThreadTaskRunner> task_runner)
     : url_(url),
       have_data_origin_(false),
       cors_mode_(cors_mode),
@@ -53,8 +59,7 @@
       length_(kPositionNotSpecified),
       range_supported_(false),
       cacheable_(false),
-      last_used_(),
-      multibuffer_(this, url_index_->block_shift_) {}
+      multibuffer_(this, url_index_->block_shift_, std::move(task_runner)) {}
 
 UrlData::~UrlData() = default;
 
@@ -210,16 +215,20 @@
   return multibuffer()->map().size();
 }
 
-UrlIndex::UrlIndex(ResourceFetchContext* fetch_context)
-    : UrlIndex(fetch_context, kBlockSizeShift) {}
+UrlIndex::UrlIndex(ResourceFetchContext* fetch_context,
+                   scoped_refptr<base::SingleThreadTaskRunner> task_runner)
+    : UrlIndex(fetch_context, kBlockSizeShift, std::move(task_runner)) {}
 
-UrlIndex::UrlIndex(ResourceFetchContext* fetch_context, int block_shift)
+UrlIndex::UrlIndex(ResourceFetchContext* fetch_context,
+                   int block_shift,
+                   scoped_refptr<base::SingleThreadTaskRunner> task_runner)
     : fetch_context_(fetch_context),
-      lru_(new MultiBuffer::GlobalLRU(base::ThreadTaskRunnerHandle::Get())),
+      lru_(new MultiBuffer::GlobalLRU(task_runner)),
       block_shift_(block_shift),
       memory_pressure_listener_(FROM_HERE,
                                 base::BindRepeating(&UrlIndex::OnMemoryPressure,
-                                                    base::Unretained(this))) {}
+                                                    base::Unretained(this))),
+      task_runner_(std::move(task_runner)) {}
 
 UrlIndex::~UrlIndex() {
 #if DCHECK_IS_ON()
@@ -254,7 +263,7 @@
 
 scoped_refptr<UrlData> UrlIndex::NewUrlData(const GURL& url,
                                             UrlData::CorsMode cors_mode) {
-  return new UrlData(url, cors_mode, this);
+  return new UrlData(url, cors_mode, this, task_runner_);
 }
 
 void UrlIndex::OnMemoryPressure(
diff --git a/media/blink/url_index.h b/media/blink/url_index.h
index 88c595fc93..54da414 100644
--- a/media/blink/url_index.h
+++ b/media/blink/url_index.h
@@ -14,12 +14,17 @@
 #include "base/macros.h"
 #include "base/memory/memory_pressure_listener.h"
 #include "base/memory/ref_counted.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/threading/thread_checker.h"
 #include "media/blink/media_blink_export.h"
 #include "media/blink/multibuffer.h"
 #include "url/gurl.h"
 
+namespace base {
+class SingleThreadTaskRunner;
+}
+
 namespace media {
 
 const int64_t kPositionNotSpecified = -1;
@@ -33,7 +38,9 @@
 // into the cache.
 class MEDIA_BLINK_EXPORT ResourceMultiBuffer : public MultiBuffer {
  public:
-  ResourceMultiBuffer(UrlData* url_data_, int block_shift);
+  ResourceMultiBuffer(UrlData* url_data_,
+                      int block_shift,
+                      scoped_refptr<base::SingleThreadTaskRunner> task_runner);
   ~ResourceMultiBuffer() override;
 
   // MultiBuffer implementation.
@@ -47,6 +54,7 @@
   // Do not access from destructor, it is a pointer to the
   // object that contains us.
   UrlData* url_data_;
+  const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
 };
 
 class UrlIndex;
@@ -151,7 +159,10 @@
   int64_t BytesReadFromCache() const { return bytes_read_from_cache_; }
 
  protected:
-  UrlData(const GURL& url, CorsMode cors_mode, UrlIndex* url_index);
+  UrlData(const GURL& url,
+          CorsMode cors_mode,
+          UrlIndex* url_index,
+          scoped_refptr<base::SingleThreadTaskRunner> task_runner);
   virtual ~UrlData();
 
  private:
@@ -222,8 +233,11 @@
 // The UrlIndex lets you look up UrlData instances by url.
 class MEDIA_BLINK_EXPORT UrlIndex {
  public:
-  explicit UrlIndex(ResourceFetchContext* fetch_context);
-  UrlIndex(ResourceFetchContext* fetch_context, int block_shift);
+  UrlIndex(ResourceFetchContext* fetch_context,
+           scoped_refptr<base::SingleThreadTaskRunner> task_runner);
+  UrlIndex(ResourceFetchContext* fetch_context,
+           int block_shift,
+           scoped_refptr<base::SingleThreadTaskRunner> task_runner);
   virtual ~UrlIndex();
 
   enum CacheMode { kNormal, kCacheDisabled };
@@ -288,6 +302,7 @@
   std::deque<scoped_refptr<UrlData>> loading_queue_;
 
   base::MemoryPressureListener memory_pressure_listener_;
+  const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
 };
 
 }  // namespace media
diff --git a/media/blink/url_index_unittest.cc b/media/blink/url_index_unittest.cc
index 3933710..c7125f4 100644
--- a/media/blink/url_index_unittest.cc
+++ b/media/blink/url_index_unittest.cc
@@ -7,9 +7,13 @@
 #include <list>
 #include <string>
 
+#include "base/memory/scoped_refptr.h"
 #include "base/run_loop.h"
+#include "base/single_thread_task_runner.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/test/task_environment.h"
 #include "media/base/media_switches.h"
+#include "media/blink/blink_platform_with_task_environment.h"
 #include "media/blink/url_index.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -17,7 +21,7 @@
 
 class UrlIndexTest : public testing::Test {
  public:
-  UrlIndexTest() : url_index_(nullptr) {}
+  UrlIndexTest() = default;
 
   scoped_refptr<UrlData> GetByUrl(const GURL& gurl,
                                   UrlData::CorsMode cors_mode) {
@@ -28,7 +32,10 @@
     return ret;
   }
 
-  UrlIndex url_index_;
+ protected:
+  UrlIndex url_index_{nullptr,
+                      BlinkPlatformWithTaskEnvironment::GetTaskEnvironment()
+                          ->GetMainThreadTaskRunner()};
 };
 
 TEST_F(UrlIndexTest, SimpleTest) {
diff --git a/media/blink/video_decode_stats_reporter_unittest.cc b/media/blink/video_decode_stats_reporter_unittest.cc
index 4661354b..e322227f 100644
--- a/media/blink/video_decode_stats_reporter_unittest.cc
+++ b/media/blink/video_decode_stats_reporter_unittest.cc
@@ -7,15 +7,15 @@
 #include "base/bind.h"
 #include "base/memory/ptr_util.h"
 #include "base/memory/ref_counted.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/single_thread_task_runner.h"
-#include "base/task/current_thread.h"
-#include "base/test/test_mock_time_task_runner.h"
-#include "base/threading/thread_task_runner_handle.h"
+#include "base/test/task_environment.h"
 #include "base/time/time.h"
 #include "media/base/cdm_config.h"
 #include "media/base/media_util.h"
 #include "media/base/video_codecs.h"
 #include "media/base/video_types.h"
+#include "media/blink/blink_platform_with_task_environment.h"
 #include "media/blink/video_decode_stats_reporter.h"
 #include "media/capabilities/bucket_utility.h"
 #include "media/mojo/mojom/media_types.mojom.h"
@@ -108,12 +108,6 @@
   ~VideoDecodeStatsReporterTest() override = default;
 
   void SetUp() override {
-    // Do this first. Lots of pieces depend on the task runner.
-    auto message_loop = base::CurrentThread::Get();
-    original_task_runner_ = base::ThreadTaskRunnerHandle::Get();
-    task_runner_ = new base::TestMockTimeTaskRunner();
-    message_loop.SetTaskRunner(task_runner_);
-
     // Make reporter with default configuration. Connects RecordInterceptor as
     // remote mojo VideoDecodeStatsRecorder.
     MakeReporter();
@@ -130,8 +124,7 @@
     reporter_.reset();
 
     // Run task runner to have Mojo cleanup interceptor_.
-    task_runner_->RunUntilIdle();
-    base::CurrentThread::Get().SetTaskRunner(original_task_runner_);
+    task_environment_->RunUntilIdle();
   }
 
   PipelineStatistics MakeAdvancingDecodeStats() {
@@ -191,13 +184,14 @@
         SetupRecordInterceptor(&interceptor_),
         base::BindRepeating(&VideoDecodeStatsReporterTest::GetPipelineStatsCB,
                             base::Unretained(this)),
-        profile, natural_size, key_system, cdm_config, task_runner_,
-        task_runner_->GetMockTickClock());
+        profile, natural_size, key_system, cdm_config,
+        task_environment_->GetMainThreadTaskRunner(),
+        task_environment_->GetMockTickClock());
   }
 
   // Fast forward the task runner (and associated tick clock) by |milliseconds|.
   void FastForward(base::TimeDelta delta) {
-    task_runner_->FastForwardBy(delta);
+    task_environment_->FastForwardBy(delta);
   }
 
   bool ShouldBeReporting() const { return reporter_->ShouldBeReporting(); }
@@ -351,6 +345,9 @@
   // expectations and return behavior.
   MOCK_METHOD0(GetPipelineStatsCB, PipelineStatistics());
 
+  base::test::TaskEnvironment* task_environment_ =
+      BlinkPlatformWithTaskEnvironment::GetTaskEnvironment();
+
   // These track the last values returned by MakeAdvancingDecodeStats(). See
   // SetUp() for initialization.
   uint32_t pipeline_decoded_frames_;
@@ -361,12 +358,6 @@
   // Placed as a class member to avoid static initialization costs.
   const gfx::Size kDefaultSize_;
 
-  // Task runner that allows for manual advancing of time. Instantiated during
-  // Setup(). |original_task_runner_| is a copy of the TaskRunner in place prior
-  // to the start of this test. It's restored after the test completes.
-  scoped_refptr<base::TestMockTimeTaskRunner> task_runner_;
-  scoped_refptr<base::SingleThreadTaskRunner> original_task_runner_;
-
   // Points to the interceptor that acts as a VideoDecodeStatsRecorder. The
   // object is owned by mojo::Remote<VideoDecodeStatsRecorder>, which is itself
   // owned by |reporter_|.
diff --git a/media/blink/video_frame_compositor_unittest.cc b/media/blink/video_frame_compositor_unittest.cc
index e1491b2..b426f11c 100644
--- a/media/blink/video_frame_compositor_unittest.cc
+++ b/media/blink/video_frame_compositor_unittest.cc
@@ -5,14 +5,17 @@
 #include "media/blink/video_frame_compositor.h"
 #include "base/bind.h"
 #include "base/macros.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/run_loop.h"
+#include "base/single_thread_task_runner.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/test/gmock_callback_support.h"
 #include "base/test/simple_test_tick_clock.h"
-#include "base/threading/thread_task_runner_handle.h"
+#include "base/test/task_environment.h"
 #include "components/viz/common/frame_sinks/begin_frame_args.h"
 #include "components/viz/common/surfaces/frame_sink_id.h"
 #include "media/base/video_frame.h"
+#include "media/blink/blink_platform_with_task_environment.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/platform/web_video_frame_submitter.h"
@@ -61,8 +64,8 @@
     submitter_ = client_.get();
 
     EXPECT_CALL(*submitter_, Initialize(_, _));
-    compositor_ = std::make_unique<VideoFrameCompositor>(
-        base::ThreadTaskRunnerHandle::Get(), std::move(client_));
+    compositor_ = std::make_unique<VideoFrameCompositor>(task_runner_,
+                                                         std::move(client_));
     base::RunLoop().RunUntilIdle();
     EXPECT_CALL(*submitter_,
                 SetRotation(Eq(media::VideoRotation::VIDEO_ROTATION_90)));
@@ -139,6 +142,9 @@
   StrictMock<MockWebVideoFrameSubmitter>* submitter_;
   std::unique_ptr<StrictMock<MockWebVideoFrameSubmitter>> client_;
   std::unique_ptr<VideoFrameCompositor> compositor_;
+  const scoped_refptr<base::SingleThreadTaskRunner> task_runner_ =
+      BlinkPlatformWithTaskEnvironment::GetTaskEnvironment()
+          ->GetMainThreadTaskRunner();
 
  private:
   DISALLOW_COPY_AND_ASSIGN(VideoFrameCompositorTest);
@@ -155,8 +161,7 @@
     base::RunLoop run_loop;
     EXPECT_CALL(*submitter_, SetIsSurfaceVisible(true));
     cb.Run(true, nullptr);
-    base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
-                                                  run_loop.QuitClosure());
+    task_runner_->PostTask(FROM_HERE, run_loop.QuitClosure());
     run_loop.Run();
   }
 
@@ -164,8 +169,7 @@
     base::RunLoop run_loop;
     EXPECT_CALL(*submitter_, SetIsSurfaceVisible(false));
     cb.Run(false, nullptr);
-    base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
-                                                  run_loop.QuitClosure());
+    task_runner_->PostTask(FROM_HERE, run_loop.QuitClosure());
     run_loop.Run();
   }
 
@@ -174,8 +178,7 @@
     base::WaitableEvent true_event;
     EXPECT_CALL(*submitter_, SetIsSurfaceVisible(true));
     cb.Run(true, &true_event);
-    base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
-                                                  run_loop.QuitClosure());
+    task_runner_->PostTask(FROM_HERE, run_loop.QuitClosure());
     run_loop.Run();
     EXPECT_TRUE(true_event.IsSignaled());
   }
@@ -186,8 +189,7 @@
     EXPECT_CALL(*submitter_, SetIsSurfaceVisible(false));
     cb.Run(false, &false_event);
 
-    base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
-                                                  run_loop.QuitClosure());
+    task_runner_->PostTask(FROM_HERE, run_loop.QuitClosure());
     run_loop.Run();
     EXPECT_TRUE(false_event.IsSignaled());
   }
diff --git a/media/blink/watch_time_reporter_unittest.cc b/media/blink/watch_time_reporter_unittest.cc
index 5ebbaf60..7111207 100644
--- a/media/blink/watch_time_reporter_unittest.cc
+++ b/media/blink/watch_time_reporter_unittest.cc
@@ -6,15 +6,15 @@
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
-#include "base/task/current_thread.h"
-#include "base/test/test_mock_time_task_runner.h"
-#include "base/threading/thread_task_runner_handle.h"
+#include "base/test/task_environment.h"
 #include "base/time/time.h"
 #include "media/base/mock_media_log.h"
 #include "media/base/pipeline_status.h"
 #include "media/base/watch_time_keys.h"
+#include "media/blink/blink_platform_with_task_environment.h"
 #include "media/mojo/mojom/media_metrics_provider.mojom.h"
 #include "media/mojo/mojom/watch_time_recorder.mojom.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
@@ -290,18 +290,10 @@
   WatchTimeReporterTest()
       : has_video_(std::get<0>(GetParam())),
         has_audio_(std::get<1>(GetParam())),
-        fake_metrics_provider_(this) {
-    // Do this first. Lots of pieces depend on the task runner.
-    auto message_loop = base::CurrentThread::Get();
-    original_task_runner_ = base::ThreadTaskRunnerHandle::Get();
-    task_runner_ = new base::TestMockTimeTaskRunner();
-    message_loop.SetTaskRunner(task_runner_);
-  }
+        fake_metrics_provider_(this) {}
 
   ~WatchTimeReporterTest() override {
     CycleReportingTimer();
-    task_runner_->RunUntilIdle();
-    base::CurrentThread::Get().SetTaskRunner(original_task_runner_);
   }
 
  protected:
@@ -322,7 +314,7 @@
                             base::Unretained(this)),
         &fake_metrics_provider_,
         blink::scheduler::GetSequencedTaskRunnerForTesting(),
-        task_runner_->GetMockTickClock());
+        task_environment_->GetMockTickClock());
     reporting_interval_ = wtr_->reporting_interval_;
 
     // Most tests don't care about this.
@@ -333,7 +325,7 @@
   }
 
   void CycleReportingTimer() {
-    task_runner_->FastForwardBy(reporting_interval_);
+    task_environment_->FastForwardBy(reporting_interval_);
   }
 
   bool IsMonitoring() const { return wtr_->reporting_timer_.IsRunning(); }
@@ -638,15 +630,11 @@
   MOCK_METHOD2(OnUpdateVideoDecodeStats, void(uint32_t, uint32_t));
   MOCK_METHOD1(OnCurrentTimestampChanged, void(base::TimeDelta));
 
+  base::test::TaskEnvironment* task_environment_ =
+      BlinkPlatformWithTaskEnvironment::GetTaskEnvironment();
   const bool has_video_;
   const bool has_audio_;
 
-  // Task runner that allows for manual advancing of time. Instantiated during
-  // construction. |original_task_runner_| is a copy of the TaskRunner in place
-  // prior to the start of this test. It's restored after the test completes.
-  scoped_refptr<base::TestMockTimeTaskRunner> task_runner_;
-  scoped_refptr<base::SingleThreadTaskRunner> original_task_runner_;
-
   FakeMediaMetricsProvider fake_metrics_provider_;
   std::unique_ptr<blink::WatchTimeReporter> wtr_;
   base::TimeDelta reporting_interval_;
diff --git a/media/blink/webcontentdecryptionmoduleaccess_impl.cc b/media/blink/webcontentdecryptionmoduleaccess_impl.cc
index 1d822ef..a7450d1 100644
--- a/media/blink/webcontentdecryptionmoduleaccess_impl.cc
+++ b/media/blink/webcontentdecryptionmoduleaccess_impl.cc
@@ -10,7 +10,6 @@
 #include "base/bind.h"
 #include "base/location.h"
 #include "base/single_thread_task_runner.h"
-#include "base/threading/thread_task_runner_handle.h"
 #include "media/blink/webencryptedmediaclient_impl.h"
 
 namespace media {
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
index 96fbcd9..9ba69c4 100644
--- a/media/blink/webmediaplayer_impl.cc
+++ b/media/blink/webmediaplayer_impl.cc
@@ -27,7 +27,6 @@
 #include "base/task/post_task.h"
 #include "base/task/thread_pool.h"
 #include "base/task_runner_util.h"
-#include "base/threading/thread_task_runner_handle.h"
 #include "base/trace_event/memory_dump_manager.h"
 #include "base/trace_event/trace_event.h"
 #include "build/build_config.h"
diff --git a/media/blink/webmediaplayer_impl_unittest.cc b/media/blink/webmediaplayer_impl_unittest.cc
index 4dc4a84..2147c7e 100644
--- a/media/blink/webmediaplayer_impl_unittest.cc
+++ b/media/blink/webmediaplayer_impl_unittest.cc
@@ -12,8 +12,10 @@
 #include "base/callback_helpers.h"
 #include "base/command_line.h"
 #include "base/memory/ref_counted.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/run_loop.h"
+#include "base/single_thread_task_runner.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
@@ -24,7 +26,6 @@
 #include "base/test/scoped_feature_list.h"
 #include "base/test/simple_test_tick_clock.h"
 #include "base/threading/thread.h"
-#include "base/threading/thread_task_runner_handle.h"
 #include "base/trace_event/memory_dump_manager.h"
 #include "build/build_config.h"
 #include "cc/layers/layer.h"
@@ -424,12 +425,13 @@
 
     audio_sink_ = base::WrapRefCounted(new NiceMock<MockAudioRendererSink>());
 
-    url_index_ = std::make_unique<UrlIndex>(&mock_resource_fetch_context_);
+    url_index_ = std::make_unique<UrlIndex>(&mock_resource_fetch_context_,
+                                            media_thread_.task_runner());
 
     auto params = std::make_unique<WebMediaPlayerParams>(
         std::move(media_log), WebMediaPlayerParams::DeferLoadCB(), audio_sink_,
-        media_thread_.task_runner(), base::ThreadTaskRunnerHandle::Get(),
-        base::ThreadTaskRunnerHandle::Get(), media_thread_.task_runner(),
+        media_thread_.task_runner(), media_thread_.task_runner(),
+        media_thread_.task_runner(), media_thread_.task_runner(),
         base::BindRepeating(&WebMediaPlayerImplTest::OnAdjustAllocatedMemory,
                             base::Unretained(this)),
         nullptr, RequestRoutingTokenCallback(), nullptr, false, false,
diff --git a/media/fuchsia/audio/fuchsia_audio_capturer_source.cc b/media/fuchsia/audio/fuchsia_audio_capturer_source.cc
index 259d6b1..01a0f97f 100644
--- a/media/fuchsia/audio/fuchsia_audio_capturer_source.cc
+++ b/media/fuchsia/audio/fuchsia_audio_capturer_source.cc
@@ -172,7 +172,7 @@
 void FuchsiaAudioCapturerSource::NotifyCaptureError(
     const std::string& message) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-  callback_->OnCaptureError(message);
+  callback_->OnCaptureError(AudioCapturerSource::ErrorCode::kUnknown, message);
 }
 
 void FuchsiaAudioCapturerSource::NotifyCaptureStarted() {
diff --git a/media/fuchsia/audio/fuchsia_audio_capturer_source_test.cc b/media/fuchsia/audio/fuchsia_audio_capturer_source_test.cc
index 2d5a9f9..3d9a04c 100644
--- a/media/fuchsia/audio/fuchsia_audio_capturer_source_test.cc
+++ b/media/fuchsia/audio/fuchsia_audio_capturer_source_test.cc
@@ -156,7 +156,8 @@
     packets_.push_back(std::move(bus));
   }
 
-  void OnCaptureError(const std::string& message) final {
+  void OnCaptureError(AudioCapturerSource::ErrorCode code,
+                      const std::string& message) final {
     EXPECT_FALSE(have_error_);
     have_error_ = true;
   }
diff --git a/media/gpu/vaapi/vaapi_unittest.cc b/media/gpu/vaapi/vaapi_unittest.cc
index 79f4eec..3e53a8a 100644
--- a/media/gpu/vaapi/vaapi_unittest.cc
+++ b/media/gpu/vaapi/vaapi_unittest.cc
@@ -113,6 +113,21 @@
       /*disabled_features=*/{});
   return scoped_feature_list;
 }
+
+unsigned int ToVaRTFormat(uint32_t va_fourcc) {
+  switch (va_fourcc) {
+    case VA_FOURCC_I420:
+      return VA_RT_FORMAT_YUV420;
+    case VA_FOURCC_YUY2:
+      return VA_RT_FORMAT_YUV422;
+    case VA_FOURCC_RGBA:
+      return VA_RT_FORMAT_RGB32;
+    case VA_FOURCC_P010:
+      return VA_RT_FORMAT_YUV420_10;
+  }
+  return kInvalidVaRtFormat;
+}
+
 }  // namespace
 
 class VaapiTest : public testing::Test {
@@ -353,6 +368,91 @@
     }
   }
 }
+
+class VaapiVppTest
+    : public VaapiTest,
+      public testing::WithParamInterface<std::tuple<uint32_t, uint32_t>> {
+ public:
+  VaapiVppTest() = default;
+  ~VaapiVppTest() override = default;
+
+  // Populate meaningful test suffixes instead of /0, /1, etc.
+  struct PrintToStringParamName {
+    template <class ParamType>
+    std::string operator()(
+        const testing::TestParamInfo<ParamType>& info) const {
+      std::stringstream ss;
+      ss << FourccToString(std::get<0>(info.param)) << "_to_"
+         << FourccToString(std::get<1>(info.param));
+      return ss.str();
+    }
+  };
+};
+
+TEST_P(VaapiVppTest, BlitWithVAAllocatedSurfaces) {
+  const uint32_t va_fourcc_in = std::get<0>(GetParam());
+  const uint32_t va_fourcc_out = std::get<1>(GetParam());
+
+  // TODO(b/187852384): enable the other two backends.
+  if (VaapiWrapper::GetImplementationType() != VAImplementation::kIntelIHD)
+    GTEST_SKIP() << "backend not supported";
+
+  if (!VaapiWrapper::IsVppFormatSupported(va_fourcc_in) ||
+      !VaapiWrapper::IsVppFormatSupported(va_fourcc_out)) {
+    GTEST_SKIP() << FourccToString(va_fourcc_in) << " -> "
+                 << FourccToString(va_fourcc_out) << " not supported";
+  }
+  constexpr gfx::Size kInputSize(640, 320);
+  constexpr gfx::Size kOutputSize(320, 180);
+  ASSERT_TRUE(VaapiWrapper::IsVppResolutionAllowed(kInputSize));
+  ASSERT_TRUE(VaapiWrapper::IsVppResolutionAllowed(kOutputSize));
+
+  auto wrapper =
+      VaapiWrapper::Create(VaapiWrapper::kVideoProcess, VAProfileNone,
+                           EncryptionScheme::kUnencrypted, base::DoNothing());
+  ASSERT_TRUE(!!wrapper);
+  // Size is unnecessary for a VPP context.
+  ASSERT_TRUE(wrapper->CreateContext(gfx::Size()));
+
+  const unsigned int va_rt_format_in = ToVaRTFormat(va_fourcc_in);
+  ASSERT_NE(va_rt_format_in, kInvalidVaRtFormat);
+  const unsigned int va_rt_format_out = ToVaRTFormat(va_fourcc_out);
+  ASSERT_NE(va_rt_format_out, kInvalidVaRtFormat);
+
+  std::unique_ptr<ScopedVASurface> scoped_surface_in =
+      wrapper->CreateScopedVASurface(va_rt_format_in, kInputSize);
+  ASSERT_TRUE(!!scoped_surface_in);
+
+  std::unique_ptr<ScopedVASurface> scoped_surface_out =
+      wrapper->CreateScopedVASurface(va_rt_format_out, kOutputSize);
+  ASSERT_TRUE(!!scoped_surface_out);
+
+  scoped_refptr<VASurface> surface_in = base::MakeRefCounted<VASurface>(
+      scoped_surface_in->id(), kInputSize, va_rt_format_in, base::DoNothing());
+  scoped_refptr<VASurface> surface_out =
+      base::MakeRefCounted<VASurface>(scoped_surface_out->id(), kOutputSize,
+                                      va_rt_format_out, base::DoNothing());
+
+  ASSERT_TRUE(wrapper->BlitSurface(*surface_in, *surface_out,
+                                   gfx::Rect(kInputSize),
+                                   gfx::Rect(kOutputSize), VIDEO_ROTATION_0));
+  ASSERT_TRUE(wrapper->SyncSurface(scoped_surface_out->id()));
+  wrapper->DestroyContext();
+}
+
+// TODO(b/187852384): Consider adding more VaapiVppTest cases, e.g. crops.
+
+// Note: vaCreateSurfaces() uses the RT version of the Four CC, so we don't need
+// to consider swizzlings, since they'll end up mapped to the same RT format.
+constexpr uint32_t kVAFourCCs[] = {VA_FOURCC_I420, VA_FOURCC_YUY2,
+                                   VA_FOURCC_RGBA, VA_FOURCC_P010};
+
+INSTANTIATE_TEST_SUITE_P(,
+                         VaapiVppTest,
+                         ::testing::Combine(::testing::ValuesIn(kVAFourCCs),
+                                            ::testing::ValuesIn(kVAFourCCs)),
+                         VaapiVppTest::PrintToStringParamName());
+
 }  // namespace media
 
 int main(int argc, char** argv) {
diff --git a/media/mojo/common/BUILD.gn b/media/mojo/common/BUILD.gn
index 1689347..a570c550 100644
--- a/media/mojo/common/BUILD.gn
+++ b/media/mojo/common/BUILD.gn
@@ -6,6 +6,8 @@
   sources = [
     "audio_data_s16_converter.cc",
     "audio_data_s16_converter.h",
+    "input_error_code_converter.cc",
+    "input_error_code_converter.h",
     "media_type_converters.cc",
     "media_type_converters.h",
     "mojo_data_pipe_read_write.cc",
diff --git a/media/mojo/common/input_error_code_converter.cc b/media/mojo/common/input_error_code_converter.cc
new file mode 100644
index 0000000..3829bb7
--- /dev/null
+++ b/media/mojo/common/input_error_code_converter.cc
@@ -0,0 +1,18 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "media/mojo/common/input_error_code_converter.h"
+
+namespace media {
+AudioCapturerSource::ErrorCode ConvertToCaptureCallbackCode(
+    mojom::InputStreamErrorCode code) {
+  switch (code) {
+    case mojom::InputStreamErrorCode::kSystemPermissions:
+      return AudioCapturerSource::ErrorCode::kSystemPermissions;
+    case mojom::InputStreamErrorCode::kUnknown:
+      break;
+  }
+  return AudioCapturerSource::ErrorCode::kUnknown;
+}
+}  // namespace media
diff --git a/media/mojo/common/input_error_code_converter.h b/media/mojo/common/input_error_code_converter.h
new file mode 100644
index 0000000..99a1f0b
--- /dev/null
+++ b/media/mojo/common/input_error_code_converter.h
@@ -0,0 +1,16 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef MEDIA_MOJO_COMMON_INPUT_ERROR_CODE_CONVERTER_H_
+#define MEDIA_MOJO_COMMON_INPUT_ERROR_CODE_CONVERTER_H_
+
+#include "media/base/audio_capturer_source.h"
+#include "media/mojo/mojom/media_types.mojom.h"
+
+namespace media {
+AudioCapturerSource::ErrorCode ConvertToCaptureCallbackCode(
+    mojom::InputStreamErrorCode code);
+}
+
+#endif
diff --git a/media/mojo/mojom/speech_recognition_service.mojom b/media/mojo/mojom/speech_recognition_service.mojom
index 55cf313f..d5ba43b0 100644
--- a/media/mojo/mojom/speech_recognition_service.mojom
+++ b/media/mojo/mojom/speech_recognition_service.mojom
@@ -180,4 +180,7 @@
   // In the case of web fallback (not for launch, used for development only),
   // this option will be ignored.
   SpeechRecognitionMode recognition_mode;
+
+  // Whether to enable formatting and punctuation in the recognition results.
+  bool enable_formatting;
 };
diff --git a/media/remoting/BUILD.gn b/media/remoting/BUILD.gn
index 7421c701..780b8d3 100644
--- a/media/remoting/BUILD.gn
+++ b/media/remoting/BUILD.gn
@@ -111,7 +111,7 @@
     "//url",
   ]
 
-  if (!is_android) {
+  if (enable_media_remoting_rpc) {
     sources += [
       "courier_renderer_unittest.cc",
       "demuxer_stream_adapter_unittest.cc",
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/module-shared.h.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/module-shared.h.tmpl
index 62e0aecd..8f9fad74 100644
--- a/mojo/public/tools/bindings/generators/cpp_templates/module-shared.h.tmpl
+++ b/mojo/public/tools/bindings/generators/cpp_templates/module-shared.h.tmpl
@@ -44,7 +44,6 @@
 
 {%- if not contains_only_enums %}
 #include "base/compiler_specific.h"
-#include "base/containers/flat_map.h"
 #include "mojo/public/cpp/bindings/array_data_view.h"
 #include "mojo/public/cpp/bindings/enum_traits.h"
 #include "mojo/public/cpp/bindings/interface_data_view.h"
diff --git a/net/cert/cert_and_ct_verifier.h b/net/cert/cert_and_ct_verifier.h
index b64502e..cfcefaa1 100644
--- a/net/cert/cert_and_ct_verifier.h
+++ b/net/cert/cert_and_ct_verifier.h
@@ -45,6 +45,8 @@
                             const NetLogWithSource& net_log,
                             int result);
 
+  // TODO(crbug.com/1211074): Expose CT log list as part of
+  // CertVerifier::Config.
   std::unique_ptr<CertVerifier> cert_verifier_;
   std::unique_ptr<CTVerifier> ct_verifier_;
 };
diff --git a/net/cert/multi_log_ct_verifier.cc b/net/cert/multi_log_ct_verifier.cc
index dfd44a4e..bd503cf 100644
--- a/net/cert/multi_log_ct_verifier.cc
+++ b/net/cert/multi_log_ct_verifier.cc
@@ -6,6 +6,8 @@
 
 #include <vector>
 
+#include "base/bind.h"
+#include "base/callback.h"
 #include "base/logging.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/values.h"
@@ -52,15 +54,37 @@
 
 }  // namespace
 
-MultiLogCTVerifier::MultiLogCTVerifier() {}
+base::CallbackListSubscription
+MultiLogCTVerifier::CTLogProvider::RegisterLogsListCallback(
+    LogListCallbackList::CallbackType callback) {
+  return callback_list_.Add(std::move(callback));
+}
+
+void MultiLogCTVerifier::CTLogProvider::NotifyCallbacks(
+    const std::vector<scoped_refptr<const net::CTLogVerifier>>& log_verifiers) {
+  callback_list_.Notify(log_verifiers);
+}
+
+MultiLogCTVerifier::CTLogProvider::CTLogProvider() = default;
+MultiLogCTVerifier::CTLogProvider::~CTLogProvider() = default;
+
+MultiLogCTVerifier::MultiLogCTVerifier(CTLogProvider* notifier) {
+  // base::Unretained is safe since we are using a CallbackListSubscription that
+  // won't outlive |this|.
+  log_provider_subscription_ =
+      notifier->RegisterLogsListCallback(base::BindRepeating(
+          &MultiLogCTVerifier::SetLogs, base::Unretained(this)));
+}
 
 MultiLogCTVerifier::~MultiLogCTVerifier() = default;
 
-void MultiLogCTVerifier::AddLogs(
+void MultiLogCTVerifier::SetLogs(
     const std::vector<scoped_refptr<const CTLogVerifier>>& log_verifiers) {
+  logs_.clear();
   for (const auto& log_verifier : log_verifiers) {
     VLOG(1) << "Adding CT log: " << log_verifier->description();
-    logs_[log_verifier->key_id()] = log_verifier;
+    std::string key_id = log_verifier->key_id();
+    logs_[key_id] = log_verifier;
   }
 }
 
diff --git a/net/cert/multi_log_ct_verifier.h b/net/cert/multi_log_ct_verifier.h
index 0d603eb..3d48182 100644
--- a/net/cert/multi_log_ct_verifier.h
+++ b/net/cert/multi_log_ct_verifier.h
@@ -8,8 +8,11 @@
 #include <map>
 #include <string>
 
+#include "base/callback_forward.h"
+#include "base/callback_list.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
+#include "base/memory/weak_ptr.h"
 #include "base/strings/string_piece.h"
 #include "net/base/net_export.h"
 #include "net/cert/ct_verifier.h"
@@ -28,10 +31,30 @@
 // It must be initialized with a list of logs by calling AddLogs.
 class NET_EXPORT MultiLogCTVerifier : public CTVerifier {
  public:
-  MultiLogCTVerifier();
+  class NET_EXPORT CTLogProvider {
+   public:
+    using LogListCallbackList = base::RepeatingCallbackList<void(
+        const std::vector<scoped_refptr<const CTLogVerifier>>& log_verifiers)>;
+
+    base::CallbackListSubscription RegisterLogsListCallback(
+        LogListCallbackList::CallbackType callback);
+
+   protected:
+    CTLogProvider();
+    ~CTLogProvider();
+
+    void NotifyCallbacks(
+        const std::vector<scoped_refptr<const net::CTLogVerifier>>&
+            log_verifiers);
+
+   private:
+    LogListCallbackList callback_list_;
+  };
+
+  explicit MultiLogCTVerifier(CTLogProvider* notifier);
   ~MultiLogCTVerifier() override;
 
-  void AddLogs(
+  void SetLogs(
       const std::vector<scoped_refptr<const CTLogVerifier>>& log_verifiers);
 
   // CTVerifier implementation:
@@ -65,6 +88,8 @@
   // of RFC6962.
   std::map<std::string, scoped_refptr<const CTLogVerifier>> logs_;
 
+  base::CallbackListSubscription log_provider_subscription_;
+
   DISALLOW_COPY_AND_ASSIGN(MultiLogCTVerifier);
 };
 
diff --git a/net/cert/multi_log_ct_verifier_unittest.cc b/net/cert/multi_log_ct_verifier_unittest.cc
index 006908b..f256e3a 100644
--- a/net/cert/multi_log_ct_verifier_unittest.cc
+++ b/net/cert/multi_log_ct_verifier_unittest.cc
@@ -41,6 +41,12 @@
 const char kHostname[] = "example.com";
 const char kLogDescription[] = "somelog";
 
+class DoNothingLogProvider : public MultiLogCTVerifier::CTLogProvider {
+ public:
+  DoNothingLogProvider() = default;
+  ~DoNothingLogProvider() = default;
+};
+
 class MultiLogCTVerifierTest : public ::testing::Test {
  public:
   void SetUp() override {
@@ -49,8 +55,9 @@
     ASSERT_TRUE(log);
     log_verifiers_.push_back(log);
 
-    verifier_ = std::make_unique<MultiLogCTVerifier>();
-    verifier_->AddLogs(log_verifiers_);
+    DoNothingLogProvider notifier;
+    verifier_ = std::make_unique<MultiLogCTVerifier>(&notifier);
+    verifier_->SetLogs(log_verifiers_);
     std::string der_test_cert(ct::GetDerEncodedX509Cert());
     chain_ = X509Certificate::CreateFromBytes(
         der_test_cert.data(),
@@ -241,6 +248,29 @@
   EXPECT_EQ(old_embedded_count + 1, NumEmbeddedSCTsInHistogram());
 }
 
+TEST_F(MultiLogCTVerifierTest, SetLogsRemovesOldLogs) {
+  log_verifiers_.clear();
+  verifier_->SetLogs(log_verifiers_);
+  // Log list is now empty so verification should fail.
+  ASSERT_FALSE(CheckPrecertificateVerification(embedded_sct_chain_));
+}
+
+TEST_F(MultiLogCTVerifierTest, SetLogsAddsNewLogs) {
+  // Clear the log list.
+  log_verifiers_.clear();
+  verifier_->SetLogs(log_verifiers_);
+
+  // Add valid log again via SetLogs
+  scoped_refptr<const CTLogVerifier> log(
+      CTLogVerifier::Create(ct::GetTestPublicKey(), kLogDescription));
+  ASSERT_TRUE(log);
+  log_verifiers_.push_back(log);
+  verifier_->SetLogs(log_verifiers_);
+
+  // Verification should now succeed.
+  ASSERT_TRUE(CheckPrecertificateVerification(embedded_sct_chain_));
+}
+
 }  // namespace
 
 }  // namespace net
diff --git a/net/quic/crypto/proof_verifier_chromium_test.cc b/net/quic/crypto/proof_verifier_chromium_test.cc
index e62a038..9e3a503 100644
--- a/net/quic/crypto/proof_verifier_chromium_test.cc
+++ b/net/quic/crypto/proof_verifier_chromium_test.cc
@@ -300,6 +300,12 @@
   ASSERT_EQ(quic::QUIC_FAILURE, status);
 }
 
+class DoNothingLogNotifier : public MultiLogCTVerifier::CTLogProvider {
+ public:
+  DoNothingLogNotifier() = default;
+  ~DoNothingLogNotifier() = default;
+};
+
 // Valid SCT and cert
 TEST_F(ProofVerifierChromiumTest, ValidSCTList) {
   // Use different certificates for SCT tests.
@@ -322,8 +328,9 @@
       CTLogVerifier::Create(ct::GetTestPublicKey(), kLogDescription));
   ASSERT_TRUE(log);
   log_verifiers.push_back(log);
-  auto ct_verifier = std::make_unique<MultiLogCTVerifier>();
-  ct_verifier->AddLogs(log_verifiers);
+  DoNothingLogNotifier notifier;
+  auto ct_verifier = std::make_unique<MultiLogCTVerifier>(&notifier);
+  ct_verifier->SetLogs(log_verifiers);
 
   CertAndCTVerifier cert_verifier(std::move(dummy_verifier),
                                   std::move(ct_verifier));
@@ -364,8 +371,9 @@
       CTLogVerifier::Create(ct::GetTestPublicKey(), kLogDescription));
   ASSERT_TRUE(log);
   log_verifiers.push_back(log);
-  auto ct_verifier = std::make_unique<MultiLogCTVerifier>();
-  ct_verifier->AddLogs(log_verifiers);
+  DoNothingLogNotifier notifier;
+  auto ct_verifier = std::make_unique<MultiLogCTVerifier>(&notifier);
+  ct_verifier->SetLogs(log_verifiers);
 
   CertAndCTVerifier cert_verifier(std::move(dummy_verifier),
                                   std::move(ct_verifier));
diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc
index d3140c0..cced331 100644
--- a/net/url_request/url_request_unittest.cc
+++ b/net/url_request/url_request_unittest.cc
@@ -7674,8 +7674,6 @@
 // set if the cookie would have been rejected for other reasons.
 // Regression test for https://crbug.com/1027318.
 TEST_F(URLRequestTest, NoCookieInclusionStatusWarningIfWouldBeExcludedAnyway) {
-  base::test::ScopedFeatureList feature_list;
-  feature_list.InitAndEnableFeature(features::kSameSiteByDefaultCookies);
   HttpTestServer test_server;
   ASSERT_TRUE(test_server.Start());
 
diff --git a/pdf/BUILD.gn b/pdf/BUILD.gn
index 94c8f6c..6bbc1625 100644
--- a/pdf/BUILD.gn
+++ b/pdf/BUILD.gn
@@ -276,6 +276,13 @@
       "//ui/base/cursor/mojom:cursor_type",
       "//ui/gfx",
     ]
+
+    if (is_linux || is_chromeos) {
+      sources += [
+        "ppapi_migration/pdfium_font_linux.cc",
+        "ppapi_migration/pdfium_font_linux.h",
+      ]
+    }
   }
 
   source_set("out_of_process_instance") {
diff --git a/pdf/pdfium/pdfium_engine.cc b/pdf/pdfium/pdfium_engine.cc
index 333ce72..e8f76f7 100644
--- a/pdf/pdfium/pdfium_engine.cc
+++ b/pdf/pdfium/pdfium_engine.cc
@@ -50,6 +50,7 @@
 #include "pdf/pdfium/pdfium_unsupported_features.h"
 #include "pdf/ppapi_migration/bitmap.h"
 #include "pdf/ppapi_migration/geometry_conversions.h"
+#include "pdf/ppapi_migration/pdfium_font_linux.h"
 #include "pdf/ppapi_migration/url_loader.h"
 #include "pdf/url_loader_wrapper_impl.h"
 #include "ppapi/cpp/instance.h"
@@ -545,10 +546,8 @@
   IFSDK_PAUSE::user = nullptr;
   IFSDK_PAUSE::NeedToPauseNow = Pause_NeedToPauseNow;
 
-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
   // PreviewModeClient does not know its pp::Instance.
-  SetLastInstance(client_->GetPluginInstance());
-#endif
+  SetLastInstance();
 }
 
 PDFiumEngine::~PDFiumEngine() {
@@ -1003,9 +1002,7 @@
 
   KillFormFocus();
 
-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-  SetLastInstance(client_->GetPluginInstance());
-#endif
+  SetLastInstance();
 
   return ConvertPdfToBufferDev(
       print_.PrintPagesAsPdf(page_ranges, page_range_count, print_settings,
@@ -3154,9 +3151,7 @@
   DCHECK_LT(static_cast<size_t>(progressive_index), progressive_paints_.size());
 
   last_progressive_start_time_ = base::Time::Now();
-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-  SetLastInstance(client_->GetPluginInstance());
-#endif
+  SetLastInstance();
 
   int page_index = progressive_paints_[progressive_index].page_index();
   DCHECK(PageIndexInBounds(page_index));
@@ -3643,9 +3638,7 @@
     FORM_DoPageAAction(old_page, form(), FPDFPAGE_AACTION_CLOSE);
   }
   most_visible_page_ = index;
-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-  SetLastInstance(client_->GetPluginInstance());
-#endif
+  SetLastInstance();
   if (most_visible_page_ != -1 && called_do_document_action_) {
     FPDF_PAGE new_page = pages_[most_visible_page_]->GetPage();
     FORM_DoPageAAction(new_page, form(), FPDFPAGE_AACTION_OPEN);
@@ -4264,6 +4257,12 @@
                                        std::move(send_callback));
 }
 
+void PDFiumEngine::SetLastInstance() {
+#if defined(OS_LINUX) || defined(OS_CHROMEOS)
+  SetLastPepperInstance(client_->GetPluginInstance());
+#endif
+}
+
 PDFiumEngine::ProgressivePaint::ProgressivePaint(int index,
                                                  const gfx::Rect& rect)
     : page_index_(index), rect_(rect) {}
diff --git a/pdf/pdfium/pdfium_engine.h b/pdf/pdfium/pdfium_engine.h
index e920717..9bd6064f 100644
--- a/pdf/pdfium/pdfium_engine.h
+++ b/pdf/pdfium/pdfium_engine.h
@@ -640,6 +640,10 @@
   void UpdateLinkUnderCursor(const std::string& target_url);
   void SetLinkUnderCursorForAnnotation(FPDF_ANNOTATION annot, int page_index);
 
+  // Keeps track of the most recently used plugin instance.
+  // TODO(crbug.com/702993): Remove when PPAPI is gone.
+  void SetLastInstance();
+
   PDFEngine::Client* const client_;
 
   // The current document layout.
diff --git a/pdf/pdfium/pdfium_font_linux.cc b/pdf/pdfium/pdfium_font_linux.cc
index 2f31779..c9bbebe 100644
--- a/pdf/pdfium/pdfium_font_linux.cc
+++ b/pdf/pdfium/pdfium_font_linux.cc
@@ -13,6 +13,7 @@
 #include "base/numerics/ranges.h"
 #include "base/stl_util.h"
 #include "base/strings/string_util.h"
+#include "pdf/ppapi_migration/pdfium_font_linux.h"
 #include "ppapi/cpp/instance.h"
 #include "ppapi/cpp/module.h"
 #include "ppapi/cpp/private/pdf.h"
@@ -23,8 +24,6 @@
 
 namespace {
 
-PP_Instance g_last_instance_id;
-
 PP_BrowserFont_Trusted_Weight WeightToBrowserFontTrustedWeight(int weight) {
   static_assert(PP_BROWSERFONT_TRUSTED_WEIGHT_100 == 0,
                 "PP_BrowserFont_Trusted_Weight min");
@@ -161,7 +160,7 @@
   }
 
   PP_Resource font_resource = pp::PDF::GetFontFileWithFallback(
-      pp::InstanceHandle(g_last_instance_id),
+      pp::InstanceHandle(GetLastPepperInstance()),
       &description.pp_font_description(),
       static_cast<PP_PrivateFontCharset>(charset));
   long res_id = font_resource;
@@ -199,9 +198,4 @@
   FPDF_SetSystemFontInfo(&g_font_info);
 }
 
-void SetLastInstance(pp::Instance* last_instance) {
-  if (last_instance)
-    g_last_instance_id = last_instance->pp_instance();
-}
-
 }  // namespace chrome_pdf
diff --git a/pdf/pdfium/pdfium_font_linux.h b/pdf/pdfium/pdfium_font_linux.h
index 3e5decd..fbbb97d 100644
--- a/pdf/pdfium/pdfium_font_linux.h
+++ b/pdf/pdfium/pdfium_font_linux.h
@@ -5,10 +5,6 @@
 #ifndef PDF_PDFIUM_PDFIUM_FONT_LINUX_H_
 #define PDF_PDFIUM_PDFIUM_FONT_LINUX_H_
 
-namespace pp {
-class Instance;
-}
-
 namespace chrome_pdf {
 
 // Initializes a Linux-specific font mapper that proxies font requests via
@@ -16,10 +12,6 @@
 // Linux.
 void InitializeLinuxFontMapper();
 
-// Keeps track of the most recently used plugin instance. This is a no-op of
-// `last_instance` is null.
-void SetLastInstance(pp::Instance* last_instance);
-
 }  // namespace chrome_pdf
 
 #endif  // PDF_PDFIUM_PDFIUM_FONT_LINUX_H_
diff --git a/pdf/ppapi_migration/pdfium_font_linux.cc b/pdf/ppapi_migration/pdfium_font_linux.cc
new file mode 100644
index 0000000..d117050
--- /dev/null
+++ b/pdf/ppapi_migration/pdfium_font_linux.cc
@@ -0,0 +1,26 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "pdf/ppapi_migration/pdfium_font_linux.h"
+
+#include "ppapi/cpp/instance.h"
+
+namespace chrome_pdf {
+
+namespace {
+
+PP_Instance g_last_instance_id;
+
+}  // namespace
+
+void SetLastPepperInstance(pp::Instance* last_instance) {
+  if (last_instance)
+    g_last_instance_id = last_instance->pp_instance();
+}
+
+PP_Instance GetLastPepperInstance() {
+  return g_last_instance_id;
+}
+
+}  // namespace chrome_pdf
diff --git a/pdf/ppapi_migration/pdfium_font_linux.h b/pdf/ppapi_migration/pdfium_font_linux.h
new file mode 100644
index 0000000..ab671410
--- /dev/null
+++ b/pdf/ppapi_migration/pdfium_font_linux.h
@@ -0,0 +1,24 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef PDF_PPAPI_MIGRATION_PDFIUM_FONT_LINUX_H_
+#define PDF_PPAPI_MIGRATION_PDFIUM_FONT_LINUX_H_
+
+#include "ppapi/c/pp_instance.h"
+
+namespace pp {
+class Instance;
+}
+
+namespace chrome_pdf {
+
+// Keeps track of the most recently used plugin instance. This is a no-op if
+// `last_instance` is null.
+void SetLastPepperInstance(pp::Instance* last_instance);
+
+PP_Instance GetLastPepperInstance();
+
+}  // namespace chrome_pdf
+
+#endif  // PDF_PPAPI_MIGRATION_PDFIUM_FONT_LINUX_H_
diff --git a/services/audio/group_coordinator.h b/services/audio/group_coordinator.h
index a47f5019..e695a049 100644
--- a/services/audio/group_coordinator.h
+++ b/services/audio/group_coordinator.h
@@ -13,7 +13,6 @@
 #include "base/check.h"
 #include "base/macros.h"
 #include "base/sequence_checker.h"
-#include "base/stl_util.h"
 #include "base/unguessable_token.h"
 
 namespace audio {
diff --git a/services/audio/public/cpp/BUILD.gn b/services/audio/public/cpp/BUILD.gn
index b206da9f..3dbf5a8 100644
--- a/services/audio/public/cpp/BUILD.gn
+++ b/services/audio/public/cpp/BUILD.gn
@@ -29,6 +29,7 @@
   public_deps = [
     "//base",
     "//media",
+    "//media/mojo/common",
     "//services/audio/public/mojom",
   ]
 }
diff --git a/services/audio/public/cpp/input_ipc.cc b/services/audio/public/cpp/input_ipc.cc
index 53366c6..fd9e0d4 100644
--- a/services/audio/public/cpp/input_ipc.cc
+++ b/services/audio/public/cpp/input_ipc.cc
@@ -9,6 +9,7 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/memory/read_only_shared_memory_region.h"
+#include "media/mojo/common/input_error_code_converter.h"
 #include "media/mojo/mojom/audio_data_pipe.mojom.h"
 #include "mojo/public/cpp/bindings/remote.h"
 
@@ -121,8 +122,8 @@
 void InputIPC::OnError(media::mojom::InputStreamErrorCode code) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(delegate_);
-  // TODO(toprice): propagate the errorcode to the delegate_.
-  delegate_->OnError();
+
+  delegate_->OnError(media::ConvertToCaptureCallbackCode(code));
 }
 
 void InputIPC::OnMutedStateChanged(bool is_muted) {
diff --git a/services/audio/public/cpp/input_ipc_unittest.cc b/services/audio/public/cpp/input_ipc_unittest.cc
index 76747f9..92e8ec1 100644
--- a/services/audio/public/cpp/input_ipc_unittest.cc
+++ b/services/audio/public/cpp/input_ipc_unittest.cc
@@ -9,6 +9,7 @@
 
 #include "base/bind.h"
 #include "base/test/task_environment.h"
+#include "media/base/audio_capturer_source.h"
 #include "media/mojo/mojom/audio_data_pipe.mojom.h"
 #include "mojo/public/cpp/bindings/receiver.h"
 #include "mojo/public/cpp/bindings/remote.h"
@@ -101,7 +102,7 @@
   }
 
   MOCK_METHOD1(GotOnStreamCreated, void(bool initially_muted));
-  MOCK_METHOD0(OnError, void());
+  MOCK_METHOD1(OnError, void(media::AudioCapturerSource::ErrorCode));
   MOCK_METHOD1(OnMuted, void(bool));
   MOCK_METHOD0(OnIPCClosed, void());
 };
@@ -230,7 +231,9 @@
 
 TEST_F(InputIPCTest, FailedStreamCreationNullCallback) {
   StrictMock<MockDelegate> delegate;
-  EXPECT_CALL(delegate, OnError()).Times(2);
+  EXPECT_CALL(delegate,
+              OnError(media::AudioCapturerSource::ErrorCode::kUnknown))
+      .Times(2);
   factory_->should_fail_ = true;
   ipc->CreateStream(&delegate, audioParameters, false, 0);
   task_environment.RunUntilIdle();
@@ -238,7 +241,8 @@
 
 TEST_F(InputIPCTest, FailedStreamCreationDestuctedFactory) {
   StrictMock<MockDelegate> delegate;
-  EXPECT_CALL(delegate, OnError());
+  EXPECT_CALL(delegate,
+              OnError(media::AudioCapturerSource::ErrorCode::kUnknown));
   factory_ = nullptr;
   ipc->CreateStream(&delegate, audioParameters, false, 0);
   task_environment.RunUntilIdle();
diff --git a/services/audio/public/cpp/sounds/audio_stream_handler_unittest.cc b/services/audio/public/cpp/sounds/audio_stream_handler_unittest.cc
index 06310ba4..577e558f 100644
--- a/services/audio/public/cpp/sounds/audio_stream_handler_unittest.cc
+++ b/services/audio/public/cpp/sounds/audio_stream_handler_unittest.cc
@@ -13,7 +13,6 @@
 #include "base/location.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/test/test_message_loop.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "media/audio/audio_io.h"
diff --git a/services/device/hid/hid_manager_impl.cc b/services/device/hid/hid_manager_impl.cc
index aaca19b..7b441ec 100644
--- a/services/device/hid/hid_manager_impl.cc
+++ b/services/device/hid/hid_manager_impl.cc
@@ -9,7 +9,6 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/lazy_instance.h"
-#include "base/stl_util.h"
 #include "mojo/public/cpp/bindings/associated_remote.h"
 #include "mojo/public/cpp/bindings/pending_remote.h"
 #include "mojo/public/cpp/bindings/self_owned_receiver.h"
diff --git a/services/device/public/cpp/hid/hid_collection.cc b/services/device/public/cpp/hid/hid_collection.cc
index 3b66554..f4cf826 100644
--- a/services/device/public/cpp/hid/hid_collection.cc
+++ b/services/device/public/cpp/hid/hid_collection.cc
@@ -9,7 +9,6 @@
 #include <utility>
 
 #include "base/memory/ptr_util.h"
-#include "base/stl_util.h"
 #include "services/device/public/cpp/hid/hid_item_state_table.h"
 
 namespace device {
diff --git a/services/device/serial/serial_port_impl_unittest.cc b/services/device/serial/serial_port_impl_unittest.cc
index d98e78da..3501043 100644
--- a/services/device/serial/serial_port_impl_unittest.cc
+++ b/services/device/serial/serial_port_impl_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "services/device/serial/serial_port_impl.h"
 
-#include "base/stl_util.h"
 #include "base/test/bind.h"
 #include "mojo/public/cpp/bindings/pending_remote.h"
 #include "mojo/public/cpp/bindings/remote.h"
diff --git a/services/device/usb/usb_device_impl.cc b/services/device/usb/usb_device_impl.cc
index 208606569..aca10158 100644
--- a/services/device/usb/usb_device_impl.cc
+++ b/services/device/usb/usb_device_impl.cc
@@ -14,7 +14,6 @@
 #include "base/posix/eintr_wrapper.h"
 #include "base/sequenced_task_runner.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/threading/scoped_blocking_call.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "build/build_config.h"
diff --git a/services/device/usb/webusb_descriptors.cc b/services/device/usb/webusb_descriptors.cc
index d05d1f8..ddbd071 100644
--- a/services/device/usb/webusb_descriptors.cc
+++ b/services/device/usb/webusb_descriptors.cc
@@ -10,7 +10,6 @@
 #include "base/callback.h"
 #include "base/logging.h"
 #include "base/memory/ref_counted_memory.h"
-#include "base/stl_util.h"
 #include "components/device_event_log/device_event_log.h"
 #include "services/device/usb/usb_device_handle.h"
 #include "url/gurl.h"
diff --git a/services/device/usb/webusb_descriptors_unittest.cc b/services/device/usb/webusb_descriptors_unittest.cc
index 2bd9a54..d6b27f8 100644
--- a/services/device/usb/webusb_descriptors_unittest.cc
+++ b/services/device/usb/webusb_descriptors_unittest.cc
@@ -10,7 +10,6 @@
 #include <memory>
 
 #include "base/bind.h"
-#include "base/stl_util.h"
 #include "services/device/usb/mock_usb_device_handle.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/services/network/BUILD.gn b/services/network/BUILD.gn
index 96eb95c..ad15938 100644
--- a/services/network/BUILD.gn
+++ b/services/network/BUILD.gn
@@ -257,6 +257,8 @@
 
   if (is_ct_supported) {
     sources += [
+      "ct_log_list_distributor.cc",
+      "ct_log_list_distributor.h",
       "expect_ct_reporter.cc",
       "expect_ct_reporter.h",
       "sct_auditing/sct_auditing_cache.cc",
@@ -425,6 +427,7 @@
 
   if (is_ct_supported) {
     sources += [
+      "ct_log_list_distributor_unittest.cc",
       "expect_ct_reporter_unittest.cc",
       "sct_auditing/sct_auditing_cache_unittest.cc",
     ]
diff --git a/services/network/ct_log_list_distributor.cc b/services/network/ct_log_list_distributor.cc
new file mode 100644
index 0000000..5b6ef113
--- /dev/null
+++ b/services/network/ct_log_list_distributor.cc
@@ -0,0 +1,36 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "services/network/ct_log_list_distributor.h"
+
+#include <string>
+
+#include "base/callback.h"
+#include "base/callback_list.h"
+#include "net/cert/ct_log_verifier.h"
+#include "services/network/public/cpp/features.h"
+
+namespace network {
+
+CtLogListDistributor::CtLogListDistributor() = default;
+
+CtLogListDistributor::~CtLogListDistributor() = default;
+
+void CtLogListDistributor::OnNewCtConfig(
+    const std::vector<mojom::CTLogInfoPtr>& log_list) {
+  std::vector<scoped_refptr<const net::CTLogVerifier>> ct_logs;
+  for (auto& log : log_list) {
+    scoped_refptr<const net::CTLogVerifier> log_verifier =
+        net::CTLogVerifier::Create(log->public_key, log->name);
+    if (!log_verifier) {
+      // TODO(crbug.com/1211056): Signal bad configuration (such as bad key).
+      continue;
+    }
+    ct_logs.push_back(std::move(log_verifier));
+  }
+
+  NotifyCallbacks(ct_logs);
+}
+
+}  // namespace network
diff --git a/services/network/ct_log_list_distributor.h b/services/network/ct_log_list_distributor.h
new file mode 100644
index 0000000..4df309b
--- /dev/null
+++ b/services/network/ct_log_list_distributor.h
@@ -0,0 +1,33 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SERVICES_NETWORK_CT_LOG_LIST_DISTRIBUTOR_H_
+#define SERVICES_NETWORK_CT_LOG_LIST_DISTRIBUTOR_H_
+
+#include "base/callback_forward.h"
+#include "base/callback_list.h"
+#include "base/component_export.h"
+#include "net/cert/multi_log_ct_verifier.h"
+#include "services/network/public/mojom/ct_log_info.mojom.h"
+
+namespace network {
+
+// Handles distribution of component updater delivered Certificate
+// Transparency enforcement configuration to classes that need to be
+// notified about changes.
+
+// TODO(crbug.com/1211074): Once CT log list configuration is exposed via
+// CertVerifier::Config, we should configure changes using that instead.
+class COMPONENT_EXPORT(NETWORK_SERVICE) CtLogListDistributor
+    : public net::MultiLogCTVerifier::CTLogProvider {
+ public:
+  CtLogListDistributor();
+  virtual ~CtLogListDistributor();
+
+  void OnNewCtConfig(const std::vector<mojom::CTLogInfoPtr>& log_list);
+};
+
+}  // namespace network
+
+#endif  // SERVICES_NETWORK_CT_LOG_LIST_DISTRIBUTOR_H_
diff --git a/services/network/ct_log_list_distributor_unittest.cc b/services/network/ct_log_list_distributor_unittest.cc
new file mode 100644
index 0000000..9dee8097
--- /dev/null
+++ b/services/network/ct_log_list_distributor_unittest.cc
@@ -0,0 +1,81 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+#include "base/logging.h"
+
+#include "services/network/ct_log_list_distributor.h"
+
+#include "base/bind.h"
+#include "base/callback.h"
+#include "base/callback_list.h"
+#include "base/test/task_environment.h"
+#include "crypto/sha2.h"
+#include "net/cert/ct_log_verifier.h"
+#include "net/cert/multi_log_ct_verifier.h"
+#include "net/test/ct_test_util.h"
+#include "services/network/public/mojom/ct_log_info.mojom.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace network {
+
+class MockLogVerifier {
+ public:
+  MockLogVerifier() = default;
+  ~MockLogVerifier() = default;
+
+  void SetLogs(const std::vector<scoped_refptr<const net::CTLogVerifier>>&
+                   log_verifiers) {
+    logs_ = log_verifiers;
+  }
+
+  std::vector<scoped_refptr<const net::CTLogVerifier>> GetLogs() {
+    return logs_;
+  }
+
+ private:
+  std::vector<scoped_refptr<const net::CTLogVerifier>> logs_;
+};
+
+class CtLogListDistributorTest : public ::testing::Test {
+ public:
+  void SetUp() override {
+    subscription_ = distributor_.RegisterLogsListCallback(base::BindRepeating(
+        &MockLogVerifier::SetLogs, base::Unretained(&verifier_)));
+  }
+  void Wait() { task_environment_.RunUntilIdle(); }
+
+ protected:
+  base::test::TaskEnvironment task_environment_{
+      base::test::TaskEnvironment::MainThreadType::DEFAULT,
+      base::test::TaskEnvironment::ThreadPoolExecutionMode::QUEUED};
+  CtLogListDistributor distributor_;
+  MockLogVerifier verifier_;
+  base::CallbackListSubscription subscription_;
+};
+
+TEST_F(CtLogListDistributorTest, TestOnNewCtConfig) {
+  const char kLogDescription[] = "somelog";
+
+  // Create log list with a single log.
+  std::vector<network::mojom::CTLogInfoPtr> log_list_mojo;
+  network::mojom::CTLogInfoPtr log_ptr = network::mojom::CTLogInfo::New();
+  log_ptr->name = kLogDescription;
+  log_ptr->public_key = net::ct::GetTestPublicKey();
+  log_list_mojo.push_back(std::move(log_ptr));
+
+  // Pass the log list to the distributor.
+  distributor_.OnNewCtConfig(log_list_mojo);
+
+  // Wait for parsing to finish.
+  Wait();
+
+  // Verifier should have been notified and have the log list.
+  std::vector<scoped_refptr<const net::CTLogVerifier>> logs =
+      verifier_.GetLogs();
+  EXPECT_EQ(logs.size(), 1u);
+  EXPECT_EQ(logs[0]->description(), kLogDescription);
+  EXPECT_EQ(logs[0]->key_id(),
+            crypto::SHA256HashString(net::ct::GetTestPublicKey()));
+}
+
+}  // namespace network
diff --git a/services/network/network_context.cc b/services/network/network_context.cc
index e606e81f..fa95b174 100644
--- a/services/network/network_context.cc
+++ b/services/network/network_context.cc
@@ -124,6 +124,7 @@
 #include "net/cert/cert_and_ct_verifier.h"
 #include "net/cert/ct_log_verifier.h"
 #include "net/cert/multi_log_ct_verifier.h"
+#include "services/network/ct_log_list_distributor.h"
 #include "services/network/expect_ct_reporter.h"
 #include "services/network/sct_auditing/sct_auditing_cache.h"
 #endif  // BUILDFLAG(IS_CT_SUPPORTED)
@@ -1900,21 +1901,20 @@
 
 #if BUILDFLAG(IS_CT_SUPPORTED)
     std::vector<scoped_refptr<const net::CTLogVerifier>> ct_logs;
-    if (!params_->ct_logs.empty()) {
-      for (const auto& log : params_->ct_logs) {
-        scoped_refptr<const net::CTLogVerifier> log_verifier =
-            net::CTLogVerifier::Create(log->public_key, log->name);
-        if (!log_verifier) {
-          // TODO: Signal bad configuration (such as bad key).
-          continue;
-        }
-        ct_logs.push_back(std::move(log_verifier));
+    for (const auto& log : network_service_->log_list()) {
+      scoped_refptr<const net::CTLogVerifier> log_verifier =
+          net::CTLogVerifier::Create(log->public_key, log->name);
+      if (!log_verifier) {
+        // TODO: Signal bad configuration (such as bad key).
+        continue;
       }
-      auto ct_verifier = std::make_unique<net::MultiLogCTVerifier>();
-      ct_verifier->AddLogs(ct_logs);
-      cert_verifier = std::make_unique<net::CertAndCTVerifier>(
-          std::move(cert_verifier), std::move(ct_verifier));
+      ct_logs.push_back(std::move(log_verifier));
     }
+    auto ct_verifier = std::make_unique<net::MultiLogCTVerifier>(
+        network_service_->ct_log_list_distributor());
+    ct_verifier->SetLogs(ct_logs);
+    cert_verifier = std::make_unique<net::CertAndCTVerifier>(
+        std::move(cert_verifier), std::move(ct_verifier));
 #endif  // BUILDFLAG(IS_CT_SUPPORTED)
 
     // Whether the cert verifier is remote or in-process, we should wrap it in
@@ -1942,16 +1942,13 @@
   if (params_->enforce_chrome_ct_policy) {
     std::vector<std::pair<std::string, base::TimeDelta>> disqualified_logs;
     std::vector<std::string> operated_by_google_logs;
-    if (!params_->ct_logs.empty()) {
-      for (const auto& log : params_->ct_logs) {
-        if (log->operated_by_google || log->disqualified_at) {
-          std::string log_id = crypto::SHA256HashString(log->public_key);
-          if (log->operated_by_google)
-            operated_by_google_logs.push_back(log_id);
-          if (log->disqualified_at) {
-            disqualified_logs.push_back(
-                std::make_pair(log_id, log->disqualified_at.value()));
-          }
+    for (const auto& log : network_service_->log_list()) {
+      if (log->operated_by_google || log->disqualified_at) {
+        std::string log_id = crypto::SHA256HashString(log->public_key);
+        if (log->operated_by_google)
+          operated_by_google_logs.push_back(log_id);
+        if (log->disqualified_at) {
+          disqualified_logs.emplace_back(log_id, log->disqualified_at.value());
         }
       }
     }
diff --git a/services/network/network_context_unittest.cc b/services/network/network_context_unittest.cc
index 20c90d0..af6f09a 100644
--- a/services/network/network_context_unittest.cc
+++ b/services/network/network_context_unittest.cc
@@ -6040,9 +6040,8 @@
 
 #if BUILDFLAG(IS_CT_SUPPORTED)
 TEST_F(NetworkContextTest, CertificateTransparencyConfig) {
-  mojom::NetworkContextParamsPtr params = CreateContextParams();
-  params->enforce_chrome_ct_policy = true;
-  params->ct_log_update_time = base::Time::Now();
+  // Configure CT logs in network service.
+  std::vector<network::mojom::CTLogInfoPtr> log_list_mojo;
 
   // The log public keys do not matter for the test, so invalid keys are used.
   // However, because the log IDs are derived from the SHA-256 hash of the log
@@ -6057,7 +6056,7 @@
     log_info->name = std::string(4, 0x30 + static_cast<char>(i));
     log_info->operated_by_google = i % 2;
 
-    params->ct_logs.push_back(std::move(log_info));
+    log_list_mojo.push_back(std::move(log_info));
   }
   for (int i = 0; i < 3; ++i) {
     network::mojom::CTLogInfoPtr log_info = network::mojom::CTLogInfo::New();
@@ -6067,8 +6066,15 @@
     log_info->operated_by_google = false;
     log_info->disqualified_at = base::TimeDelta::FromSeconds(i);
 
-    params->ct_logs.push_back(std::move(log_info));
+    log_list_mojo.push_back(std::move(log_info));
   }
+  network_service()->UpdateCtLogList(std::move(log_list_mojo));
+
+  // Configure CT params in network context.
+  mojom::NetworkContextParamsPtr params = CreateContextParams();
+  params->enforce_chrome_ct_policy = true;
+  params->ct_log_update_time = base::Time::Now();
+
   std::unique_ptr<NetworkContext> network_context =
       CreateContextWithParams(std::move(params));
 
diff --git a/services/network/network_service.cc b/services/network/network_service.cc
index 143c7bd..b2bd0ad 100644
--- a/services/network/network_service.cc
+++ b/services/network/network_service.cc
@@ -83,6 +83,8 @@
 #endif
 
 #if BUILDFLAG(IS_CT_SUPPORTED)
+#include "components/certificate_transparency/ct_features.h"
+#include "services/network/ct_log_list_distributor.h"
 #include "services/network/sct_auditing/sct_auditing_cache.h"
 #endif
 
@@ -326,6 +328,10 @@
 
   crl_set_distributor_ = std::make_unique<CRLSetDistributor>();
 
+#if BUILDFLAG(IS_CT_SUPPORTED)
+  ct_log_list_distributor_ = std::make_unique<CtLogListDistributor>();
+#endif
+
   doh_probe_activator_ = std::make_unique<DelayedDohProbeActivator>(this);
 
   trust_token_key_commitments_ = std::make_unique<TrustTokenKeyCommitments>();
@@ -715,7 +721,25 @@
   sct_auditing_cache_->set_traffic_annotation(traffic_annotation);
   sct_auditing_cache_->set_url_loader_factory(std::move(factory));
 }
-#endif
+
+void NetworkService::UpdateCtLogList(
+    std::vector<mojom::CTLogInfoPtr> log_list) {
+  log_list_ = std::move(log_list);
+  if (base::FeatureList::IsEnabled(
+          certificate_transparency::features::
+              kCertificateTransparencyComponentUpdater)) {
+    ct_log_list_distributor_->OnNewCtConfig(log_list_);
+  }
+}
+
+void NetworkService::SetCtEnforcementEnabled(bool enabled) {
+  // TODO(crbug.com/1211535): Implement Certificate Transparency killswitch.
+  DCHECK(base::FeatureList::IsEnabled(
+      certificate_transparency::features::
+          kCertificateTransparencyComponentUpdater));
+}
+
+#endif  // BUILDFLAG(IS_CT_SUPPORTED)
 
 #if defined(OS_ANDROID)
 void NetworkService::DumpWithoutCrashing(base::Time dump_request_time) {
diff --git a/services/network/network_service.h b/services/network/network_service.h
index 3342648..5e0c0709 100644
--- a/services/network/network_service.h
+++ b/services/network/network_service.h
@@ -17,6 +17,7 @@
 #include "base/containers/flat_set.h"
 #include "base/containers/span.h"
 #include "base/containers/unique_ptr_adapters.h"
+#include "base/feature_list.h"
 #include "base/macros.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/time/time.h"
@@ -47,6 +48,10 @@
 #include "services/service_manager/public/cpp/binder_registry.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 
+#if BUILDFLAG(IS_CT_SUPPORTED)
+#include "services/network/public/mojom/ct_log_info.mojom.h"
+#endif
+
 namespace net {
 class FileNetLogObserver;
 class HostResolverManager;
@@ -59,6 +64,7 @@
 namespace network {
 
 class CRLSetDistributor;
+class CtLogListDistributor;
 class DnsConfigChangeManager;
 class HttpAuthCacheCopier;
 class NetLogProxySink;
@@ -184,6 +190,8 @@
       const GURL& reporting_uri,
       const net::MutableNetworkTrafficAnnotationTag& traffic_annotation,
       mojo::PendingRemote<mojom::URLLoaderFactory> factory) override;
+  void UpdateCtLogList(std::vector<mojom::CTLogInfoPtr> log_list) override;
+  void SetCtEnforcementEnabled(bool enabled) override;
 #endif
 
 #if defined(OS_ANDROID)
@@ -225,6 +233,12 @@
     return crl_set_distributor_.get();
   }
 
+#if BUILDFLAG(IS_CT_SUPPORTED)
+  CtLogListDistributor* ct_log_list_distributor() {
+    return ct_log_list_distributor_.get();
+  }
+#endif
+
   const FirstPartySets* first_party_sets() const {
     return first_party_sets_.get();
   }
@@ -250,6 +264,8 @@
 
 #if BUILDFLAG(IS_CT_SUPPORTED)
   SCTAuditingCache* sct_auditing_cache() { return sct_auditing_cache_.get(); }
+
+  const std::vector<mojom::CTLogInfoPtr>& log_list() const { return log_list_; }
 #endif
 
   mojom::URLLoaderNetworkServiceObserver*
@@ -352,6 +368,10 @@
 
 #if BUILDFLAG(IS_CT_SUPPORTED)
   std::unique_ptr<SCTAuditingCache> sct_auditing_cache_;
+
+  std::vector<mojom::CTLogInfoPtr> log_list_;
+
+  std::unique_ptr<CtLogListDistributor> ct_log_list_distributor_;
 #endif
 
   // Map from a renderer process id, to the set of plugin origins embedded by
diff --git a/services/network/proxy_resolver_factory_mojo.cc b/services/network/proxy_resolver_factory_mojo.cc
index 87eb5487..e45c0f5 100644
--- a/services/network/proxy_resolver_factory_mojo.cc
+++ b/services/network/proxy_resolver_factory_mojo.cc
@@ -14,7 +14,6 @@
 #include "base/logging.h"
 #include "base/macros.h"
 #include "base/sequence_checker.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/post_task.h"
 #include "base/task/thread_pool.h"
diff --git a/services/network/proxy_resolver_factory_mojo_unittest.cc b/services/network/proxy_resolver_factory_mojo_unittest.cc
index 249466317..6f900e1 100644
--- a/services/network/proxy_resolver_factory_mojo_unittest.cc
+++ b/services/network/proxy_resolver_factory_mojo_unittest.cc
@@ -15,7 +15,6 @@
 #include "base/callback_helpers.h"
 #include "base/containers/queue.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/test/task_environment.h"
 #include "base/values.h"
 #include "mojo/public/cpp/bindings/receiver.h"
diff --git a/services/network/public/cpp/network_isolation_key_mojom_traits_unittest.cc b/services/network/public/cpp/network_isolation_key_mojom_traits_unittest.cc
index e2e1508..86601764 100644
--- a/services/network/public/cpp/network_isolation_key_mojom_traits_unittest.cc
+++ b/services/network/public/cpp/network_isolation_key_mojom_traits_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "services/network/public/cpp/network_isolation_key_mojom_traits.h"
 
-#include "base/stl_util.h"
 #include "mojo/public/cpp/test_support/test_utils.h"
 #include "services/network/public/mojom/network_isolation_key.mojom.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/services/network/public/cpp/schemeful_site_mojom_traits_unittest.cc b/services/network/public/cpp/schemeful_site_mojom_traits_unittest.cc
index 3515073..ee70f58 100644
--- a/services/network/public/cpp/schemeful_site_mojom_traits_unittest.cc
+++ b/services/network/public/cpp/schemeful_site_mojom_traits_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "services/network/public/cpp/schemeful_site_mojom_traits.h"
 
-#include "base/stl_util.h"
 #include "mojo/public/cpp/test_support/test_utils.h"
 #include "services/network/public/mojom/schemeful_site.mojom.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom
index e24ec4c..8b74f2f 100644
--- a/services/network/public/mojom/network_context.mojom
+++ b/services/network/public/mojom/network_context.mojom
@@ -57,9 +57,6 @@
 [EnableIf=is_chromeos_ash]
 import "services/network/public/mojom/dhcp_wpad_url_client.mojom";
 
-[EnableIf=is_ct_supported]
-import "services/network/public/mojom/ct_log_info.mojom";
-
 const uint32 kWebSocketOptionNone = 0;
 // Disallow the request from sending cookies. Disallow the response from writing
 // cookies.
@@ -363,18 +360,12 @@
   [EnableIf=is_ct_supported]
   bool enable_sct_auditing = false;
 
-  // The Certificate Transparency logs that are known to the client. SCTs from
-  // these logs will be extracted and verified; other SCTs will be treated as
-  // unrecognized.
-  [EnableIf=is_ct_supported]
-  array<CTLogInfo> ct_logs;
-
   // The initial CT policy to be used for requests. See
   // NetworkContext.SetCTPolicy() for more.
   [EnableIf=is_ct_supported]
   CTPolicy? ct_policy;
 
-  // When the Certificate Transparency logs in |ct_logs| were last updated. If
+  // When the built-in Certificate Transparency logs were last updated. If
   // |enforce_chrome_ct_policy| is set, and |ct_log_update_time| is not
   // sufficiently recent, enforcement of the "Certificate Transparency in
   // Chrome" policy will be disabled.
diff --git a/services/network/public/mojom/network_service.mojom b/services/network/public/mojom/network_service.mojom
index f7b1e99..17ade2c 100644
--- a/services/network/public/mojom/network_service.mojom
+++ b/services/network/public/mojom/network_service.mojom
@@ -38,6 +38,9 @@
 [EnableIf=is_android]
 import "mojo/public/mojom/base/application_state.mojom";
 
+[EnableIf=is_ct_supported]
+import "services/network/public/mojom/ct_log_info.mojom";
+
 // Values for configuring HTTP authentication that can only be set once.
 struct HttpAuthStaticParams {
   // List of supported auth schemes. Unrecognized schemes are ignored.
@@ -338,6 +341,15 @@
                        MutableNetworkTrafficAnnotationTag traffic_annotation,
                        pending_remote<network.mojom.URLLoaderFactory> factory);
 
+
+  // Updates the log list used for CT verification.
+  [EnableIf=is_ct_supported]
+  UpdateCtLogList(array<CTLogInfo> log_list);
+
+  // Disables or enables CT Enforcement.
+  [EnableIf=is_ct_supported]
+  SetCtEnforcementEnabled(bool enabled);
+
   // Calls base::debug::DumpWithoutCrashing for the network process.
   // TODO(http://crbug.com/934317): Remove this once done debugging renderer
   // hangs.
diff --git a/services/network/trust_tokens/trust_token_request_issuance_helper.cc b/services/network/trust_tokens/trust_token_request_issuance_helper.cc
index 1d12c85..9b9b3f4 100644
--- a/services/network/trust_tokens/trust_token_request_issuance_helper.cc
+++ b/services/network/trust_tokens/trust_token_request_issuance_helper.cc
@@ -10,7 +10,6 @@
 #include "base/command_line.h"
 #include "base/metrics/field_trial_params.h"
 #include "base/metrics/histogram_functions.h"
-#include "base/stl_util.h"
 #include "base/task/thread_pool.h"
 #include "net/base/load_flags.h"
 #include "net/http/http_response_headers.h"
diff --git a/services/network/trust_tokens/trust_token_request_redemption_helper.cc b/services/network/trust_tokens/trust_token_request_redemption_helper.cc
index 511558e..ecf67b9 100644
--- a/services/network/trust_tokens/trust_token_request_redemption_helper.cc
+++ b/services/network/trust_tokens/trust_token_request_redemption_helper.cc
@@ -9,7 +9,6 @@
 
 #include "base/callback.h"
 #include "base/metrics/histogram_functions.h"
-#include "base/stl_util.h"
 #include "net/base/load_flags.h"
 #include "net/http/http_response_headers.h"
 #include "net/url_request/url_request.h"
diff --git a/services/network/trust_tokens/trust_token_request_signing_helper.cc b/services/network/trust_tokens/trust_token_request_signing_helper.cc
index a9809781..f89075127 100644
--- a/services/network/trust_tokens/trust_token_request_signing_helper.cc
+++ b/services/network/trust_tokens/trust_token_request_signing_helper.cc
@@ -11,7 +11,6 @@
 #include "base/base64.h"
 #include "base/containers/flat_set.h"
 #include "base/ranges/algorithm.h"
-#include "base/stl_util.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
diff --git a/services/service_manager/public/cpp/manifest_unittest.cc b/services/service_manager/public/cpp/manifest_unittest.cc
index 9c7a0da..057da4e 100644
--- a/services/service_manager/public/cpp/manifest_unittest.cc
+++ b/services/service_manager/public/cpp/manifest_unittest.cc
@@ -9,7 +9,6 @@
 
 #include "base/files/file_path.h"
 #include "base/no_destructor.h"
-#include "base/stl_util.h"
 #include "services/service_manager/public/cpp/manifest_builder.h"
 #include "services/service_manager/public/mojom/connector.mojom.h"
 #include "testing/gmock/include/gmock/gmock.h"
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json
index 8c4ffce0..ed93a4d3 100644
--- a/testing/buildbot/chromium.android.fyi.json
+++ b/testing/buildbot/chromium.android.fyi.json
@@ -4581,12 +4581,12 @@
           "--test-runner-outdir",
           ".",
           "--client-outdir",
-          "../../weblayer_instrumentation_test_M89/out/Release",
+          "../../weblayer_instrumentation_test_M90/out/Release",
           "--implementation-outdir",
           ".",
           "--test-expectations",
           "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--client-version=89",
+          "--client-version=90",
           "--gs-results-bucket=chromium-result-details",
           "--recover-devices",
           "--avd-config=../../tools/android/avd/proto/generic_android29.textpb"
@@ -4596,11 +4596,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_skew_tests_with_client_from_89"
+            "weblayer_skew_tests_with_client_from_90"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_skew_tests_with_client_from_89",
+        "name": "weblayer_skew_tests_with_client_from_90",
         "resultdb": {
           "enable": true
         },
@@ -4609,8 +4609,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M89",
-              "revision": "version:89.0.4389.129"
+              "location": "weblayer_instrumentation_test_M90",
+              "revision": "version:90.0.4430.225"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -4768,7 +4768,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M92",
-              "revision": "version:92.0.4515.11"
+              "revision": "version:92.0.4515.16"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -4820,10 +4820,10 @@
           "--client-outdir",
           ".",
           "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M89/out/Release",
+          "../../weblayer_instrumentation_test_M90/out/Release",
           "--test-expectations",
           "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--impl-version=89",
+          "--impl-version=90",
           "--gs-results-bucket=chromium-result-details",
           "--recover-devices",
           "--avd-config=../../tools/android/avd/proto/generic_android29.textpb"
@@ -4833,11 +4833,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_skew_tests_with_impl_from_89"
+            "weblayer_skew_tests_with_impl_from_90"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_skew_tests_with_impl_from_89",
+        "name": "weblayer_skew_tests_with_impl_from_90",
         "resultdb": {
           "enable": true
         },
@@ -4846,8 +4846,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M89",
-              "revision": "version:89.0.4389.129"
+              "location": "weblayer_instrumentation_test_M90",
+              "revision": "version:90.0.4430.225"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -5005,7 +5005,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M92",
-              "revision": "version:92.0.4515.11"
+              "revision": "version:92.0.4515.16"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json
index 835be5d7..3ca7470 100644
--- a/testing/buildbot/chromium.android.json
+++ b/testing/buildbot/chromium.android.json
@@ -53743,12 +53743,12 @@
           "--test-runner-outdir",
           ".",
           "--client-outdir",
-          "../../weblayer_instrumentation_test_M89/out/Release",
+          "../../weblayer_instrumentation_test_M90/out/Release",
           "--implementation-outdir",
           ".",
           "--test-expectations",
           "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--client-version=89",
+          "--client-version=90",
           "--gs-results-bucket=chromium-result-details",
           "--recover-devices",
           "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
@@ -53758,11 +53758,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_skew_tests_with_chrome_with_client_from_89"
+            "weblayer_skew_tests_with_chrome_with_client_from_90"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_skew_tests_with_chrome_with_client_from_89",
+        "name": "weblayer_skew_tests_with_chrome_with_client_from_90",
         "resultdb": {
           "enable": true
         },
@@ -53771,8 +53771,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M89",
-              "revision": "version:89.0.4389.129"
+              "location": "weblayer_instrumentation_test_M90",
+              "revision": "version:90.0.4430.225"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -53932,7 +53932,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M92",
-              "revision": "version:92.0.4515.11"
+              "revision": "version:92.0.4515.16"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -53985,10 +53985,10 @@
           "--client-outdir",
           ".",
           "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M89/out/Release",
+          "../../weblayer_instrumentation_test_M90/out/Release",
           "--test-expectations",
           "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--impl-version=89",
+          "--impl-version=90",
           "--gs-results-bucket=chromium-result-details",
           "--recover-devices",
           "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
@@ -53998,11 +53998,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_skew_tests_with_chrome_with_impl_from_89"
+            "weblayer_skew_tests_with_chrome_with_impl_from_90"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_skew_tests_with_chrome_with_impl_from_89",
+        "name": "weblayer_skew_tests_with_chrome_with_impl_from_90",
         "resultdb": {
           "enable": true
         },
@@ -54011,8 +54011,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M89",
-              "revision": "version:89.0.4389.129"
+              "location": "weblayer_instrumentation_test_M90",
+              "revision": "version:90.0.4430.225"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -54172,7 +54172,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M92",
-              "revision": "version:92.0.4515.11"
+              "revision": "version:92.0.4515.16"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -54289,12 +54289,12 @@
           "--test-runner-outdir",
           ".",
           "--client-outdir",
-          "../../weblayer_instrumentation_test_M89/out/Release",
+          "../../weblayer_instrumentation_test_M90/out/Release",
           "--implementation-outdir",
           ".",
           "--test-expectations",
           "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--client-version=89",
+          "--client-version=90",
           "--gs-results-bucket=chromium-result-details",
           "--recover-devices",
           "--avd-config=../../tools/android/avd/proto/generic_android27.textpb"
@@ -54304,11 +54304,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_skew_tests_with_client_from_89"
+            "weblayer_skew_tests_with_client_from_90"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_skew_tests_with_client_from_89",
+        "name": "weblayer_skew_tests_with_client_from_90",
         "resultdb": {
           "enable": true
         },
@@ -54317,8 +54317,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M89",
-              "revision": "version:89.0.4389.129"
+              "location": "weblayer_instrumentation_test_M90",
+              "revision": "version:90.0.4430.225"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -54476,7 +54476,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M92",
-              "revision": "version:92.0.4515.11"
+              "revision": "version:92.0.4515.16"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -54528,10 +54528,10 @@
           "--client-outdir",
           ".",
           "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M89/out/Release",
+          "../../weblayer_instrumentation_test_M90/out/Release",
           "--test-expectations",
           "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--impl-version=89",
+          "--impl-version=90",
           "--gs-results-bucket=chromium-result-details",
           "--recover-devices",
           "--avd-config=../../tools/android/avd/proto/generic_android27.textpb"
@@ -54541,11 +54541,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_skew_tests_with_impl_from_89"
+            "weblayer_skew_tests_with_impl_from_90"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_skew_tests_with_impl_from_89",
+        "name": "weblayer_skew_tests_with_impl_from_90",
         "resultdb": {
           "enable": true
         },
@@ -54554,8 +54554,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M89",
-              "revision": "version:89.0.4389.129"
+              "location": "weblayer_instrumentation_test_M90",
+              "revision": "version:90.0.4430.225"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -54713,7 +54713,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M92",
-              "revision": "version:92.0.4515.11"
+              "revision": "version:92.0.4515.16"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -54830,12 +54830,12 @@
           "--test-runner-outdir",
           ".",
           "--client-outdir",
-          "../../weblayer_instrumentation_test_M89/out/Release",
+          "../../weblayer_instrumentation_test_M90/out/Release",
           "--implementation-outdir",
           ".",
           "--test-expectations",
           "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--client-version=89",
+          "--client-version=90",
           "--gs-results-bucket=chromium-result-details",
           "--recover-devices",
           "--avd-config=../../tools/android/avd/proto/generic_android28.textpb"
@@ -54845,11 +54845,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_skew_tests_with_client_from_89"
+            "weblayer_skew_tests_with_client_from_90"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_skew_tests_with_client_from_89",
+        "name": "weblayer_skew_tests_with_client_from_90",
         "resultdb": {
           "enable": true
         },
@@ -54858,8 +54858,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M89",
-              "revision": "version:89.0.4389.129"
+              "location": "weblayer_instrumentation_test_M90",
+              "revision": "version:90.0.4430.225"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -55017,7 +55017,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M92",
-              "revision": "version:92.0.4515.11"
+              "revision": "version:92.0.4515.16"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -55069,10 +55069,10 @@
           "--client-outdir",
           ".",
           "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M89/out/Release",
+          "../../weblayer_instrumentation_test_M90/out/Release",
           "--test-expectations",
           "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--impl-version=89",
+          "--impl-version=90",
           "--gs-results-bucket=chromium-result-details",
           "--recover-devices",
           "--avd-config=../../tools/android/avd/proto/generic_android28.textpb"
@@ -55082,11 +55082,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_skew_tests_with_impl_from_89"
+            "weblayer_skew_tests_with_impl_from_90"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_skew_tests_with_impl_from_89",
+        "name": "weblayer_skew_tests_with_impl_from_90",
         "resultdb": {
           "enable": true
         },
@@ -55095,8 +55095,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M89",
-              "revision": "version:89.0.4389.129"
+              "location": "weblayer_instrumentation_test_M90",
+              "revision": "version:90.0.4430.225"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -55254,7 +55254,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M92",
-              "revision": "version:92.0.4515.11"
+              "revision": "version:92.0.4515.16"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl
index 125fd9c..6a30495 100644
--- a/testing/buildbot/variants.pyl
+++ b/testing/buildbot/variants.pyl
@@ -424,7 +424,7 @@
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
           'location': 'weblayer_instrumentation_test_M92',
-          'revision': 'version:92.0.4515.11',
+          'revision': 'version:92.0.4515.16',
         }
       ],
     },
@@ -461,18 +461,18 @@
       '--client-outdir',
       '.',
       '--implementation-outdir',
-      '../../weblayer_instrumentation_test_M89/out/Release',
+      '../../weblayer_instrumentation_test_M90/out/Release',
       '--test-expectations',
       '../../weblayer/browser/android/javatests/skew/expectations.txt',
-      '--impl-version=89',
+      '--impl-version=90',
     ],
-    'identifier': 'with_impl_from_89',
+    'identifier': 'with_impl_from_90',
     'swarming': {
       'cipd_packages': [
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
-          'location': 'weblayer_instrumentation_test_M89',
-          'revision': 'version:89.0.4389.129',
+          'location': 'weblayer_instrumentation_test_M90',
+          'revision': 'version:90.0.4430.225',
         }
       ],
     },
@@ -496,7 +496,7 @@
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
           'location': 'weblayer_instrumentation_test_M92',
-          'revision': 'version:92.0.4515.11',
+          'revision': 'version:92.0.4515.16',
         }
       ],
     },
@@ -533,18 +533,18 @@
       '--client-outdir',
       '.',
       '--implementation-outdir',
-      '../../weblayer_instrumentation_test_M89/out/Release',
+      '../../weblayer_instrumentation_test_M90/out/Release',
       '--test-expectations',
       '../../weblayer/browser/android/javatests/skew/expectations.txt',
-      '--impl-version=89',
+      '--impl-version=90',
     ],
-    'identifier': 'with_impl_from_89',
+    'identifier': 'with_impl_from_90',
     'swarming': {
       'cipd_packages': [
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
-          'location': 'weblayer_instrumentation_test_M89',
-          'revision': 'version:89.0.4389.129',
+          'location': 'weblayer_instrumentation_test_M90',
+          'revision': 'version:90.0.4430.225',
         }
       ],
     },
@@ -568,7 +568,7 @@
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
           'location': 'weblayer_instrumentation_test_M92',
-          'revision': 'version:92.0.4515.11',
+          'revision': 'version:92.0.4515.16',
         }
       ],
     },
@@ -603,20 +603,20 @@
       '--test-runner-outdir',
       '.',
       '--client-outdir',
-      '../../weblayer_instrumentation_test_M89/out/Release',
+      '../../weblayer_instrumentation_test_M90/out/Release',
       '--implementation-outdir',
       '.',
       '--test-expectations',
       '../../weblayer/browser/android/javatests/skew/expectations.txt',
-      '--client-version=89',
+      '--client-version=90',
     ],
-    'identifier': 'with_client_from_89',
+    'identifier': 'with_client_from_90',
     'swarming': {
       'cipd_packages': [
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
-          'location': 'weblayer_instrumentation_test_M89',
-          'revision': 'version:89.0.4389.129',
+          'location': 'weblayer_instrumentation_test_M90',
+          'revision': 'version:90.0.4430.225',
         }
       ],
     },
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 0a42b0a6..a01041e 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -2241,16 +2241,19 @@
             ],
             "experiments": [
                 {
-                    "name": "EnabledWithTextShopSimilarProducts_20201022",
+                    "name": "EnabledWithTextShopImageWithGoogleLens",
                     "params": {
                         "disableOnIncognito": "true",
-                        "lensShopVariation": "ShopSimilarProducts",
+                        "lensShopVariation": "ShopImageWithGoogleLens",
+                        "logUkm": "true",
                         "minAgsaVersionNameForShopping": "11.17"
                     },
                     "enable_features": [
                         "ContextMenuEnableLensShoppingAllowlist",
-                        "ContextMenuSearchAndShopWithGoogleLens",
                         "ContextMenuShopWithGoogleLens"
+                    ],
+                    "disable_features": [
+                        "ContextMenuSearchAndShopWithGoogleLens"
                     ]
                 }
             ]
@@ -2686,15 +2689,14 @@
             ],
             "experiments": [
                 {
-                    "name": "ShoppingTasksRecipeTasksChromeCart_Enabled",
+                    "name": "RecipeTasksChromeCart_Enabled",
                     "params": {
                         "NtpModulesLoadTimeoutMillisecondsParam": "3000"
                     },
                     "enable_features": [
                         "NtpChromeCartModule",
                         "NtpModules",
-                        "NtpRecipeTasksModule",
-                        "NtpShoppingTasksModule"
+                        "NtpRecipeTasksModule"
                     ]
                 }
             ]
@@ -3738,6 +3740,27 @@
             ]
         }
     ],
+    "HatsOnboardingExperience": [
+        {
+            "platforms": [
+                "chromeos"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "params": {
+                        "prob": "0.05",
+                        "survey_cycle_length": "2147483647",
+                        "survey_start_date_ms": "1617260400000",
+                        "trigger_id": "NAgJpJZhz0jBnuKU19R0UuVK5EA7"
+                    },
+                    "enable_features": [
+                        "HappinessTrackingOnboardingExperience"
+                    ]
+                }
+            ]
+        }
+    ],
     "HeapProfiling": [
         {
             "platforms": [
diff --git a/third_party/blink/public/mojom/BUILD.gn b/third_party/blink/public/mojom/BUILD.gn
index 8104656..b07a5850 100644
--- a/third_party/blink/public/mojom/BUILD.gn
+++ b/third_party/blink/public/mojom/BUILD.gn
@@ -88,7 +88,6 @@
     "input/pointer_lock_result.mojom",
     "input/scroll_direction.mojom",
     "input/touch_event.mojom",
-    "insecure_input/insecure_input_service.mojom",
     "interest_group/ad_auction_service.mojom",
     "interest_group/interest_group_types.mojom",
     "interest_group/restricted_interest_group_store.mojom",
diff --git a/third_party/blink/public/mojom/frame/frame_replication_state.mojom b/third_party/blink/public/mojom/frame/frame_replication_state.mojom
index 482fde3..b2418b7 100644
--- a/third_party/blink/public/mojom/frame/frame_replication_state.mojom
+++ b/third_party/blink/public/mojom/frame/frame_replication_state.mojom
@@ -80,14 +80,6 @@
   // frame.
   blink.mojom.FramePolicy frame_policy;
 
-  // Whether the frame is in a document tree or a shadow tree, per the Shadow
-  // DOM spec: https://w3c.github.io/webcomponents/spec/shadow/
-  // Note: This should really be const, as it can never change once a frame is
-  // created. However, making it const makes it a pain to embed into IPC message
-  // params: having a const member implicitly deletes the copy assignment
-  // operator.
-  blink.mojom.TreeScopeType scope = blink.mojom.TreeScopeType.kDocument;
-
   // The insecure request policy that a frame's current document is enforcing.
   // Updates are immediately sent to all frame proxies when frames live in
   // different processes.
diff --git a/third_party/blink/public/mojom/insecure_input/OWNERS b/third_party/blink/public/mojom/insecure_input/OWNERS
deleted file mode 100644
index 08850f4..0000000
--- a/third_party/blink/public/mojom/insecure_input/OWNERS
+++ /dev/null
@@ -1,2 +0,0 @@
-per-file *.mojom=set noparent
-per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/third_party/blink/public/mojom/insecure_input/insecure_input_service.mojom b/third_party/blink/public/mojom/insecure_input/insecure_input_service.mojom
deleted file mode 100644
index 3ee3591..0000000
--- a/third_party/blink/public/mojom/insecure_input/insecure_input_service.mojom
+++ /dev/null
@@ -1,11 +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.
-
-module blink.mojom;
-
-// InsecureInputService receives per-frame notifications about insecure input
-// operations (e.g. editing of any fields) on the page.
-interface InsecureInputService {
-  DidEditFieldInInsecureContext();
-};
diff --git a/third_party/blink/public/web/web_frame.h b/third_party/blink/public/web/web_frame.h
index a70289aff..2eeeafe1 100644
--- a/third_party/blink/public/web/web_frame.h
+++ b/third_party/blink/public/web/web_frame.h
@@ -162,6 +162,10 @@
   // the given node is not a frame, iframe or if the frame is empty.
   static WebFrame* FromFrameOwnerElement(const WebNode&);
 
+  // Whether the owner element of this frame is in the document tree or the
+  // shadow tree, per https://w3c.github.io/webcomponents/spec/shadow/.
+  mojom::TreeScopeType GetTreeScopeType() const { return scope_; }
+
   // This identifier represents the stable identifier between a
   // LocalFrame  <--> RenderFrameHostImpl or a
   // RemoteFrame <--> RenderFrameProxyHost in the browser process.
@@ -170,8 +174,6 @@
 #if INSIDE_BLINK
   static WebFrame* FromCoreFrame(Frame*);
   static Frame* ToCoreFrame(const WebFrame&);
-
-  bool InShadowTree() const { return scope_ == mojom::TreeScopeType::kShadow; }
 #endif
 
  protected:
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
index 78a291d4..c5faaf9 100644
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -66,7 +66,6 @@
 #include "third_party/blink/public/common/thread_safe_browser_interface_broker_proxy.h"
 #include "third_party/blink/public/mojom/css/preferred_color_scheme.mojom-blink-forward.h"
 #include "third_party/blink/public/mojom/input/focus_type.mojom-blink.h"
-#include "third_party/blink/public/mojom/insecure_input/insecure_input_service.mojom-blink.h"
 #include "third_party/blink/public/mojom/page_state/page_state.mojom-blink.h"
 #include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/public/platform/task_type.h"
@@ -742,7 +741,6 @@
               ? kAllowDeferredParsing
               : kAllowAsynchronousParsing),
       node_count_(0),
-      logged_field_edit_(false),
       // Use the source id from the document initializer if it is available.
       // Otherwise, generate a new source id to cover any cases that don't
       // receive a valid source id, this for example includes but is not limited
@@ -5217,17 +5215,6 @@
   return *access_entry_from_url_;
 }
 
-void Document::SendDidEditFieldInInsecureContext() {
-  if (!GetFrame())
-    return;
-
-  mojo::Remote<mojom::blink::InsecureInputService> insecure_input_service;
-  GetFrame()->GetBrowserInterfaceBroker().GetInterface(
-      insecure_input_service.BindNewPipeAndPassReceiver());
-
-  insecure_input_service->DidEditFieldInInsecureContext();
-}
-
 void Document::RegisterEventFactory(
     std::unique_ptr<EventFactoryBase> event_factory) {
   DCHECK(!EventFactories().Contains(event_factory.get()));
@@ -7716,25 +7703,6 @@
   return *property_registry_;
 }
 
-void Document::MaybeQueueSendDidEditFieldInInsecureContext() {
-  if (logged_field_edit_ || sensitive_input_edited_task_.IsActive() ||
-      execution_context_->IsSecureContext()) {
-    // Send a message on the first edit; the browser process doesn't care
-    // about the presence of additional edits.
-    //
-    // The browser process only cares about editing fields on pages where the
-    // top-level URL is not secure. Secure contexts must have a top-level URL
-    // that is secure, so there is no need to send notifications for editing
-    // in secure contexts.
-    return;
-  }
-  logged_field_edit_ = true;
-  sensitive_input_edited_task_ = PostCancellableTask(
-      *GetTaskRunner(TaskType::kUserInteraction), FROM_HERE,
-      WTF::Bind(&Document::SendDidEditFieldInInsecureContext,
-                WrapWeakPersistent(this)));
-}
-
 DocumentResourceCoordinator* Document::GetResourceCoordinator() {
   if (!resource_coordinator_ && GetFrame()) {
     resource_coordinator_ = DocumentResourceCoordinator::MaybeCreate(
diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/renderer/core/dom/document.h
index e43a3945..89cc770 100644
--- a/third_party/blink/renderer/core/dom/document.h
+++ b/third_party/blink/renderer/core/dom/document.h
@@ -1466,10 +1466,6 @@
   }
   PropertyRegistry& EnsurePropertyRegistry();
 
-  // Used to notify the embedder when the user edits the value of a
-  // text field in a non-secure context.
-  void MaybeQueueSendDidEditFieldInInsecureContext();
-
   // May return nullptr when PerformanceManager instrumentation is disabled.
   DocumentResourceCoordinator* GetResourceCoordinator();
 
@@ -1804,8 +1800,6 @@
 
   const OriginAccessEntry& AccessEntryFromURL();
 
-  void SendDidEditFieldInInsecureContext();
-
   void UpdateActiveState(bool is_active, bool update_active_chain, Element*);
   void UpdateHoverState(Element*);
 
@@ -2108,10 +2102,6 @@
 
   Member<PropertyRegistry> property_registry_;
 
-  bool logged_field_edit_;
-
-  TaskHandle sensitive_input_edited_task_;
-
   Member<NetworkStateObserver> network_state_observer_;
 
   // |ukm_recorder_| and |source_id_| will allow objects that are part of
diff --git a/third_party/blink/renderer/core/frame/local_frame_client_impl.cc b/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
index 5ec0951..077a726d 100644
--- a/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
@@ -308,7 +308,7 @@
 }
 
 bool LocalFrameClientImpl::InShadowTree() const {
-  return web_frame_->InShadowTree();
+  return web_frame_->GetTreeScopeType() == mojom::blink::TreeScopeType::kShadow;
 }
 
 void LocalFrameClientImpl::WillBeDetached() {
diff --git a/third_party/blink/renderer/core/frame/remote_frame_client_impl.cc b/third_party/blink/renderer/core/frame/remote_frame_client_impl.cc
index 9a78fa1..0bf4a9b 100644
--- a/third_party/blink/renderer/core/frame/remote_frame_client_impl.cc
+++ b/third_party/blink/renderer/core/frame/remote_frame_client_impl.cc
@@ -34,7 +34,7 @@
 }
 
 bool RemoteFrameClientImpl::InShadowTree() const {
-  return web_frame_->InShadowTree();
+  return web_frame_->GetTreeScopeType() == mojom::blink::TreeScopeType::kShadow;
 }
 
 void RemoteFrameClientImpl::Detached(FrameDetachType type) {
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
index 51503e5..934a69e 100644
--- a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
+++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
@@ -1930,10 +1930,8 @@
   DCHECK(name.IsEmpty() || name.Equals(previous_frame->Tree().GetName()));
   auto* web_frame = MakeGarbageCollected<WebLocalFrameImpl>(
       base::PassKey<WebLocalFrameImpl>(),
-      previous_web_frame->InShadowTree()
-          ? mojom::blink::TreeScopeType::kShadow
-          : mojom::blink::TreeScopeType::kDocument,
-      client, interface_registry, frame_token);
+      previous_web_frame->GetTreeScopeType(), client, interface_registry,
+      frame_token);
   network::mojom::blink::WebSandboxFlags sandbox_flags =
       network::mojom::blink::WebSandboxFlags::kNone;
   PermissionsPolicyFeatureState feature_state;
diff --git a/third_party/blink/renderer/core/html/build.gni b/third_party/blink/renderer/core/html/build.gni
index 69bb5d0..e56f712b 100644
--- a/third_party/blink/renderer/core/html/build.gni
+++ b/third_party/blink/renderer/core/html/build.gni
@@ -662,7 +662,6 @@
   "forms/html_text_area_element_test.cc",
   "forms/internal_popup_menu_test.cc",
   "forms/option_list_test.cc",
-  "forms/password_input_type_test.cc",
   "forms/step_range_test.cc",
   "forms/text_control_element_test.cc",
   "forms/type_ahead_test.cc",
diff --git a/third_party/blink/renderer/core/html/canvas/canvas_performance_monitor.cc b/third_party/blink/renderer/core/html/canvas/canvas_performance_monitor.cc
index c5cd74e6..41dc7fba 100644
--- a/third_party/blink/renderer/core/html/canvas/canvas_performance_monitor.cc
+++ b/third_party/blink/renderer/core/html/canvas/canvas_performance_monitor.cc
@@ -169,7 +169,8 @@
     // canvases per render task.
     measure_current_task_ = !(task_counter_++ % kSamplingProbabilityInv);
 
-    if (context->Host()
+    if (context->Host() && context->Host()->GetTopExecutionContext() &&
+        context->Host()
             ->GetTopExecutionContext()
             ->IsInRequestAnimationFrame()) {
       call_type_ = CallType::kAnimation;
diff --git a/third_party/blink/renderer/core/html/forms/password_input_type_test.cc b/third_party/blink/renderer/core/html/forms/password_input_type_test.cc
deleted file mode 100644
index 025beb3..0000000
--- a/third_party/blink/renderer/core/html/forms/password_input_type_test.cc
+++ /dev/null
@@ -1,89 +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 "third_party/blink/renderer/core/html/forms/password_input_type.h"
-
-#include <memory>
-#include <utility>
-
-#include "mojo/public/cpp/bindings/pending_receiver.h"
-#include "mojo/public/cpp/bindings/receiver_set.h"
-#include "mojo/public/cpp/system/message_pipe.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/blink/public/common/browser_interface_broker_proxy.h"
-#include "third_party/blink/public/mojom/insecure_input/insecure_input_service.mojom-blink.h"
-#include "third_party/blink/renderer/core/frame/local_dom_window.h"
-#include "third_party/blink/renderer/core/frame/local_frame.h"
-#include "third_party/blink/renderer/core/frame/local_frame_view.h"
-#include "third_party/blink/renderer/core/testing/dummy_page_holder.h"
-#include "third_party/blink/renderer/platform/testing/unit_test_helpers.h"
-
-namespace blink {
-
-class MockInsecureInputService : public mojom::blink::InsecureInputService {
- public:
-  explicit MockInsecureInputService(LocalFrame& frame) {
-    frame.GetBrowserInterfaceBroker().SetBinderForTesting(
-        mojom::blink::InsecureInputService::Name_,
-        WTF::BindRepeating(&MockInsecureInputService::BindReceiver,
-                           WTF::Unretained(this)));
-  }
-
-  ~MockInsecureInputService() override = default;
-
-  void BindReceiver(mojo::ScopedMessagePipeHandle handle) {
-    receiver_set_.Add(this,
-                      mojo::PendingReceiver<mojom::blink::InsecureInputService>(
-                          std::move(handle)));
-  }
-
-  unsigned DidEditFieldCalls() const { return num_did_edit_field_calls_; }
-
- private:
-  void DidEditFieldInInsecureContext() override { ++num_did_edit_field_calls_; }
-
-  mojo::ReceiverSet<InsecureInputService> receiver_set_;
-
-  unsigned num_did_edit_field_calls_ = 0;
-};
-
-// Tests that a Mojo message is sent when a password field is edited
-// on the page.
-TEST(PasswordInputTypeTest, DidEditFieldEvent) {
-  auto page_holder = std::make_unique<DummyPageHolder>(IntSize(2000, 2000));
-  MockInsecureInputService mock_service(page_holder->GetFrame());
-  page_holder->GetDocument().body()->setInnerHTML("<input type='password'>");
-  page_holder->GetDocument().View()->UpdateAllLifecyclePhasesForTest();
-  blink::test::RunPendingTasks();
-  EXPECT_EQ(0u, mock_service.DidEditFieldCalls());
-  // Simulate a text field edit.
-  page_holder->GetDocument().MaybeQueueSendDidEditFieldInInsecureContext();
-  blink::test::RunPendingTasks();
-  EXPECT_EQ(1u, mock_service.DidEditFieldCalls());
-  // Ensure additional edits do not trigger additional notifications.
-  page_holder->GetDocument().MaybeQueueSendDidEditFieldInInsecureContext();
-  blink::test::RunPendingTasks();
-  EXPECT_EQ(1u, mock_service.DidEditFieldCalls());
-}
-
-// Tests that a Mojo message is not sent when a password field is edited
-// in a secure context.
-TEST(PasswordInputTypeTest, DidEditFieldEventNotSentFromSecureContext) {
-  auto page_holder = std::make_unique<DummyPageHolder>(IntSize(2000, 2000));
-  page_holder->GetFrame().Loader().CommitNavigation(
-      WebNavigationParams::CreateWithHTMLBufferForTesting(
-          SharedBuffer::Create(), KURL("https://example.test")),
-      nullptr /* extra_data */);
-  blink::test::RunPendingTasks();
-  MockInsecureInputService mock_service(page_holder->GetFrame());
-  page_holder->GetDocument().body()->setInnerHTML("<input type='password'>");
-  page_holder->GetDocument().View()->UpdateAllLifecyclePhasesForTest();
-  // Simulate a text field edit.
-  page_holder->GetDocument().MaybeQueueSendDidEditFieldInInsecureContext();
-  // No message should have been sent from a secure context.
-  blink::test::RunPendingTasks();
-  EXPECT_EQ(0u, mock_service.DidEditFieldCalls());
-}
-
-}  // namespace blink
diff --git a/third_party/blink/renderer/core/page/chrome_client_impl.cc b/third_party/blink/renderer/core/page/chrome_client_impl.cc
index 716d5e9..7b70fa4 100644
--- a/third_party/blink/renderer/core/page/chrome_client_impl.cc
+++ b/third_party/blink/renderer/core/page/chrome_client_impl.cc
@@ -643,13 +643,9 @@
     scoped_refptr<FileChooser> file_chooser) {
   NotifyPopupOpeningObservers();
 
-  Document* doc = frame->GetDocument();
-  if (doc)
-    doc->MaybeQueueSendDidEditFieldInInsecureContext();
-
   static const wtf_size_t kMaximumPendingFileChooseRequests = 4;
   if (file_chooser_queue_.size() > kMaximumPendingFileChooseRequests) {
-    // This sanity check prevents too many file choose requests from getting
+    // This check prevents too many file choose requests from getting
     // queued which could DoS the user. Getting these is most likely a
     // programming error (there are many ways to DoS the user so it's not
     // considered a "real" security check), either in JS requesting many file
@@ -1083,7 +1079,6 @@
     UseCounter::Count(doc, doc.GetExecutionContext()->IsSecureContext()
                                ? WebFeature::kFieldEditInSecureContext
                                : WebFeature::kFieldEditInNonSecureContext);
-    doc.MaybeQueueSendDidEditFieldInInsecureContext();
     // The resource coordinator is not available in some tests.
     if (auto* rc = doc.GetResourceCoordinator())
       rc->SetHadFormInteraction();
diff --git a/third_party/blink/renderer/core/page/create_window.cc b/third_party/blink/renderer/core/page/create_window.cc
index 2b16f67..21c38947 100644
--- a/third_party/blink/renderer/core/page/create_window.cc
+++ b/third_party/blink/renderer/core/page/create_window.cc
@@ -158,7 +158,13 @@
     }
 
     if (!ui_features_were_disabled && key_string != "noopener" &&
-        key_string != "noreferrer") {
+        key_string != "noreferrer" &&
+        (!conversion_measurement_enabled ||
+         (key_string != "attributionsourceeventid" &&
+          key_string != "attributiondestination" &&
+          key_string != "attributionreportto" &&
+          key_string != "attributionexpiry" &&
+          key_string != "attributionsourcepriority"))) {
       ui_features_were_disabled = true;
       window_features.menu_bar_visible = false;
       window_features.status_bar_visible = false;
diff --git a/third_party/blink/renderer/core/paint/paint_layer.cc b/third_party/blink/renderer/core/paint/paint_layer.cc
index 4eec5f3..f2a314a 100644
--- a/third_party/blink/renderer/core/paint/paint_layer.cc
+++ b/third_party/blink/renderer/core/paint/paint_layer.cc
@@ -1763,7 +1763,7 @@
 void PaintLayer::CollectFragments(
     PaintLayerFragments& fragments,
     const PaintLayer* root_layer,
-    const CullRect* cull_rect,
+    const CullRect* painting_cull_rect,
     OverlayScrollbarClipBehavior overlay_scrollbar_clip_behavior,
     ShouldRespectOverflowClipType respect_overflow_clip,
     const PhysicalOffset* offset_from_root,
@@ -1794,58 +1794,64 @@
   wtf_size_t physical_fragment_idx = 0u;
   for (auto* fragment_data = &first_fragment_data; fragment_data;
        fragment_data = fragment_data->NextFragment(), physical_fragment_idx++) {
-    const FragmentData* root_fragment_data;
-    if (root_layer == this) {
-      root_fragment_data = fragment_data;
-    } else if (should_match_fragments) {
-      for (root_fragment_data = &first_root_fragment_data; root_fragment_data;
-           root_fragment_data = root_fragment_data->NextFragment()) {
-        if (root_fragment_data->LogicalTopInFlowThread() ==
-            fragment_data->LogicalTopInFlowThread())
-          break;
+    // If CullRectUpdateEnabled, skip fragment geometry logic if we are
+    // collecting fragments for painting.
+    if (!RuntimeEnabledFeatures::CullRectUpdateEnabled() ||
+        !painting_cull_rect) {
+      const FragmentData* root_fragment_data;
+      if (root_layer == this) {
+        root_fragment_data = fragment_data;
+      } else if (should_match_fragments) {
+        for (root_fragment_data = &first_root_fragment_data; root_fragment_data;
+             root_fragment_data = root_fragment_data->NextFragment()) {
+          if (root_fragment_data->LogicalTopInFlowThread() ==
+              fragment_data->LogicalTopInFlowThread())
+            break;
+        }
+      } else {
+        root_fragment_data = &first_root_fragment_data;
       }
-    } else {
-      root_fragment_data = &first_root_fragment_data;
+
+      bool cant_find_fragment = !root_fragment_data;
+      if (cant_find_fragment) {
+        DCHECK(should_match_fragments);
+        // Fall back to the first fragment, in order to have
+        // PaintLayerClipper at least compute |fragment.layer_bounds|.
+        root_fragment_data = &first_root_fragment_data;
+      }
+
+      ClipRectsContext clip_rects_context(
+          root_layer, root_fragment_data, overlay_scrollbar_clip_behavior,
+          respect_overflow_clip, sub_pixel_accumulation);
+
+      absl::optional<CullRect> fragment_cull_rect;
+      if (painting_cull_rect) {
+        // |cull_rect| is in the coordinate space of |root_layer| (i.e. the
+        // space of |root_layer|'s first fragment). Map the rect to the space of
+        // the current root fragment.
+        auto rect = painting_cull_rect->Rect();
+        first_root_fragment_data.MapRectToFragment(*root_fragment_data, rect);
+        fragment_cull_rect.emplace(rect);
+      }
+
+      Clipper(GeometryMapperOption::kUseGeometryMapper)
+          .CalculateRects(
+              clip_rects_context, fragment_data,
+              fragment_cull_rect ? &*fragment_cull_rect : nullptr,
+              fragment.layer_bounds, fragment.background_rect,
+              fragment.foreground_rect,
+              offset_from_root_can_be_used ? offset_from_root : nullptr);
+
+      if (cant_find_fragment) {
+        // If we couldn't find a matching fragment when |should_match_fragments|
+        // was true, then fall back to no clip.
+        fragment.background_rect.Reset();
+        fragment.foreground_rect.Reset();
+      }
+
+      fragment.root_fragment_data = root_fragment_data;
     }
 
-    bool cant_find_fragment = !root_fragment_data;
-    if (cant_find_fragment) {
-      DCHECK(should_match_fragments);
-      // Fall back to the first fragment, in order to have
-      // PaintLayerClipper at least compute |fragment.layer_bounds|.
-      root_fragment_data = &first_root_fragment_data;
-    }
-
-    ClipRectsContext clip_rects_context(
-        root_layer, root_fragment_data, overlay_scrollbar_clip_behavior,
-        respect_overflow_clip, sub_pixel_accumulation);
-
-    absl::optional<CullRect> fragment_cull_rect;
-    if (cull_rect) {
-      // |cull_rect| is in the coordinate space of |root_layer| (i.e. the
-      // space of |root_layer|'s first fragment). Map the rect to the space of
-      // the current root fragment.
-      auto rect = cull_rect->Rect();
-      first_root_fragment_data.MapRectToFragment(*root_fragment_data, rect);
-      fragment_cull_rect.emplace(rect);
-    }
-
-    Clipper(GeometryMapperOption::kUseGeometryMapper)
-        .CalculateRects(
-            clip_rects_context, fragment_data,
-            fragment_cull_rect ? &*fragment_cull_rect : nullptr,
-            fragment.layer_bounds, fragment.background_rect,
-            fragment.foreground_rect,
-            offset_from_root_can_be_used ? offset_from_root : nullptr);
-
-    if (cant_find_fragment) {
-      // If we couldn't find a matching fragment when |should_match_fragments|
-      // was true, then fall back to no clip.
-      fragment.background_rect.Reset();
-      fragment.foreground_rect.Reset();
-    }
-
-    fragment.root_fragment_data = root_fragment_data;
     fragment.fragment_data = fragment_data;
 
     if (GetLayoutObject().CanTraversePhysicalFragments()) {
diff --git a/third_party/blink/renderer/core/paint/paint_layer.h b/third_party/blink/renderer/core/paint/paint_layer.h
index 9ec703a..debc59b38 100644
--- a/third_party/blink/renderer/core/paint/paint_layer.h
+++ b/third_party/blink/renderer/core/paint/paint_layer.h
@@ -1002,7 +1002,7 @@
   void CollectFragments(
       PaintLayerFragments&,
       const PaintLayer* root_layer,
-      const CullRect* cull_rect,
+      const CullRect* painting_cull_rect,
       OverlayScrollbarClipBehavior = kIgnoreOverlayScrollbarSize,
       ShouldRespectOverflowClipType = kRespectOverflowClip,
       const PhysicalOffset* offset_from_root = nullptr,
diff --git a/third_party/blink/renderer/core/paint/paint_layer_fragment.h b/third_party/blink/renderer/core/paint/paint_layer_fragment.h
index 9ffa07ab..ab911889 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_fragment.h
+++ b/third_party/blink/renderer/core/paint/paint_layer_fragment.h
@@ -81,6 +81,7 @@
   // Defines the coordinate space of the above rects:
   // root_fragment_data->LocalBorderBoxProperties().Transform() +
   // root_fragment_data.PaintOffset().
+  // It's for legacy cull rect calculation (pre-CompositeAfterPaint) only.
   const FragmentData* root_fragment_data = nullptr;
 
   // The corresponding FragmentData of this structure.
diff --git a/third_party/blink/renderer/core/paint/paint_layer_painter.cc b/third_party/blink/renderer/core/paint/paint_layer_painter.cc
index 34ef71b..d0fdd4a 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_painter.cc
+++ b/third_party/blink/renderer/core/paint/paint_layer_painter.cc
@@ -458,17 +458,30 @@
   if (RuntimeEnabledFeatures::CullRectUpdateEnabled()) {
     if (object.FirstFragment().NextFragment()) {
       result = kMayBeClippedByCullRect;
-    } else if (!object.FirstFragment().GetCullRect().Rect().Contains(
-                   visual_rect)) {
-      result = kMayBeClippedByCullRect;
-    } else if (const auto* box = DynamicTo<LayoutBox>(object)) {
-      PhysicalRect contents_visual_rect =
-          box->PhysicalContentsVisualOverflowRect();
-      contents_visual_rect.Move(object.FirstFragment().PaintOffset());
-      if (!PhysicalRect(object.FirstFragment().GetContentsCullRect().Rect())
-               .Contains(contents_visual_rect)) {
+    } else {
+      IntRect cull_rect = object.FirstFragment().GetCullRect().Rect();
+      bool cull_rect_intersects_self = cull_rect.Intersects(visual_rect);
+      if (!cull_rect.Contains(visual_rect))
         result = kMayBeClippedByCullRect;
+
+      bool cull_rect_intersects_contents = true;
+      if (const auto* box = DynamicTo<LayoutBox>(object)) {
+        PhysicalRect contents_visual_rect =
+            box->PhysicalContentsVisualOverflowRect();
+        contents_visual_rect.Move(object.FirstFragment().PaintOffset());
+        PhysicalRect contents_cull_rect(
+            object.FirstFragment().GetContentsCullRect().Rect());
+        cull_rect_intersects_contents =
+            contents_cull_rect.Intersects(contents_visual_rect);
+        if (!contents_cull_rect.Contains(contents_visual_rect))
+          result = kMayBeClippedByCullRect;
+      } else {
+        cull_rect_intersects_contents = cull_rect_intersects_self;
       }
+
+      if (!cull_rect_intersects_self && !cull_rect_intersects_contents)
+        should_paint_content = false;
+
       // The above doesn't consider clips on non-self-painting contents.
       // Will update in ScopedBoxContentsPaintState.
     }
@@ -485,25 +498,30 @@
 
   if (should_paint_content || should_paint_self_outline ||
       is_painting_overlay_overflow_controls) {
-    // Collect the fragments. This will compute the clip rectangles and paint
-    // offsets for each layer fragment.
+    // Collect the fragments. If CullRectUpdate is enabled, this will just
+    // create a light-weight adapter from FragmentData to PaintLayerFragment
+    // and we'll remove the adapter in the future. Otherwise this will compute
+    // the clip rectangles and paint offsets for each layer fragment.
     paint_layer_.CollectFragments(
         layer_fragments, local_painting_info.root_layer,
         &local_painting_info.cull_rect, kIgnoreOverlayScrollbarSize,
         respect_overflow_clip, &offset_from_root,
         local_painting_info.sub_pixel_accumulation);
 
-    // PaintLayer::CollectFragments depends on the paint dirty rect in
-    // complicated ways. For now, always assume a partially painted output
-    // for fragmented content.
-    if (layer_fragments.size() > 1)
-      result = kMayBeClippedByCullRect;
-
-    if (should_paint_content) {
-      should_paint_content = AtLeastOneFragmentIntersectsDamageRect(
-          layer_fragments, local_painting_info, paint_flags, offset_from_root);
-      if (!should_paint_content)
+    if (!RuntimeEnabledFeatures::CullRectUpdateEnabled()) {
+      // PaintLayer::CollectFragments depends on the paint dirty rect in
+      // complicated ways. For now, always assume a partially painted output
+      // for fragmented content.
+      if (layer_fragments.size() > 1)
         result = kMayBeClippedByCullRect;
+
+      if (should_paint_content) {
+        should_paint_content = AtLeastOneFragmentIntersectsDamageRect(
+            layer_fragments, local_painting_info, paint_flags,
+            offset_from_root);
+        if (!should_paint_content)
+          result = kMayBeClippedByCullRect;
+      }
     }
   }
 
@@ -623,6 +641,8 @@
     const PaintLayerPaintingInfo& local_painting_info,
     PaintLayerFlags local_paint_flags,
     const PhysicalOffset& offset_from_root) {
+  DCHECK(!RuntimeEnabledFeatures::CullRectUpdateEnabled());
+
   if (&paint_layer_ == local_painting_info.root_layer &&
       (local_paint_flags & kPaintLayerPaintingOverflowContents))
     return true;
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 0c63efe..2b73990f 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
@@ -381,6 +381,7 @@
     return kIncludeObject;
 
   // Anything with CSS alt should be included.
+  // Descendants are pruned: IsRelevantPseudoElementDescendant() returns false.
   // Note: this is duplicated from AXLayoutObject because CSS alt text may apply
   // to both Elements and pseudo-elements.
   absl::optional<String> alt_text = GetCSSAltText(GetNode());
@@ -482,7 +483,14 @@
   return kDefaultBehavior;
 }
 
+// static
 absl::optional<String> AXNodeObject::GetCSSAltText(const Node* node) {
+  // CSS alt text rules allow text to be assigned to ::before/::after content.
+  // For example, the following CSS assigns "bullet" text to bullet.png:
+  // .something::before {
+  //   content: url(bullet.png) / "bullet";
+  // }
+
   if (!node || !node->GetComputedStyle() ||
       node->GetComputedStyle()->ContentBehavesAsNormal()) {
     return absl::nullopt;
@@ -718,18 +726,17 @@
     return RoleFromLayoutObjectOrNode();
   }
 
-  if (GetCSSAltText(GetNode())) {
+  if (GetNode()->IsPseudoElement() && GetCSSAltText(GetNode())) {
     const ComputedStyle* style = GetNode()->GetComputedStyle();
     ContentData* content_data = style->GetContentData();
-
     // We just check the first item of the content list to determine the
     // appropriate role, should only ever be image or text.
-    // TODO(accessibility) Should it still be possible to use an ARIA role here?
     // TODO(accessibility) Is it possible to use CSS alt text on an HTML tag
     // with strong semantics? If so, why are we overriding the role here?
     // We only need to ensure the accessible name gets the CSS alt text.
-    // Note: by doing this, we are often hiding a child image, because
-    // CanHaveChildren() returns false for an image.
+    // Note: by doing this, we are often hiding child pseudo element content
+    // because IsRelevantPseudoElementDescendant() returns false when an
+    // ancestor has CSS alt text.
     if (content_data->IsImage())
       return ax::mojom::blink::Role::kImage;
 
@@ -2994,7 +3001,6 @@
   AXObjectCache().GetAriaOwnedChildren(this, owned_children);
 
   // TODO(aleventhal) Why isn't this just using cached children?
-  AXNodeObject* parent = const_cast<AXNodeObject*>(this);
   for (Node* child = LayoutTreeBuilderTraversal::FirstChild(*node_); child;
        child = LayoutTreeBuilderTraversal::NextSibling(*child)) {
     auto* child_text_node = DynamicTo<Text>(child);
@@ -3003,7 +3009,7 @@
       // skip over empty text nodes
       continue;
     }
-    AXObject* child_obj = AXObjectCache().GetOrCreate(child, parent);
+    AXObject* child_obj = AXObjectCache().GetOrCreate(child);
     if (child_obj && !AXObjectCache().IsAriaOwned(child_obj))
       children.push_back(child_obj);
   }
@@ -3469,7 +3475,7 @@
         AXObjectCache().GetOrCreate(primary_image_element);
     if (ax_primary_image &&
         ax_primary_image->ChildCountIncludingIgnored() == 0 &&
-        Traversal<HTMLAreaElement>::FirstWithin(*map)) {
+        NodeTraversal::FirstChild(*map)) {
       // The primary image still needs to add the area children, and there's at
       // least one to add.
       AXObjectCache().ChildrenChanged(primary_image_element);
@@ -3478,28 +3484,24 @@
   }
 
   // Yes, this is the primary image.
-  HTMLAreaElement* first_area = Traversal<HTMLAreaElement>::FirstWithin(*map);
-  if (first_area) {
-    // If the <area> children were part of a different parent, notify that
-    // parent that its children have changed.
-    if (AXObject* ax_preexisting = AXObjectCache().Get(first_area)) {
-      if (AXObject* ax_previous_parent = ax_preexisting->CachedParentObject()) {
-        if (ax_previous_parent != this) {
-          DCHECK(ax_previous_parent->GetNode());
-          AXObjectCache().ChildrenChangedWithCleanLayout(
-              ax_previous_parent->GetNode(), ax_previous_parent);
-          ax_previous_parent->ClearChildren();
-        }
-      }
-    }
 
-    // Add the area children to |this|.
-    for (HTMLAreaElement& area :
-         Traversal<HTMLAreaElement>::DescendantsOf(*map)) {
-      // Add an <area> element for this child if it has a link and is visible.
-      AddChildAndCheckIncluded(AXObjectCache().GetOrCreate(&area, this));
+  // If the children were part of a different parent, notify that parent that
+  // its children have changed.
+  if (AXObject* ax_previous_parent = AXObjectCache().GetAXImageForMap(*map)) {
+    if (ax_previous_parent != this) {
+      DCHECK(ax_previous_parent->GetNode());
+      AXObjectCache().ChildrenChangedWithCleanLayout(
+          ax_previous_parent->GetNode(), ax_previous_parent);
+      ax_previous_parent->ClearChildren();
     }
   }
+
+  // Add the children to |this|.
+  Node* child = LayoutTreeBuilderTraversal::FirstChild(*map);
+  while (child) {
+    AddChildAndCheckIncluded(AXObjectCache().GetOrCreate(child, this));
+    child = LayoutTreeBuilderTraversal::NextSibling(*child);
+  }
 }
 
 void AXNodeObject::AddPopupChildren() {
@@ -3741,11 +3743,6 @@
 
   Node* child_node = child->GetNode();
 
-  // An HTML image can only have area children.
-  DCHECK(!IsA<HTMLImageElement>(GetNode()) || IsA<HTMLAreaElement>(child_node))
-      << "Image elements can only have area children, but this one has:\n"
-      << child->ToString(true, true);
-
   // <area> children should only be added via AddImageMapChildren(), as the
   // children of an <image usemap>, and never alone or as children of a <map>.
   DCHECK(IsA<HTMLImageElement>(GetNode()) || !IsA<HTMLAreaElement>(child_node))
@@ -3905,9 +3902,6 @@
       // Note: these can have AXInlineTextBox children, but when adding them, we
       // also check AXObjectCache().InlineTextBoxAccessibilityEnabled().
       return true;
-    case ax::mojom::blink::Role::kImage:
-      // Can turn into an image map if gains children later.
-      return GetNode() && GetNode()->IsLink();
     default:
       break;
   }
@@ -3919,8 +3913,6 @@
     return true;
 
   switch (AriaRoleAttribute()) {
-    case ax::mojom::blink::Role::kImage:
-      return false;
     case ax::mojom::blink::Role::kCheckBox:
     case ax::mojom::blink::Role::kListBoxOption:
     case ax::mojom::blink::Role::kMath:  // role="math" is flat, unlike <math>
diff --git a/third_party/blink/renderer/modules/accessibility/ax_node_object.h b/third_party/blink/renderer/modules/accessibility/ax_node_object.h
index abe50f67..2e4e353a 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_node_object.h
+++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.h
@@ -47,6 +47,9 @@
  public:
   AXNodeObject(Node*, AXObjectCacheImpl&);
   ~AXNodeObject() override;
+
+  static absl::optional<String> GetCSSAltText(const Node*);
+
   void Trace(Visitor*) const override;
 
  protected:
@@ -61,7 +64,6 @@
   // The ARIA role, not taking the native role into account.
   ax::mojom::blink::Role aria_role_;
 
-  static absl::optional<String> GetCSSAltText(const Node*);
   AXObjectInclusion ShouldIncludeBasedOnSemantics(
       IgnoredReasons* = nullptr) const;
   bool ComputeAccessibilityIsIgnored(IgnoredReasons* = nullptr) const override;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.cc b/third_party/blink/renderer/modules/accessibility/ax_object.cc
index 38b4dbe..f6623c21 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_object.cc
@@ -56,6 +56,7 @@
 #include "third_party/blink/renderer/core/html/html_element.h"
 #include "third_party/blink/renderer/core/html/html_frame_owner_element.h"
 #include "third_party/blink/renderer/core/html/html_head_element.h"
+#include "third_party/blink/renderer/core/html/html_image_element.h"
 #include "third_party/blink/renderer/core/html/html_script_element.h"
 #include "third_party/blink/renderer/core/html/html_slot_element.h"
 #include "third_party/blink/renderer/core/html/html_style_element.h"
@@ -203,8 +204,13 @@
   // Whenever null is returned from this function, then a parent cannot be
   // computed, and when a parent is not provided or computed, the accessible
   // object will not be created.
-  // TODO(aleventhal) Remove this method / inline, if proven to be this simple.
-  return LayoutTreeBuilderTraversal::Parent(*node);
+  Node* parent = LayoutTreeBuilderTraversal::Parent(*node);
+  HTMLMapElement* map_element = DynamicTo<HTMLMapElement>(parent);
+  if (!map_element)
+    return parent;
+
+  // Special case, for a <map>, return the <img> associated with it.
+  return map_element->ImageElement();
 }
 
 #if DCHECK_IS_ON()
@@ -707,12 +713,13 @@
   if (IsA<HTMLBRElement>(node))
     return false;
 
-  // Image map parent-child relationships (from image to area) must be retrieved
-  // manually via AXImageMapLink::GetAXObjectForImageMap().
-  if (IsA<HTMLMapElement>(node) || IsA<HTMLAreaElement>(node) ||
-      IsA<HTMLImageElement>(node)) {
+  // Image map parent-child relationships work as follows:
+  // - The image is the parent
+  // - The DOM children of the ssociated <map> are the children
+  // This is accomplished by having GetParentNodeForComputeParent() return the
+  // <img> instead of the <map> for the map's children.
+  if (IsA<HTMLMapElement>(node))
     return false;
-  }
 
   return true;
 }
@@ -770,14 +777,6 @@
     }
   }
 
-  // For <area>, return the image it is a child link of.
-  if (IsA<HTMLAreaElement>(current_node)) {
-    if (AXObject* ax_image =
-            AXImageMapLink::GetAXObjectForImageMap(cache, current_node)) {
-      return ax_image;
-    }
-  }
-
   Node* parent_node = GetParentNodeForComputeParent(current_node);
   if (!parent_node) {
     // This occurs when a DOM child isn't visited by LayoutTreeBuilderTraversal,
@@ -4260,7 +4259,8 @@
 
   children_.clear();
 
-  if (!GetNode())
+  Node* node = GetNode();
+  if (!node)
     return;
 
   if (GetDocument()->IsFlatTreeTraversalForbidden()) {
@@ -4286,14 +4286,21 @@
 
   // TODO(crbug.com/1209216): Figure out why removing this causes a
   // use-after-poison and possibly replace it with a better check.
-  HTMLSlotElement* slot = DynamicTo<HTMLSlotElement>(GetNode());
+  HTMLSlotElement* slot = DynamicTo<HTMLSlotElement>(node);
   if (slot && slot->SupportsAssignment())
     return;
 
+  if (auto* image = DynamicTo<HTMLImageElement>(node)) {
+    node = GetDocument()->GetImageMap(
+        image->FastGetAttribute(html_names::kUsemapAttr));
+    if (!node)
+      return;
+  }
+
   // Detach children that were not cleared from first loop.
   // These must have been an unincluded node who's parent is this,
   // although it may now be included since the children were last updated.
-  for (Node* child_node = LayoutTreeBuilderTraversal::FirstChild(*GetNode());
+  for (Node* child_node = LayoutTreeBuilderTraversal::FirstChild(*node);
        child_node;
        child_node = LayoutTreeBuilderTraversal::NextSibling(*child_node)) {
     // Get the child object that should be detached from this parent.
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc
index 02882088..ddcff24 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc
@@ -290,6 +290,12 @@
 bool IsShadowContentRelevantForAccessibility(const Node* node) {
   DCHECK(node->ContainingShadowRoot());
 
+  // Native <img> create extra child nodes to hold alt text.
+  if (node->IsInUserAgentShadowRoot() &&
+      IsA<HTMLImageElement>(node->OwnerShadowHost())) {
+    return false;
+  }
+
   // Don't use non-<option> descendants of an AXMenuList.
   // If the UseAXMenuList flag is on, we use a specialized class AXMenuList
   // for handling the user-agent shadow DOM exposed by a <select> element.
@@ -809,11 +815,23 @@
 }
 
 AXObject* AXObjectCacheImpl::GetAXImageForMap(HTMLMapElement& map) {
-  HTMLElement* first_area = Traversal<HTMLAreaElement>::FirstWithin(map);
-  AXObject* ax_child_area = Get(first_area);
-  if (!ax_child_area)
-    return nullptr;
-  return ax_child_area->CachedParentObject();
+  // Find first child node of <map> that has an AXObject and return it's
+  // parent, which should be a native image.
+  Node* child = LayoutTreeBuilderTraversal::FirstChild(map);
+  while (child) {
+    if (AXObject* ax_child = Get(child)) {
+      if (AXObject* ax_image = ax_child->CachedParentObject()) {
+        DCHECK(!ax_image->IsDetached());
+        DCHECK(IsA<HTMLImageElement>(ax_image->GetNode()))
+            << "Expected image AX parent of <map>'s DOM child, got: "
+            << ax_image->GetNode() << "\n* Map's DOM child was: " << child
+            << "\n* ax_image: " << ax_image->ToString(true, true);
+        return ax_image;
+      }
+    }
+    child = LayoutTreeBuilderTraversal::NextSibling(*child);
+  }
+  return nullptr;
 }
 
 AXObject* AXObjectCacheImpl::CreateFromRenderer(LayoutObject* layout_object) {
@@ -925,8 +943,12 @@
     ancestor = ancestor->Parent();
     if (!ancestor)
       return false;
-    if (ancestor->IsPseudoElement())
+    if (ancestor->IsPseudoElement()) {
+      // When an ancestor is exposed using CSS alt text, descendants are pruned.
+      if (AXNodeObject::GetCSSAltText(ancestor->GetNode()))
+        return false;
       return IsRelevantPseudoElement(*ancestor->GetNode());
+    }
     if (!ancestor->IsAnonymous())
       return false;
   }
@@ -1767,41 +1789,6 @@
       &AXObjectCacheImpl::UpdateCacheAfterNodeIsAttachedWithCleanLayout, node);
 }
 
-bool AXObjectCacheImpl::IsStillInTree(AXObject* obj) {
-  // Return an AXObject for the node if the AXObject is still in the tree.
-  // If there is a viable included parent, that means it's still in the tree.
-  // Otherwise, repair missing parent, or prune the object if no viable parent
-  // can be found. For example, through CSS changes, an ancestor became an
-  // image, which is always a leaf; therefore, no descendants are "in the tree".
-
-  if (!obj)
-    return false;
-
-  if (obj->IsMissingParent()) {
-    // Parent is missing. Attempt to repair it with a viable recomputed parent.
-    AXObject* ax_parent = obj->ComputeParent();
-    if (!IsStillInTree(ax_parent)) {
-      // Parent is unrepairable, meaning that this AXObject can no longer be
-      // attached to the tree and is no longer viable. Prune it now.
-      Remove(obj);
-      return false;
-    }
-    obj->SetParent(ax_parent);
-    return true;
-  }
-
-  if (!obj->LastKnownIsIncludedInTreeValue()) {
-    // Current object was not included in the tree, therefore, recursively
-    // keep checking up a level until a viable included parent is found.
-    if (!IsStillInTree(obj->CachedParentObject())) {
-      Remove(obj);
-      return false;
-    }
-  }
-
-  return true;
-}
-
 void AXObjectCacheImpl::UpdateCacheAfterNodeIsAttachedWithCleanLayout(
     Node* node) {
   if (!node || !node->isConnected())
@@ -1979,11 +1966,8 @@
       << "Unclean document at lifecycle " << document->Lifecycle().ToString();
 #endif  // DCHECK_IS_ON()
 
-  if (obj) {
-    if (!IsStillInTree(obj))
-      return;  // Object is no longer in tree, and therefore not viable.
+  if (obj)
     obj->ChildrenChanged();
-  }
 
   if (optional_node)
     relation_cache_->UpdateRelatedTree(optional_node, obj);
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h
index d067b902..4677c4c7 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h
+++ b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h
@@ -289,6 +289,9 @@
   void GetAriaOwnedChildren(const AXObject* owner,
                             HeapVector<Member<AXObject>>& owned_children);
 
+  // Given a <map> element, get the image currently associated with it, if any.
+  AXObject* GetAXImageForMap(HTMLMapElement& map);
+
   // Adds |object| to |fixed_or_sticky_node_ids_| if it has a fixed or sticky
   // position.
   void AddToFixedOrStickyNodeList(const AXObject* object);
@@ -376,9 +379,6 @@
   AXObject* CreateFromInlineTextBox(AbstractInlineTextBox*);
   void Remove(AXID);
 
-  // Given a <map> element, get the image currently associated with it, if any.
-  AXObject* GetAXImageForMap(HTMLMapElement& map);
-
  private:
   struct AXEventParams final : public GarbageCollected<AXEventParams> {
     AXEventParams(AXObject* target,
diff --git a/third_party/blink/renderer/modules/breakout_box/BUILD.gn b/third_party/blink/renderer/modules/breakout_box/BUILD.gn
index 0cededda..a53ecd6 100644
--- a/third_party/blink/renderer/modules/breakout_box/BUILD.gn
+++ b/third_party/blink/renderer/modules/breakout_box/BUILD.gn
@@ -22,6 +22,8 @@
     "media_stream_video_track_underlying_sink.h",
     "media_stream_video_track_underlying_source.cc",
     "media_stream_video_track_underlying_source.h",
+    "metrics.cc",
+    "metrics.h",
     "pushable_media_stream_audio_source.cc",
     "pushable_media_stream_audio_source.h",
     "pushable_media_stream_video_source.cc",
diff --git a/third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_sink.cc b/third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_sink.cc
index 6f64374..902236b 100644
--- a/third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_sink.cc
+++ b/third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_sink.cc
@@ -6,6 +6,8 @@
 
 #include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_audio_data.h"
+#include "third_party/blink/renderer/core/streams/writable_stream_transferring_optimizer.h"
+#include "third_party/blink/renderer/modules/breakout_box/metrics.h"
 #include "third_party/blink/renderer/modules/breakout_box/pushable_media_stream_audio_source.h"
 #include "third_party/blink/renderer/modules/webcodecs/audio_data.h"
 #include "third_party/blink/renderer/platform/bindings/exception_state.h"
@@ -15,9 +17,22 @@
 
 namespace blink {
 
+namespace {
+class PlaceholderTransferringOptimizer
+    : public WritableStreamTransferringOptimizer {
+  UnderlyingSinkBase* PerformInProcessOptimization(
+      ScriptState* script_state) override {
+    RecordBreakoutBoxUsage(BreakoutBoxUsage::kWritableAudioWorker);
+    return nullptr;
+  }
+};
+}  // namespace
+
 MediaStreamAudioTrackUnderlyingSink::MediaStreamAudioTrackUnderlyingSink(
     PushableMediaStreamAudioSource* source)
-    : source_(source->GetWeakPtr()) {}
+    : source_(source->GetWeakPtr()) {
+  RecordBreakoutBoxUsage(BreakoutBoxUsage::kWritableAudio);
+}
 
 ScriptPromise MediaStreamAudioTrackUnderlyingSink::start(
     ScriptState* script_state,
@@ -74,4 +89,9 @@
   return ScriptPromise::CastUndefined(script_state);
 }
 
+std::unique_ptr<WritableStreamTransferringOptimizer>
+MediaStreamAudioTrackUnderlyingSink::GetTransferringOptimizer() {
+  return std::make_unique<PlaceholderTransferringOptimizer>();
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_sink.h b/third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_sink.h
index 7ed1faf..4411d65b 100644
--- a/third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_sink.h
+++ b/third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_sink.h
@@ -13,6 +13,7 @@
 
 class MediaStreamAudioSource;
 class PushableMediaStreamAudioSource;
+class WritableStreamTransferringOptimizer;
 
 class MODULES_EXPORT MediaStreamAudioTrackUnderlyingSink
     : public UnderlyingSinkBase {
@@ -35,6 +36,9 @@
   ScriptPromise close(ScriptState* script_state,
                       ExceptionState& exception_state) override;
 
+  std::unique_ptr<WritableStreamTransferringOptimizer>
+  GetTransferringOptimizer();
+
  private:
   base::WeakPtr<MediaStreamAudioSource> source_;
 };
diff --git a/third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_source.cc b/third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_source.cc
index 5b3ac3c..218df8d 100644
--- a/third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_source.cc
+++ b/third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_source.cc
@@ -5,11 +5,24 @@
 #include "third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_source.h"
 
 #include "media/base/audio_buffer.h"
+#include "third_party/blink/renderer/core/streams/readable_stream_transferring_optimizer.h"
+#include "third_party/blink/renderer/modules/breakout_box/metrics.h"
 #include "third_party/blink/renderer/modules/mediastream/media_stream_track.h"
 #include "third_party/blink/renderer/platform/mediastream/media_stream_audio_track.h"
 
 namespace blink {
 
+namespace {
+class PlaceholderTransferringOptimizer
+    : public ReadableStreamTransferringOptimizer {
+  UnderlyingSourceBase* PerformInProcessOptimization(
+      ScriptState* script_state) override {
+    RecordBreakoutBoxUsage(BreakoutBoxUsage::kReadableAudioWorker);
+    return nullptr;
+  }
+};
+}  // namespace
+
 MediaStreamAudioTrackUnderlyingSource::MediaStreamAudioTrackUnderlyingSource(
     ScriptState* script_state,
     MediaStreamComponent* track,
@@ -19,6 +32,7 @@
       media_stream_track_processor_(media_stream_track_processor),
       track_(track) {
   DCHECK(track_);
+  RecordBreakoutBoxUsage(BreakoutBoxUsage::kReadableAudio);
 }
 
 bool MediaStreamAudioTrackUnderlyingSource::StartFrameDelivery() {
@@ -76,4 +90,9 @@
   audio_parameters_ = params;
 }
 
+std::unique_ptr<ReadableStreamTransferringOptimizer>
+MediaStreamAudioTrackUnderlyingSource::GetTransferringOptimizer() {
+  return std::make_unique<PlaceholderTransferringOptimizer>();
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_source.h b/third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_source.h
index 283b8bc4..fb6ebe5 100644
--- a/third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_source.h
+++ b/third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_source.h
@@ -14,6 +14,7 @@
 namespace blink {
 
 class MediaStreamComponent;
+class ReadableStreamTransferringOptimizer;
 
 class MODULES_EXPORT MediaStreamAudioTrackUnderlyingSource
     : public AudioDataQueueUnderlyingSource,
@@ -39,6 +40,9 @@
 
   MediaStreamComponent* Track() const { return track_.Get(); }
 
+  std::unique_ptr<ReadableStreamTransferringOptimizer>
+  GetTransferringOptimizer();
+
   void ContextDestroyed() override;
   void Trace(Visitor*) const override;
 
diff --git a/third_party/blink/renderer/modules/breakout_box/media_stream_track_generator.cc b/third_party/blink/renderer/modules/breakout_box/media_stream_track_generator.cc
index 39a376ab..e3f6501 100644
--- a/third_party/blink/renderer/modules/breakout_box/media_stream_track_generator.cc
+++ b/third_party/blink/renderer/modules/breakout_box/media_stream_track_generator.cc
@@ -10,6 +10,7 @@
 #include "third_party/blink/renderer/core/execution_context/execution_context.h"
 #include "third_party/blink/renderer/core/streams/readable_stream.h"
 #include "third_party/blink/renderer/core/streams/writable_stream.h"
+#include "third_party/blink/renderer/core/streams/writable_stream_transferring_optimizer.h"
 #include "third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_sink.h"
 #include "third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_sink.h"
 #include "third_party/blink/renderer/modules/breakout_box/pushable_media_stream_audio_source.h"
@@ -206,7 +207,8 @@
   video_underlying_sink_ =
       MakeGarbageCollected<MediaStreamVideoTrackUnderlyingSink>(source);
   writable_ = WritableStream::CreateWithCountQueueingStrategy(
-      script_state, video_underlying_sink_, /*high_water_mark=*/1);
+      script_state, video_underlying_sink_, /*high_water_mark=*/1,
+      video_underlying_sink_->GetTransferringOptimizer());
 }
 
 void MediaStreamTrackGenerator::CreateAudioStream(ScriptState* script_state) {
@@ -217,7 +219,8 @@
   audio_underlying_sink_ =
       MakeGarbageCollected<MediaStreamAudioTrackUnderlyingSink>(source);
   writable_ = WritableStream::CreateWithCountQueueingStrategy(
-      script_state, audio_underlying_sink_, /*high_water_mark=*/1);
+      script_state, audio_underlying_sink_, /*high_water_mark=*/1,
+      audio_underlying_sink_->GetTransferringOptimizer());
 }
 
 void MediaStreamTrackGenerator::CreateVideoControlStream(
diff --git a/third_party/blink/renderer/modules/breakout_box/media_stream_track_generator_test.cc b/third_party/blink/renderer/modules/breakout_box/media_stream_track_generator_test.cc
index 8a1f05e0..2eefac01 100644
--- a/third_party/blink/renderer/modules/breakout_box/media_stream_track_generator_test.cc
+++ b/third_party/blink/renderer/modules/breakout_box/media_stream_track_generator_test.cc
@@ -6,6 +6,7 @@
 
 #include "base/run_loop.h"
 #include "base/test/gmock_callback_support.h"
+#include "base/test/metrics/histogram_tester.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/platform/modules/mediastream/web_media_stream_track.h"
 #include "third_party/blink/public/web/web_heap.h"
@@ -19,6 +20,7 @@
 #include "third_party/blink/renderer/core/streams/writable_stream.h"
 #include "third_party/blink/renderer/core/streams/writable_stream_default_writer.h"
 #include "third_party/blink/renderer/modules/breakout_box/media_stream_track_processor.h"
+#include "third_party/blink/renderer/modules/breakout_box/metrics.h"
 #include "third_party/blink/renderer/modules/breakout_box/pushable_media_stream_video_source.h"
 #include "third_party/blink/renderer/modules/breakout_box/stream_test_utils.h"
 #include "third_party/blink/renderer/modules/mediastream/media_stream_video_track.h"
@@ -73,6 +75,7 @@
 };
 
 TEST_F(MediaStreamTrackGeneratorTest, VideoFramesAreWritten) {
+  base::HistogramTester histogram_tester;
   V8TestingScope v8_scope;
   ScriptState* script_state = v8_scope.GetScriptState();
   MediaStreamTrackGenerator* generator = MediaStreamTrackGenerator::Create(
@@ -110,9 +113,13 @@
   close_tester.WaitUntilSettled();
   EXPECT_FALSE(exception_state.HadException());
   EXPECT_TRUE(generator->Ended());
+  histogram_tester.ExpectUniqueSample("Media.BreakoutBox.Usage",
+                                      BreakoutBoxUsage::kWritableVideo, 1);
+  histogram_tester.ExpectTotalCount("Media.BreakoutBox.Usage", 1);
 }
 
 TEST_F(MediaStreamTrackGeneratorTest, AudioDataAreWritten) {
+  base::HistogramTester histogram_tester;
   V8TestingScope v8_scope;
   ScriptState* script_state = v8_scope.GetScriptState();
   MediaStreamTrackGenerator* generator = MediaStreamTrackGenerator::Create(
@@ -153,9 +160,13 @@
 
   WebMediaStreamAudioSink::RemoveFromAudioTrack(
       &media_stream_audio_sink, WebMediaStreamTrack(generator->Component()));
+  histogram_tester.ExpectUniqueSample("Media.BreakoutBox.Usage",
+                                      BreakoutBoxUsage::kWritableAudio, 1);
+  histogram_tester.ExpectTotalCount("Media.BreakoutBox.Usage", 1);
 }
 
 TEST_F(MediaStreamTrackGeneratorTest, SignalsAreRead) {
+  base::HistogramTester histogram_tester;
   V8TestingScope v8_scope;
   ScriptState* script_state = v8_scope.GetScriptState();
   MediaStreamTrackGenerator* generator = MediaStreamTrackGenerator::Create(
@@ -177,6 +188,9 @@
   EXPECT_EQ(signal->signalType(), "set-min-frame-rate");
   EXPECT_TRUE(signal->hasFrameRate());
   EXPECT_EQ(signal->frameRate(), min_frame_rate);
+  histogram_tester.ExpectUniqueSample(
+      "Media.BreakoutBox.Usage", BreakoutBoxUsage::kReadableControlVideo, 1);
+  histogram_tester.ExpectTotalCount("Media.BreakoutBox.Usage", 1);
 }
 
 TEST_F(MediaStreamTrackGeneratorTest, FramesDoNotFlowOnStoppedGenerator) {
diff --git a/third_party/blink/renderer/modules/breakout_box/media_stream_track_processor.cc b/third_party/blink/renderer/modules/breakout_box/media_stream_track_processor.cc
index f76567c..cc6e85c 100644
--- a/third_party/blink/renderer/modules/breakout_box/media_stream_track_processor.cc
+++ b/third_party/blink/renderer/modules/breakout_box/media_stream_track_processor.cc
@@ -141,7 +141,9 @@
       MakeGarbageCollected<MediaStreamAudioTrackUnderlyingSource>(
           script_state, input_track_->Component(), this, buffer_size_);
   source_stream_ = ReadableStream::CreateWithCountQueueingStrategy(
-      script_state, audio_underlying_source_, /*high_water_mark=*/0);
+      script_state, audio_underlying_source_, /*high_water_mark=*/0,
+      AllowPerChunkTransferring(false),
+      audio_underlying_source_->GetTransferringOptimizer());
 }
 
 void MediaStreamTrackProcessor::CreateVideoControlStream(
diff --git a/third_party/blink/renderer/modules/breakout_box/media_stream_track_processor_test.cc b/third_party/blink/renderer/modules/breakout_box/media_stream_track_processor_test.cc
index 1628772..701e159f 100644
--- a/third_party/blink/renderer/modules/breakout_box/media_stream_track_processor_test.cc
+++ b/third_party/blink/renderer/modules/breakout_box/media_stream_track_processor_test.cc
@@ -6,6 +6,7 @@
 
 #include "base/run_loop.h"
 #include "base/test/gmock_callback_support.h"
+#include "base/test/metrics/histogram_tester.h"
 #include "media/base/video_frame.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/platform/scheduler/test/renderer_scheduler_test_support.h"
@@ -20,6 +21,7 @@
 #include "third_party/blink/renderer/core/streams/writable_stream.h"
 #include "third_party/blink/renderer/core/streams/writable_stream_default_writer.h"
 #include "third_party/blink/renderer/modules/breakout_box/media_stream_track_generator.h"
+#include "third_party/blink/renderer/modules/breakout_box/metrics.h"
 #include "third_party/blink/renderer/modules/breakout_box/pushable_media_stream_audio_source.h"
 #include "third_party/blink/renderer/modules/breakout_box/pushable_media_stream_video_source.h"
 #include "third_party/blink/renderer/modules/breakout_box/stream_test_utils.h"
@@ -118,6 +120,7 @@
 };
 
 TEST_F(MediaStreamTrackProcessorTest, VideoFramesAreExposed) {
+  base::HistogramTester histogram_tester;
   V8TestingScope v8_scope;
   ScriptState* script_state = v8_scope.GetScriptState();
   ExceptionState& exception_state = v8_scope.GetExceptionState();
@@ -163,9 +166,13 @@
   sink_loop.Run();
   EXPECT_EQ(mock_video_sink.number_of_frames(), 1);
   EXPECT_EQ(mock_video_sink.last_frame(), frame);
+  histogram_tester.ExpectUniqueSample("Media.BreakoutBox.Usage",
+                                      BreakoutBoxUsage::kReadableVideo, 1);
+  histogram_tester.ExpectTotalCount("Media.BreakoutBox.Usage", 1);
 }
 
 TEST_F(MediaStreamTrackProcessorTest, AudioDataAreExposed) {
+  base::HistogramTester histogram_tester;
   V8TestingScope v8_scope;
   ScriptState* script_state = v8_scope.GetScriptState();
   ExceptionState& exception_state = v8_scope.GetExceptionState();
@@ -211,9 +218,13 @@
 
   WebMediaStreamAudioSink::RemoveFromAudioTrack(&mock_audio_sink,
                                                 WebMediaStreamTrack(component));
+  histogram_tester.ExpectUniqueSample("Media.BreakoutBox.Usage",
+                                      BreakoutBoxUsage::kReadableAudio, 1);
+  histogram_tester.ExpectTotalCount("Media.BreakoutBox.Usage", 1);
 }
 
 TEST_F(MediaStreamTrackProcessorTest, VideoControlSignalsAreForwarded) {
+  base::HistogramTester histogram_tester;
   V8TestingScope v8_scope;
   ScriptState* script_state = v8_scope.GetScriptState();
   ExceptionState& exception_state = v8_scope.GetExceptionState();
@@ -262,6 +273,9 @@
                     exception_state));
   invalid_signal_tester.WaitUntilSettled();
   EXPECT_TRUE(invalid_signal_tester.IsRejected());
+  histogram_tester.ExpectUniqueSample(
+      "Media.BreakoutBox.Usage", BreakoutBoxUsage::kWritableControlVideo, 1);
+  histogram_tester.ExpectTotalCount("Media.BreakoutBox.Usage", 1);
 }
 
 TEST_F(MediaStreamTrackProcessorTest, AudioControlSignalsAreRejected) {
diff --git a/third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_sink.cc b/third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_sink.cc
index 2024b8d..965f20a4 100644
--- a/third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_sink.cc
+++ b/third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_sink.cc
@@ -5,14 +5,28 @@
 #include "third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_sink.h"
 
 #include "third_party/blink/renderer/bindings/modules/v8/v8_video_frame.h"
+#include "third_party/blink/renderer/core/streams/writable_stream_transferring_optimizer.h"
+#include "third_party/blink/renderer/modules/breakout_box/metrics.h"
 #include "third_party/blink/renderer/modules/breakout_box/pushable_media_stream_video_source.h"
 #include "third_party/blink/renderer/platform/bindings/exception_state.h"
 
 namespace blink {
+namespace {
+class PlaceholderTransferringOptimizer
+    : public WritableStreamTransferringOptimizer {
+  UnderlyingSinkBase* PerformInProcessOptimization(
+      ScriptState* script_state) override {
+    RecordBreakoutBoxUsage(BreakoutBoxUsage::kWritableVideoWorker);
+    return nullptr;
+  }
+};
+}  // namespace
 
 MediaStreamVideoTrackUnderlyingSink::MediaStreamVideoTrackUnderlyingSink(
     PushableMediaStreamVideoSource* source)
-    : source_(source->GetWeakPtr()) {}
+    : source_(source->GetWeakPtr()) {
+  RecordBreakoutBoxUsage(BreakoutBoxUsage::kWritableVideo);
+}
 
 ScriptPromise MediaStreamVideoTrackUnderlyingSink::start(
     ScriptState* script_state,
@@ -73,4 +87,9 @@
   return ScriptPromise::CastUndefined(script_state);
 }
 
+std::unique_ptr<WritableStreamTransferringOptimizer>
+MediaStreamVideoTrackUnderlyingSink::GetTransferringOptimizer() {
+  return std::make_unique<PlaceholderTransferringOptimizer>();
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_sink.h b/third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_sink.h
index 210aae9..6a9d446 100644
--- a/third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_sink.h
+++ b/third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_sink.h
@@ -12,6 +12,7 @@
 
 class MediaStreamVideoSource;
 class PushableMediaStreamVideoSource;
+class WritableStreamTransferringOptimizer;
 
 class MODULES_EXPORT MediaStreamVideoTrackUnderlyingSink
     : public UnderlyingSinkBase {
@@ -33,6 +34,9 @@
   ScriptPromise close(ScriptState* script_state,
                       ExceptionState& exception_state) override;
 
+  std::unique_ptr<WritableStreamTransferringOptimizer>
+  GetTransferringOptimizer();
+
  private:
   base::WeakPtr<MediaStreamVideoSource> source_;
 };
diff --git a/third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_source.cc b/third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_source.cc
index 6579b88..73906a5 100644
--- a/third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_source.cc
+++ b/third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_source.cc
@@ -7,6 +7,7 @@
 #include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/renderer/core/execution_context/execution_context.h"
 #include "third_party/blink/renderer/modules/breakout_box/frame_queue_transferring_optimizer.h"
+#include "third_party/blink/renderer/modules/breakout_box/metrics.h"
 #include "third_party/blink/renderer/modules/mediastream/media_stream_track.h"
 #include "third_party/blink/renderer/modules/mediastream/media_stream_video_track.h"
 #include "third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h"
@@ -41,6 +42,7 @@
       media_stream_track_processor_(media_stream_track_processor),
       track_(track) {
   DCHECK(track_);
+  RecordBreakoutBoxUsage(BreakoutBoxUsage::kReadableVideo);
 }
 
 void MediaStreamVideoTrackUnderlyingSource::Trace(Visitor* visitor) const {
@@ -52,7 +54,6 @@
 std::unique_ptr<ReadableStreamTransferringOptimizer>
 MediaStreamVideoTrackUnderlyingSource::GetStreamTransferOptimizer() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-
   return std::make_unique<VideoFrameQueueTransferOptimizer>(
       this, GetRealmRunner(), MaxQueueSize(),
       CrossThreadBindOnce(
@@ -91,6 +92,7 @@
                                WrapCrossThreadPersistent(source)),
       GetIOTaskRunner(),
       CrossThreadBindOnce(finalize_transfer, WrapCrossThreadPersistent(this)));
+  RecordBreakoutBoxUsage(BreakoutBoxUsage::kReadableVideoWorker);
 }
 
 void MediaStreamVideoTrackUnderlyingSource::OnFrameFromTrack(
diff --git a/third_party/blink/renderer/modules/breakout_box/metrics.cc b/third_party/blink/renderer/modules/breakout_box/metrics.cc
new file mode 100644
index 0000000..9308d7dd
--- /dev/null
+++ b/third_party/blink/renderer/modules/breakout_box/metrics.cc
@@ -0,0 +1,14 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/modules/breakout_box/metrics.h"
+#include "base/metrics/histogram_functions.h"
+
+namespace blink {
+
+void RecordBreakoutBoxUsage(BreakoutBoxUsage usage) {
+  base::UmaHistogramEnumeration("Media.BreakoutBox.Usage", usage);
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/modules/breakout_box/metrics.h b/third_party/blink/renderer/modules/breakout_box/metrics.h
new file mode 100644
index 0000000..6c211f7
--- /dev/null
+++ b/third_party/blink/renderer/modules/breakout_box/metrics.h
@@ -0,0 +1,30 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_BREAKOUT_BOX_METRICS_H_
+#define THIRD_PARTY_BLINK_RENDERER_MODULES_BREAKOUT_BOX_METRICS_H_
+
+namespace blink {
+
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+enum class BreakoutBoxUsage {
+  kReadableVideo = 0,
+  kReadableVideoWorker = 1,
+  kReadableAudio = 2,
+  kReadableAudioWorker = 3,
+  kWritableVideo = 4,
+  kWritableVideoWorker = 5,
+  kWritableAudio = 6,
+  kWritableAudioWorker = 7,
+  kReadableControlVideo = 8,
+  kWritableControlVideo = 9,
+  kMaxValue = kWritableControlVideo,
+};
+
+void RecordBreakoutBoxUsage(BreakoutBoxUsage);
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_MODULES_BREAKOUT_BOX_METRICS_H_
diff --git a/third_party/blink/renderer/modules/breakout_box/video_track_signal_underlying_sink.cc b/third_party/blink/renderer/modules/breakout_box/video_track_signal_underlying_sink.cc
index d54757df..c645f04 100644
--- a/third_party/blink/renderer/modules/breakout_box/video_track_signal_underlying_sink.cc
+++ b/third_party/blink/renderer/modules/breakout_box/video_track_signal_underlying_sink.cc
@@ -8,6 +8,7 @@
 #include "third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_media_stream_track_signal.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_media_stream_track_signal_type.h"
+#include "third_party/blink/renderer/modules/breakout_box/metrics.h"
 #include "third_party/blink/renderer/modules/breakout_box/pushable_media_stream_video_source.h"
 #include "third_party/blink/renderer/modules/mediastream/media_stream_track.h"
 #include "third_party/blink/renderer/modules/mediastream/media_stream_video_track.h"
@@ -25,6 +26,8 @@
       MediaStreamVideoSource::GetVideoSource(track->Component()->Source());
   if (video_source)
     source_ = video_source->GetWeakPtr();
+
+  RecordBreakoutBoxUsage(BreakoutBoxUsage::kWritableControlVideo);
 }
 
 ScriptPromise VideoTrackSignalUnderlyingSink::start(
diff --git a/third_party/blink/renderer/modules/breakout_box/video_track_signal_underlying_source.cc b/third_party/blink/renderer/modules/breakout_box/video_track_signal_underlying_source.cc
index d4ddbb4..eb7ed26 100644
--- a/third_party/blink/renderer/modules/breakout_box/video_track_signal_underlying_source.cc
+++ b/third_party/blink/renderer/modules/breakout_box/video_track_signal_underlying_source.cc
@@ -10,6 +10,7 @@
 #include "third_party/blink/renderer/core/execution_context/execution_context.h"
 #include "third_party/blink/renderer/core/streams/readable_stream_default_controller_with_script_scope.h"
 #include "third_party/blink/renderer/modules/breakout_box/media_stream_track_generator.h"
+#include "third_party/blink/renderer/modules/breakout_box/metrics.h"
 #include "third_party/blink/renderer/modules/breakout_box/pushable_media_stream_video_source.h"
 #include "third_party/blink/renderer/modules/mediastream/media_stream_track.h"
 #include "third_party/blink/renderer/modules/mediastream/media_stream_video_track.h"
@@ -32,6 +33,7 @@
       generator_(generator),
       max_queue_size_(std::max(1u, max_queue_size)) {
   DCHECK(generator_);
+  RecordBreakoutBoxUsage(BreakoutBoxUsage::kReadableControlVideo);
 }
 
 ScriptPromise VideoTrackSignalUnderlyingSource::pull(
diff --git a/third_party/blink/renderer/modules/media/BUILD.gn b/third_party/blink/renderer/modules/media/BUILD.gn
index 9f8410f4..a9855be 100644
--- a/third_party/blink/renderer/modules/media/BUILD.gn
+++ b/third_party/blink/renderer/modules/media/BUILD.gn
@@ -20,7 +20,10 @@
     "webmediaplayer_util.cc",
   ]
 
-  deps = [ "//build:chromeos_buildflags" ]
+  deps = [
+    "//build:chromeos_buildflags",
+    "//media/mojo/common",
+  ]
 
   if (is_fuchsia) {
     sources += [ "audio/fuchsia_audio_device_factory.cc" ]
diff --git a/third_party/blink/renderer/modules/media/audio/mojo_audio_input_ipc.cc b/third_party/blink/renderer/modules/media/audio/mojo_audio_input_ipc.cc
index f024d09..c44bb4a 100644
--- a/third_party/blink/renderer/modules/media/audio/mojo_audio_input_ipc.cc
+++ b/third_party/blink/renderer/modules/media/audio/mojo_audio_input_ipc.cc
@@ -10,6 +10,7 @@
 #include "base/callback_helpers.h"
 #include "base/metrics/histogram_macros.h"
 #include "media/audio/audio_device_description.h"
+#include "media/mojo/common/input_error_code_converter.h"
 #include "media/mojo/mojom/audio_data_pipe.mojom-blink.h"
 #include "mojo/public/cpp/system/platform_handle.h"
 
@@ -117,7 +118,7 @@
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(delegate_);
 
-  delegate_->OnError();
+  delegate_->OnError(media::ConvertToCaptureCallbackCode(code));
 }
 
 void MojoAudioInputIPC::OnMutedStateChanged(bool is_muted) {
diff --git a/third_party/blink/renderer/modules/media/audio/mojo_audio_input_ipc_test.cc b/third_party/blink/renderer/modules/media/audio/mojo_audio_input_ipc_test.cc
index cf0cc55..d4e9d25 100644
--- a/third_party/blink/renderer/modules/media/audio/mojo_audio_input_ipc_test.cc
+++ b/third_party/blink/renderer/modules/media/audio/mojo_audio_input_ipc_test.cc
@@ -68,7 +68,7 @@
   }
 
   MOCK_METHOD1(GotOnStreamCreated, void(bool initially_muted));
-  MOCK_METHOD0(OnError, void());
+  MOCK_METHOD1(OnError, void(media::AudioCapturerSource::ErrorCode));
   MOCK_METHOD1(OnMuted, void(bool));
   MOCK_METHOD0(OnIPCClosed, void());
 };
@@ -173,7 +173,8 @@
                  bool automatic_gain_control, uint32_t total_segments) {}),
           base::BindRepeating(&AssociateOutputForAec));
 
-  EXPECT_CALL(delegate, OnError());
+  EXPECT_CALL(delegate,
+              OnError(media::AudioCapturerSource::ErrorCode::kUnknown));
 
   ipc->CreateStream(&delegate, Params(), false, kTotalSegments);
   base::RunLoop().RunUntilIdle();
@@ -244,7 +245,8 @@
     base::RunLoop().RunUntilIdle();
     Mock::VerifyAndClearExpectations(&delegate);
 
-    EXPECT_CALL(delegate, OnError());
+    EXPECT_CALL(delegate,
+                OnError(media::AudioCapturerSource::ErrorCode::kUnknown));
     creator.SignalError();
     base::RunLoop().RunUntilIdle();
     Mock::VerifyAndClearExpectations(&delegate);
diff --git a/third_party/blink/renderer/modules/mediastream/local_media_stream_audio_source.cc b/third_party/blink/renderer/modules/mediastream/local_media_stream_audio_source.cc
index a8b3db7..0bf0c1f 100644
--- a/third_party/blink/renderer/modules/mediastream/local_media_stream_audio_source.cc
+++ b/third_party/blink/renderer/modules/mediastream/local_media_stream_audio_source.cc
@@ -119,8 +119,13 @@
   DeliverDataToTracks(*audio_bus, audio_capture_time);
 }
 
-void LocalMediaStreamAudioSource::OnCaptureError(const std::string& why) {
-  WebRtcLogMessage("LocalMediaStreamAudioSource::OnCaptureError: " + why);
+void LocalMediaStreamAudioSource::OnCaptureError(
+    media::AudioCapturerSource::ErrorCode code,
+    const std::string& why) {
+  WebRtcLogMessage(
+      base::StringPrintf("LocalMediaStreamAudioSource::OnCaptureError: %d, %s",
+                         code, why.c_str()));
+
   StopSourceOnError(why);
 }
 
diff --git a/third_party/blink/renderer/modules/mediastream/local_media_stream_audio_source.h b/third_party/blink/renderer/modules/mediastream/local_media_stream_audio_source.h
index f809d6b..c30fd4b 100644
--- a/third_party/blink/renderer/modules/mediastream/local_media_stream_audio_source.h
+++ b/third_party/blink/renderer/modules/mediastream/local_media_stream_audio_source.h
@@ -58,7 +58,8 @@
                base::TimeTicks audio_capture_time,
                double volume,
                bool key_pressed) final;
-  void OnCaptureError(const std::string& message) final;
+  void OnCaptureError(media::AudioCapturerSource::ErrorCode code,
+                      const std::string& message) final;
   void OnCaptureMuted(bool is_muted) final;
 
   // The LocalFrame that will consume the audio data. Used when creating
diff --git a/third_party/blink/renderer/modules/mediastream/processed_local_audio_source.cc b/third_party/blink/renderer/modules/mediastream/processed_local_audio_source.cc
index 91e09b1..5180df8 100644
--- a/third_party/blink/renderer/modules/mediastream/processed_local_audio_source.cc
+++ b/third_party/blink/renderer/modules/mediastream/processed_local_audio_source.cc
@@ -483,9 +483,11 @@
   }
 }
 
-void ProcessedLocalAudioSource::OnCaptureError(const std::string& message) {
-  SendLogMessageWithSessionId(
-      base::StringPrintf("OnCaptureError({message=%s})", message.c_str()));
+void ProcessedLocalAudioSource::OnCaptureError(
+    media::AudioCapturerSource::ErrorCode code,
+    const std::string& message) {
+  SendLogMessageWithSessionId(base::StringPrintf(
+      "OnCaptureError({code=%d, message=%s})", code, message.c_str()));
   StopSourceOnError(message);
 }
 
diff --git a/third_party/blink/renderer/modules/mediastream/processed_local_audio_source.h b/third_party/blink/renderer/modules/mediastream/processed_local_audio_source.h
index 96ca3bdd..311a4c1 100644
--- a/third_party/blink/renderer/modules/mediastream/processed_local_audio_source.h
+++ b/third_party/blink/renderer/modules/mediastream/processed_local_audio_source.h
@@ -108,7 +108,8 @@
                base::TimeTicks audio_capture_time,
                double volume,
                bool key_pressed) override;
-  void OnCaptureError(const std::string& message) override;
+  void OnCaptureError(media::AudioCapturerSource::ErrorCode code,
+                      const std::string& message) override;
   void OnCaptureMuted(bool is_muted) override;
   void OnCaptureProcessorCreated(
       media::AudioProcessorControls* controls) override;
diff --git a/third_party/blink/renderer/platform/image-decoders/avif/avif_image_decoder.cc b/third_party/blink/renderer/platform/image-decoders/avif/avif_image_decoder.cc
index 29685c2..f14f72ae 100644
--- a/third_party/blink/renderer/platform/image-decoders/avif/avif_image_decoder.cc
+++ b/third_party/blink/renderer/platform/image-decoders/avif/avif_image_decoder.cc
@@ -815,6 +815,14 @@
     if (!decoder_)
       return false;
 
+    // For simplicity, use a hardcoded maxThreads of 2, independent of the image
+    // size and processor count. Note: even if we want maxThreads to depend on
+    // the image size, it is impossible to do so because maxThreads is passed to
+    // dav1d_open() inside avifDecoderParse(), but the image size is not known
+    // until avifDecoderParse() returns successfully. See
+    // https://github.com/AOMediaCodec/libavif/issues/636.
+    decoder_->maxThreads = 2;
+
     // TODO(wtc): Currently libavif always prioritizes the animation, but that's
     // not correct. It should instead select animation or still image based on
     // the preferred and major brands listed in the file.
@@ -998,10 +1006,12 @@
     int clap_height;
     if (!ValidateClapProperty(container, clap_width, clap_height,
                               clap_leftmost_, clap_topmost_)) {
-      return false;
+      DVLOG(1) << "Ignore the 'clap' property and show the full image";
+      ignore_clap_ = true;
+    } else {
+      width = clap_width;
+      height = clap_height;
     }
-    width = clap_width;
-    height = clap_height;
   }
   return SetSize(width, height);
 }
@@ -1034,7 +1044,7 @@
   }
 
   decoded_image_ = image;
-  if (image->transformFlags & AVIF_TRANSFORM_CLAP)
+  if ((image->transformFlags & AVIF_TRANSFORM_CLAP) && !ignore_clap_)
     CropDecodedImage();
   return AVIF_RESULT_OK;
 }
diff --git a/third_party/blink/renderer/platform/image-decoders/avif/avif_image_decoder.h b/third_party/blink/renderer/platform/image-decoders/avif/avif_image_decoder.h
index 611a33b7..04320ac 100644
--- a/third_party/blink/renderer/platform/image-decoders/avif/avif_image_decoder.h
+++ b/third_party/blink/renderer/platform/image-decoders/avif/avif_image_decoder.h
@@ -120,6 +120,9 @@
   avifPixelFormat avif_yuv_format_ = AVIF_PIXEL_FORMAT_NONE;
   size_t decoded_frame_count_ = 0;
   SkYUVColorSpace yuv_color_space_ = SkYUVColorSpace::kIdentity_SkYUVColorSpace;
+  // Whether the 'clap' (clean aperture) property should be ignored, e.g.
+  // because the 'clap' property is invalid or unsupported.
+  bool ignore_clap_ = false;
   // The leftmost pixel and topmost line of the clean aperture. Used only when
   // the image has a 'clap' (clean aperture) property.
   int clap_leftmost_ = 0;
diff --git a/third_party/blink/renderer/platform/image-decoders/avif/avif_image_decoder_test.cc b/third_party/blink/renderer/platform/image-decoders/avif/avif_image_decoder_test.cc
index 5b1511c..8a72a545 100644
--- a/third_party/blink/renderer/platform/image-decoders/avif/avif_image_decoder_test.cc
+++ b/third_party/blink/renderer/platform/image-decoders/avif/avif_image_decoder_test.cc
@@ -897,6 +897,54 @@
   EXPECT_TRUE(decoder->IsSizeAvailable());
 }
 
+// Verifies that an invalid 'clap' (clean aperture) image property is handled by
+// ignoring the 'clap' property and showing the full image.
+TEST(StaticAVIFTests, InvalidClapPropertyHandling) {
+  // The first image has a valid 'clap' property. The full image has size
+  // 320x280. The clean aperture has size 180x100, located at (40, 80) of the
+  // full image.
+  constexpr int kClapX = 40;
+  constexpr int kClapY = 80;
+  constexpr int kClapWidth = 180;
+  constexpr int kClapHeight = 100;
+  std::unique_ptr<ImageDecoder> decoder1 = CreateAVIFDecoder();
+  decoder1->SetData(
+      ReadFile("/images/resources/avif/blue-and-magenta-crop.avif"), true);
+  ASSERT_TRUE(decoder1->IsSizeAvailable());
+  IntSize size1 = decoder1->Size();
+  ASSERT_EQ(size1.Width(), kClapWidth);
+  ASSERT_EQ(size1.Height(), kClapHeight);
+  ImageFrame* frame1 = decoder1->DecodeFrameBufferAtIndex(0);
+  ASSERT_TRUE(frame1);
+  EXPECT_EQ(ImageFrame::kFrameComplete, frame1->GetStatus());
+  EXPECT_FALSE(decoder1->Failed());
+  const SkBitmap& bitmap1 = frame1->Bitmap();
+
+  // The second image is the same as the first image except that the 'clap'
+  // property is invalid. In this case the full image is shown.
+  std::unique_ptr<ImageDecoder> decoder2 = CreateAVIFDecoder();
+  decoder2->SetData(
+      ReadFile("/images/resources/avif/blue-and-magenta-crop-invalid.avif"),
+      true);
+  ASSERT_TRUE(decoder2->IsSizeAvailable());
+  IntSize size2 = decoder2->Size();
+  ASSERT_EQ(size2.Width(), 320);
+  ASSERT_EQ(size2.Height(), 280);
+  ImageFrame* frame2 = decoder2->DecodeFrameBufferAtIndex(0);
+  ASSERT_TRUE(frame2);
+  EXPECT_EQ(ImageFrame::kFrameComplete, frame2->GetStatus());
+  EXPECT_FALSE(decoder2->Failed());
+  const SkBitmap& bitmap2 = frame2->Bitmap();
+
+  // Compare pixel data.
+  for (int row = 0; row < kClapHeight; ++row) {
+    for (int col = 0; col < kClapWidth; ++col) {
+      EXPECT_EQ(bitmap1.getColor(/*x=*/col, /*y=*/row),
+                bitmap2.getColor(/*x=*/kClapX + col, /*y=*/kClapY + row));
+    }
+  }
+}
+
 using StaticAVIFColorTests = ::testing::TestWithParam<StaticColorCheckParam>;
 
 INSTANTIATE_TEST_CASE_P(Parameterized,
diff --git a/third_party/blink/renderer/platform/scheduler/BUILD.gn b/third_party/blink/renderer/platform/scheduler/BUILD.gn
index 9b65415..c833fdc7 100644
--- a/third_party/blink/renderer/platform/scheduler/BUILD.gn
+++ b/third_party/blink/renderer/platform/scheduler/BUILD.gn
@@ -59,6 +59,7 @@
     "common/unprioritized_resource_loading_task_runner_handle.cc",
     "common/unprioritized_resource_loading_task_runner_handle.h",
     "common/web_resource_loading_task_runner_handle.cc",
+    "common/web_scheduling_priority.cc",
     "common/web_thread_scheduler.cc",
     "common/worker_pool.cc",
     "main_thread/agent_group_scheduler_impl.cc",
@@ -93,6 +94,8 @@
     "main_thread/main_thread_scheduler_impl.h",
     "main_thread/main_thread_task_queue.cc",
     "main_thread/main_thread_task_queue.h",
+    "main_thread/main_thread_web_scheduling_task_queue_impl.cc",
+    "main_thread/main_thread_web_scheduling_task_queue_impl.h",
     "main_thread/memory_purge_manager.cc",
     "main_thread/memory_purge_manager.h",
     "main_thread/non_waking_time_domain.cc",
@@ -113,9 +116,6 @@
     "main_thread/user_model.cc",
     "main_thread/user_model.h",
     "main_thread/web_render_widget_scheduling_state.cc",
-    "main_thread/web_scheduling_priority.cc",
-    "main_thread/web_scheduling_task_queue_impl.cc",
-    "main_thread/web_scheduling_task_queue_impl.h",
     "main_thread/web_scoped_virtual_time_pauser.cc",
     "main_thread/widget_scheduler.cc",
     "main_thread/widget_scheduler.h",
@@ -154,6 +154,8 @@
     "worker/non_main_thread_scheduler_impl.h",
     "worker/non_main_thread_task_queue.cc",
     "worker/non_main_thread_task_queue.h",
+    "worker/non_main_thread_web_scheduling_task_queue_impl.cc",
+    "worker/non_main_thread_web_scheduling_task_queue_impl.h",
     "worker/worker_metrics_helper.cc",
     "worker/worker_metrics_helper.h",
     "worker/worker_scheduler.cc",
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/web_scheduling_priority.cc b/third_party/blink/renderer/platform/scheduler/common/web_scheduling_priority.cc
similarity index 100%
rename from third_party/blink/renderer/platform/scheduler/main_thread/web_scheduling_priority.cc
rename to third_party/blink/renderer/platform/scheduler/common/web_scheduling_priority.cc
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
index 99e62ba0..080e1ea 100644
--- a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
+++ b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
@@ -30,11 +30,11 @@
 #include "third_party/blink/renderer/platform/scheduler/main_thread/auto_advancing_virtual_time_domain.h"
 #include "third_party/blink/renderer/platform/scheduler/main_thread/find_in_page_budget_pool_controller.h"
 #include "third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h"
+#include "third_party/blink/renderer/platform/scheduler/main_thread/main_thread_web_scheduling_task_queue_impl.h"
 #include "third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.h"
 #include "third_party/blink/renderer/platform/scheduler/main_thread/page_visibility_state.h"
 #include "third_party/blink/renderer/platform/scheduler/main_thread/resource_loading_task_runner_handle_impl.h"
 #include "third_party/blink/renderer/platform/scheduler/main_thread/task_type_names.h"
-#include "third_party/blink/renderer/platform/scheduler/main_thread/web_scheduling_task_queue_impl.h"
 #include "third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_proxy.h"
 #include "third_party/perfetto/include/perfetto/tracing/traced_value.h"
 
@@ -1347,7 +1347,8 @@
   scoped_refptr<MainThreadTaskQueue> task_queue =
       frame_task_queue_controller_->NewWebSchedulingTaskQueue(
           PausableTaskQueueTraits(), priority);
-  return std::make_unique<WebSchedulingTaskQueueImpl>(task_queue->AsWeakPtr());
+  return std::make_unique<MainThreadWebSchedulingTaskQueueImpl>(
+      task_queue->AsWeakPtr());
 }
 
 void FrameSchedulerImpl::OnWebSchedulingTaskQueuePriorityChanged(
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.cc b/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.cc
index 00f4fd3..a0f7379 100644
--- a/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.cc
+++ b/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.cc
@@ -14,7 +14,6 @@
 #include "third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.h"
 #include "third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h"
 #include "third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.h"
-#include "third_party/blink/renderer/platform/scheduler/main_thread/web_scheduling_task_queue_impl.h"
 #include "third_party/blink/renderer/platform/scheduler/public/web_scheduling_priority.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 #include "third_party/perfetto/include/perfetto/tracing/traced_value.h"
@@ -69,7 +68,7 @@
     QueueTraits queue_traits,
     WebSchedulingPriority priority) {
   // Note: we only track this |task_queue| in |all_task_queues_and_voters_|.
-  // It's interacted with through the WebSchedulingTaskQueueImpl that
+  // It's interacted with through the MainThreadWebSchedulingTaskQueueImpl that
   // will wrap it, rather than through this class like other task queues.
   scoped_refptr<MainThreadTaskQueue> task_queue =
       main_thread_scheduler_impl_->NewTaskQueue(
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/web_scheduling_task_queue_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_web_scheduling_task_queue_impl.cc
similarity index 74%
rename from third_party/blink/renderer/platform/scheduler/main_thread/web_scheduling_task_queue_impl.cc
rename to third_party/blink/renderer/platform/scheduler/main_thread/main_thread_web_scheduling_task_queue_impl.cc
index 30b6e4b4..0474a99 100644
--- a/third_party/blink/renderer/platform/scheduler/main_thread/web_scheduling_task_queue_impl.cc
+++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_web_scheduling_task_queue_impl.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "third_party/blink/renderer/platform/scheduler/main_thread/web_scheduling_task_queue_impl.h"
+#include "third_party/blink/renderer/platform/scheduler/main_thread/main_thread_web_scheduling_task_queue_impl.h"
 
 #include "third_party/blink/public/platform/task_type.h"
 #include "third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.h"
@@ -10,19 +10,20 @@
 namespace blink {
 namespace scheduler {
 
-WebSchedulingTaskQueueImpl::WebSchedulingTaskQueueImpl(
+MainThreadWebSchedulingTaskQueueImpl::MainThreadWebSchedulingTaskQueueImpl(
     base::WeakPtr<MainThreadTaskQueue> task_queue)
     : task_runner_(
           task_queue->CreateTaskRunner(TaskType::kExperimentalWebScheduling)),
       task_queue_(std::move(task_queue)) {}
 
-void WebSchedulingTaskQueueImpl::SetPriority(WebSchedulingPriority priority) {
+void MainThreadWebSchedulingTaskQueueImpl::SetPriority(
+    WebSchedulingPriority priority) {
   if (task_queue_)
     task_queue_->SetWebSchedulingPriority(priority);
 }
 
 scoped_refptr<base::SingleThreadTaskRunner>
-WebSchedulingTaskQueueImpl::GetTaskRunner() {
+MainThreadWebSchedulingTaskQueueImpl::GetTaskRunner() {
   return task_runner_;
 }
 
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/web_scheduling_task_queue_impl.h b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_web_scheduling_task_queue_impl.h
similarity index 77%
rename from third_party/blink/renderer/platform/scheduler/main_thread/web_scheduling_task_queue_impl.h
rename to third_party/blink/renderer/platform/scheduler/main_thread/main_thread_web_scheduling_task_queue_impl.h
index a4da9eaf..6b572faa 100644
--- a/third_party/blink/renderer/platform/scheduler/main_thread/web_scheduling_task_queue_impl.h
+++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_web_scheduling_task_queue_impl.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_WEB_SCHEDULING_TASK_QUEUE_IMPL_H_
-#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_WEB_SCHEDULING_TASK_QUEUE_IMPL_H_
+#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_MAIN_THREAD_WEB_SCHEDULING_TASK_QUEUE_IMPL_H_
+#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_MAIN_THREAD_WEB_SCHEDULING_TASK_QUEUE_IMPL_H_
 
 #include "third_party/blink/renderer/platform/scheduler/public/web_scheduling_task_queue.h"
 
@@ -18,11 +18,11 @@
 
 class MainThreadTaskQueue;
 
-class PLATFORM_EXPORT WebSchedulingTaskQueueImpl
+class PLATFORM_EXPORT MainThreadWebSchedulingTaskQueueImpl
     : public WebSchedulingTaskQueue {
  public:
-  WebSchedulingTaskQueueImpl(base::WeakPtr<MainThreadTaskQueue>);
-  ~WebSchedulingTaskQueueImpl() override = default;
+  MainThreadWebSchedulingTaskQueueImpl(base::WeakPtr<MainThreadTaskQueue>);
+  ~MainThreadWebSchedulingTaskQueueImpl() override = default;
 
   void SetPriority(WebSchedulingPriority) override;
 
@@ -36,4 +36,4 @@
 }  // namespace scheduler
 }  // namespace blink
 
-#endif  // THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_WEB_SCHEDULING_TASK_QUEUE_IMPL_H_
+#endif  // THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_MAIN_THREAD_WEB_SCHEDULING_TASK_QUEUE_IMPL_H_
diff --git a/third_party/blink/renderer/platform/scheduler/public/frame_or_worker_scheduler.h b/third_party/blink/renderer/platform/scheduler/public/frame_or_worker_scheduler.h
index 8b7cf12..5df75545 100644
--- a/third_party/blink/renderer/platform/scheduler/public/frame_or_worker_scheduler.h
+++ b/third_party/blink/renderer/platform/scheduler/public/frame_or_worker_scheduler.h
@@ -10,11 +10,13 @@
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/scheduler/public/scheduling_lifecycle_state.h"
 #include "third_party/blink/renderer/platform/scheduler/public/scheduling_policy.h"
+#include "third_party/blink/renderer/platform/scheduler/public/web_scheduling_priority.h"
 #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
 #include "third_party/blink/renderer/platform/wtf/hash_map.h"
 
 namespace blink {
 class FrameScheduler;
+class WebSchedulingTaskQueue;
 
 // This is the base class of FrameScheduler and WorkerScheduler.
 class PLATFORM_EXPORT FrameOrWorkerScheduler {
@@ -118,6 +120,9 @@
                                                                 Observer*)
       WARN_UNUSED_RESULT;
 
+  virtual std::unique_ptr<WebSchedulingTaskQueue> CreateWebSchedulingTaskQueue(
+      WebSchedulingPriority) = 0;
+
   virtual FrameScheduler* ToFrameScheduler() { return nullptr; }
 
   base::WeakPtr<FrameOrWorkerScheduler> GetWeakPtr();
diff --git a/third_party/blink/renderer/platform/scheduler/public/frame_scheduler.h b/third_party/blink/renderer/platform/scheduler/public/frame_scheduler.h
index ffba694..4290034 100644
--- a/third_party/blink/renderer/platform/scheduler/public/frame_scheduler.h
+++ b/third_party/blink/renderer/platform/scheduler/public/frame_scheduler.h
@@ -17,7 +17,6 @@
 #include "third_party/blink/public/platform/task_type.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/scheduler/public/frame_or_worker_scheduler.h"
-#include "third_party/blink/renderer/platform/scheduler/public/web_scheduling_priority.h"
 #include "third_party/blink/renderer/platform/wtf/hash_set.h"
 #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
 
@@ -32,7 +31,6 @@
 }  // namespace scheduler
 
 class PageScheduler;
-class WebSchedulingTaskQueue;
 
 class FrameScheduler : public FrameOrWorkerScheduler {
  public:
@@ -130,9 +128,6 @@
   virtual std::unique_ptr<scheduler::WebResourceLoadingTaskRunnerHandle>
   CreateResourceLoadingMaybeUnfreezableTaskRunnerHandle() = 0;
 
-  virtual std::unique_ptr<WebSchedulingTaskQueue> CreateWebSchedulingTaskQueue(
-      WebSchedulingPriority) = 0;
-
   // Returns the parent PageScheduler.
   virtual PageScheduler* GetPageScheduler() const = 0;
 
diff --git a/third_party/blink/renderer/platform/scheduler/public/worker_scheduler.h b/third_party/blink/renderer/platform/scheduler/public/worker_scheduler.h
index c422103..541ff1a 100644
--- a/third_party/blink/renderer/platform/scheduler/public/worker_scheduler.h
+++ b/third_party/blink/renderer/platform/scheduler/public/worker_scheduler.h
@@ -69,6 +69,8 @@
 
   // FrameOrWorkerScheduler implementation:
   void SetPreemptedForCooperativeScheduling(Preempted) override {}
+  std::unique_ptr<WebSchedulingTaskQueue> CreateWebSchedulingTaskQueue(
+      WebSchedulingPriority) override;
 
  protected:
   scoped_refptr<NonMainThreadTaskQueue> ThrottleableTaskQueue();
diff --git a/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_task_queue.cc b/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_task_queue.cc
index 0659860..28e4328d 100644
--- a/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_task_queue.cc
+++ b/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_task_queue.cc
@@ -38,5 +38,28 @@
   }
 }
 
+void NonMainThreadTaskQueue::SetWebSchedulingPriority(
+    WebSchedulingPriority priority) {
+  if (web_scheduling_priority_ == priority)
+    return;
+  web_scheduling_priority_ = priority;
+  OnWebSchedulingPriorityChanged();
+}
+
+void NonMainThreadTaskQueue::OnWebSchedulingPriorityChanged() {
+  DCHECK(web_scheduling_priority_);
+  switch (web_scheduling_priority_.value()) {
+    case WebSchedulingPriority::kUserBlockingPriority:
+      SetQueuePriority(TaskQueue::QueuePriority::kHighPriority);
+      return;
+    case WebSchedulingPriority::kUserVisiblePriority:
+      SetQueuePriority(TaskQueue::QueuePriority::kNormalPriority);
+      return;
+    case WebSchedulingPriority::kBackgroundPriority:
+      SetQueuePriority(TaskQueue::QueuePriority::kLowPriority);
+      return;
+  }
+}
+
 }  // namespace scheduler
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_task_queue.h b/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_task_queue.h
index 12b2553..7baa97c3 100644
--- a/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_task_queue.h
+++ b/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_task_queue.h
@@ -6,8 +6,10 @@
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_WORKER_NON_MAIN_THREAD_TASK_QUEUE_H_
 
 #include "base/task/sequence_manager/task_queue_impl.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
 #include "third_party/blink/public/platform/task_type.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
+#include "third_party/blink/renderer/platform/scheduler/public/web_scheduling_priority.h"
 
 namespace blink {
 namespace scheduler {
@@ -43,9 +45,17 @@
     return task_runner();
   }
 
+  void SetWebSchedulingPriority(WebSchedulingPriority priority);
+
  private:
+  void OnWebSchedulingPriorityChanged();
+
   // Not owned.
   NonMainThreadSchedulerImpl* non_main_thread_scheduler_;
+
+  // |web_scheduling_priority_| is the priority of the task queue within the web
+  // scheduling API. This priority is used to determine the task queue priority.
+  absl::optional<WebSchedulingPriority> web_scheduling_priority_;
 };
 
 }  // namespace scheduler
diff --git a/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_web_scheduling_task_queue_impl.cc b/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_web_scheduling_task_queue_impl.cc
new file mode 100644
index 0000000..cc6320b
--- /dev/null
+++ b/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_web_scheduling_task_queue_impl.cc
@@ -0,0 +1,31 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/platform/scheduler/worker/non_main_thread_web_scheduling_task_queue_impl.h"
+
+#include "third_party/blink/public/platform/task_type.h"
+#include "third_party/blink/renderer/platform/scheduler/worker/non_main_thread_task_queue.h"
+
+namespace blink {
+namespace scheduler {
+
+NonMainThreadWebSchedulingTaskQueueImpl::
+    NonMainThreadWebSchedulingTaskQueueImpl(
+        scoped_refptr<NonMainThreadTaskQueue> task_queue)
+    : task_runner_(
+          task_queue->CreateTaskRunner(TaskType::kExperimentalWebScheduling)),
+      task_queue_(std::move(task_queue)) {}
+
+void NonMainThreadWebSchedulingTaskQueueImpl::SetPriority(
+    WebSchedulingPriority priority) {
+  task_queue_->SetWebSchedulingPriority(priority);
+}
+
+scoped_refptr<base::SingleThreadTaskRunner>
+NonMainThreadWebSchedulingTaskQueueImpl::GetTaskRunner() {
+  return task_runner_;
+}
+
+}  // namespace scheduler
+}  // namespace blink
diff --git a/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_web_scheduling_task_queue_impl.h b/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_web_scheduling_task_queue_impl.h
new file mode 100644
index 0000000..bd4e705
--- /dev/null
+++ b/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_web_scheduling_task_queue_impl.h
@@ -0,0 +1,42 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_WORKER_NON_MAIN_THREAD_WEB_SCHEDULING_TASK_QUEUE_IMPL_H_
+#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_WORKER_NON_MAIN_THREAD_WEB_SCHEDULING_TASK_QUEUE_IMPL_H_
+
+#include "third_party/blink/renderer/platform/scheduler/public/web_scheduling_task_queue.h"
+
+#include "base/memory/scoped_refptr.h"
+#include "base/single_thread_task_runner.h"
+#include "third_party/blink/renderer/platform/platform_export.h"
+#include "third_party/blink/renderer/platform/scheduler/public/web_scheduling_priority.h"
+
+namespace blink {
+namespace scheduler {
+
+class NonMainThreadTaskQueue;
+
+class PLATFORM_EXPORT NonMainThreadWebSchedulingTaskQueueImpl
+    : public WebSchedulingTaskQueue {
+ public:
+  explicit NonMainThreadWebSchedulingTaskQueueImpl(
+      scoped_refptr<NonMainThreadTaskQueue>);
+  ~NonMainThreadWebSchedulingTaskQueueImpl() override = default;
+
+  void SetPriority(WebSchedulingPriority) override;
+
+  scoped_refptr<base::SingleThreadTaskRunner> GetTaskRunner() override;
+
+ private:
+  const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
+
+  // NonMainThreadWebSchedulingTaskQueueImpl owns this NonMainThreadTaskQueue
+  // and has the sole reference to it after its creation.
+  const scoped_refptr<NonMainThreadTaskQueue> task_queue_;
+};
+
+}  // namespace scheduler
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_WORKER_NON_MAIN_THREAD_WEB_SCHEDULING_TASK_QUEUE_IMPL_H_
diff --git a/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler.cc b/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler.cc
index c55346e9..494ff34 100644
--- a/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler.cc
+++ b/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler.cc
@@ -8,6 +8,7 @@
 #include "third_party/blink/renderer/platform/back_forward_cache_utils.h"
 #include "third_party/blink/renderer/platform/scheduler/common/throttling/task_queue_throttler.h"
 #include "third_party/blink/renderer/platform/scheduler/common/throttling/wake_up_budget_pool.h"
+#include "third_party/blink/renderer/platform/scheduler/worker/non_main_thread_web_scheduling_task_queue_impl.h"
 #include "third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_proxy.h"
 #include "third_party/blink/renderer/platform/scheduler/worker/worker_thread_scheduler.h"
 
@@ -264,5 +265,14 @@
 void WorkerScheduler::OnStoppedUsingFeature(SchedulingPolicy::Feature feature,
                                             const SchedulingPolicy& policy) {}
 
+std::unique_ptr<WebSchedulingTaskQueue>
+WorkerScheduler::CreateWebSchedulingTaskQueue(WebSchedulingPriority priority) {
+  scoped_refptr<NonMainThreadTaskQueue> task_queue =
+      thread_scheduler_->CreateTaskQueue("worker_web_scheduling_tq");
+  task_queue->SetWebSchedulingPriority(priority);
+  return std::make_unique<NonMainThreadWebSchedulingTaskQueueImpl>(
+      std::move(task_queue));
+}
+
 }  // namespace scheduler
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_unittest.cc b/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_unittest.cc
index 932a3418..e839905 100644
--- a/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_unittest.cc
+++ b/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_unittest.cc
@@ -13,6 +13,8 @@
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/renderer/platform/scheduler/common/throttling/task_queue_throttler.h"
+#include "third_party/blink/renderer/platform/scheduler/public/web_scheduling_priority.h"
+#include "third_party/blink/renderer/platform/scheduler/public/web_scheduling_task_queue.h"
 #include "third_party/blink/renderer/platform/scheduler/worker/worker_thread_scheduler.h"
 #include "third_party/blink/renderer/platform/wtf/functional.h"
 
@@ -315,6 +317,83 @@
   EXPECT_THAT(run_order, testing::ElementsAre("T1", "T2"));
 }
 
+class NonMainThreadWebSchedulingTaskQueueTest : public WorkerSchedulerTest {
+ public:
+  void SetUp() override {
+    WorkerSchedulerTest::SetUp();
+
+    for (int i = 0; i <= static_cast<int>(WebSchedulingPriority::kLastPriority);
+         i++) {
+      WebSchedulingPriority priority = static_cast<WebSchedulingPriority>(i);
+      std::unique_ptr<WebSchedulingTaskQueue> task_queue =
+          worker_scheduler_->CreateWebSchedulingTaskQueue(priority);
+      task_queues_.push_back(std::move(task_queue));
+    }
+  }
+
+  void TearDown() override {
+    WorkerSchedulerTest::TearDown();
+    task_queues_.clear();
+  }
+
+ protected:
+  // Helper for posting tasks to a WebSchedulingTaskQueue. |task_descriptor| is
+  // a string with space delimited task identifiers. The first letter of each
+  // task identifier specifies the task queue priority:
+  // - 'U': UserBlocking
+  // - 'V': UserVisible
+  // - 'B': Background
+  void PostWebSchedulingTestTasks(Vector<String>* run_order,
+                                  const String& task_descriptor) {
+    std::istringstream stream(task_descriptor.Utf8());
+    while (!stream.eof()) {
+      std::string task;
+      stream >> task;
+      WebSchedulingPriority priority;
+      switch (task[0]) {
+        case 'U':
+          priority = WebSchedulingPriority::kUserBlockingPriority;
+          break;
+        case 'V':
+          priority = WebSchedulingPriority::kUserVisiblePriority;
+          break;
+        case 'B':
+          priority = WebSchedulingPriority::kBackgroundPriority;
+          break;
+        default:
+          EXPECT_FALSE(true);
+          return;
+      }
+      task_queues_[static_cast<int>(priority)]->GetTaskRunner()->PostTask(
+          FROM_HERE, base::BindOnce(&AppendToVectorTestTask, run_order,
+                                    String::FromUTF8(task)));
+    }
+  }
+  Vector<std::unique_ptr<WebSchedulingTaskQueue>> task_queues_;
+};
+
+TEST_F(NonMainThreadWebSchedulingTaskQueueTest, TasksRunInPriorityOrder) {
+  Vector<String> run_order;
+
+  PostWebSchedulingTestTasks(&run_order, "B1 B2 V1 V2 U1 U2");
+
+  RunUntilIdle();
+  EXPECT_THAT(run_order,
+              testing::ElementsAre("U1", "U2", "V1", "V2", "B1", "B2"));
+}
+
+TEST_F(NonMainThreadWebSchedulingTaskQueueTest, DynamicTaskPriorityOrder) {
+  Vector<String> run_order;
+
+  PostWebSchedulingTestTasks(&run_order, "B1 B2 V1 V2 U1 U2");
+  task_queues_[static_cast<int>(WebSchedulingPriority::kUserBlockingPriority)]
+      ->SetPriority(WebSchedulingPriority::kBackgroundPriority);
+
+  RunUntilIdle();
+  EXPECT_THAT(run_order,
+              testing::ElementsAre("V1", "V2", "B1", "B2", "U1", "U2"));
+}
+
 }  // namespace worker_scheduler_unittest
 }  // namespace scheduler
 }  // namespace blink
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index e78c157..f6a38a0 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -1449,7 +1449,7 @@
 crbug.com/876732 [ Win ] fast/dom/HTMLImageElement/image-srcset-w-onerror.html [ Failure Pass ]
 
 # These tests only pass with --enable-threaded-compositing.
-crbug.com/770028 external/wpt/dom/events/document-level-touchmove-event-listener-passive-by-default.html [ Failure ]
+crbug.com/770028 external/wpt/dom/events/document-level-touchmove-event-listener-passive-by-default.tentative.html [ Failure ]
 
 # Only virtual/threaded version of these tests pass (or running them with --enable-threaded-compositing).
 crbug.com/936891 fast/scrolling/document-level-touchmove-event-listener-passive-by-default.html [ Failure ]
@@ -2492,6 +2492,182 @@
 crbug.com/958381 [ Mac ] external/wpt/css/CSS2/tables/table-anonymous-objects-206.xht [ Failure ]
 
 # ====== New tests from wpt-importer added here ======
+crbug.com/626703 external/wpt/css/css-contain/contain-body-overflow-004.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-body-dir-001.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-html-overflow-002.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-html-dir-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/RTCSctpTransport-maxChannels.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/RTCSctpTransport-maxChannels.html [ Timeout ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/getstats.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/getstats.html [ Timeout ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/simulcast/basic.https.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/simulcast/basic.https.html [ Timeout ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/RTCPeerConnection-ondatachannel.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/RTCPeerConnection-ondatachannel.html [ Timeout ]
+crbug.com/626703 external/wpt/css/css-contain/contain-html-dir-002.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-body-bg-004.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-body-bg-002.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCDataChannel-send.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCDataChannel-send.html [ Timeout ]
+crbug.com/626703 external/wpt/css/css-contain/contain-body-bg-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/simplecall.https.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/simplecall.https.html [ Timeout ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/RTCDTMFSender-insertDTMF.https.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/RTCDTMFSender-insertDTMF.https.html [ Timeout ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-html-bg-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/protocol/rtp-clockrate.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/protocol/rtp-clockrate.html [ Timeout ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-captureTimestamp.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-captureTimestamp.html [ Timeout ]
+crbug.com/626703 external/wpt/css/css-contain/contain-html-overflow-003.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-html-overflow-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-html-bg-001.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-body-overflow-003.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCPeerConnection-track-stats.https.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCPeerConnection-track-stats.https.html [ Timeout ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/RTCSctpTransport-events.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/RTCSctpTransport-events.html [ Timeout ]
+crbug.com/626703 external/wpt/css/css-contain/contain-html-bg-003.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/getstats.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/getstats.html [ Timeout ]
+crbug.com/626703 external/wpt/css/css-contain/contain-body-overflow-003.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-body-dir-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/RTCDataChannel-send.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/RTCDataChannel-send.html [ Timeout ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-html-w-m-002.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-html-w-m-002.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-body-w-m-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/simulcast/getStats.https.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/simulcast/getStats.https.html [ Timeout ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/RTCDataChannel-iceRestart.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/RTCDataChannel-iceRestart.html [ Timeout ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-body-w-m-003.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-body-dir-004.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-body-overflow-004.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-body-bg-003.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-html-dir-003.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-body-w-m-003.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-html-w-m-003.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-html-overflow-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/RTCPeerConnection-createDataChannel.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/RTCPeerConnection-createDataChannel.html [ Timeout ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc-encoded-transform/RTCPeerConnection-insertable-streams-legacy.https.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc-encoded-transform/RTCPeerConnection-insertable-streams-legacy.https.html [ Timeout ]
+crbug.com/626703 external/wpt/css/css-contain/contain-html-bg-002.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-body-w-m-002.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-body-dir-003.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-html-overflow-003.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-html-overflow-003.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-body-bg-003.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-html-dir-003.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-html-dir-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/RTCPeerConnection-videoDetectorTest.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/RTCPeerConnection-videoDetectorTest.html [ Timeout ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-body-overflow-003.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-body-bg-002.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/RTCPeerConnection-iceConnectionState-disconnected.https.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/RTCPeerConnection-iceConnectionState-disconnected.https.html [ Timeout ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-html-w-m-001.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-body-bg-002.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-body-overflow-002.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-body-dir-004.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/simulcast/h264.https.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/simulcast/h264.https.html [ Timeout ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/protocol/dtls-fingerprint-validation.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/protocol/dtls-fingerprint-validation.html [ Timeout ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-html-overflow-004.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc-encoded-transform/RTCEncodedAudioFrame-serviceworker-failure.https.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc-encoded-transform/RTCEncodedAudioFrame-serviceworker-failure.https.html [ Timeout ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/RTCPeerConnection-track-stats.https.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/RTCPeerConnection-track-stats.https.html [ Timeout ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/RTCDataChannel-send-blob-order.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/RTCDataChannel-send-blob-order.html [ Timeout ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/protocol/ice-state.https.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/protocol/ice-state.https.html [ Timeout ]
+crbug.com/626703 external/wpt/css/css-contain/contain-html-w-m-002.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCIceTransport.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCIceTransport.html [ Timeout ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-html-bg-003.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-body-w-m-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCPeerConnection-videoDetectorTest.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCPeerConnection-videoDetectorTest.html [ Timeout ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/RTCDataChannel-bufferedAmount.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/RTCDataChannel-bufferedAmount.html [ Timeout ]
+crbug.com/626703 external/wpt/css/css-contain/contain-html-dir-004.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-html-dir-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-body-w-m-002.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-body-dir-003.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-html-bg-003.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-body-overflow-004.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-html-dir-002.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-html-w-m-003.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCPeerConnection-iceConnectionState-disconnected.https.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCPeerConnection-iceConnectionState-disconnected.https.html [ Timeout ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-body-bg-004.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-html-bg-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc-stats/getStats-remote-candidate-address.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc-stats/getStats-remote-candidate-address.html [ Timeout ]
+crbug.com/626703 external/wpt/css/css-contain/contain-body-bg-004.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-html-w-m-004.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-body-overflow-001.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-html-w-m-004.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCDataChannel-iceRestart.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCDataChannel-iceRestart.html [ Timeout ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-body-bg-001.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-html-w-m-004.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-body-dir-002.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/RTCDtlsTransport-state.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/RTCDtlsTransport-state.html [ Timeout ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-html-bg-004.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-html-w-m-001.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-html-bg-002.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-html-overflow-004.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/mediacapture-record/passthrough/MediaRecorder-passthrough.https.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/mediacapture-record/passthrough/MediaRecorder-passthrough.https.html [ Timeout ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-body-overflow-002.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc-encoded-transform/RTCPeerConnection-insertable-streams-simulcast.https.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc-encoded-transform/RTCPeerConnection-insertable-streams-simulcast.https.html [ Timeout ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-html-dir-003.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/RTCIceTransport.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/RTCIceTransport.html [ Timeout ]
+crbug.com/626703 external/wpt/css/css-contain/contain-body-w-m-004.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/protocol/ice-state.https.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/protocol/ice-state.https.html [ Timeout ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-body-w-m-002.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-body-w-m-004.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-html-w-m-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-html-bg-004.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-html-bg-002.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-html-overflow-004.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-html-overflow-002.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-body-bg-001.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-html-dir-002.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-body-overflow-001.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-body-bg-003.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCDTMFSender-ontonechange.https.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCDTMFSender-ontonechange.https.html [ Timeout ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-html-dir-004.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-html-overflow-001.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-html-bg-004.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-body-dir-001.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-html-overflow-002.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-body-w-m-003.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/protocol/rtp-clockrate.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/protocol/rtp-clockrate.html [ Timeout ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-body-overflow-001.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-body-w-m-004.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-html-w-m-003.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-body-dir-003.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/simplecall.https.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/simplecall.https.html [ Timeout ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc/RTCDTMFSender-ontonechange.https.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/RTCDTMFSender-ontonechange.https.html [ Timeout ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-html-dir-004.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-body-dir-004.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-body-overflow-002.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-contain/contain-body-w-m-001.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-body-dir-002.html [ Failure ]
+crbug.com/626703 virtual/layout_ng_block_frag/external/wpt/css/css-contain/contain-body-dir-002.html [ Failure ]
 crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/protocol/split.https.html [ Timeout ]
 crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc-encoded-transform/RTCPeerConnection-insertable-streams-video.https.html [ Timeout ]
 crbug.com/626703 [ Mac11.0 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCDTMFSender-insertDTMF.https.html [ Timeout ]
@@ -3194,6 +3370,9 @@
 crbug.com/626703 [ Win ] external/wpt/resource-timing/cross-origin-start-end-time-with-redirects.html [ Failure ]
 crbug.com/626703 [ Win ] external/wpt/websockets/Create-url-with-space.any.html [ Failure ]
 crbug.com/626703 [ Win ] virtual/plz-dedicated-worker/external/wpt/resource-timing/cross-origin-start-end-time-with-redirects.html [ Failure ]
+crbug.com/626703 [ Mac ] external/wpt/webrtc/RTCDTMFSender-ontonechange-long.https.html [ Pass Failure ]
+crbug.com/626703 [ Mac ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCDTMFSender-ontonechange-long.https.html [ Pass Failure ]
+
 
 ### See crbug.com/891427 comment near the top of this file:
 crbug.com/626703 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-block-margins-2.html [ Failure ]
@@ -3651,7 +3830,6 @@
 crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-alignment-implies-size-change-035.html [ Failure ]
 crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-alignment-implies-size-change-036.html [ Failure ]
 crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-baseline-004.html [ Failure ]
-crbug.com/941987 external/wpt/css/css-grid/alignment/grid-baseline-align-cycles-001.html [ Failure ]
 crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-001.html [ Failure ]
 crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-002.html [ Failure ]
 crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html [ Failure ]
@@ -3806,7 +3984,6 @@
 
 ### Tests failing with LayoutNGGrid enabled:
 crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-abspos-staticpos-align-self-safe-001.html [ Failure ]
-crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-baseline-align-cycles-001.html [ Failure ]
 crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-alignment-overflow-001.html [ Failure ]
 crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-004.html [ Failure ]
 crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-003.html [ Failure ]
@@ -5249,13 +5426,6 @@
 
 crbug.com/1031345 media/controls/overlay-play-button-tap-to-hide.html [ Timeout Pass ]
 
-# TODO(michaelludwig): Suppressed for Skia roll requiring a rebaseline
-crbug.com/1210861 svg/W3C-SVG-1.1/filters-image-01-b.svg [ Pass Failure ]
-crbug.com/1210861 svg/W3C-SVG-1.1-SE/filters-image-03-f.svg [ Pass Failure ]
-crbug.com/1210861 svg/W3C-SVG-1.1-SE/filters-image-05-f.svg [ Pass Failure ]
-crbug.com/1210861 [ Mac ] svg/as-background-image/svg-as-tiled-background.html [ Pass Failure ]
-crbug.com/1210861 svg/filters/feImage-preserveAspectRatio-all.svg [ Pass Failure ]
-
 # Temporary SkiaRenderer regressions
 crbug.com/1029941 [ Linux ] external/wpt/css/css-paint-api/background-image-alpha.https.html [ Failure ]
 crbug.com/1029941 [ Linux ] transforms/3d/point-mapping/3d-point-mapping-deep.html [ Failure ]
@@ -6835,3 +7005,5 @@
 crbug.com/1209223 virtual/synchronous_html_parser/external/wpt/html/semantics/forms/the-textarea-element/wrapping-transformation.window.html [ Failure ]
 crbug.com/1209223 virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCPeerConnection-mandatory-getStats.https.html [ Failure ]
 crbug.com/1209223 virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCPeerConnection-setLocalDescription-pranswer.html [ Failure ]
+
+crbug.com/1213120 [ Mac ] virtual/scalefactor200/css3/filters/effect-reference-zoom-hw.html [ Pass Failure ]
diff --git a/third_party/blink/web_tests/WebDriverExpectations b/third_party/blink/web_tests/WebDriverExpectations
index b98ce99c..1eed62a 100644
--- a/third_party/blink/web_tests/WebDriverExpectations
+++ b/third_party/blink/web_tests/WebDriverExpectations
@@ -80,6 +80,8 @@
 crbug.com/1167321 [ Linux ] external/wpt/webdriver/tests/find_elements_from_shadow_root/find.py [ Failure ]
 
 # ====== New tests from wpt-importer added here ======
+crbug.com/626703 [ Linux ] external/wpt/webdriver/tests/get_window_handle/get.py>>test_navigation_with_coop_headers[capabilities0] [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/webdriver/tests/get_window_handle/get.py>>test_navigation_with_coop_headers[capabilities0] [ Failure ]
 crbug.com/626703 [ Linux ] external/wpt/webdriver/tests/back/back.py>>test_cross_origin[capabilities0] [ Failure ]
 crbug.com/626703 [ Linux ] external/wpt/webdriver/tests/navigate_to/navigate.py>>test_cross_origin[capabilities0] [ Failure ]
 crbug.com/626703 [ Linux ] external/wpt/webdriver/tests/forward/forward.py>>test_cross_origin[capabilities0] [ Failure ]
diff --git a/third_party/blink/web_tests/android/WebLayerWPTOverrideExpectations b/third_party/blink/web_tests/android/WebLayerWPTOverrideExpectations
index 1a3f28fa..b5edce71 100644
--- a/third_party/blink/web_tests/android/WebLayerWPTOverrideExpectations
+++ b/third_party/blink/web_tests/android/WebLayerWPTOverrideExpectations
@@ -751,6 +751,16 @@
 crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-onopen.htm [ Failure ]
 crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-prototype.htm [ Failure ]
 crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-url.htm [ Failure ]
+crbug.com/1050754 external/wpt/external/wpt/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.html [ Failure ]
+crbug.com/1050754 external/wpt/external/wpt/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.serviceworker.html [ Failure ]
+crbug.com/1050754 external/wpt/external/wpt/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.sharedworker.html [ Failure ]
+crbug.com/1050754 external/wpt/external/wpt/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.worker.html [ Failure ]
+crbug.com/1050754 external/wpt/external/wpt/WebIDL/ecmascript-binding/window-named-properties-object.html [ Failure ]
+crbug.com/1050754 external/wpt/external/wpt/css/css-color-adjust/print-color-adjust-parsing.html [ Failure ]
+crbug.com/1050754 external/wpt/external/wpt/webtransport/idlharness.any.html [ Failure ]
+crbug.com/1050754 external/wpt/external/wpt/webtransport/idlharness.any.serviceworker.html [ Failure ]
+crbug.com/1050754 external/wpt/external/wpt/webtransport/idlharness.any.sharedworker.html [ Failure ]
+crbug.com/1050754 external/wpt/external/wpt/webtransport/idlharness.any.worker.html [ Failure ]
 crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html [ Failure ]
 crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute.https.sub.html [ Failure ]
 crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-allowed-by-feature-policy.https.sub.html [ Failure ]
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
index 8a67b9b0..172dc81 100644
--- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
+++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -1,6 +1,17 @@
 {
  "items": {
   "crashtest": {
+   "accessibility": {
+    "crashtests": {
+     "aom-in-destroyed-iframe.html": [
+      "d412892983a48aca624fcffa4100eb94b8109919",
+      [
+       null,
+       {}
+      ]
+     ]
+    }
+   },
    "css": {
     "CSS2": {
      "floats": {
@@ -953,6 +964,13 @@
    },
    "dom": {
     "events": {
+     "keypress-dispatch-crash.html": [
+      "3207adbd8c891903b1c6edd65edc41de9b9e7312",
+      [
+       null,
+       {}
+      ]
+     ],
      "replace-event-listener-null-browsing-context-crash.html": [
       "f41955eedd39fbdb788b4e1bcdc454fb61f97277",
       [
@@ -47624,6 +47642,19 @@
        {}
       ]
      ],
+     "background-image-table-cells-straddling-no-repeat.html": [
+      "67f7937a3fcc93d1f4d0ce1806eea1e12e6078ee",
+      [
+       null,
+       [
+        [
+         "/css/reference/ref-filled-green-100px-square-only.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "background-image-table-cells-zoomed.html": [
       "fc23dec322b2764be8b99fb87e5931682e7756a0",
       [
@@ -47637,6 +47668,19 @@
        {}
       ]
      ],
+     "background-image-with-border-radius-fidelity.html": [
+      "b0b494f50219eb1e6e72b2deed232a01f7582d12",
+      [
+       null,
+       [
+        [
+         "/css/css-backgrounds/reference/background-image-with-border-radius-fidelity-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "background-margin-iframe-root.html": [
       "9c0cc829ff01036ad9bbb5491940288a1fc8ec3a",
       [
@@ -53931,6 +53975,32 @@
        {}
       ]
      ],
+     "break-inside-avoid-min-block-size-1.html": [
+      "733aae58d6fffb3af0739cfa503fa802ee3e7735",
+      [
+       null,
+       [
+        [
+         "/css/css-break/break-inside-avoid-min-block-size-1-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "break-inside-avoid-min-block-size-2.html": [
+      "e7669d8ebe13ca5a7d161f9e27feb0dd26d6de09",
+      [
+       null,
+       [
+        [
+         "/css/css-break/break-inside-avoid-min-block-size-2-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "break-overflowed-block-dynamic-001.html": [
       "9afdab1d8b4021261ad0ccf51f5d2d487afee830",
       [
@@ -54763,6 +54833,32 @@
        {}
       ]
      ],
+     "out-of-flow-in-multicolumn-046.html": [
+      "16caaf849c615e4f8ca1546a10c2465accf1dcb9",
+      [
+       null,
+       [
+        [
+         "/css/reference/ref-filled-green-100px-square.xht",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "out-of-flow-in-multicolumn-047.html": [
+      "496c3bdaefacf0bc2f0fd47f0421c972684478db",
+      [
+       null,
+       [
+        [
+         "/css/reference/ref-filled-green-100px-square.xht",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "overflow-clip-000.html": [
       "72b10f5cdd3092a042f1f90bff04e9428d61608e",
       [
@@ -59210,6 +59306,266 @@
        {}
       ]
      ],
+     "contain-body-bg-001.html": [
+      "b7890faebabd1fc104ec54c0a8576b243675daf6",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-bg-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-body-bg-002.html": [
+      "71237d977e117f057e9c906b3e7882e06a1ddfd3",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-bg-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-body-bg-003.html": [
+      "0aaf8b0da859ba89dda8977bf18663be012d1fb5",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-bg-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-body-bg-004.html": [
+      "af046a96c43565c5c28988473b0bd7402610f8cc",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-bg-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-body-dir-001.html": [
+      "65e6f9c5874b3102abc7ccc72c1555c5c525acc6",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-w-m-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-body-dir-002.html": [
+      "12f8fed5f37024a7a225b253d312b649c8c3b74d",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-w-m-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-body-dir-003.html": [
+      "07bd88463c68f562aae3c330bbf76629a30b5df4",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-w-m-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-body-dir-004.html": [
+      "b7bbc1480a6fa7541c503a429537ca18c7f5937c",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-w-m-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-body-overflow-001.html": [
+      "7f368756ca730e86b64fe0bc93f95af2506b12c9",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-overflow-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-body-overflow-002.html": [
+      "bc432e3e0e1ffcde0773ae2a2c7e8da3511ee985",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-overflow-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-body-overflow-003.html": [
+      "d38cf53c2f47fd964b0cfc912eced2ce25e62c8e",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-overflow-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-body-overflow-004.html": [
+      "5064d00c8b6a8b320182e10f649ce84ba8b4063e",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-overflow-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-body-t-o-001.html": [
+      "36f70a1df4c87c7ea1556efb96800055238c86a3",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-t-o-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-body-t-o-002.html": [
+      "47d3f480d1018f979dc4c238979e4181e668b00f",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-t-o-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-body-t-o-003.html": [
+      "2323d07838f18bb260e4aff465f1c726f55e31ab",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-t-o-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-body-t-o-004.html": [
+      "3eea6b8d322fbc7966ad3116b90f53ee9689120e",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-t-o-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-body-w-m-001.html": [
+      "b37e96115c77dd5041980baa4880981b02ec2097",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-w-m-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-body-w-m-002.html": [
+      "15040f0399362cc27b21625f77ab074d74331444",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-w-m-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-body-w-m-003.html": [
+      "87b1d63466bebf09c5f0a86c4e9de3400921dd4d",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-w-m-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-body-w-m-004.html": [
+      "736d4a58aae6bcd5eec17952dbca7d4690aaa428",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-w-m-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "contain-content-001.html": [
       "649bf54df5b6e005253e1a8d5d8b45521889e9f5",
       [
@@ -59275,6 +59631,266 @@
        {}
       ]
      ],
+     "contain-html-bg-001.html": [
+      "6d77ce081eb32c9d482083142cc3d15bf6ef7c72",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-bg-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-html-bg-002.html": [
+      "57324052b204e42b092808ebb59a8a914fc1c13d",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-bg-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-html-bg-003.html": [
+      "f1115ceb2f5c08d3b652ebe57a65c2a8eedc676f",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-bg-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-html-bg-004.html": [
+      "05fa3f820eb94c7e8c63fd8bf561c1d574bc7870",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-bg-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-html-dir-001.html": [
+      "7eeae5e1213622f2789cba639810bddb8ad8c810",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-w-m-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-html-dir-002.html": [
+      "ad4dd4e5b354f4262914a04aafb00045a2a0e6ac",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-w-m-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-html-dir-003.html": [
+      "aadc0317e65b2fef4fdee5a5696dfcb395cffcbe",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-w-m-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-html-dir-004.html": [
+      "4b6d2d3d8cbb698c63562d32d2bfbb2ab4ef689b",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-w-m-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-html-overflow-001.html": [
+      "736ad1a54dde015f265ca2d80eb0222a04d6ffaf",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-overflow-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-html-overflow-002.html": [
+      "2fd0b5e1a35ed5f14feaabb4b7d5944d4b78aa25",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-overflow-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-html-overflow-003.html": [
+      "88ce0918916eab7c443cb0a09f085a3036f01db7",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-overflow-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-html-overflow-004.html": [
+      "15339ed3dc004b47fd8c4b85ce9d6b6d84ffdbb2",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-overflow-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-html-t-o-001.html": [
+      "d74fa252660f0b870435b1b7769897121a6e5f76",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-t-o-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-html-t-o-002.html": [
+      "9ee3837bd2ad715d2f16820881d89514c134d5dd",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-t-o-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-html-t-o-003.html": [
+      "87e70d505a6fab6ad6d92863c05abec3ff078136",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-t-o-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-html-t-o-004.html": [
+      "5f7ea2ef18733b807f1fb4ff30166bdbaa0e4189",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-t-o-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-html-w-m-001.html": [
+      "e8c0a8222d0993a08cbf8c8be6bb150cbd86243b",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-w-m-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-html-w-m-002.html": [
+      "f4001a75c02b0f5b07e574c6efb8fd2bbf48efd8",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-w-m-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-html-w-m-003.html": [
+      "c56d42ed7a40bf993cb4a5309692641aeeced600",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-w-m-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "contain-html-w-m-004.html": [
+      "09a32ba50578075f4d41c3007bf38c49a43b5a3f",
+      [
+       null,
+       [
+        [
+         "/css/css-contain/reference/contain-body-w-m-001-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "contain-layout-001.html": [
       "85b959da2b9a151c13be3dc83485646341752915",
       [
@@ -69256,7 +69872,7 @@
       ]
      ],
      "flex-basis-011.html": [
-      "78bbd5d889829160a66d273b8abc88bee38b2714",
+      "9edb5dc975206d2103d9eebfbfd7f9de450f9192",
       [
        null,
        [
@@ -69268,6 +69884,19 @@
        {}
       ]
      ],
+     "flex-basis-012.html": [
+      "b1adddeb23368e7e18553436e1254ad9d8e2f582",
+      [
+       null,
+       [
+        [
+         "/css/reference/ref-filled-green-100px-square.xht",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "flex-basis-item-margins-001.html": [
       "5f65b267bb5bf1b8de1a742aef0a8fc0865bd902",
       [
@@ -77361,6 +77990,19 @@
        {}
       ]
      ],
+     "synthesize-vrl-baseline.html": [
+      "1e753da0a2c1349d06608d5d84bfcb3e91083330",
+      [
+       null,
+       [
+        [
+         "/css/reference/ref-filled-green-100px-square-only.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "table-as-item-auto-min-width.html": [
       "66a77327f0f25e07db87e342ebb590358d045f7a",
       [
@@ -100166,6 +100808,19 @@
        {}
       ]
      ],
+     "multicol-span-all-017.html": [
+      "e9100ffce9563d8cd497116d83a71f6310c59f34",
+      [
+       null,
+       [
+        [
+         "/css/css-multicol/multicol-span-all-017-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "multicol-span-all-block-sibling-003.xht": [
       "abaa45f0a85023f3f07a9db483629b74d2b09d71",
       [
@@ -116905,6 +117560,19 @@
        {}
       ]
      ],
+     "border-collapse-empty-cell.html": [
+      "18894a35a9c793755380d3a2ff1b34d88603af78",
+      [
+       null,
+       [
+        [
+         "/css/css-tables/border-collapse-empty-cell-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "border-collapse-rowspan-cell.html": [
       "8a4bdede0ea4edafffbb5bb6c7f93684f1265368",
       [
@@ -117572,6 +118240,19 @@
        {}
       ]
      ],
+     "table-cell-child-overflow-measure.html": [
+      "c092d0c1bc970c6ac93050853a67098d3c750ded",
+      [
+       null,
+       [
+        [
+         "/css/css-tables/table-cell-child-overflow-measure-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "table-cell-overflow-auto.html": [
       "6b688561b91321990f18680f88aa4873dd35916a",
       [
@@ -142335,7 +143016,7 @@
       ]
      ],
      "transform3d-sorting-006.html": [
-      "d40edf00a9f2b55ab9cf54aa15443240ba59f400",
+      "966549adc5d05b292ddd905654b20edd827eab21",
       [
        null,
        [
@@ -142787,7 +143468,7 @@
       ]
      ],
      "ttwf-css-3d-polygon-cycle.html": [
-      "ec33e7d5bf1f529c996ea26df540c1db02fa395a",
+      "bd18d20fa1a03807bb8f4696f258626bb6ac6bcd",
       [
        null,
        [
@@ -142796,7 +143477,23 @@
          "=="
         ]
        ],
-       {}
+       {
+        "fuzzy": [
+         [
+          null,
+          [
+           [
+            0,
+            104
+           ],
+           [
+            0,
+            610
+           ]
+          ]
+         ]
+        ]
+       }
       ]
      ],
      "ttwf-reftest-rotate.html": [
@@ -142974,6 +143671,19 @@
        {}
       ]
      ],
+     "accent-color-visited.tentative.html": [
+      "5aee0f125f7a1a6fffacda9790d7b72b02ab71ac",
+      [
+       null,
+       [
+        [
+         "/css/css-ui/accent-color-visited-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "appearance-auto-001.html": [
       "deef1c5d0b52fe7c91a319abbd1f6ccc2eeda08d",
       [
@@ -148728,6 +149438,19 @@
        {}
       ]
      ],
+     "will-change-fixpos-cb-webkit-perspective-1.html": [
+      "2438dcd975bf181e5a59885f91059d69c0f39b28",
+      [
+       null,
+       [
+        [
+         "/css/css-will-change/green-square-100-by-100-offset-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "will-change-stacking-context-backdrop-filter-1.html": [
       "0081e93c4fa2c0eb14e1e51545c45a50c2d565de",
       [
@@ -160457,6 +161180,19 @@
        {}
       ]
      ],
+     "vrl-inline-paint-invalidation.html": [
+      "a804e4d7c0a47e84e6aca2952c6ea65ab41a4402",
+      [
+       null,
+       [
+        [
+         "/css/reference/ref-filled-green-100px-square-only.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "vrl-text-orientation-sideways-alongside-vrl-floats.html": [
       "710221031a3ee31e06d540a63c80a819e9eff9c8",
       [
@@ -160834,6 +161570,19 @@
        {}
       ]
      ],
+     "wm-propagation-body-dynamic-change-003.html": [
+      "8e8bf03c31ff3c0da37b23f07e1f71d40de27c56",
+      [
+       null,
+       [
+        [
+         "/css/css-writing-modes/wm-propagation-body-dynamic-change-003-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "wm-propagation-svg-root-scrollbar.svg": [
       "a9a7b25ff26854e137c8d6bc5c17160201401cdb",
       [
@@ -168839,6 +169588,19 @@
           ],
           {}
          ]
+        ],
+        "canvas-filter-object-convolve-matrix.html": [
+         "c5651070a8049bb8de803a5caae6ad32c19802d8",
+         [
+          null,
+          [
+           [
+            "/html/canvas/element/manual/filters/canvas-filter-object-convolve-matrix-expected.html",
+            "=="
+           ]
+          ],
+          {}
+         ]
         ]
        },
        "imagebitmap": {
@@ -183961,7 +184723,7 @@
      []
     ],
     "META.yml": [
-     "7cae5c0f90396f6e3a0bcd5f34935550f08c4b84",
+     "27a11a1fe47c39baa6f8ea9390f4e9be1777e77e",
      []
     ],
     "OWNERS": [
@@ -185431,15 +186193,15 @@
      []
     ],
     "accept-ch-cache-revalidation.https.html.headers": [
-     "6f01afb921bd98c7de89fc1f1054db49b7a12ed8",
+     "ed61fa27203ade74e305ee4d1dbf41a626c0d42c",
      []
     ],
     "accept-ch-feature-policy-navigation.https.html.headers": [
-     "557140f8f2d821e031e23c10f94aa65a7c283254",
+     "5f5f807c1df420cd1f0f7895275558119b905acb",
      []
     ],
     "accept-ch-feature-policy.sub.https.html.headers": [
-     "cf453cf368ddfb8096a62ad9720af877480bcc07",
+     "d620a5b8253f4b8283945949ea512f9af23311d4",
      []
     ],
     "accept-ch-malformed-header.https.html.headers": [
@@ -185608,7 +186370,7 @@
       []
      ],
      "echo-client-hints-received.py": [
-      "ca623d40f88305bb2bb5101612465bb25db6a021",
+      "ef750bddf7d39329b67025cdec56858f65429bd2",
       []
      ],
      "echo-ua-client-hints-received.py": [
@@ -185648,12 +186410,12 @@
       []
      ],
      "stale-echo-client-hints.py": [
-      "664f7c4c15d08a8ae608c05b0051b8aba6a1a5d1",
+      "51e09b887a2b6df1abde21a9012a616c9814942c",
       []
      ]
     },
     "sec-ch-quotes.https.html.headers": [
-     "7ce8173856179f3758adf4a671582e2fa28a9880",
+     "abec79a3582a6de1cba0601332e4abb76618a265",
      []
     ],
     "service-workers": {
@@ -188542,7 +189304,7 @@
       []
      ],
      "cookie.py": [
-      "16efcc04aeb919e70c8e9bbf03253a8101bef2c8",
+      "b18da7774da6eab7d311c1d40611e44bdf77d997",
       []
      ],
      "drop.py": [
@@ -188820,7 +189582,7 @@
       []
      ],
      "DIR_METADATA": [
-      "aab9ded40a44aa888745a4a544ff6b6874015624",
+      "97e2659bf8cff713dc731eec03ac942794cc5fd2",
       []
      ],
      "META.yml": [
@@ -193724,7 +194486,7 @@
     },
     "css-align": {
      "DIR_METADATA": [
-      "aab9ded40a44aa888745a4a544ff6b6874015624",
+      "97e2659bf8cff713dc731eec03ac942794cc5fd2",
       []
      ],
      "META.yml": [
@@ -194030,7 +194792,7 @@
     },
     "css-backgrounds": {
      "DIR_METADATA": [
-      "aab9ded40a44aa888745a4a544ff6b6874015624",
+      "97e2659bf8cff713dc731eec03ac942794cc5fd2",
       []
      ],
      "META.yml": [
@@ -195000,6 +195762,10 @@
        "6f4261ecf45443c0d1d38f4599f2946492a570bb",
        []
       ],
+      "background-image-with-border-radius-fidelity-ref.html": [
+       "0d8f30d74f81e16d9fa0a3baf81306b14df0eac1",
+       []
+      ],
       "background-origin-002-ref.html": [
        "88d61225a623d112e5f54505899a21dd4d929a5b",
        []
@@ -195748,7 +196514,7 @@
     },
     "css-break": {
      "DIR_METADATA": [
-      "aab9ded40a44aa888745a4a544ff6b6874015624",
+      "97e2659bf8cff713dc731eec03ac942794cc5fd2",
       []
      ],
      "META.yml": [
@@ -195831,6 +196597,14 @@
       "f87e16adedc779911ec081990acd76dd5f6ed5ad",
       []
      ],
+     "break-inside-avoid-min-block-size-1-ref.html": [
+      "56789f62cbb570c4f5fbdcbdb13b97feda4fa174",
+      []
+     ],
+     "break-inside-avoid-min-block-size-2-ref.html": [
+      "70c4049131f7c4f458398c40bb0c1d575a6fa071",
+      []
+     ],
      "break-nested-float-in-table-001-print-ref.html": [
       "3459e25edd64ca8d90cebd4a44f68aa9b4106e25",
       []
@@ -195981,10 +196755,6 @@
      ]
     },
     "css-cascade": {
-     "DIR_METADATA": [
-      "7bdd904a34286d9442dfbdd4302414f199b53d04",
-      []
-     ],
      "META.yml": [
       "96467729fe91cef54b0bf5cc82d83e9f2a5c01ed",
       []
@@ -196043,10 +196813,6 @@
      }
     },
     "css-color": {
-     "DIR_METADATA": [
-      "7bdd904a34286d9442dfbdd4302414f199b53d04",
-      []
-     ],
      "LICENSE": [
       "d47f50cca8a2d9dc40dee384ae256f8aecf44e0a",
       []
@@ -196485,10 +197251,6 @@
      }
     },
     "css-conditional": {
-     "DIR_METADATA": [
-      "7bdd904a34286d9442dfbdd4302414f199b53d04",
-      []
-     ],
      "META.yml": [
       "0b9cc5ac3d69363f4ad472166d59f7779a7a125c",
       []
@@ -196530,7 +197292,7 @@
     },
     "css-contain": {
      "DIR_METADATA": [
-      "aab9ded40a44aa888745a4a544ff6b6874015624",
+      "97e2659bf8cff713dc731eec03ac942794cc5fd2",
       []
      ],
      "META.yml": [
@@ -196890,6 +197652,22 @@
        "1fdecb1c33149af52c48c105bce8ad91904bad44",
        []
       ],
+      "contain-body-bg-001-ref.html": [
+       "1d6357e173ccf3878821ceef86fd69c71778f6c4",
+       []
+      ],
+      "contain-body-overflow-001-ref.html": [
+       "32bc8b0eafc64d2c8552da37bab3b0138ab12dc9",
+       []
+      ],
+      "contain-body-t-o-001-ref.html": [
+       "ecf9d031a33956924d739136859b5837bfe73885",
+       []
+      ],
+      "contain-body-w-m-001-ref.html": [
+       "3341816e2b01433d8b24acc5cbd05a915c2c2736",
+       []
+      ],
       "contain-content-011-ref.html": [
        "21043b083c893a474aee7e0a926ce5be3d73ec12",
        []
@@ -198130,7 +198908,7 @@
     },
     "css-display": {
      "DIR_METADATA": [
-      "aab9ded40a44aa888745a4a544ff6b6874015624",
+      "97e2659bf8cff713dc731eec03ac942794cc5fd2",
       []
      ],
      "META.yml": [
@@ -198348,7 +199126,7 @@
     },
     "css-flexbox": {
      "DIR_METADATA": [
-      "aeed0e57ebfec85308d149a12d1adb51118341dc",
+      "e51f58e0dd2d33f85b8907874dab7a2afbd5224c",
       []
      ],
      "META.yml": [
@@ -198638,7 +199416,7 @@
       []
      ],
      "flex-basis-011-ref.html": [
-      "e1a968b5b53042ca97a97996c62a062ed89153f7",
+      "8c9d248efaf1cb03c18c4a4955576ccbc6ecaa15",
       []
      ],
      "flex-child-percent-basis-resize-1-ref.html": [
@@ -200680,7 +201458,7 @@
     },
     "css-font-loading": {
      "DIR_METADATA": [
-      "729d4e2f72e18065f3bc52a6f08422238e53be63",
+      "79a21decd5a038b674382ce2c897a53fb471f13f",
       []
      ],
      "META.yml": [
@@ -200720,7 +201498,7 @@
     },
     "css-fonts": {
      "DIR_METADATA": [
-      "729d4e2f72e18065f3bc52a6f08422238e53be63",
+      "79a21decd5a038b674382ce2c897a53fb471f13f",
       []
      ],
      "META.yml": [
@@ -207820,7 +208598,7 @@
     },
     "css-grid": {
      "DIR_METADATA": [
-      "00b116ef2de32513d4b8d11107c7fadc5efa69b9",
+      "0a52f7cafb7518ceb6f9a00a65377c7910e7cba2",
       []
      ],
      "META.yml": [
@@ -208212,10 +208990,6 @@
       }
      },
      "alignment": {
-      "grid-baseline-004-expected.txt": [
-       "7d26c4259e268b533b16eb5c1afeb591ae43e339",
-       []
-      ],
       "grid-gutters-014-ref.html": [
        "a6ca7c5aa7a80313786abc97ffe4581e9a6d7341",
        []
@@ -210092,7 +210866,7 @@
     },
     "css-layout-api": {
      "DIR_METADATA": [
-      "aab9ded40a44aa888745a4a544ff6b6874015624",
+      "97e2659bf8cff713dc731eec03ac942794cc5fd2",
       []
      ],
      "META.yml": [
@@ -210540,7 +211314,7 @@
     },
     "css-logical": {
      "DIR_METADATA": [
-      "aab9ded40a44aa888745a4a544ff6b6874015624",
+      "97e2659bf8cff713dc731eec03ac942794cc5fd2",
       []
      ],
      "META.yml": [
@@ -211130,7 +211904,7 @@
     },
     "css-multicol": {
      "DIR_METADATA": [
-      "e6cb0fe2b8b39a9b09c86603a941b4b8deedb1cf",
+      "d7aaf3d206d9205a622667caad552dbbbe3db583",
       []
      ],
      "META.yml": [
@@ -211645,6 +212419,10 @@
       "54981d81068873d95a0b3725fc8aabdb542ef491",
       []
      ],
+     "multicol-span-all-017-ref.html": [
+      "64d1419cfc8b8be4d9ac0c8ab84c830b9ffc9b5e",
+      []
+     ],
      "multicol-span-all-block-sibling-3-ref.xht": [
       "53b58c6d2b0cbd9d6e6288231c22ff5c76068b25",
       []
@@ -212057,10 +212835,6 @@
      }
     },
     "css-namespaces": {
-     "DIR_METADATA": [
-      "7bdd904a34286d9442dfbdd4302414f199b53d04",
-      []
-     ],
      "META.yml": [
       "b625e16a9cb0837ee9c612fd25737ad011cddc94",
       []
@@ -212834,7 +213608,7 @@
     },
     "css-position": {
      "DIR_METADATA": [
-      "aab9ded40a44aa888745a4a544ff6b6874015624",
+      "97e2659bf8cff713dc731eec03ac942794cc5fd2",
       []
      ],
      "META.yml": [
@@ -212869,40 +213643,6 @@
       "4f8d043e5a3f108b0ce26f335ddbc405c047ac17",
       []
      ],
-     "parsing": {
-      "inset-after-computed-expected.txt": [
-       "a985abc0515a5307653f9106a49d3edec8ce84a2",
-       []
-      ],
-      "inset-after-valid-expected.txt": [
-       "bd51a0f7ccf7540823c6424273e96ccb274908dc",
-       []
-      ],
-      "inset-before-computed-expected.txt": [
-       "4625b5db69602a72d0f04f8876666d40cf35a508",
-       []
-      ],
-      "inset-before-valid-expected.txt": [
-       "f38396deadc01f5c44865a4e904017d277525444",
-       []
-      ],
-      "inset-end-computed-expected.txt": [
-       "1bf469bcbdf972477b559d3596f6dfc37f51fa53",
-       []
-      ],
-      "inset-end-valid-expected.txt": [
-       "0309ccd354def7fcd2e22072de786d6b9a3362c4",
-       []
-      ],
-      "inset-start-computed-expected.txt": [
-       "8d1cd6d2a82679135024528dc697cb82ea57e0e4",
-       []
-      ],
-      "inset-start-valid-expected.txt": [
-       "8a4eefd23f0970738d30bb464a168c9b3baccd9f",
-       []
-      ]
-     },
      "position-absolute-large-negative-inset-ref.html": [
       "e04afce6ebd42889a3937823e86fcfd7b92da433",
       []
@@ -213072,7 +213812,7 @@
     },
     "css-properties-values-api": {
      "DIR_METADATA": [
-      "275a4301518da45ba222e6ce4e6a69c6dc2b415d",
+      "b19504342dfe64050a6372808f15f3e792a79218",
       []
      ],
      "META.yml": [
@@ -213879,10 +214619,6 @@
      }
     },
     "css-scoping": {
-     "DIR_METADATA": [
-      "7bdd904a34286d9442dfbdd4302414f199b53d04",
-      []
-     ],
      "META.yml": [
       "826341652122a40956ccc74288e23f952f1f40e8",
       []
@@ -213926,7 +214662,7 @@
     },
     "css-scroll-anchoring": {
      "DIR_METADATA": [
-      "aab9ded40a44aa888745a4a544ff6b6874015624",
+      "97e2659bf8cff713dc731eec03ac942794cc5fd2",
       []
      ],
      "META.yml": [
@@ -214116,7 +214852,7 @@
     },
     "css-shapes": {
      "DIR_METADATA": [
-      "54b56f58c82f39b06e4c14bb60b8035eefd604dd",
+      "2a197612af0b04fa4f2a3b0aeee84598813b9ac1",
       []
      ],
      "META.yml": [
@@ -214992,7 +215728,7 @@
     },
     "css-sizing": {
      "DIR_METADATA": [
-      "aab9ded40a44aa888745a4a544ff6b6874015624",
+      "97e2659bf8cff713dc731eec03ac942794cc5fd2",
       []
      ],
      "META.yml": [
@@ -215655,10 +216391,6 @@
      }
     },
     "css-syntax": {
-     "DIR_METADATA": [
-      "7bdd904a34286d9442dfbdd4302414f199b53d04",
-      []
-     ],
      "META.yml": [
       "359219c09965b90066e4fb31d952d621d0d0dc5b",
       []
@@ -215786,7 +216518,7 @@
     },
     "css-tables": {
      "DIR_METADATA": [
-      "4f37329faad59e57da0239577be1f4216e54cd0a",
+      "b0e995291a114006c858e0e729f9004547f8fd37",
       []
      ],
      "META.yml": [
@@ -215797,14 +216529,6 @@
       "aef437ec77c0df2ec4d56553611bed3fae5c801b",
       []
      ],
-     "absolute-tables-003-expected.txt": [
-      "f1b3b491d2f32de0d7ef044ed951266ef87c563c",
-      []
-     ],
-     "absolute-tables-005-expected.txt": [
-      "9ceaa9a0684c2c12d7ca931785b1e82b850c9da4",
-      []
-     ],
      "anonymous-table-ws-001-ref.html": [
       "4429239d965d4a2adcb683e9426b94a73be8280f",
       []
@@ -215817,6 +216541,10 @@
       "6ace02b432ab503a0275e1a04d205df3eeefe63a",
       []
      ],
+     "border-collapse-empty-cell-ref.html": [
+      "f6b25134f443c4625228b4901097b883a990d2a8",
+      []
+     ],
      "border-collapse-rowspan-cell-ref.html": [
       "53774da48a30f60eae0750e989c2e19db8bd97cc",
       []
@@ -215963,6 +216691,10 @@
        []
       ]
      },
+     "table-cell-child-overflow-measure-ref.html": [
+      "d4e3ec6a91c4124fa4f465b8912f720a8fec4c57",
+      []
+     ],
      "table-cell-overflow-auto-ref.html": [
       "18163de30320bd1f0f1a7248cd4c2f2d2897d0c5",
       []
@@ -216042,7 +216774,7 @@
     },
     "css-text": {
      "DIR_METADATA": [
-      "aab9ded40a44aa888745a4a544ff6b6874015624",
+      "97e2659bf8cff713dc731eec03ac942794cc5fd2",
       []
      ],
      "META.yml": [
@@ -219236,7 +219968,7 @@
     },
     "css-text-decor": {
      "DIR_METADATA": [
-      "aab9ded40a44aa888745a4a544ff6b6874015624",
+      "97e2659bf8cff713dc731eec03ac942794cc5fd2",
       []
      ],
      "META.yml": [
@@ -219646,12 +220378,6 @@
       []
      ]
     },
-    "css-timing": {
-     "DIR_METADATA": [
-      "7bdd904a34286d9442dfbdd4302414f199b53d04",
-      []
-     ]
-    },
     "css-transforms": {
      "3dtransform-and-filter-no-perspective-001-ref.html": [
       "bb7ae235fef0c4216de99c9c0ab3bec26db33fd4",
@@ -219709,7 +220435,7 @@
        []
       ],
       "transform-interpolation-computed-value-expected.txt": [
-       "76fbb3ea84b370caa1b7f0a917717918c38a4d22",
+       "b0fe2dde24f106e7f0a9a44b07fdeeecc8bee5ca",
        []
       ],
       "transform-interpolation-ref.html": [
@@ -221361,10 +222087,6 @@
       "918c97d6da7562004967a205522e3614d9c5d35f",
       []
      ],
-     "DIR_METADATA": [
-      "7bdd904a34286d9442dfbdd4302414f199b53d04",
-      []
-     ],
      "META.yml": [
       "a448fc800d26f26f7976bb9358251a5c392262e1",
       []
@@ -221413,6 +222135,10 @@
      },
      "the-stylepropertymap": {
       "properties": {
+       "accent-color-expected.txt": [
+        "3c4e773a36c0e76f69f2bf48f49428b0c6c31338",
+        []
+       ],
        "alignment-baseline-expected.txt": [
         "bfa1f080ecaefe71d6a26a0287860569d72f0296",
         []
@@ -221668,7 +222394,7 @@
     },
     "css-ui": {
      "DIR_METADATA": [
-      "aab9ded40a44aa888745a4a544ff6b6874015624",
+      "97e2659bf8cff713dc731eec03ac942794cc5fd2",
       []
      ],
      "META.yml": [
@@ -221684,7 +222410,11 @@
       []
      ],
      "accent-color-computed-expected.txt": [
-      "49086258e620e57bb298b6345274e793a9041145",
+      "54594b62e7218828cd3b66fdab69d5ad919092af",
+      []
+     ],
+     "accent-color-visited-ref.html": [
+      "3954a3193ea3644eb666c37af619de303a5a4d27",
       []
      ],
      "appearance-auto-input-non-widget-001-ref.html": [
@@ -222885,10 +223615,6 @@
      ]
     },
     "css-values": {
-     "DIR_METADATA": [
-      "7bdd904a34286d9442dfbdd4302414f199b53d04",
-      []
-     ],
      "META.yml": [
       "a22882a9996b14afa942d3403fa1a873f526073a",
       []
@@ -223367,10 +224093,6 @@
      ]
     },
     "css-variables": {
-     "DIR_METADATA": [
-      "7bdd904a34286d9442dfbdd4302414f199b53d04",
-      []
-     ],
      "META.yml": [
       "a1747aadc086e75733c15242826d7631b0c95ead",
       []
@@ -223580,7 +224302,7 @@
     },
     "css-writing-modes": {
      "DIR_METADATA": [
-      "ff55dc965082ae94ce13fa0d5ad7a98af9bc204d",
+      "6d01f16a1c7c74fc298cf2730ecf4026e206ca04",
       []
      ],
      "META.yml": [
@@ -225879,6 +226601,10 @@
       "d7ddfd553d60bbb98243eb32090b76f24fe38113",
       []
      ],
+     "wm-propagation-body-dynamic-change-003-ref.html": [
+      "30e72f0df706a62c8e0ad97327ff1a625af731d6",
+      []
+     ],
      "writing-mode-initial-ref.html": [
       "6f7b84fa72ad042924dedba39503ed6ea40bbd20",
       []
@@ -225905,10 +226631,6 @@
       "7a825be56202175f8b013ec7cc65f7d41ef77872",
       []
      ],
-     "DIR_METADATA": [
-      "7bdd904a34286d9442dfbdd4302414f199b53d04",
-      []
-     ],
      "HTMLLinkElement-disabled-alternate-ref.html": [
       "5d87bfdaf5b0533f2ea7088a870ca45474d065f4",
       []
@@ -225922,7 +226644,7 @@
       []
      ],
      "cssstyledeclaration-custom-properties-expected.txt": [
-      "7287e4fe19d2359052dbe4650b4419ff5d88c69c",
+      "fdc0f0c65871a26d4da55f347ae9abf592db01d1",
       []
      ],
      "cssstyledeclaration-properties-expected.txt": [
@@ -225934,7 +226656,7 @@
       []
      ],
      "getComputedStyle-detached-subtree-expected.txt": [
-      "97d84ff195dd599378592436c7933794db0e3077",
+      "e1c2ab5987f3d320c81a0497ed01b304d397daf5",
       []
      ],
      "getComputedStyle-insets-absolute-expected.txt": [
@@ -226203,10 +226925,6 @@
      }
     },
     "cssom-view": {
-     "DIR_METADATA": [
-      "7bdd904a34286d9442dfbdd4302414f199b53d04",
-      []
-     ],
      "META.yml": [
       "a6644945910fc83ca079c93507b21117b91de9c3",
       []
@@ -227247,10 +227965,6 @@
      }
     },
     "mediaqueries": {
-     "DIR_METADATA": [
-      "7bdd904a34286d9442dfbdd4302414f199b53d04",
-      []
-     ],
      "META.yml": [
       "f277097263e7acf6f2e7b40fa810231c61b00e63",
       []
@@ -227281,16 +227995,16 @@
        []
       ]
      },
+     "test_media_queries-expected.txt": [
+      "7fd06266430fadd44d150de784c80c1404ee4456",
+      []
+     ],
      "viewport-script-dynamic-ref.html": [
       "e3f1c95d66fcd89bdce9fc08e31e798df3053e32",
       []
      ]
     },
     "motion": {
-     "DIR_METADATA": [
-      "7bdd904a34286d9442dfbdd4302414f199b53d04",
-      []
-     ],
      "META.yml": [
       "20835b48397f136a30b82a62654d389cad326315",
       []
@@ -227473,10 +228187,6 @@
      []
     ],
     "selectors": {
-     "DIR_METADATA": [
-      "7bdd904a34286d9442dfbdd4302414f199b53d04",
-      []
-     ],
      "META.yml": [
       "8e506d671d4b1e741d3450bd66603edbb3de9f30",
       []
@@ -227998,7 +228708,7 @@
       ],
       "mozilla-central-reftests": {
        "DIR_METADATA": [
-        "aab9ded40a44aa888745a4a544ff6b6874015624",
+        "97e2659bf8cff713dc731eec03ac942794cc5fd2",
         []
        ],
        "OWNERS": [
@@ -228143,7 +228853,7 @@
        },
        "flexbox": {
         "DIR_METADATA": [
-         "aeed0e57ebfec85308d149a12d1adb51118341dc",
+         "e51f58e0dd2d33f85b8907874dab7a2afbd5224c",
          []
         ],
         "OWNERS": [
@@ -228195,7 +228905,7 @@
        },
        "shapes1": {
         "DIR_METADATA": [
-         "54b56f58c82f39b06e4c14bb60b8035eefd604dd",
+         "2a197612af0b04fa4f2a3b0aeee84598813b9ac1",
          []
         ]
        },
@@ -238199,6 +238909,10 @@
         "canvas-filter-object-blur-expected.html": [
          "ae8911b2de39e593c2ef262ed9cd5eaa70b5bf0c",
          []
+        ],
+        "canvas-filter-object-convolve-matrix-expected.html": [
+         "f8dba9bb07e8648d2f030af88dd41eab12202a72",
+         []
         ]
        },
        "imagebitmap": {
@@ -238837,7 +239551,7 @@
          []
         ],
         "filters.yaml": [
-         "c4dabab60640f1ac6279689cb3c42bb93c8ab690",
+         "11026f49401d570bae85f9689763d360506d46e4",
          []
         ],
         "line-styles.yaml": [
@@ -238881,7 +239595,7 @@
          []
         ],
         "transformations.yaml": [
-         "89f72468acebb64b5680f03f8a277c80d4aa8e06",
+         "bca161728bebd88ae6f281d3fd31f9eab09cba86",
          []
         ],
         "video.yaml": [
@@ -238915,7 +239629,7 @@
          []
         ],
         "filters.yaml": [
-         "dd11080b4ca89399331096bcfaeec89664f74ffb",
+         "1bcd5bb025482cde4ab50f7524c100349d689965",
          []
         ],
         "line-styles.yaml": [
@@ -238951,7 +239665,7 @@
          []
         ],
         "transformations.yaml": [
-         "9b4cbd3463d32a094438f544440e05dbbd4ac120",
+         "5a784f4025c6a99edfdfe9356be03377b6b97a33",
          []
         ]
        }
@@ -239649,10 +240363,6 @@
     "dom": {
      "documents": {
       "dom-tree-accessors": {
-       "DIR_METADATA": [
-        "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-        []
-       ],
        "cross-domain.js": [
         "32effe3c4580613831be8c140b0af3948bebc479",
         []
@@ -239680,21 +240390,11 @@
       }
      },
      "elements": {
-      "elements-in-the-dom": {
-       "DIR_METADATA": [
-        "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-        []
-       ]
-      },
       "global-attributes": {
        ".htaccess": [
         "94e9a4f1908e4f4eb3216981a91c3c8174902fcb",
         []
        ],
-       "DIR_METADATA": [
-        "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-        []
-       ],
        "custom-attrs-expected.txt": [
         "a134f46ae4f026f047d3d2556bd665b1403d85f5",
         []
@@ -243245,10 +243945,6 @@
     "infrastructure": {
      "common-dom-interfaces": {
       "collections": {
-       "DIR_METADATA": [
-        "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-        []
-       ],
        "htmlallcollection-expected.txt": [
         "6dfa2f44790a5d3db9ee42fd698ae0b0e710be4e",
         []
@@ -243263,14 +243959,6 @@
        ]
       }
      },
-     "conformance-requirements": {
-      "extensibility": {
-       "DIR_METADATA": [
-        "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-        []
-       ]
-      }
-     },
      "safe-passing-of-structured-data": {
       "resources": {
        "echo-iframe.html": [
@@ -243561,10 +244249,6 @@
      },
      "terminology": {
       "plugins": {
-       "DIR_METADATA": [
-        "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-        []
-       ],
        "sample.txt": [
         "cedecd6d884d181a740f5be110d869679f768189",
         []
@@ -243887,20 +244571,12 @@
      ],
      "requirements-for-implementations": {
       "other-elements-attributes-and-apis": {
-       "DIR_METADATA": [
-        "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-        []
-       ],
        "original-id.json": [
         "601a7c08d19493c45501a407059dd0ae72891ba2",
         []
        ]
       },
       "the-marquee-element-0": {
-       "DIR_METADATA": [
-        "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-        []
-       ],
        "marquee-min-intrinsic-size-ref.html": [
         "7a79361fc399301161400ef4ba75c876369329f7",
         []
@@ -243917,30 +244593,18 @@
        ]
       },
       "the-input-element-as-a-text-entry-widget": {
-       "DIR_METADATA": [
-        "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-        []
-       ],
        "unrecognized-type-should-fallback-as-text-type-ref.html": [
         "879ca9233f4f356b1d69a6e588f96c0c926a1ca7",
         []
        ]
       },
       "the-select-element-0": {
-       "DIR_METADATA": [
-        "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-        []
-       ],
        "option-label-ref.html": [
         "e3f73cb3eda267f57e1c7e4ac4d1510b1f0bd18a",
         []
        ]
       },
       "the-textarea-element-0": {
-       "DIR_METADATA": [
-        "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-        []
-       ],
        "textarea-ref.html": [
         "f2982808f652a1095a7cdaeffa1a6ba221115036",
         []
@@ -244725,10 +245389,6 @@
      ]
     },
     "semantics": {
-     "DIR_METADATA": [
-      "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-      []
-     ],
      "document-metadata": {
       "interactions-of-styling-and-scripting": {
        "stylesheet.py": [
@@ -248301,10 +248961,6 @@
         "a269f1c671774b34885af42e233d5ca4a260f62a",
         []
        ],
-       "readwrite-readonly-expected.txt": [
-        "7d301fe76b1e5637dfe359ffe6da5a9d79cf5311",
-        []
-       ],
        "utils.js": [
         "7a2fb77f105705b2ece7b7e495a3673f59faef94",
         []
@@ -248454,10 +249110,6 @@
       []
      ],
      "parsing": {
-      "DIR_METADATA": [
-       "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-       []
-      ],
       "DOMContentLoaded-defer-expected.txt": [
        "b92095bed64c26b94916f4794223833b7cfe4467",
        []
@@ -248673,18 +249325,6 @@
        []
       ]
      },
-     "serializing-html-fragments": {
-      "DIR_METADATA": [
-       "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-       []
-      ]
-     },
-     "serializing-xml-fragments": {
-      "DIR_METADATA": [
-       "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-       []
-      ]
-     },
      "xmldecl": {
       "support": {
        "ENCODING-trail.htm": [
@@ -249164,12 +249804,6 @@
     },
     "webappapis": {
      "dynamic-markup-insertion": {
-      "closing-the-input-stream": {
-       "DIR_METADATA": [
-        "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-        []
-       ]
-      },
       "document-write": {
        "005.js": [
         "ebfd7e2585284cd52326c995bad0809a08c5249d",
@@ -249219,10 +249853,6 @@
         "6a43faec51071fec146390475adcd12bad3d23a6",
         []
        ],
-       "DIR_METADATA": [
-        "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-        []
-       ],
        "contentType.window-expected.txt": [
         "ff3d352f31150d5af569302f0eb7ddab0244aa9a",
         []
@@ -249309,10 +249939,6 @@
        ]
       },
       "document-writeln": {
-       "DIR_METADATA": [
-        "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-        []
-       ],
        "original-id.json": [
         "0cc32be6a2368591de06759c92223941f380f9c2",
         []
@@ -249343,10 +249969,6 @@
         "ceeeb64df63ccb6d56cd46a93c6ec6c476573a6b",
         []
        ],
-       "DIR_METADATA": [
-        "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-        []
-       ],
        "document.open-03-frame.html": [
         "a4b370cea41fb2d379b0350639aaeec4f169191d",
         []
@@ -249441,10 +250063,6 @@
      },
      "scripting": {
       "event-loops": {
-       "DIR_METADATA": [
-        "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-        []
-       ],
        "fully_active_document.window-expected.txt": [
         "771e58ec4f284f19efda49c1e9e7d85eab53cfc3",
         []
@@ -249465,10 +250083,6 @@
        }
       },
       "events": {
-       "DIR_METADATA": [
-        "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-        []
-       ],
        "event-handler-all-global-events-expected.txt": [
         "eb173e2bce9cc26f995c8567ae741d1dc4e7d9db",
         []
@@ -249517,10 +250131,6 @@
        }
       },
       "processing-model-2": {
-       "DIR_METADATA": [
-        "9e1f16642cda25322fa29cfb47c280ca18ce9f48",
-        []
-       ],
        "compile-error-same-origin-with-hash-expected.txt": [
         "e6b4ffea5e691a3f0d6491ea4b34986e8deb489d",
         []
@@ -250227,7 +250837,7 @@
    },
    "infrastructure": {
     "DIR_METADATA": [
-     "c7280ced42f5dddaf4d22247a2460b403cb759b0",
+     "b19504342dfe64050a6372808f15f3e792a79218",
      []
     ],
     "META.yml": [
@@ -250979,11 +251589,11 @@
      []
     ],
     "WEBGL_multi_draw.idl": [
-     "3ba984d957cbfc2090c0c9bb59b3364eb0c7e0fc",
+     "d5ab6cf4f4606665294717161c58d5ae9afc341c",
      []
     ],
     "WEBGL_multi_draw_instanced_base_vertex_base_instance.idl": [
-     "2f43d3a7a029b53e95374cc6eac6592f6ebe4ded",
+     "8dd3253a24cffa3b24ae145a378912d2ada260fb",
      []
     ],
     "WebCryptoAPI.idl": [
@@ -251163,7 +251773,7 @@
      []
     ],
     "css-typed-om.idl": [
-     "086cef39702b509cc4ffd75f2c1a364033354cc7",
+     "262d2884e8379aacecc5958b85040c1f39184918",
      []
     ],
     "cssom-view.idl": [
@@ -251283,7 +251893,7 @@
      []
     ],
     "gpuweb.idl": [
-     "53bff4fbc7717285adfee6983999c815cc35a979",
+     "3f7111820a726ad7c1986e244a414ad6039100f8",
      []
     ],
     "gyroscope.idl": [
@@ -251303,7 +251913,7 @@
      []
     ],
     "html.idl": [
-     "99443be4a71990cca3e1c22c79341ff4a4b69db5",
+     "d878cba3367cc627d2b36d388cf4c31115afde0a",
      []
     ],
     "idle-detection.idl": [
@@ -251455,7 +252065,7 @@
      []
     ],
     "payment-handler.idl": [
-     "b609df75a37139efcf8c1a9d52768604398ee5bc",
+     "7636e8a3b49b3b85d4a68471455002f0c6f3a5ec",
      []
     ],
     "payment-method-basic-card.idl": [
@@ -251463,7 +252073,7 @@
      []
     ],
     "payment-request.idl": [
-     "dc0511b0c4b091066a9dcbc94ece9cac28088bde",
+     "cd16e2aabef9d0c06bef99c60ac06898b6f333b5",
      []
     ],
     "performance-measure-memory.idl": [
@@ -251518,10 +252128,6 @@
      "9a7c8dd55ad3cc9fbea3c6e20c182a51c10889b5",
      []
     ],
-    "private-network-access.idl": [
-     "b470f3f5a153f37ecf3607ee85e6ea2c511a237c",
-     []
-    ],
     "proximity.idl": [
      "3cbfbd5ad139031a62d730e9a460b797b7537789",
      []
@@ -251723,7 +252329,7 @@
      []
     ],
     "webcodecs.idl": [
-     "aae4aa0121f6e53f30f4af2ee9779826b55db0a6",
+     "1203ebae3efe15fab68fd5a5044f2de89fd4ec0d",
      []
     ],
     "webdriver.idl": [
@@ -251775,7 +252381,7 @@
      []
     ],
     "webtransport.idl": [
-     "220e6ea12043c19e054a0136ae9311e7497afbb0",
+     "6c3df2abc52cc97574445e2f0b3a89775c4f26d6",
      []
     ],
     "webusb.idl": [
@@ -251803,7 +252409,7 @@
      []
     ],
     "webxr.idl": [
-     "b08124e337862f78990ebda94a867f5d0858075e",
+     "3e5b432468648606c04d113ccb29ddb642872b5f",
      []
     ],
     "webxrlayers.idl": [
@@ -252064,7 +252670,7 @@
     ]
    },
    "lint.ignore": [
-    "9f1cb6e753a97d402082e06e54773390f9d792f7",
+    "525b46b3001e44b2447287fd676dc05c330cab78",
     []
    ],
    "loading": {
@@ -253075,8 +253681,12 @@
      []
     ],
     "resources": {
+     "checker.js": [
+      "25487b7b0568d57fa2aa72ffe6acdb5659e5f2b3",
+      []
+     ],
      "common.js": [
-      "41f7c94d55e37016cca0506b87480e842c53a615",
+      "4332c6e79c10f4ccd166a77771c159ce7c1e9d7e",
       []
      ],
      "iframe.redirect.sub.html": [
@@ -253140,6 +253750,14 @@
       []
      ]
     },
+    "service-worker.https.any.js.headers": [
+     "4fff9d9fba4c81f953826ffea010a75be626b95d",
+     []
+    ],
+    "shared-worker.https.any.js.headers": [
+     "4fff9d9fba4c81f953826ffea010a75be626b95d",
+     []
+    ],
     "window-open.cross-origin.https.window.js.headers": [
      "4fff9d9fba4c81f953826ffea010a75be626b95d",
      []
@@ -253407,7 +254025,7 @@
      []
     ],
     "mediasource-changetype-util.js": [
-     "28e92893657b956d84bff1cf0c87c000f272063d",
+     "024af027ed69c5f239c826781571eab0797c8398",
      []
     ],
     "mediasource-config-changes.js": [
@@ -258060,7 +258678,7 @@
       []
      ],
      "TAOResponse.py": [
-      "163f8ca2e5b2b9bff7023849a06efee6b8907cf6",
+      "60392b8e10ada4fd70a03a6258849306e9714ec4",
       []
      ],
      "all_resource_types.html": [
@@ -258091,6 +258709,10 @@
       "e0a4f0b108094658be0aef453bf826bf01c28f93",
       []
      ],
+     "cacheable-and-validated.py": [
+      "31f0e3ab417a69079f20748751b2d6be9a7d5552",
+      []
+     ],
      "cors-ahem.py": [
       "dee5b62f0005705c18dde06865ab5a9947a37357",
       []
@@ -258215,42 +258837,6 @@
       "cf68aade7954e609087d34f21e437c285eb73a58",
       []
      ],
-     "iframe_TAO_match_wildcard.html": [
-      "a6a03e0680e95b33c14b5c622ce99d37f8582375",
-      []
-     ],
-     "iframe_TAO_multi.html": [
-      "0696dbe3e502def905cece7cdd5599decb3ad9dc",
-      []
-     ],
-     "iframe_TAO_multi_wildcard.html": [
-      "977df01007d56d85d4c4726c4c501d7e2c21387c",
-      []
-     ],
-     "iframe_TAO_null.html": [
-      "7d47a2076f87dfa5e787e3d4072b3a513330e524",
-      []
-     ],
-     "iframe_TAO_origin.html": [
-      "c75b0752406d959a3157a2bc4d75d3e646143682",
-      []
-     ],
-     "iframe_TAO_origin_uppercase.html": [
-      "7404035d1ab238358770c31d40265fb4ef3ed881",
-      []
-     ],
-     "iframe_TAO_space.html": [
-      "2a484ed5140bf052b8426a81ec5b842d2f6a44be",
-      []
-     ],
-     "iframe_TAO_wildcard.html": [
-      "3b5be4cdab98bfc51fffbd3646bcdd75fc87f23c",
-      []
-     ],
-     "iframe_TAO_zero.html": [
-      "76c5938689a4ae08d6d4d4c911993e8deebd5de6",
-      []
-     ],
      "inject_resource_test.html": [
       "44d09675d38e26a9c69de4ed9133667d8dc5c5ef",
       []
@@ -258291,8 +258877,12 @@
       "168850e2a88dbdc74d07c4813b2ef4e5fd812d7d",
       []
      ],
+     "redirect-cors.py": [
+      "ea67cb8e7ac4e61045d05af51f066db48bfdf101",
+      []
+     ],
      "resource-loaders.js": [
-      "1760628c78bdb85f5e195b982f81d24473662572",
+      "3df07ccb5496cf211b5435f336fac568e0f76afc",
       []
      ],
      "resource-timing-content-length.py": [
@@ -258323,6 +258913,10 @@
       "beb12f5da551780fcb4378bef4661b9699a5d009",
       []
      ],
+     "sizes-helper.js": [
+      "86336686b32902ec1c123b0f55ff67e9aba43062",
+      []
+     ],
      "status-code.py": [
       "72222b39e48574c666052b2bb4d7029fd6ba526a",
       []
@@ -258379,7 +258973,7 @@
      []
     ],
     "check-layout-th.js": [
-     "5d4236d1cedb0e20dbc1bb30722cb0e9e160f110",
+     "a507a8dfd7f197cbf3ff3072e7f7291847cd6aa2",
      []
     ],
     "chromium": {
@@ -258633,7 +259227,7 @@
      []
     ],
     "OWNERS": [
-     "90e5cde305022505fd502b2552ba07cd3ebb99a6",
+     "05cb9bd3c026ef049585c325e201f31abfb5059d",
      []
     ],
     "feature-policy.https-expected.txt": [
@@ -261037,7 +261631,7 @@
        []
       ],
       "malformed-worker.py": [
-       "b8bc842d2caf8f493b62e364f7dc6bd6a27037f8",
+       "319b6e277baa04a9b61c1f5f764219d32028f91a",
        []
       ],
       "message-vs-microtask.html": [
@@ -261341,7 +261935,7 @@
        []
       ],
       "registration-tests-script.js": [
-       "30c03d9ef041817c9429a2640d8c6edf72242678",
+       "e5bdaf4291a4205fb5205eab0c76ec0bc02bdd7b",
        []
       ],
       "registration-tests-security-error.js": [
@@ -264528,14 +265122,6 @@
      "50a71bb482df9e21f6385973268f9e95b3464e7c",
      []
     ],
-    "historical.any-expected.txt": [
-     "60291d5c06d83784b4e04bb820f5a3099b67c410",
-     []
-    ],
-    "historical.any.worker-expected.txt": [
-     "8417b56c611ec5f03582c8d59edfdece37ad98b0",
-     []
-    ],
     "percent-encoding.window-expected.txt": [
      "a4b0a3a4fa78feed4a378a69b0cba5aee47feec8",
      []
@@ -264558,7 +265144,7 @@
       []
      ],
      "setters_tests.json": [
-      "8aa74d6b8a28d9021050f4e52e7ee7f8f411912f",
+      "56bcae464a6f542cadcf82444435ec55870d91f8",
       []
      ],
      "toascii.json": [
@@ -264571,15 +265157,15 @@
      ]
     },
     "toascii.window-expected.txt": [
-     "597c806768cae2474ef96160945c26ba7feb2a36",
+     "1fe76f608a654dbb514bca458170d1817dd9eb74",
      []
     ],
     "url-setters-stripping.any-expected.txt": [
-     "5b19d9ffd7e5a2cd95fdb93a355d24fa5a433c4b",
+     "82bebb674259d13678e9d3b46e01a4dd0722d55a",
      []
     ],
     "url-setters-stripping.any.worker-expected.txt": [
-     "5b19d9ffd7e5a2cd95fdb93a355d24fa5a433c4b",
+     "82bebb674259d13678e9d3b46e01a4dd0722d55a",
      []
     ]
    },
@@ -265492,6 +266078,10 @@
      "check-cookie-and-return-bundle.py": [
       "32765e85c93d3bd57cd83f1cf0d7299cf4e7975d",
       []
+     ],
+     "csp-blocked.https.tentative.html.sub.headers": [
+      "ac826f8c485d107806e841d6ffb463bf5d20c0a8",
+      []
      ]
     }
    },
@@ -265819,6 +266409,10 @@
         "e447830c5ffb442842bc1c6c6227dd8531d085e0",
         []
        ],
+       "dummy-processor-globalthis.js": [
+        "d1b16cc9aaac4a21f8c428d2a1d583fc07914c67",
+        []
+       ],
        "dummy-processor.js": [
         "11155d508c51956ee07dcf4cf7c68829920c2af6",
         []
@@ -266921,7 +267515,7 @@
      []
     ],
     "RTCStats-helper.js": [
-     "81abe2456e94bb84e4d56c9781dc302a502490e5",
+     "33cbf4a933bd37553a8595e0692f9717e145ecc9",
      []
     ],
     "RTCTrackEvent-constructor-expected.txt": [
@@ -270038,7 +270632,7 @@
       []
      ],
      "webxr_util.js": [
-      "cf9c6ff880a16baceb8feb09a5d3aa1ed237f802",
+      "75d73968ccaaca1411391f25b2726f6bda57e27d",
       []
      ]
     },
@@ -283696,7 +284290,7 @@
       ]
      ],
      "class-string-named-properties-object.window.js": [
-      "cff2582f8ce9e8f1efea0e7b6b12f5710fa4f35c",
+      "a427a2f8142e5392725f078e1fdb0c179994c593",
       [
        "WebIDL/ecmascript-binding/class-string-named-properties-object.window.html",
        {}
@@ -283832,6 +284426,53 @@
        }
       ]
      ],
+     "global-object-implicit-this-value.any.js": [
+      "cc0d08fcbd0d9c7598a59219ba70fe8ca4d89d81",
+      [
+       "WebIDL/ecmascript-binding/global-object-implicit-this-value.any.html",
+       {
+        "script_metadata": [
+         [
+          "global",
+          "window,worker"
+         ]
+        ]
+       }
+      ],
+      [
+       "WebIDL/ecmascript-binding/global-object-implicit-this-value.any.serviceworker.html",
+       {
+        "script_metadata": [
+         [
+          "global",
+          "window,worker"
+         ]
+        ]
+       }
+      ],
+      [
+       "WebIDL/ecmascript-binding/global-object-implicit-this-value.any.sharedworker.html",
+       {
+        "script_metadata": [
+         [
+          "global",
+          "window,worker"
+         ]
+        ]
+       }
+      ],
+      [
+       "WebIDL/ecmascript-binding/global-object-implicit-this-value.any.worker.html",
+       {
+        "script_metadata": [
+         [
+          "global",
+          "window,worker"
+         ]
+        ]
+       }
+      ]
+     ],
      "has-instance.html": [
       "caf0be47290607f9d63b42dde96c31816a1f7376",
       [
@@ -283925,13 +284566,6 @@
        ]
       ]
      },
-     "named-properties-object.html": [
-      "556eca4b3318fd96d753fe9f1f165b2e4bd170ff",
-      [
-       null,
-       {}
-      ]
-     ],
      "no-regexp-special-casing.any.js": [
       "4446dbf69c02ab466ad03fd69d6ed3924d8e84a0",
       [
@@ -283956,6 +284590,13 @@
        null,
        {}
       ]
+     ],
+     "window-named-properties-object.html": [
+      "fe8275ef6a3fc6e6a8074368804ea9f4f4560582",
+      [
+       null,
+       {}
+      ]
      ]
     },
     "idlharness.any.js": [
@@ -289245,7 +289886,7 @@
      ]
     ],
     "accept-ch-cache-revalidation.https.html": [
-     "453b6fc5fe609fa786a57246132d560c5e214f8a",
+     "84555a02852a05d9fdd4ef4579f3273852baf207",
      [
       null,
       {}
@@ -289266,7 +289907,7 @@
      ]
     ],
     "accept-ch-feature-policy.sub.https.html": [
-     "381e8a1b52a1d7aa360d04a28a5992f6b83040cf",
+     "f9e5db8acc4717ce11b2419dd04c07b728bd871c",
      [
       null,
       {}
@@ -289280,7 +289921,7 @@
      ]
     ],
     "accept-ch-no-feature-policy-navigation.https.html": [
-     "24749baceac3ad524c2d95ebf6db319ac79d71e0",
+     "559e5a6758d0ee4d775642e8b2dd9c14160b4cdb",
      [
       null,
       {}
@@ -289652,21 +290293,21 @@
      ]
     ],
     "http-equiv-accept-ch-merge.https.html": [
-     "177a836557607569a865dfb25ca5a224be8878a0",
+     "4ed2291de2999d267de8510f2204079b153f368a",
      [
       null,
       {}
      ]
     ],
     "http-equiv-accept-ch-non-secure.http.html": [
-     "909ab5f5f2a563348da0d0bb3377961f1015d031",
+     "4820af459247f8ba8da46cd7ebb13ce6d1e01cb6",
      [
       null,
       {}
      ]
     ],
     "sec-ch-quotes.https.html": [
-     "d60bf4c9b670a94d3c7c991c6aed5aac73a844f4",
+     "f48c8c09e097dde80c8b91e11d2b0784698bd25d",
      [
       null,
       {}
@@ -302434,6 +303075,13 @@
        ]
       ]
      },
+     "print-color-adjust-parsing.html": [
+      "ced8666333e676791841c377b21d41e0d577c3dc",
+      [
+       null,
+       {}
+      ]
+     ],
      "rendering": {
       "dark-color-scheme": {
        "color-scheme-color-property.html": [
@@ -305393,6 +306041,13 @@
        ]
       ]
      },
+     "system-fonts-serialization.tentative.html": [
+      "6abd6f09d64d5dc358221c7d3af29acd49fc9475",
+      [
+       null,
+       {}
+      ]
+     ],
      "test_datafont_same_origin.html": [
       "937c8c38e00d92579055f5e17300fd05b4c1bc51",
       [
@@ -306368,7 +307023,7 @@
        ]
       ],
       "grid-baseline-004.html": [
-       "7c3e46cfdbde7c982f76526d4b98611abd311e1e",
+       "cd565a10ad68a3de7172f96376cb49112cd04791",
        [
         null,
         {}
@@ -306907,21 +307562,21 @@
        ]
       ],
       "grid-row-axis-self-baseline-synthesized-001.html": [
-       "870e368d08db87aba17ca669b8e9dc14ba81fee0",
+       "3939c5b4620781960e1a60a0892747c3ca5f275e",
        [
         null,
         {}
        ]
       ],
       "grid-row-axis-self-baseline-synthesized-002.html": [
-       "80dba9cc3589e05aa5cfb9758b6dfe614c548529",
+       "f2f23cbe2650dd308a2a2692d5eb7713e69bcd65",
        [
         null,
         {}
        ]
       ],
       "grid-row-axis-self-baseline-synthesized-003.html": [
-       "daf06a4a80e71f2edbf917703c02b4293a7af85e",
+       "1160895f401808c87aaa28394f3b507d20dd8511",
        [
         null,
         {}
@@ -307481,21 +308136,21 @@
        ]
       ],
       "grid-self-baseline-not-applied-if-sizing-cyclic-dependency-001.html": [
-       "dae81ceee1a90c7d0d66fb3a86fdae025d4389cb",
+       "5ddf4495921573bb5c56e1e9a0738098c7d6138e",
        [
         null,
         {}
        ]
       ],
       "grid-self-baseline-not-applied-if-sizing-cyclic-dependency-002.html": [
-       "10c6d8a1bb8a2d569a57b0787c80890e153d2675",
+       "f1ab2ef8ad1eb22af7d7c4a6d18b13fb2b6fe071",
        [
         null,
         {}
        ]
       ],
       "grid-self-baseline-not-applied-if-sizing-cyclic-dependency-003.html": [
-       "a62999cb3218fa974ff4be8fc773882313bb6d1a",
+       "96ae131d4cb5987dd5d6d9ae08684d8b53f2168f",
        [
         null,
         {}
@@ -310305,6 +310960,13 @@
        {}
       ]
      ],
+     "multicol-span-all-016.html": [
+      "87c4b5812e6adede5bff8251772f32c46ff97597",
+      [
+       null,
+       {}
+      ]
+     ],
      "parsing": {
       "column-count-computed.html": [
        "702632d2dd4d306368951af65e9c32d7f2e2f554",
@@ -311151,85 +311813,22 @@
         {}
        ]
       ],
-      "inset-after-computed.html": [
-       "b095809f8c80ef1a8150f3cffbe0e391b054e641",
+      "inset-computed.html": [
+       "2a52785e3299d40d2da3c29876087d3ff431ab58",
        [
         null,
         {}
        ]
       ],
-      "inset-after-invalid.html": [
-       "3fccd7320063ffc50cd938fdf1056a998002e0be",
+      "inset-invalid.html": [
+       "a96d6253826a4d3a94a4f5f5257e252b06d8db5d",
        [
         null,
         {}
        ]
       ],
-      "inset-after-valid.html": [
-       "27734a59e69a0a9b0498c9af2932e21b8e18784e",
-       [
-        null,
-        {}
-       ]
-      ],
-      "inset-before-computed.html": [
-       "088a95714b91c1eae73a29a583ef721857e2127c",
-       [
-        null,
-        {}
-       ]
-      ],
-      "inset-before-invalid.html": [
-       "133afc23fb9aacac1b5e71a559978d69550f43ef",
-       [
-        null,
-        {}
-       ]
-      ],
-      "inset-before-valid.html": [
-       "a802ddb1b48edade7ee1538e6061b488a56b7a54",
-       [
-        null,
-        {}
-       ]
-      ],
-      "inset-end-computed.html": [
-       "ddc18ced27c5e3ea4b44b4f0e1819b64e91d8bae",
-       [
-        null,
-        {}
-       ]
-      ],
-      "inset-end-invalid.html": [
-       "b0e66bb7c24f6c0a5f349789c3abdfcf1c4dcd5b",
-       [
-        null,
-        {}
-       ]
-      ],
-      "inset-end-valid.html": [
-       "2271ae645544f6e7b83615b4c1b62246c5d199c9",
-       [
-        null,
-        {}
-       ]
-      ],
-      "inset-start-computed.html": [
-       "f92202f1c3b92052becc6031c5f4ea9daadd0324",
-       [
-        null,
-        {}
-       ]
-      ],
-      "inset-start-invalid.html": [
-       "2f7a9496ba87af211fe2734ca8f83ccef40a2a87",
-       [
-        null,
-        {}
-       ]
-      ],
-      "inset-start-valid.html": [
-       "e74b205ffbc62252023bc6561c536d76879b0702",
+      "inset-valid.html": [
+       "0faab9873761165d3ccb95377f07510654cd0cbf",
        [
         null,
         {}
@@ -313294,6 +313893,15 @@
        {}
       ]
      ],
+     "invalidation-part-pseudo.html": [
+      "fca4a964dce5c5c61b8f4fed4ef25510a9099298",
+      [
+       null,
+       {
+        "testdriver": true
+       }
+      ]
+     ],
      "multiple-parts.html": [
       "de02a26e164d283e4f05a0d8eba0f6b98c778700",
       [
@@ -314893,7 +315501,7 @@
       ]
      ],
      "absolute-tables-003.html": [
-      "352d8cd6270c3c731aad09a3e8a62b5583a23b9c",
+      "a4f945e38420314fd0b1c767cb5641be32ae06bb",
       [
        null,
        {}
@@ -314907,7 +315515,7 @@
       ]
      ],
      "absolute-tables-005.html": [
-      "57c3f0dea3a56f0281a44e6be019c3ecc9866937",
+      "24444d3b44ee34ba4f65623c73e8101905632bd0",
       [
        null,
        {}
@@ -318203,7 +318811,7 @@
        ]
       ],
       "transform-interpolation-computed-value.html": [
-       "80d2a37f4c9aaf6224d8f729214259157b0eefa7",
+       "6209b4e9c247974d64f0c58410ec68b6979026a5",
        [
         null,
         {}
@@ -319906,6 +320514,13 @@
        ]
       },
       "properties": {
+       "accent-color.html": [
+        "8cd0b986e8665ee6a4e9830b9346f5a4957b89b8",
+        [
+         null,
+         {}
+        ]
+       ],
        "alignment-baseline.html": [
         "aab4a6a5c30b00be831173887230b58c59f8cc09",
         [
@@ -321556,7 +322171,7 @@
     },
     "css-ui": {
      "accent-color-computed.html": [
-      "896e4bb36d92f9ce4ba2598ce63484bf3e53c658",
+      "10e080104d7d547757e0e2fc1ea5b47179d2aa5b",
       [
        null,
        {}
@@ -321570,6 +322185,13 @@
       ]
      ],
      "animation": {
+      "accent-color-interpolation.html": [
+       "20d87c4e52cb21a115cd1453bd20595c06aa1afb",
+       [
+        null,
+        {}
+       ]
+      ],
       "caret-color-composition.html": [
        "6c69578677896e2463331deba85731e13fd94a25",
        [
@@ -322390,7 +323012,7 @@
       ]
      ],
      "minmax-percentage-serialize.html": [
-      "f1cb5081a6d341cbba638ca7f1ecdb302813bc8f",
+      "65ab9fad961feb87d82955c30659321423a04e3a",
       [
        null,
        {}
@@ -325640,7 +326262,7 @@
       ]
      ],
      "test_media_queries.html": [
-      "ca56082d144f9ddc924b1898d9bd63bac45fe359",
+      "7aa91989470da18ba77562614c6c04c73c8ddf8a",
       [
        null,
        {}
@@ -326153,6 +326775,15 @@
        }
       ]
      ],
+     "focus-visible-022.tentative.html": [
+      "e2692a6bec8f8ef72a58c7d2b6fe3f226674677f",
+      [
+       null,
+       {
+        "testdriver": true
+       }
+      ]
+     ],
      "focus-visible-script-focus-001.html": [
       "df6d9158b7cf3e829343834f1c5a499a15016434",
       [
@@ -328295,7 +328926,7 @@
       ]
      ],
      "AddEventListenerOptions-signal.any.js": [
-      "42871061f3b9167cfa28e536b8608844684427d6",
+      "dc401e3bb5a3e8816845d7afa1c02b3084587a0f",
       [
        "dom/events/AddEventListenerOptions-signal.any.html",
        {}
@@ -328696,7 +329327,7 @@
        {}
       ]
      ],
-     "document-level-touchmove-event-listener-passive-by-default.html": [
+     "document-level-touchmove-event-listener-passive-by-default.tentative.html": [
       "f3f0d58209fd8edda4fa1cc092dbe8d19bc4f143",
       [
        null,
@@ -328705,7 +329336,7 @@
        }
       ]
      ],
-     "document-level-wheel-event-listener-passive-by-default.html": [
+     "document-level-wheel-event-listener-passive-by-default.tentative.html": [
       "b7224835fa398b3a81415af4ff288899bf53c266",
       [
        null,
@@ -355549,105 +356180,6 @@
      ]
     },
     "private-network-access": {
-     "idlharness.tentative.any.js": [
-      "5a7726f4fdc02dfe29807783c45fbd347681552a",
-      [
-       "fetch/private-network-access/idlharness.tentative.any.html",
-       {
-        "script_metadata": [
-         [
-          "global",
-          "window,worker"
-         ],
-         [
-          "script",
-          "/resources/WebIDLParser.js"
-         ],
-         [
-          "script",
-          "/resources/idlharness.js"
-         ],
-         [
-          "timeout",
-          "long"
-         ]
-        ],
-        "timeout": "long"
-       }
-      ],
-      [
-       "fetch/private-network-access/idlharness.tentative.any.serviceworker.html",
-       {
-        "script_metadata": [
-         [
-          "global",
-          "window,worker"
-         ],
-         [
-          "script",
-          "/resources/WebIDLParser.js"
-         ],
-         [
-          "script",
-          "/resources/idlharness.js"
-         ],
-         [
-          "timeout",
-          "long"
-         ]
-        ],
-        "timeout": "long"
-       }
-      ],
-      [
-       "fetch/private-network-access/idlharness.tentative.any.sharedworker.html",
-       {
-        "script_metadata": [
-         [
-          "global",
-          "window,worker"
-         ],
-         [
-          "script",
-          "/resources/WebIDLParser.js"
-         ],
-         [
-          "script",
-          "/resources/idlharness.js"
-         ],
-         [
-          "timeout",
-          "long"
-         ]
-        ],
-        "timeout": "long"
-       }
-      ],
-      [
-       "fetch/private-network-access/idlharness.tentative.any.worker.html",
-       {
-        "script_metadata": [
-         [
-          "global",
-          "window,worker"
-         ],
-         [
-          "script",
-          "/resources/WebIDLParser.js"
-         ],
-         [
-          "script",
-          "/resources/idlharness.js"
-         ],
-         [
-          "timeout",
-          "long"
-         ]
-        ],
-        "timeout": "long"
-       }
-      ]
-     ],
      "non-secure-context.window.js": [
       "47e08e8b77962d871cf7bdfad18e26d6df619c35",
       [
@@ -359653,7 +360185,7 @@
         ]
        ],
        "cross-origin-objects.html": [
-        "577129502426989888a1791f78df46b6ed23c55e",
+        "d1b6cabc0f4703e3e2982c89765d0a6a1f2fabc4",
         [
          null,
          {
@@ -360696,7 +361228,7 @@
         ]
        ],
        "window-named-properties.html": [
-        "a0bdb1be1ed96d812408ea0e72db1ae885a9a3b5",
+        "0ec25812d0b8fe07b7951a9a211481f3d8149bc9",
         [
          null,
          {}
@@ -364442,6 +364974,13 @@
          {}
         ]
        ],
+       "2d.filter.canvasFilterObject.convolveMatrix.exceptions.html": [
+        "dd7b57c069dbe479cc21368b2a19b1e1fa95b098",
+        [
+         null,
+         {}
+        ]
+       ],
        "2d.filter.canvasFilterObject.html": [
         "c4a0838d4fa647d7cdf712b26ae8645acee5be38",
         [
@@ -367601,27 +368140,6 @@
          {}
         ]
        ],
-       "2d.transformation.rotate3d.X.html": [
-        "42a4e3c45a0f3a1fa5656c57b269e01c133e37da",
-        [
-         null,
-         {}
-        ]
-       ],
-       "2d.transformation.rotate3d.Y.html": [
-        "5006769fa400b65d8263e25bf55f1aca1c8ec1fa",
-        [
-         null,
-         {}
-        ]
-       ],
-       "2d.transformation.rotate3d.Z.html": [
-        "71e113dfe5ba707a43fc1a1ab33256ebd38614f4",
-        [
-         null,
-         {}
-        ]
-       ],
        "2d.transformation.rotate3d.html": [
         "104e0870f27c5464ef107e978740364e0c11c523",
         [
@@ -367629,6 +368147,27 @@
          {}
         ]
        ],
+       "2d.transformation.rotate3d.x.html": [
+        "284ffd484aaf0008187548ad6ea5b0ebf284e9d6",
+        [
+         null,
+         {}
+        ]
+       ],
+       "2d.transformation.rotate3d.y.html": [
+        "d1dae9653e1d8afc944ea9410f2a23ea1593b777",
+        [
+         null,
+         {}
+        ]
+       ],
+       "2d.transformation.rotate3d.z.html": [
+        "2012a12368385ccc6773dd9a6102f058ab4e8b2d",
+        [
+         null,
+         {}
+        ]
+       ],
        "2d.transformation.rotateAxis.html": [
         "be0785a7d3606dbc5f0e1a77cb176d996ce375f3",
         [
@@ -373352,19 +373891,33 @@
         ]
        ],
        "2d.filter.canvasFilterObject.colorMatrix.html": [
-        "ed4fe910437b22e13a19694f7d09a997fcc77f56",
+        "e11013e25b8a58f1967be2050611664922b7455f",
         [
          null,
          {}
         ]
        ],
        "2d.filter.canvasFilterObject.colorMatrix.worker.js": [
-        "a2f73e09e2f7f88fae90c83a547d239bb14b0526",
+        "3b4959d44f1ea40277f4d8767efc2e24f57d83cd",
         [
          "html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.worker.html",
          {}
         ]
        ],
+       "2d.filter.canvasFilterObject.convolveMatrix.exceptions.html": [
+        "e8838ff51bb12e3ec71175875f4b4abc539609d9",
+        [
+         null,
+         {}
+        ]
+       ],
+       "2d.filter.canvasFilterObject.convolveMatrix.exceptions.worker.js": [
+        "de249c52d0a7db746310dd26e588c3c485f150fe",
+        [
+         "html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.worker.html",
+         {}
+        ]
+       ],
        "2d.filter.canvasFilterObject.html": [
         "8e2e2d8ba95efd638f0a6b54a702e55f55ae910b",
         [
@@ -379686,6 +380239,20 @@
          {}
         ]
        ],
+       "2d.transformation.perspective.html": [
+        "e6bc88095c8c2e30123ead1bf56b7fe2dfb8caad",
+        [
+         null,
+         {}
+        ]
+       ],
+       "2d.transformation.perspective.worker.js": [
+        "a155ebfeb98475acc0b2bd16156fdec62689be93",
+        [
+         "html/canvas/offscreen/transformations/2d.transformation.perspective.worker.html",
+         {}
+        ]
+       ],
        "2d.transformation.rotate.direction.html": [
         "1f32f8df99ca84148928bebde8c60a84afe6d202",
         [
@@ -379770,6 +380337,90 @@
          {}
         ]
        ],
+       "2d.transformation.rotate3d.html": [
+        "4925c114efdeba8e5c04182dbbe8d950a9da1c06",
+        [
+         null,
+         {}
+        ]
+       ],
+       "2d.transformation.rotate3d.worker.js": [
+        "785b0e233dd45d31921ce7a7cd124b6fb71754ac",
+        [
+         "html/canvas/offscreen/transformations/2d.transformation.rotate3d.worker.html",
+         {}
+        ]
+       ],
+       "2d.transformation.rotate3d.x.html": [
+        "2905ac390aa68779caef81333f03acbdeacd8c2a",
+        [
+         null,
+         {}
+        ]
+       ],
+       "2d.transformation.rotate3d.x.worker.js": [
+        "fcee7c17146822bb04b8edac9b4f9952d02d7434",
+        [
+         "html/canvas/offscreen/transformations/2d.transformation.rotate3d.x.worker.html",
+         {}
+        ]
+       ],
+       "2d.transformation.rotate3d.y.html": [
+        "27b4eff56927c4df0a5426478c4591be7f7cf904",
+        [
+         null,
+         {}
+        ]
+       ],
+       "2d.transformation.rotate3d.y.worker.js": [
+        "c4cfd34340143b664b349ffae35592f5660e0113",
+        [
+         "html/canvas/offscreen/transformations/2d.transformation.rotate3d.y.worker.html",
+         {}
+        ]
+       ],
+       "2d.transformation.rotate3d.z.html": [
+        "96405e804fa2bf8c2774e97e44d1d68a79f4a64e",
+        [
+         null,
+         {}
+        ]
+       ],
+       "2d.transformation.rotate3d.z.worker.js": [
+        "f3c59135387d89b114e4f53fb89c62f54e4de660",
+        [
+         "html/canvas/offscreen/transformations/2d.transformation.rotate3d.z.worker.html",
+         {}
+        ]
+       ],
+       "2d.transformation.rotateAxis.html": [
+        "d7257a23b49219221f31b13f11d4cfcd97d099fe",
+        [
+         null,
+         {}
+        ]
+       ],
+       "2d.transformation.rotateAxis.worker.js": [
+        "f17356c075851ee20435b75d89d92b56a4d329f9",
+        [
+         "html/canvas/offscreen/transformations/2d.transformation.rotateAxis.worker.html",
+         {}
+        ]
+       ],
+       "2d.transformation.scale.3d.html": [
+        "ffd2287939dd0fd706dad3932e63ed4a1194a650",
+        [
+         null,
+         {}
+        ]
+       ],
+       "2d.transformation.scale.3d.worker.js": [
+        "692967f48a8eeca7e6e98eb7f1f1f7655a096830",
+        [
+         "html/canvas/offscreen/transformations/2d.transformation.scale.3d.worker.html",
+         {}
+        ]
+       ],
        "2d.transformation.scale.basic.html": [
         "60ba3593f480fe71ba0f991a3afa06cf634c98f0",
         [
@@ -379854,6 +380505,20 @@
          {}
         ]
        ],
+       "2d.transformation.setTransform.3d.html": [
+        "fb31cda3f5731746a80128a48cbc5804ef79e183",
+        [
+         null,
+         {}
+        ]
+       ],
+       "2d.transformation.setTransform.3d.worker.js": [
+        "aa6c033f81c4cd52a9aa260783adb473993eaac8",
+        [
+         "html/canvas/offscreen/transformations/2d.transformation.setTransform.3d.worker.html",
+         {}
+        ]
+       ],
        "2d.transformation.setTransform.multiple.html": [
         "4d73261d7f22bfa1e77df20cb28189326e4baf75",
         [
@@ -379896,6 +380561,20 @@
          {}
         ]
        ],
+       "2d.transformation.transform.3d.html": [
+        "2dfc718eab0f4ba23683365e9915f29a0a9388d8",
+        [
+         null,
+         {}
+        ]
+       ],
+       "2d.transformation.transform.3d.worker.js": [
+        "976c4e0b0fcd497ac3bf2863bbd013fc007f79d4",
+        [
+         "html/canvas/offscreen/transformations/2d.transformation.transform.3d.worker.html",
+         {}
+        ]
+       ],
        "2d.transformation.transform.identity.html": [
         "747454ae9180bc5671199489486ce8182dfb7f88",
         [
@@ -379952,6 +380631,20 @@
          {}
         ]
        ],
+       "2d.transformation.translate.3d.html": [
+        "73abc7eda2854804a931fc3f1160fea56bd0add1",
+        [
+         null,
+         {}
+        ]
+       ],
+       "2d.transformation.translate.3d.worker.js": [
+        "4336022e71e1a0d0bd294ca61b82e4f81a290ffc",
+        [
+         "html/canvas/offscreen/transformations/2d.transformation.translate.3d.worker.html",
+         {}
+        ]
+       ],
        "2d.transformation.translate.basic.html": [
         "1163ee555a03794cbabe164a9e43c44d44498cb5",
         [
@@ -389527,7 +390220,7 @@
         ]
        ],
        "newline-normalization.html": [
-        "b49468e19991e9309282e3068efff859d1c66751",
+        "2c83c5a1e9a07c02f4443bfd96b0a15411a5f288",
         [
          null,
          {}
@@ -391019,6 +391712,13 @@
          null,
          {}
         ]
+       ],
+       "wrapping-transformation.window.js": [
+        "c5c28a4854bb0690831f2be3a12de5cfad4c909f",
+        [
+         "html/semantics/forms/the-textarea-element/wrapping-transformation.window.html",
+         {}
+        ]
        ]
       }
      },
@@ -400402,7 +401102,7 @@
       ]
      ],
      "delete_all_cookies.html": [
-      "14b7d5861b7f60ae329d99b29dbbe12a25cc8c0b",
+      "8d7b82ab04d968a3fad3b7796a2d5c341c06c91c",
       [
        null,
        {
@@ -401910,6 +402610,15 @@
       {}
      ]
     ],
+    "mousemove-becomes-drag.html": [
+     "df4a416c81cd0ebaccfe2b0a041ca88ef34dc4e4",
+     [
+      null,
+      {
+       "testdriver": true
+      }
+     ]
+    ],
     "move-distance-clamped.html": [
      "5854fe08d156f52260fb9eeb8980d31a3ae91077",
      [
@@ -403491,7 +404200,7 @@
    },
    "measure-memory": {
     "detached.https.window.js": [
-     "430cb2dbb701bd88683782169840cab41fbbd733",
+     "1fcedef54c787bbcab39508a8c266a8bfa439227",
      [
       "measure-memory/detached.https.window.html",
       {
@@ -403502,6 +404211,10 @@
         ],
         [
          "script",
+         "./resources/checker.js"
+        ],
+        [
+         "script",
          "./resources/common.js"
         ],
         [
@@ -403536,7 +404249,7 @@
      ]
     ],
     "iframe.cross-origin.https.window.js": [
-     "d977c3a84ee950915e41ce576e86359a3eb7cb63",
+     "de256ad83f83b486931bddc6931462f980b7ae51",
      [
       "measure-memory/iframe.cross-origin.https.window.html",
       {
@@ -403547,6 +404260,10 @@
         ],
         [
          "script",
+         "./resources/checker.js"
+        ],
+        [
+         "script",
          "./resources/common.js"
         ],
         [
@@ -403559,7 +404276,7 @@
      ]
     ],
     "iframe.cross-site.https.window.js": [
-     "919bc3e215a62fa1c03aca3d5142ae00431a5b8d",
+     "a4c50a5687e4bc75c6e127874a56668e8354a19b",
      [
       "measure-memory/iframe.cross-site.https.window.html",
       {
@@ -403570,6 +404287,10 @@
         ],
         [
          "script",
+         "./resources/checker.js"
+        ],
+        [
+         "script",
          "./resources/common.js"
         ],
         [
@@ -403582,7 +404303,7 @@
      ]
     ],
     "iframe.same-origin.https.window.js": [
-     "10fad71a750edfc5ac72d79b8d5fb4baf650515f",
+     "5d710bd1dd89d7ccdea956a29b0eebc095c286d8",
      [
       "measure-memory/iframe.same-origin.https.window.html",
       {
@@ -403593,6 +404314,10 @@
         ],
         [
          "script",
+         "./resources/checker.js"
+        ],
+        [
+         "script",
          "./resources/common.js"
         ],
         [
@@ -403605,7 +404330,7 @@
      ]
     ],
     "main-frame-and-worker.https.window.js": [
-     "43c27904e644b77b1152658d6087e78f5c7ba5ba",
+     "a1a5a5a6c3ad7c28692d830ea6357c6c30743d98",
      [
       "measure-memory/main-frame-and-worker.https.window.html",
       {
@@ -403616,6 +404341,10 @@
         ],
         [
          "script",
+         "./resources/checker.js"
+        ],
+        [
+         "script",
          "./resources/common.js"
         ],
         [
@@ -403628,7 +404357,7 @@
      ]
     ],
     "main-frame.https.window.js": [
-     "750017095f6d09bf515d07c5d1fdd4d9540a826b",
+     "1119ca4446451d3004543e257482a203f17a87e3",
      [
       "measure-memory/main-frame.https.window.html",
       {
@@ -403639,6 +404368,10 @@
         ],
         [
          "script",
+         "./resources/checker.js"
+        ],
+        [
+         "script",
          "./resources/common.js"
         ],
         [
@@ -403651,7 +404384,7 @@
      ]
     ],
     "randomized-breakdown.https.window.js": [
-     "2ad8535476b2db14e8c4f2d99d65a41c22d6a2a7",
+     "09937d51158d32bd67f5d95df033a87c3134fd27",
      [
       "measure-memory/randomized-breakdown.https.window.html",
       {
@@ -403662,6 +404395,10 @@
         ],
         [
          "script",
+         "./resources/checker.js"
+        ],
+        [
+         "script",
          "./resources/common.js"
         ],
         [
@@ -403674,7 +404411,7 @@
      ]
     ],
     "redirect.client.https.window.js": [
-     "9cad328bd92d6f5164c96ce8cb050b398e8f3428",
+     "a78a7ddfdc95404ca05a03b473fc03740e6a2e0e",
      [
       "measure-memory/redirect.client.https.window.html",
       {
@@ -403685,6 +404422,10 @@
         ],
         [
          "script",
+         "./resources/checker.js"
+        ],
+        [
+         "script",
          "./resources/common.js"
         ],
         [
@@ -403697,7 +404438,7 @@
      ]
     ],
     "redirect.server.https.window.js": [
-     "2c32de2d0dbd62371d546677bead76dad0d73496",
+     "98273edec27f40ffd5b228a9ab11038081e2d7c7",
      [
       "measure-memory/redirect.server.https.window.html",
       {
@@ -403708,6 +404449,10 @@
         ],
         [
          "script",
+         "./resources/checker.js"
+        ],
+        [
+         "script",
          "./resources/common.js"
         ],
         [
@@ -403719,8 +404464,49 @@
       }
      ]
     ],
+    "service-worker.https.any.js": [
+     "c0251114dd6ae5760667422a237e04ea03162887",
+     [
+      "measure-memory/service-worker.https.any.serviceworker.html",
+      {
+       "script_metadata": [
+        [
+         "script",
+         "./resources/checker.js"
+        ],
+        [
+         "timeout",
+         "long"
+        ],
+        [
+         "global",
+         "serviceworker"
+        ]
+       ],
+       "timeout": "long"
+      }
+     ]
+    ],
+    "shared-worker.https.any.js": [
+     "4e359ad3fe6cbe528d6377a273afa0df0bbaeec5",
+     [
+      "measure-memory/shared-worker.https.any.sharedworker.html",
+      {
+       "script_metadata": [
+        [
+         "script",
+         "./resources/checker.js"
+        ],
+        [
+         "global",
+         "sharedworker"
+        ]
+       ]
+      }
+     ]
+    ],
     "window-open.cross-origin.https.window.js": [
-     "9a054301e8fe8747aa13e0941b60e1548a4bee35",
+     "5305b1c0b0796ee3f96d73702a2154377b301a0b",
      [
       "measure-memory/window-open.cross-origin.https.window.html",
       {
@@ -403731,6 +404517,10 @@
         ],
         [
          "script",
+         "./resources/checker.js"
+        ],
+        [
+         "script",
          "./resources/common.js"
         ],
         [
@@ -403743,7 +404533,7 @@
      ]
     ],
     "window-open.cross-site.https.window.js": [
-     "a5fc1d31bd9d2a8c79595da9bd0b27045bf55cf4",
+     "3a9481fae6b13c1e4afa704de65052c88b5cdfb0",
      [
       "measure-memory/window-open.cross-site.https.window.html",
       {
@@ -403754,6 +404544,10 @@
         ],
         [
          "script",
+         "./resources/checker.js"
+        ],
+        [
+         "script",
          "./resources/common.js"
         ],
         [
@@ -403766,7 +404560,7 @@
      ]
     ],
     "window-open.mix.https.window.js": [
-     "91d13a5009e64954f4c4f8032bf142690b4e54a1",
+     "2b4c9e57aadadbe5f6fa5f94e0274c0ee821ca5c",
      [
       "measure-memory/window-open.mix.https.window.html",
       {
@@ -403777,6 +404571,10 @@
         ],
         [
          "script",
+         "./resources/checker.js"
+        ],
+        [
+         "script",
          "./resources/common.js"
         ],
         [
@@ -403789,7 +404587,7 @@
      ]
     ],
     "window-open.same-origin.https.window.js": [
-     "ee4a59e5bc74cb466533b9688dd095a3399fede5",
+     "f0ff6f2cd765622466e01e8a167cb25ea47b6795",
      [
       "measure-memory/window-open.same-origin.https.window.html",
       {
@@ -403800,6 +404598,10 @@
         ],
         [
          "script",
+         "./resources/checker.js"
+        ],
+        [
+         "script",
          "./resources/common.js"
         ],
         [
@@ -403840,6 +404642,13 @@
       }
      ]
     ],
+    "decodingInfo.webrtc.html": [
+     "91f03bd692ba70510e3e77704c85d8395d4c1d92",
+     [
+      null,
+      {}
+     ]
+    ],
     "decodingInfoEncryptedMedia.http.html": [
      "267b23431b7fdf3baf3d4843d68778bb1cc15c85",
      [
@@ -403848,7 +404657,7 @@
      ]
     ],
     "decodingInfoEncryptedMedia.https.html": [
-     "09422840093cd13ac09c9eaf5120a558ba29099a",
+     "7ac914de89ddc0f7bee0169a7c7cee04ab261f2b",
      [
       null,
       {
@@ -404332,7 +405141,7 @@
      ]
     ],
     "mediasource-is-type-supported.html": [
-     "f7c6bdc223d3387604f1b465e7d4c0f4f6c9618e",
+     "1981af7b94138840d269e27d42d31896233dfd85",
      [
       null,
       {}
@@ -414513,6 +415322,26 @@
      ]
     ]
    },
+   "private-click-measurement": {
+    "idlharness.window.js": [
+     "1d0539a7bf56d071d247cded4ed2f4555b34bf6f",
+     [
+      "private-click-measurement/idlharness.window.html",
+      {
+       "script_metadata": [
+        [
+         "script",
+         "/resources/WebIDLParser.js"
+        ],
+        [
+         "script",
+         "/resources/idlharness.js"
+        ]
+       ]
+      }
+     ]
+    ]
+   },
    "push-api": {
     "idlharness.https.any.js": [
      "c0e278eb5742b50802f5f40824acba21ed8fc70f",
@@ -426733,6 +427562,13 @@
       {}
      ]
     ],
+    "TAO-match.html": [
+     "bd0e8dbb35b57405a909b11450ea70107e4a4c65",
+     [
+      null,
+      {}
+     ]
+    ],
     "TAO-null-opaque-origin.html": [
      "6548a7b9ad437407eaded2c6efc4974dec242ecd",
      [
@@ -427050,13 +427886,6 @@
       {}
      ]
     ],
-    "resource-TAO-match-origin.html": [
-     "7e738f9c9c5b591f9001f8611ae0248bf76e9f3f",
-     [
-      null,
-      {}
-     ]
-    ],
     "resource-ignore-data-url.html": [
      "a7056a80807967d9b94b1d4c54c0620dc2a4bad8",
      [
@@ -427094,69 +427923,6 @@
       {}
      ]
     ],
-    "resource_TAO_match_wildcard.html": [
-     "fe812f86774443cc40fc0abf40418fa95fda4763",
-     [
-      null,
-      {}
-     ]
-    ],
-    "resource_TAO_multi.html": [
-     "bb774abc6021a4abd041076afeee3e9d38acc7e0",
-     [
-      null,
-      {}
-     ]
-    ],
-    "resource_TAO_multi_wildcard.html": [
-     "844896087d45a45369243ce80987876970f40620",
-     [
-      null,
-      {}
-     ]
-    ],
-    "resource_TAO_null.html": [
-     "1a86e09c56753f0bb4319637a601b0acb09ac62e",
-     [
-      null,
-      {}
-     ]
-    ],
-    "resource_TAO_origin.html": [
-     "a0c0465e72660fb8aec6625493a0e0e183d6bc18",
-     [
-      null,
-      {}
-     ]
-    ],
-    "resource_TAO_origin_uppercase.html": [
-     "1a03c71410643866b9073db5d7b4c3402ea47fec",
-     [
-      null,
-      {}
-     ]
-    ],
-    "resource_TAO_space.html": [
-     "9efefe15a4f1d43d2b0f16e9636759338a4c2afc",
-     [
-      null,
-      {}
-     ]
-    ],
-    "resource_TAO_wildcard.html": [
-     "df278534cc49d46bad7967084b011cf6e93e3876",
-     [
-      null,
-      {}
-     ]
-    ],
-    "resource_TAO_zero.html": [
-     "a15f54d0134a82be3c4987ac09017fe317d2fc3a",
-     [
-      null,
-      {}
-     ]
-    ],
     "resource_cached.html": [
      "fd61d639616b1802ff4b63de82a01ffd701f814e",
      [
@@ -427294,6 +428060,171 @@
       }
      ]
     ],
+    "sizes-cache.any.js": [
+     "af70e5a6ded3e63d158fd929feacf0827b3cafc9",
+     [
+      "resource-timing/sizes-cache.any.html",
+      {
+       "script_metadata": [
+        [
+         "global",
+         "window,worker"
+        ],
+        [
+         "script",
+         "/resource-timing/resources/sizes-helper.js"
+        ],
+        [
+         "script",
+         "/resource-timing/resources/resource-loaders.js"
+        ]
+       ]
+      }
+     ],
+     [
+      "resource-timing/sizes-cache.any.serviceworker.html",
+      {
+       "script_metadata": [
+        [
+         "global",
+         "window,worker"
+        ],
+        [
+         "script",
+         "/resource-timing/resources/sizes-helper.js"
+        ],
+        [
+         "script",
+         "/resource-timing/resources/resource-loaders.js"
+        ]
+       ]
+      }
+     ],
+     [
+      "resource-timing/sizes-cache.any.sharedworker.html",
+      {
+       "script_metadata": [
+        [
+         "global",
+         "window,worker"
+        ],
+        [
+         "script",
+         "/resource-timing/resources/sizes-helper.js"
+        ],
+        [
+         "script",
+         "/resource-timing/resources/resource-loaders.js"
+        ]
+       ]
+      }
+     ],
+     [
+      "resource-timing/sizes-cache.any.worker.html",
+      {
+       "script_metadata": [
+        [
+         "global",
+         "window,worker"
+        ],
+        [
+         "script",
+         "/resource-timing/resources/sizes-helper.js"
+        ],
+        [
+         "script",
+         "/resource-timing/resources/resource-loaders.js"
+        ]
+       ]
+      }
+     ]
+    ],
+    "sizes-redirect-img.html": [
+     "786018d0c4634c3d8c6df2c4003b201e6e4bc4e1",
+     [
+      null,
+      {}
+     ]
+    ],
+    "sizes-redirect.any.js": [
+     "e483a4d409c6c2deee73fa213d698b95b865d0c8",
+     [
+      "resource-timing/sizes-redirect.any.html",
+      {
+       "script_metadata": [
+        [
+         "global",
+         "window,worker"
+        ],
+        [
+         "script",
+         "/common/get-host-info.sub.js"
+        ],
+        [
+         "script",
+         "/resource-timing/resources/sizes-helper.js"
+        ]
+       ]
+      }
+     ],
+     [
+      "resource-timing/sizes-redirect.any.serviceworker.html",
+      {
+       "script_metadata": [
+        [
+         "global",
+         "window,worker"
+        ],
+        [
+         "script",
+         "/common/get-host-info.sub.js"
+        ],
+        [
+         "script",
+         "/resource-timing/resources/sizes-helper.js"
+        ]
+       ]
+      }
+     ],
+     [
+      "resource-timing/sizes-redirect.any.sharedworker.html",
+      {
+       "script_metadata": [
+        [
+         "global",
+         "window,worker"
+        ],
+        [
+         "script",
+         "/common/get-host-info.sub.js"
+        ],
+        [
+         "script",
+         "/resource-timing/resources/sizes-helper.js"
+        ]
+       ]
+      }
+     ],
+     [
+      "resource-timing/sizes-redirect.any.worker.html",
+      {
+       "script_metadata": [
+        [
+         "global",
+         "window,worker"
+        ],
+        [
+         "script",
+         "/common/get-host-info.sub.js"
+        ],
+        [
+         "script",
+         "/resource-timing/resources/sizes-helper.js"
+        ]
+       ]
+      }
+     ]
+    ],
     "status-codes-create-entry.html": [
      "cc0cd8ccb88250331186c38554b09ff8515cacee",
      [
@@ -445268,6 +446199,13 @@
       {}
      ]
     ],
+    "url-setters-a-area.window.js": [
+     "8c66f2883d3c2e864f4b3da3da9d5b48a4027136",
+     [
+      "url/url-setters-a-area.window.html",
+      {}
+     ]
+    ],
     "url-setters-stripping.any.js": [
      "3413c6cd5ad21d1913c00269ae054fdc2c7750d9",
      [
@@ -445279,10 +446217,14 @@
       {}
      ]
     ],
-    "url-setters.html": [
-     "db30cf0774da445a18d9a6755b97ad1e13083b99",
+    "url-setters.any.js": [
+     "1cddf94a8ecca9766638160d3770e6c7160cbbdc",
      [
-      null,
+      "url/url-setters.any.html",
+      {}
+     ],
+     [
+      "url/url-setters.any.worker.html",
       {}
      ]
     ],
@@ -446079,7 +447021,7 @@
      ]
     ],
     "request-video-frame-callback.html": [
-     "afc6b834d44b3e1e400c09f1c74dbfbb159fea3d",
+     "a4404143fa408ebbb8f49cc3180e065d200ffa4a",
      [
       null,
       {}
@@ -449922,14 +450864,14 @@
    "web-bundle": {
     "subresource-loading": {
      "csp-allowed.https.tentative.html": [
-      "72a7593c4a47cc343a805748f1c60f7bb55844eb",
+      "ceec6456405e20c6be25d7321584bc5549afcfb7",
       [
        null,
        {}
       ]
      ],
      "csp-blocked.https.tentative.html": [
-      "dc5ffb82f43812ace8f5b0347aa9be35f9c92829",
+      "319ae65c96776d6a8f13d50c836e9f7dd4e253c6",
       [
        null,
        {}
@@ -449950,7 +450892,7 @@
       ]
      ],
      "subframe-from-web-bundle.https.tentative.html": [
-      "f6f2b769d0f1230f225c8625a3982fea1bd4b15e",
+      "a5bd9bc2eb89e663391ce2b047f7648952f10360",
       [
        null,
        {}
@@ -452095,6 +453037,13 @@
         {}
        ]
       ],
+      "audioworklet-registerprocessor-called-on-globalthis.https.html": [
+       "718cadffc716f04548af6caeeca9e075846b6d46",
+       [
+        null,
+        {}
+       ]
+      ],
       "audioworklet-suspend.https.html": [
        "685546aeb5e2f96e77e9c88cec19946f2b0fcb16",
        [
@@ -452949,7 +453898,7 @@
      },
      "the-periodicwave-interface": {
       "periodicWave.html": [
-       "bd42453001498c990bea27424eb4164d3196aee0",
+       "9048b7f5dad775cfa55e4749ad7057bf1636efc5",
        [
         null,
         {}
@@ -455240,7 +456189,7 @@
      ]
     ],
     "RTCPeerConnection-getStats.https.html": [
-     "49f88131c3e1f75b8b7cb926792f9ac71f41e8ee",
+     "f26a93ea28999e241e7374ff9d07f39412816aa1",
      [
       null,
       {}
@@ -455286,7 +456235,7 @@
      ]
     ],
     "RTCPeerConnection-mandatory-getStats.https.html": [
-     "7da14cd5e0f3f5c7e807b61cb0e7ecc7216ff007",
+     "f80fa5fe1f465cf946347f30d06ef8a9052af45c",
      [
       null,
       {
@@ -455431,7 +456380,7 @@
      ]
     ],
     "RTCPeerConnection-setLocalDescription-pranswer.html": [
-     "e4296aef139f19d08229c9450f61c30706147d24",
+     "01845f09b16ce1ff03747f039dee5de89b19a5ae",
      [
       null,
       {}
@@ -456408,7 +457357,7 @@
    },
    "websockets": {
     "Close-1000-reason.any.js": [
-     "1b1a101e2dda1946443203bad933c4ef82dda10d",
+     "6fc3c1fade8e70ca67fae93501e08b05624fefe6",
      [
       "websockets/Close-1000-reason.any.html",
       {
@@ -456549,7 +457498,7 @@
      ]
     ],
     "Close-1000-verify-code.any.js": [
-     "5adad3dc950c06a8ed33b0cf9f5a307c3e862f02",
+     "de50130660291f9cabb2db5f6780ac0189cda83a",
      [
       "websockets/Close-1000-verify-code.any.html",
       {
@@ -456690,7 +457639,7 @@
      ]
     ],
     "Close-1000.any.js": [
-     "6a3e73e349f2d1086dfae2fa54c5b7af4ab801f1",
+     "f3100c6caaa3d2524be6721e41153a123f86ef2d",
      [
       "websockets/Close-1000.any.html",
       {
@@ -456831,7 +457780,7 @@
      ]
     ],
     "Close-1005-verify-code.any.js": [
-     "34ebfc99c2fb974fe9efa8cbff3f4c15f928a764",
+     "afa7d7b0d983fca5892cc602eae955f790a6b57f",
      [
       "websockets/Close-1005-verify-code.any.html",
       {
@@ -456972,7 +457921,7 @@
      ]
     ],
     "Close-1005.any.js": [
-     "681194a9989191dcd86bf561df6a1370719b264d",
+     "514d03ac632431737e821619a54309b8a250b41d",
      [
       "websockets/Close-1005.any.html",
       {
@@ -457113,7 +458062,7 @@
      ]
     ],
     "Close-2999-reason.any.js": [
-     "baaa456d1a8ee558331a08721f00ae78aba941b7",
+     "95e481e53cf38c805b8af0c15a594296981289bf",
      [
       "websockets/Close-2999-reason.any.html",
       {
@@ -457254,7 +458203,7 @@
      ]
     ],
     "Close-3000-reason.any.js": [
-     "4a048e278cf51ce3cdc6c8486efd8ef4edd6a9f5",
+     "2db122934c787abab8a4c4a7b398c54f763b9991",
      [
       "websockets/Close-3000-reason.any.html",
       {
@@ -457395,7 +458344,7 @@
      ]
     ],
     "Close-3000-verify-code.any.js": [
-     "1191dea1335db9edf1ae98938542857f284ea1af",
+     "bfa441f1ee4d6161c7c8f29a8d27d4145aef6795",
      [
       "websockets/Close-3000-verify-code.any.html",
       {
@@ -457536,7 +458485,7 @@
      ]
     ],
     "Close-4999-reason.any.js": [
-     "4112d0130f204f9c4d8f27be2121dfa777616276",
+     "3516dc2f462d97aa52a21f2d4d308c422423d12c",
      [
       "websockets/Close-4999-reason.any.html",
       {
@@ -457677,7 +458626,7 @@
      ]
     ],
     "Close-Reason-124Bytes.any.js": [
-     "f42b7f409b29f1a1d061e301351868c72fd225cd",
+     "aa7fc8ffe83818daeb7faf630e2196f454d0735c",
      [
       "websockets/Close-Reason-124Bytes.any.html",
       {
@@ -457818,7 +458767,7 @@
      ]
     ],
     "Close-onlyReason.any.js": [
-     "b99595cf523cad6a935b39f9b81bb979bc2d112f",
+     "7c5d10d2a833b97a32863e498f30c225774828ba",
      [
       "websockets/Close-onlyReason.any.html",
       {
@@ -457959,7 +458908,7 @@
      ]
     ],
     "Close-readyState-Closed.any.js": [
-     "f2878ad9243fbbbe8a1159cef09c68ae0108b331",
+     "bfd61c48c14aa28ca61f703937432a181f22cbd0",
      [
       "websockets/Close-readyState-Closed.any.html",
       {
@@ -458100,7 +459049,7 @@
      ]
     ],
     "Close-readyState-Closing.any.js": [
-     "bbed4edc6891e137d74e8b99647e5b97cb609a16",
+     "554744d6297e3b843a288393c9c0969dce7ca96b",
      [
       "websockets/Close-readyState-Closing.any.html",
       {
@@ -458241,7 +459190,7 @@
      ]
     ],
     "Close-reason-unpaired-surrogates.any.js": [
-     "5e0fbe21782e728b931262b1ef27f68d9025a8dc",
+     "647a1216b99ce4f89fe8f2bac65aa2f2bd35c1f6",
      [
       "websockets/Close-reason-unpaired-surrogates.any.html",
       {
@@ -458382,7 +459331,7 @@
      ]
     ],
     "Close-server-initiated-close.any.js": [
-     "c70477eeeaab655addf78fb422aa10ab7f5a55e3",
+     "c86793b23a1d8c9592d74c3f5e13dacd57e9a643",
      [
       "websockets/Close-server-initiated-close.any.html",
       {
@@ -458523,7 +459472,7 @@
      ]
     ],
     "Close-undefined.any.js": [
-     "9130aa1c75627f1306c6433b9059a865d307fe9e",
+     "a8106c6f155a7aa8357529be3f39c1195ce686b9",
      [
       "websockets/Close-undefined.any.html",
       {
@@ -458946,7 +459895,7 @@
      ]
     ],
     "Create-extensions-empty.any.js": [
-     "b2de904144b880d5f3f514cca3a77bd722f954ed",
+     "1fba4bd2cc5a61556256167a97613d51517b210e",
      [
       "websockets/Create-extensions-empty.any.html",
       {
@@ -460091,7 +461040,7 @@
      ]
     ],
     "Create-valid-url-array-protocols.any.js": [
-     "3989616d02c8bcbe5f40457f7e696cc788fab3b8",
+     "00ab1ca9873248013dfaab04720befb8c0083f1f",
      [
       "websockets/Create-valid-url-array-protocols.any.html",
       {
@@ -460232,7 +461181,7 @@
      ]
     ],
     "Create-valid-url-binaryType-blob.any.js": [
-     "b161349a2b28a43b314a61bd1e18c312abe80b0c",
+     "59eec8e29d3e52648e21ace92a81df64bb65b1da",
      [
       "websockets/Create-valid-url-binaryType-blob.any.html",
       {
@@ -460514,7 +461463,7 @@
      ]
     ],
     "Create-valid-url-protocol-setCorrectly.any.js": [
-     "b4e34580f3e6b817fc459709280143fe09e414c8",
+     "bb1f32fbce1fa6a823db5947cc691e52ae02d8b9",
      [
       "websockets/Create-valid-url-protocol-setCorrectly.any.html",
       {
@@ -460655,7 +461604,7 @@
      ]
     ],
     "Create-valid-url-protocol-string.any.js": [
-     "46d613be1407b3a1eb3b7eb8403c9bb9e0afbed1",
+     "4f730db94f7ef2720f7d564e13b3740bd9554ba2",
      [
       "websockets/Create-valid-url-protocol-string.any.html",
       {
@@ -460796,7 +461745,7 @@
      ]
     ],
     "Create-valid-url-protocol.any.js": [
-     "7572d5967b0fd94be0a0712abd7d6b0fc8e5692f",
+     "599a9eb8f1b350cf79900620002c183aef4dd1d9",
      [
       "websockets/Create-valid-url-protocol.any.html",
       {
@@ -460937,7 +461886,7 @@
      ]
     ],
     "Create-valid-url.any.js": [
-     "f63d973a47097bb533c794603aeb07c13136f214",
+     "edb27f61d3c33c9028e4fd178d5a3d795ca23b1a",
      [
       "websockets/Create-valid-url.any.html",
       {
@@ -461219,7 +462168,7 @@
      ]
     ],
     "Send-0byte-data.any.js": [
-     "085c85229f978f95a7f8e02ea60e0d17590e019d",
+     "b984b641084a3cddbf1b757aa794532ab708000c",
      [
       "websockets/Send-0byte-data.any.html",
       {
@@ -461360,7 +462309,7 @@
      ]
     ],
     "Send-65K-data.any.js": [
-     "957fc4846b84ba779ad52be440bdc1e60477b532",
+     "5c3437999b99a40e0676534a9748e4d503b34f3e",
      [
       "websockets/Send-65K-data.any.html",
       {
@@ -461642,7 +462591,7 @@
      ]
     ],
     "Send-binary-65K-arraybuffer.any.js": [
-     "7269eb20640736cbe4e9e012c9132be61cdd1ea6",
+     "1e02ac2d37f99c5ab4d4d8b3639786b1a738db46",
      [
       "websockets/Send-binary-65K-arraybuffer.any.html",
       {
@@ -461783,7 +462732,7 @@
      ]
     ],
     "Send-binary-arraybuffer.any.js": [
-     "8b87f1b5954b2b5ce08416c86a32768b289005e0",
+     "5c985edd61638688eb73dd4ca7912372d123cac9",
      [
       "websockets/Send-binary-arraybuffer.any.html",
       {
@@ -461924,7 +462873,7 @@
      ]
     ],
     "Send-binary-arraybufferview-float32.any.js": [
-     "2e9fbaec95e025235504f715720a5ec7c39de306",
+     "9a8e3426f49c3ae6815f2a672be0c716569fdd0c",
      [
       "websockets/Send-binary-arraybufferview-float32.any.html",
       {
@@ -462065,7 +463014,7 @@
      ]
     ],
     "Send-binary-arraybufferview-float64.any.js": [
-     "375917753cf98386e03b34dab5eeee1b6550fefa",
+     "d71d2d8c58f5d5d0d285320d59e0f42c13e4031c",
      [
       "websockets/Send-binary-arraybufferview-float64.any.html",
       {
@@ -462206,7 +463155,7 @@
      ]
     ],
     "Send-binary-arraybufferview-int16-offset.any.js": [
-     "abed1bb24659fd7a4e16b1ba1b98df78837e6a48",
+     "bb77d300ad1f9c1d435a0c5e7b648b8e4d1f2b60",
      [
       "websockets/Send-binary-arraybufferview-int16-offset.any.html",
       {
@@ -462347,7 +463296,7 @@
      ]
     ],
     "Send-binary-arraybufferview-int32.any.js": [
-     "be08fc5d0ed8bfdc1505cfb0c431b12230f8b62d",
+     "f4312e410ab738f086b576fe656c9a4046fff266",
      [
       "websockets/Send-binary-arraybufferview-int32.any.html",
       {
@@ -462488,7 +463437,7 @@
      ]
     ],
     "Send-binary-arraybufferview-int8.any.js": [
-     "5ca9e64bfefd70d5dcacd9099ccc07513f344239",
+     "f2374fb413908548f9d9d5e4ada145dbac4af4cb",
      [
       "websockets/Send-binary-arraybufferview-int8.any.html",
       {
@@ -462629,7 +463578,7 @@
      ]
     ],
     "Send-binary-arraybufferview-uint16-offset-length.any.js": [
-     "dac79cbf547d776fb8d359f15c9850e75e90a08d",
+     "f917a3af007d8ca29df385c1397dbcb6378f526f",
      [
       "websockets/Send-binary-arraybufferview-uint16-offset-length.any.html",
       {
@@ -462770,7 +463719,7 @@
      ]
     ],
     "Send-binary-arraybufferview-uint32-offset.any.js": [
-     "46de94697ad41e39b1d5a7e9ba1bc7781aa6459d",
+     "33758dc65449e5fd662abd042be6373a1fd1abbe",
      [
       "websockets/Send-binary-arraybufferview-uint32-offset.any.html",
       {
@@ -462911,7 +463860,7 @@
      ]
     ],
     "Send-binary-arraybufferview-uint8-offset-length.any.js": [
-     "ec1a59a441b3de56055889d32be13d1dec3ee21b",
+     "1d256dbdca128771040325541ecb61f72a3e42c5",
      [
       "websockets/Send-binary-arraybufferview-uint8-offset-length.any.html",
       {
@@ -463052,7 +464001,7 @@
      ]
     ],
     "Send-binary-arraybufferview-uint8-offset.any.js": [
-     "7029080a068b585042ad3f4bdb7614c9735febfb",
+     "43e9fe6849919049af67a66c8b71cc3b5f159c14",
      [
       "websockets/Send-binary-arraybufferview-uint8-offset.any.html",
       {
@@ -463193,7 +464142,7 @@
      ]
     ],
     "Send-binary-blob.any.js": [
-     "c5f9031b5b0954deccf53917bba0ba00e9121d11",
+     "56c89a1b53c4e5e87fa30c3b64f669f7dfe94d78",
      [
       "websockets/Send-binary-blob.any.html",
       {
@@ -463334,7 +464283,7 @@
      ]
     ],
     "Send-data.any.js": [
-     "4d48f19dda4afe470e937e731a8c4a9925b784c8",
+     "203ab54dffc62b9b7b28e8344d573a0e911b9570",
      [
       "websockets/Send-data.any.html",
       {
@@ -463475,7 +464424,7 @@
      ]
     ],
     "Send-data.worker.js": [
-     "853725587f4dee557d6c7486806b59eed9e4e3af",
+     "b141fb382070307751b742f6f5f516fc32872264",
      [
       "websockets/Send-data.worker.html",
       {
@@ -463535,7 +464484,7 @@
      ]
     ],
     "Send-null.any.js": [
-     "4a77a5ff3ecf49c2f45b14a58723db87d769a136",
+     "a12eaf9c591af8ddfe95c75aef34cb5fd309d160",
      [
       "websockets/Send-null.any.html",
       {
@@ -463676,7 +464625,7 @@
      ]
     ],
     "Send-paired-surrogates.any.js": [
-     "6d7ab08b2122695c2d229aaca560c9d2c54c6eae",
+     "e2dc004bfcf4e9e5d1b71d65d8c69b2fd6efc715",
      [
       "websockets/Send-paired-surrogates.any.html",
       {
@@ -463817,7 +464766,7 @@
      ]
     ],
     "Send-unicode-data.any.js": [
-     "51bd15c5e92ddd6408099b6ced3aaad8c4cbdce2",
+     "f22094a243c96d1cb0777db3cfa975bf0fbff9e3",
      [
       "websockets/Send-unicode-data.any.html",
       {
@@ -463958,7 +464907,7 @@
      ]
     ],
     "Send-unpaired-surrogates.any.js": [
-     "8e06a4676b1623b75c28c8cc3b19228e457e1c9e",
+     "1cb5d0ac9cd49647fc384c077dbbc194a4edb051",
      [
       "websockets/Send-unpaired-surrogates.any.html",
       {
@@ -464287,7 +465236,7 @@
     ],
     "binary": {
      "001.html": [
-      "d20f5ad3490ce177cdf950de09f1ea4c13778e2c",
+      "21ffff40eb0f3fb225cecc2b698c54d779ab8d0b",
       [
        null,
        {}
@@ -464302,7 +465251,7 @@
       ]
      ],
      "002.html": [
-      "6bad9e95cae8fdfdd6e0b61babedf3c978c7076f",
+      "ffd1ee7a7a27510d88c23501791adef70e57572d",
       [
        null,
        {
@@ -464323,7 +465272,7 @@
       ]
      ],
      "004.html": [
-      "d679c5cec4005fb879785a602d1b48b11b17a83c",
+      "76bb902cf95b258d802a8c315179179cfd5a7822",
       [
        null,
        {
@@ -464344,7 +465293,7 @@
       ]
      ],
      "005.html": [
-      "e8c2b38eec8ac0d7a490b9bae77f7b815e4cc281",
+      "9b8b2c4edfd54049044e77e9d9d9ec0309c567a5",
       [
        null,
        {}
@@ -464360,7 +465309,7 @@
      ]
     },
     "binaryType-wrong-value.any.js": [
-     "9b382e8e0f244d0f255fd4d481bb9d9714f9816e",
+     "007510d030bff14d1cc0d5198f850d5ad5e96a48",
      [
       "websockets/binaryType-wrong-value.any.html",
       {
@@ -465637,7 +466586,7 @@
      ]
     ],
     "extended-payload-length.html": [
-     "62b5f923615dc1ed5536ac0aaa77ff8f39803d8f",
+     "23caedc461c475da25b5dea07aa6a8399c9183e1",
      [
       null,
       {
@@ -465692,7 +466641,7 @@
      "WebSocket": {
       "bufferedAmount": {
        "bufferedAmount-arraybuffer.html": [
-        "240660e0811976d6996e388125a3494a5e0e7386",
+        "258eaa782797bf94a5a7ce4030a4d64f5eb60cc9",
         [
          null,
          {}
@@ -465707,7 +466656,7 @@
         ]
        ],
        "bufferedAmount-blob.html": [
-        "4ed0d98d2fc8ffe572b43388c3405a6c269f8577",
+        "ac5140de6cc572f1a0b1f9fcf23a4e3722667440",
         [
          null,
          {}
@@ -465781,7 +466730,7 @@
         ]
        ],
        "bufferedAmount-large.html": [
-        "caf3368cdaeb580cc58c5ec42f96130b3b8e6732",
+        "e599614103b4d3abafdda20db8176dee1578380e",
         [
          null,
          {
@@ -465813,7 +466762,7 @@
         ]
        ],
        "bufferedAmount-unicode.html": [
-        "de08a73a6261c497ccc088fe58f13de422ddda8f",
+        "ba25caeb220e5d201d62616ea31a5b8e5f5007cc",
         [
          null,
          {}
@@ -466176,7 +467125,7 @@
         ]
        ],
        "018.html": [
-        "7b909cde2f8c0db972ce903b36476b953d1a11d4",
+        "3dc36d0c5f118bf9b8f0e0e0f593fbf14b82a0ff",
         [
          null,
          {}
@@ -466390,7 +467339,7 @@
         ]
        ],
        "006.html": [
-        "ec008e99bb95159ad3cc33687be5054d935e6fa7",
+        "a7c00b154f12898e2f2a022aa9c23434d8d595f1",
         [
          null,
          {}
@@ -468480,6 +469429,85 @@
       }
      ]
     ],
+    "idlharness.any.js": [
+     "1a22753926745107f1edc522d4a8040a048de509",
+     [
+      "webtransport/idlharness.any.html",
+      {
+       "script_metadata": [
+        [
+         "global",
+         "window,worker"
+        ],
+        [
+         "script",
+         "/resources/WebIDLParser.js"
+        ],
+        [
+         "script",
+         "/resources/idlharness.js"
+        ]
+       ]
+      }
+     ],
+     [
+      "webtransport/idlharness.any.serviceworker.html",
+      {
+       "script_metadata": [
+        [
+         "global",
+         "window,worker"
+        ],
+        [
+         "script",
+         "/resources/WebIDLParser.js"
+        ],
+        [
+         "script",
+         "/resources/idlharness.js"
+        ]
+       ]
+      }
+     ],
+     [
+      "webtransport/idlharness.any.sharedworker.html",
+      {
+       "script_metadata": [
+        [
+         "global",
+         "window,worker"
+        ],
+        [
+         "script",
+         "/resources/WebIDLParser.js"
+        ],
+        [
+         "script",
+         "/resources/idlharness.js"
+        ]
+       ]
+      }
+     ],
+     [
+      "webtransport/idlharness.any.worker.html",
+      {
+       "script_metadata": [
+        [
+         "global",
+         "window,worker"
+        ],
+        [
+         "script",
+         "/resources/WebIDLParser.js"
+        ],
+        [
+         "script",
+         "/resources/idlharness.js"
+        ]
+       ]
+      }
+     ]
+    ],
     "quic": {
      "client-indication.sub.any.js": [
       "62f2f3fe4d22bd767db78650c1cc9dda2053e6ce",
@@ -475246,7 +476274,7 @@
       ]
      ],
      "constructor-formelement.html": [
-      "cce0f428a20d2d49f2fb320a1ddeb201de2e0cdc",
+      "813e1d2a6c0ef432e743d4d1658deb8acefcbc18",
       [
        null,
        {}
@@ -489236,7 +490264,7 @@
      },
      "get_window_handle": {
       "get.py": [
-       "8c262033c3838abb406c6dcf9c44f248b327373b",
+       "68441da5ef8460bb472beecd2e31a6cc34f0faa3",
        [
         null,
         {}
@@ -489335,7 +490363,7 @@
      },
      "maximize_window": {
       "maximize.py": [
-       "6903eece70d02a47498586f0eca4e7bd75d469c0",
+       "e233e45a10d7136929380e2a80f5d6fdd0c32a9e",
        [
         null,
         {
diff --git a/third_party/blink/web_tests/external/wpt/WebCryptoAPI/META.yml b/third_party/blink/web_tests/external/wpt/WebCryptoAPI/META.yml
index 7cae5c0f..27a11a1 100644
--- a/third_party/blink/web_tests/external/wpt/WebCryptoAPI/META.yml
+++ b/third_party/blink/web_tests/external/wpt/WebCryptoAPI/META.yml
@@ -1 +1,3 @@
 spec: https://w3c.github.io/webcrypto/
+suggested_reviewers:
+  - twiss
diff --git a/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/class-string-named-properties-object.window.js b/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/class-string-named-properties-object.window.js
index cff2582f..a427a2f8 100644
--- a/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/class-string-named-properties-object.window.js
+++ b/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/class-string-named-properties-object.window.js
@@ -16,17 +16,6 @@
   assert_equals(Object.prototype.toString.call(namedPropertiesObject), "[object WindowProperties]");
 }, "Object.prototype.toString");
 
-test(t => {
-  assert_own_property(namedPropertiesObject, Symbol.toStringTag, "Precondition for this test: @@toStringTag exists");
-
-  t.add_cleanup(() => {
-    Object.defineProperty(namedPropertiesObject, Symbol.toStringTag, { value: "WindowProperties" });
-  });
-
-  Object.defineProperty(namedPropertiesObject, Symbol.toStringTag, { value: "NotWindowProperties" });
-  assert_equals(Object.prototype.toString.call(namedPropertiesObject), "[object NotWindowProperties]");
-}, "Object.prototype.toString applied after modifying @@toStringTag");
-
 // Chrome had a bug (https://bugs.chromium.org/p/chromium/issues/detail?id=793406) where if there
 // was no @@toStringTag, it would fall back to a magic class string. Tests for this are present in
 // the sibling class-string*.any.js tests. However, the named properties object always fails calls
diff --git a/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/global-object-implicit-this-value.any-expected.txt b/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/global-object-implicit-this-value.any-expected.txt
new file mode 100644
index 0000000..bad58bcd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/global-object-implicit-this-value.any-expected.txt
@@ -0,0 +1,12 @@
+This is a testharness.js-based test.
+FAIL Global object's getter throws when called on incompatible object assert_throws_js: function "() => { Object.create(globalThis).self; }" did not throw
+PASS Global object's setter throws when called on incompatible object
+PASS Global object's operation throws when called on incompatible object
+PASS Global object's getter throws when called on incompatible object (document.all)
+PASS Global object's setter throws when called on incompatible object (document.all)
+PASS Global object's operation throws when called on incompatible object (document.all)
+PASS Global object's getter works when called on null / undefined
+PASS Global object's setter works when called on null / undefined
+PASS Global object's operation works when called on null / undefined
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.js b/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.js
new file mode 100644
index 0000000..cc0d08fc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.js
@@ -0,0 +1,85 @@
+// META: global=window,worker
+
+// https://heycam.github.io/webidl/#dfn-attribute-getter (step 1.1.2.1)
+// https://heycam.github.io/webidl/#dfn-attribute-setter (step 4.5.1)
+// https://heycam.github.io/webidl/#dfn-create-operation-function (step 2.1.2.1)
+
+const notGlobalObject = Object.create(Object.getPrototypeOf(globalThis));
+
+test(() => {
+    assert_throws_js(TypeError, () => { Object.create(globalThis).self; });
+    assert_throws_js(TypeError, () => { getGlobalPropertyDescriptor("location").get.call(notGlobalObject); });
+    assert_throws_js(TypeError, () => { Reflect.get(globalThis, "navigator", notGlobalObject); });
+    assert_throws_js(TypeError, () => { new Proxy(globalThis, {}).onerror; });
+}, "Global object's getter throws when called on incompatible object");
+
+test(() => {
+    assert_throws_js(TypeError, () => { Object.create(globalThis).origin = origin; });
+    assert_throws_js(TypeError, () => { getGlobalPropertyDescriptor("onerror").set.call(notGlobalObject, onerror); });
+    assert_throws_js(TypeError, () => { Reflect.set(globalThis, "onoffline", onoffline, notGlobalObject); });
+    assert_throws_js(TypeError, () => { new Proxy(globalThis, {}).ononline = ononline; });
+}, "Global object's setter throws when called on incompatible object");
+
+test(() => {
+    assert_throws_js(TypeError, () => { Object.create(globalThis).setInterval(() => {}, 100); });
+    assert_throws_js(TypeError, () => { clearTimeout.call(notGlobalObject, () => {}); });
+    assert_throws_js(TypeError, () => { Reflect.apply(btoa, notGlobalObject, [""]); });
+    assert_throws_js(TypeError, () => { new Proxy(globalThis, {}).removeEventListener("foo", () => {}); });
+}, "Global object's operation throws when called on incompatible object");
+
+if (typeof document !== "undefined") {
+    test(() => {
+        assert_throws_js(TypeError, () => { Object.getOwnPropertyDescriptor(window, "document").get.call(document.all); });
+    }, "Global object's getter throws when called on incompatible object (document.all)");
+
+    test(() => {
+        assert_throws_js(TypeError, () => { Object.getOwnPropertyDescriptor(window, "name").set.call(document.all); });
+    }, "Global object's setter throws when called on incompatible object (document.all)");
+
+    test(() => {
+        assert_throws_js(TypeError, () => { focus.call(document.all); });
+    }, "Global object's operation throws when called on incompatible object (document.all)");
+}
+
+// An engine might have different code path for calling a function from outer scope to implement step 1.b.iii of https://tc39.es/ecma262/#sec-evaluatecall
+const locationGetter = getGlobalPropertyDescriptor("location").get;
+test(() => {
+    assert_equals(getGlobalPropertyDescriptor("self").get.call(null), self);
+    assert_equals((() => locationGetter())(), location);
+    assert_equals(Reflect.get(globalThis, "origin", null), origin);
+    assert_equals(Reflect.get(globalThis, "onoffline", undefined), onoffline);
+}, "Global object's getter works when called on null / undefined");
+
+test(() => {
+    const fn = () => {};
+
+    // origin is [Replaceable]
+    getGlobalPropertyDescriptor("origin").set.call(null, "foo");
+    assert_equals(origin, "foo");
+    getGlobalPropertyDescriptor("onerror").set.call(undefined, fn);
+    assert_equals(onerror, fn);
+    assert_true(Reflect.set(globalThis, "onoffline", fn, null));
+    assert_equals(onoffline, fn);
+
+    const ononlineSetter = getGlobalPropertyDescriptor("ononline").set;
+    (() => { ononlineSetter(fn); })();
+    assert_equals(ononline, fn);
+}, "Global object's setter works when called on null / undefined");
+
+// An engine might have different code path for calling a function from outer scope to implement step 1.b.iii of https://tc39.es/ecma262/#sec-evaluatecall
+const __addEventListener = addEventListener;
+test(() => {
+    assert_equals(atob.call(null, ""), "");
+    assert_equals(typeof (0, setInterval)(() => {}, 100), "number");
+
+    (() => { __addEventListener("foo", event => { event.preventDefault(); }); })();
+    const __dispatchEvent = dispatchEvent;
+    (() => { assert_false(__dispatchEvent(new Event("foo", { cancelable: true }))); })();
+}, "Global object's operation works when called on null / undefined");
+
+function getGlobalPropertyDescriptor(key) {
+    for (let obj = globalThis; obj; obj = Object.getPrototypeOf(obj)) {
+        const desc = Object.getOwnPropertyDescriptor(obj, key);
+        if (desc) return desc;
+    }
+}
diff --git a/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.serviceworker-expected.txt b/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.serviceworker-expected.txt
new file mode 100644
index 0000000..a5e372e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.serviceworker-expected.txt
@@ -0,0 +1,9 @@
+This is a testharness.js-based test.
+PASS Global object's getter throws when called on incompatible object
+FAIL Global object's setter throws when called on incompatible object assert_throws_js: function "() => { Reflect.set(globalThis, "onoffline", onoffline, notGlobalObject); }" threw object "ReferenceError: onoffline is not defined" ("ReferenceError") expected instance of function "function TypeError() { [native code] }" ("TypeError")
+PASS Global object's operation throws when called on incompatible object
+FAIL Global object's getter works when called on null / undefined onoffline is not defined
+FAIL Global object's setter works when called on null / undefined assert_true: expected true got false
+PASS Global object's operation works when called on null / undefined
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.sharedworker-expected.txt b/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.sharedworker-expected.txt
new file mode 100644
index 0000000..a5e372e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.sharedworker-expected.txt
@@ -0,0 +1,9 @@
+This is a testharness.js-based test.
+PASS Global object's getter throws when called on incompatible object
+FAIL Global object's setter throws when called on incompatible object assert_throws_js: function "() => { Reflect.set(globalThis, "onoffline", onoffline, notGlobalObject); }" threw object "ReferenceError: onoffline is not defined" ("ReferenceError") expected instance of function "function TypeError() { [native code] }" ("TypeError")
+PASS Global object's operation throws when called on incompatible object
+FAIL Global object's getter works when called on null / undefined onoffline is not defined
+FAIL Global object's setter works when called on null / undefined assert_true: expected true got false
+PASS Global object's operation works when called on null / undefined
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.worker-expected.txt
new file mode 100644
index 0000000..a5e372e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.worker-expected.txt
@@ -0,0 +1,9 @@
+This is a testharness.js-based test.
+PASS Global object's getter throws when called on incompatible object
+FAIL Global object's setter throws when called on incompatible object assert_throws_js: function "() => { Reflect.set(globalThis, "onoffline", onoffline, notGlobalObject); }" threw object "ReferenceError: onoffline is not defined" ("ReferenceError") expected instance of function "function TypeError() { [native code] }" ("TypeError")
+PASS Global object's operation throws when called on incompatible object
+FAIL Global object's getter works when called on null / undefined onoffline is not defined
+FAIL Global object's setter works when called on null / undefined assert_true: expected true got false
+PASS Global object's operation works when called on null / undefined
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/named-properties-object.html b/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/named-properties-object.html
deleted file mode 100644
index 556eca4..0000000
--- a/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/named-properties-object.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!doctype html>
-<meta charset="utf-8">
-<title>named properties object</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<link rel="help" href="https://heycam.github.io/webidl/#named-properties-object">
-
-<script>
-"use strict";
-
-test(() => {
-  const npo = Object.getPrototypeOf(Window.prototype);
-
-  assert_equals(npo.nonExistingProp, undefined);
-  assert_throws_js(TypeError, () => {
-    const desc = Object.create(null);
-    Object.defineProperty(npo, "nonExistingProp", desc);
-  }, "Cannot define a property with Object.defineProperty (string)");
-  assert_throws_js(TypeError, () => {
-    npo.nonExistingProp = "peach";
-  }, "Cannot create a property through assignment (string)");
-
-  assert_equals(npo[123], undefined);
-  assert_throws_js(TypeError, () => {
-    const desc = Object.create(null);
-    Object.defineProperty(npo, 123, desc);
-  }, "Cannot define a property with Object.defineProperty (index)");
-  assert_throws_js(TypeError, () => {
-    npo[123] = "peach";
-  }, "Cannot create a property through assignment (index)");
-}, "Cannot create a property on a named property object");
-
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/window-named-properties-object-expected.txt b/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/window-named-properties-object-expected.txt
new file mode 100644
index 0000000..0e4f14b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/window-named-properties-object-expected.txt
@@ -0,0 +1,16 @@
+This is a testharness.js-based test.
+PASS [[SetPrototypeOf]] and [[GetPrototypeOf]]
+PASS [[PreventExtensions]] and [[IsExtensible]]
+PASS [[GetOwnProperty]]
+PASS [[GetOwnProperty]] (named property visibility algorithm)
+FAIL [[DefineOwnProperty]] assert_false: supported non-index property name expected false got true
+PASS [[HasProperty]]
+PASS [[Get]]
+FAIL [[Get]] (named property visibility algorithm) assert_equals: supported indexed property name expected (number) 20 but got (object) Element node <div id="0"></div>
+FAIL [[Set]] (direct) assert_false: expected false got true
+PASS [[Set]] (prototype chain)
+PASS [[Set]] (Reflect.set)
+FAIL [[Delete]] assert_throws_js: existing symbol property name function "() => { delete object[key]; }" did not throw
+PASS [[OwnPropertyKeys]]
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/window-named-properties-object.html b/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/window-named-properties-object.html
new file mode 100644
index 0000000..fe8275e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/WebIDL/ecmascript-binding/window-named-properties-object.html
@@ -0,0 +1,284 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Internal methods of Window's named properties object</title>
+<link rel="help" href="https://heycam.github.io/webidl/#named-properties-object">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<body>
+<script>
+function sloppyModeSet(base, key, value) { base[key] = value; }
+</script>
+<script>
+"use strict";
+
+const supportedNonIndex = "supported non-index property name";
+const supportedIndex = "supported indexed property name";
+const unsupportedNonIndex = "unsupported non-index property name";
+const unsupportedIndex = "unsupported indexed property name";
+const existingSymbol = "existing symbol property name";
+const nonExistingSymbol = "non-existing symbol property name";
+
+test(t => {
+    const { w, wp } = createWindowProperties(t);
+
+    Object.setPrototypeOf(wp, w.EventTarget.prototype); // Setting current [[Prototype]] value shouldn't throw
+
+    assert_throws_js(TypeError, () => { Object.setPrototypeOf(wp, {}); });
+    assert_throws_js(w.TypeError, () => { wp.__proto__ = null; });
+    assert_false(Reflect.setPrototypeOf(wp, w.Object.prototype));
+
+    assert_equals(Object.getPrototypeOf(wp), w.EventTarget.prototype);
+}, "[[SetPrototypeOf]] and [[GetPrototypeOf]]");
+
+test(t => {
+    const { wp } = createWindowProperties(t);
+
+    assert_throws_js(TypeError, () => { Object.preventExtensions(wp); });
+    assert_false(Reflect.preventExtensions(wp));
+
+    assert_true(Object.isExtensible(wp));
+}, "[[PreventExtensions]] and [[IsExtensible]]");
+
+test(t => {
+    const { w, wp } = createWindowProperties(t);
+
+    const elA = appendElementWithId(w, "a");
+    const el0 = appendIframeWithName(w, 0);
+
+    assert_prop_desc(Object.getOwnPropertyDescriptor(wp, "a"), elA, supportedNonIndex);
+    assert_prop_desc(Reflect.getOwnPropertyDescriptor(wp, 0), el0, supportedIndex);
+    assert_equals(Reflect.getOwnPropertyDescriptor(wp, "b"), undefined, unsupportedNonIndex);
+    assert_equals(Object.getOwnPropertyDescriptor(wp, 1), undefined, unsupportedIndex);
+}, "[[GetOwnProperty]]");
+
+test(t => {
+    const { w, wp } = createWindowProperties(t);
+
+    appendIframeWithName(w, "hasOwnProperty");
+    appendFormWithName(w, "addEventListener");
+    appendElementWithId(w, "a");
+    appendIframeWithName(w, 0);
+
+    w.Object.prototype.a = {};
+    w.EventTarget.prototype[0] = {};
+
+    // These are shadowed by properties higher in [[Prototype]] chain. See https://heycam.github.io/webidl/#dfn-named-property-visibility
+    assert_equals(Object.getOwnPropertyDescriptor(wp, "hasOwnProperty"), undefined, supportedNonIndex);
+    assert_equals(Reflect.getOwnPropertyDescriptor(wp, "addEventListener"), undefined, supportedNonIndex);
+    assert_equals(Object.getOwnPropertyDescriptor(wp, "a"), undefined, supportedNonIndex);
+    assert_equals(Reflect.getOwnPropertyDescriptor(wp, 0), undefined, supportedIndex);
+}, "[[GetOwnProperty]] (named property visibility algorithm)");
+
+test(t => {
+    const { w, wp } = createWindowProperties(t);
+
+    appendElementWithId(w, "a");
+    appendFormWithName(w, 0);
+
+    assert_define_own_property_fails(wp, "a", {}, supportedNonIndex);
+    assert_define_own_property_fails(wp, 0, {}, supportedIndex);
+    assert_define_own_property_fails(wp, "b", {}, unsupportedNonIndex);
+    assert_define_own_property_fails(wp, 1, {}, unsupportedIndex);
+    assert_define_own_property_fails(wp, Symbol.toStringTag, {}, existingSymbol);
+    assert_define_own_property_fails(wp, Symbol(), {}, nonExistingSymbol);
+}, "[[DefineOwnProperty]]");
+
+test(t => {
+    const { w, wp } = createWindowProperties(t);
+
+    appendFormWithName(w, "a");
+    appendElementWithId(w, 0);
+
+    assert_true("a" in wp, supportedNonIndex);
+    assert_true(Reflect.has(wp, "a"), supportedNonIndex);
+    assert_true(0 in wp, supportedIndex);
+    assert_true(Reflect.has(wp, 0), supportedIndex);
+
+    assert_false("b" in wp, unsupportedNonIndex);
+    assert_false(Reflect.has(wp, 1), unsupportedIndex);
+}, "[[HasProperty]]");
+
+test(t => {
+    const { w, wp } = createWindowProperties(t);
+    const elA = appendFormWithName(w, "a");
+    const el0 = appendIframeWithName(w, 0);
+
+    assert_equals(wp.a, elA, supportedNonIndex);
+    assert_equals(wp[0], el0, supportedIndex);
+    assert_equals(wp[Symbol.toStringTag], "WindowProperties", existingSymbol);
+
+    assert_equals(wp.b, undefined, unsupportedNonIndex);
+    assert_equals(wp[1], undefined, unsupportedIndex);
+    assert_equals(wp[Symbol.iterator], undefined, nonExistingSymbol);
+}, "[[Get]]");
+
+test(t => {
+    const { w, wp } = createWindowProperties(t);
+
+    appendIframeWithName(w, "isPrototypeOf");
+    appendFormWithName(w, "dispatchEvent");
+    appendElementWithId(w, "a");
+    appendElementWithId(w, 0);
+
+    w.EventTarget.prototype.a = 10;
+    w.Object.prototype[0] = 20;
+
+    // These are shadowed by properties higher in [[Prototype]] chain. See https://heycam.github.io/webidl/#dfn-named-property-visibility
+    assert_equals(wp.isPrototypeOf, w.Object.prototype.isPrototypeOf, supportedNonIndex);
+    assert_equals(wp.dispatchEvent, w.EventTarget.prototype.dispatchEvent, supportedNonIndex);
+    assert_equals(wp.a, 10, supportedNonIndex);
+    assert_equals(wp[0], 20, supportedIndex);
+}, "[[Get]] (named property visibility algorithm)");
+
+test(t => {
+    const { w, wp } = createWindowProperties(t);
+    const elA = appendIframeWithName(w, "a");
+    const el0 = appendFormWithName(w, 0);
+
+    assert_set_fails(wp, "a", supportedNonIndex);
+    assert_set_fails(wp, "b", unsupportedNonIndex);
+    assert_set_fails(wp, 0, supportedIndex);
+    assert_set_fails(wp, 1, unsupportedIndex);
+    assert_set_fails(wp, Symbol.toStringTag, existingSymbol);
+    assert_set_fails(wp, Symbol(), nonExistingSymbol);
+
+    assert_equals(wp.a, elA, supportedNonIndex);
+    assert_equals(wp[0], el0, supportedIndex);
+    assert_equals(wp.b, undefined, unsupportedNonIndex);
+    assert_equals(wp[1], undefined, unsupportedIndex);
+}, "[[Set]] (direct)");
+
+test(t => {
+    const { w, wp } = createWindowProperties(t);
+    const receiver = Object.create(wp);
+
+    appendIframeWithName(w, "a");
+    appendElementWithId(w, 0);
+
+    let setterThisValue;
+    Object.defineProperty(w.Object.prototype, 1, { set() { setterThisValue = this; } });
+    Object.defineProperty(w.EventTarget.prototype, "b", { writable: false });
+
+    receiver.a = 10;
+    assert_throws_js(TypeError, () => { receiver.b = {}; }, unsupportedNonIndex);
+    receiver[0] = 20;
+    receiver[1] = {};
+
+    assert_equals(receiver.a, 10, supportedNonIndex);
+    assert_equals(receiver[0], 20, supportedIndex);
+    assert_false(receiver.hasOwnProperty("b"), unsupportedNonIndex);
+    assert_false(receiver.hasOwnProperty(1), unsupportedIndex);
+    assert_equals(setterThisValue, receiver, "setter |this| value is receiver");
+}, "[[Set]] (prototype chain)");
+
+test(t => {
+    const { w, wp } = createWindowProperties(t);
+    const receiver = {};
+
+    appendFormWithName(w, "a");
+    appendIframeWithName(w, 0);
+
+    let setterThisValue;
+    Object.defineProperty(w.Object.prototype, "b", { set() { setterThisValue = this; } });
+    Object.defineProperty(w.EventTarget.prototype, 1, { writable: false });
+
+    assert_true(Reflect.set(wp, "a", 10, receiver), supportedNonIndex);
+    assert_true(Reflect.set(wp, 0, 20, receiver), supportedIndex);
+    assert_true(Reflect.set(wp, "b", {}, receiver), unsupportedNonIndex);
+    assert_false(Reflect.set(wp, 1, {}, receiver), unsupportedIndex);
+
+    assert_equals(receiver.a, 10, supportedNonIndex);
+    assert_equals(receiver[0], 20, supportedIndex);
+    assert_false(receiver.hasOwnProperty("b"), unsupportedNonIndex);
+    assert_equals(setterThisValue, receiver, "setter |this| value is receiver");
+    assert_false(receiver.hasOwnProperty(1), unsupportedIndex);
+}, "[[Set]] (Reflect.set)");
+
+test(t => {
+    const { w, wp } = createWindowProperties(t);
+    const elA = appendFormWithName(w, "a");
+    const el0 = appendElementWithId(w, 0);
+
+    assert_delete_fails(wp, "a", supportedNonIndex);
+    assert_delete_fails(wp, 0, supportedIndex);
+    assert_delete_fails(wp, "b", unsupportedNonIndex);
+    assert_delete_fails(wp, 1, unsupportedIndex);
+    assert_delete_fails(wp, Symbol.toStringTag, existingSymbol);
+    assert_delete_fails(wp, Symbol("foo"), nonExistingSymbol);
+
+    assert_equals(wp.a, elA, supportedNonIndex);
+    assert_equals(wp[0], el0, supportedIndex);
+    assert_equals(wp[Symbol.toStringTag], "WindowProperties", existingSymbol);
+}, "[[Delete]]");
+
+test(t => {
+    const { w, wp } = createWindowProperties(t);
+
+    appendIframeWithName(w, "a");
+    appendElementWithId(w, 0);
+    appendFormWithName(w, "b");
+
+    const forInKeys = [];
+    for (const key in wp)
+        forInKeys.push(key);
+
+    assert_array_equals(forInKeys, Object.keys(w.EventTarget.prototype));
+    assert_array_equals(Object.getOwnPropertyNames(wp), []);
+    assert_array_equals(Reflect.ownKeys(wp), [Symbol.toStringTag]);
+}, "[[OwnPropertyKeys]]");
+
+function createWindowProperties(t) {
+    const iframe = document.createElement("iframe");
+    document.body.append(iframe);
+    t.add_cleanup(() => { iframe.remove(); });
+
+    const w = iframe.contentWindow;
+    const wp = Object.getPrototypeOf(w.Window.prototype);
+    return { w, wp };
+}
+
+function appendIframeWithName(w, name) {
+    const el = w.document.createElement("iframe");
+    el.name = name;
+    w.document.body.append(el);
+    return el.contentWindow;
+}
+
+function appendFormWithName(w, name) {
+    const el = w.document.createElement("form");
+    el.name = name;
+    w.document.body.append(el);
+    return el;
+}
+
+function appendElementWithId(w, id) {
+    const el = w.document.createElement("div");
+    el.id = id;
+    w.document.body.append(el);
+    return el;
+}
+
+function assert_prop_desc(desc, value, testInfo) {
+    assert_equals(typeof desc, "object", `${testInfo} typeof desc`);
+    assert_equals(desc.value, value, `${testInfo} [[Value]]`);
+    assert_true(desc.writable, `${testInfo} [[Writable]]`);
+    assert_false(desc.enumerable, `${testInfo} [[Enumerable]]`);
+    assert_true(desc.configurable, `${testInfo} [[Configurable]]`);
+}
+
+function assert_define_own_property_fails(object, key, desc, testInfo) {
+    assert_throws_js(TypeError, () => { Object.defineProperty(object, key, desc); }, testInfo);
+    assert_false(Reflect.defineProperty(object, key, desc), testInfo);
+}
+
+function assert_set_fails(object, key, value, testInfo) {
+    sloppyModeSet(object, key, value);
+    assert_throws_js(TypeError, () => { object[key] = value; }, testInfo);
+    assert_false(Reflect.set(object, key, value), testInfo);
+}
+
+function assert_delete_fails(object, key, testInfo) {
+    assert_throws_js(TypeError, () => { delete object[key]; }, testInfo);
+    assert_false(Reflect.deleteProperty(object, key), testInfo);
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/cookies/resources/cookie.py b/third_party/blink/web_tests/external/wpt/cookies/resources/cookie.py
index 16efcc04a..b18da77 100644
--- a/third_party/blink/web_tests/external/wpt/cookies/resources/cookie.py
+++ b/third_party/blink/web_tests/external/wpt/cookies/resources/cookie.py
@@ -30,25 +30,22 @@
     """
     headers = setNoCacheAndCORSHeaders(request, response)
 
-    try:
-        if b'drop' in request.GET:
-            cookie = request.GET[b'drop']
-            cookie = json.loads(cookie)
-            cookies = cookie if isinstance(cookie, list) else [cookie]
-            for c in cookies:
-                set_cookie(headers, c, drop=True)
+    if b'drop' in request.GET:
+        cookie = request.GET[b'drop']
+        cookie = json.loads(cookie)
+        cookies = cookie if isinstance(cookie, list) else [cookie]
+        for c in cookies:
+            set_cookie(headers, c, drop=True)
 
-        if b'set' in request.GET:
-            cookie = isomorphic_decode(request.GET[b'set'])
-            cookie = json.loads(cookie)
-            cookies = cookie if isinstance(cookie, list) else [cookie]
-            for c in cookies:
-                set_cookie(headers, c)
+    if b'set' in request.GET:
+        cookie = isomorphic_decode(request.GET[b'set'])
+        cookie = json.loads(cookie)
+        cookies = cookie if isinstance(cookie, list) else [cookie]
+        for c in cookies:
+            set_cookie(headers, c)
 
-        if b'location' in request.GET:
-            headers.append((b'Location', request.GET[b'location']))
-            return 302, headers, b'{"redirect": true}'
+    if b'location' in request.GET:
+        headers.append((b'Location', request.GET[b'location']))
+        return 302, headers, b'{"redirect": true}'
 
-        return headers, b'{"success": true}'
-    except Exception as e:
-          return 500, headers, bytes({'error': '{}'.format(e)})
+    return headers, b'{"success": true}'
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-image-first-letter.html b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-image-first-letter.html
index 0b0a813d..8716095 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-image-first-letter.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-image-first-letter.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html>
+<html class="reftest-wait">
 <head>
     <title>CSS Test: background-image applicability to ::first-letter</title>
     <link rel="author" title="Ethan Malasky" href="mailto:emalasky@adobe.com">
@@ -11,6 +11,8 @@
     <link rel="reviewer" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
     <meta name="flags" content="ahem image">
     <meta name="assert" content="background-image applicability to ::first-letter">
+    <script src="/common/reftest-wait.js"></script>
+    <link rel="preload" as="image" href="support/cat.png" onload="takeScreenshot()" />
     <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
     <style type="text/css">
         #content {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-image-first-line.html b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-image-first-line.html
index 304fef40..eb8cbbd0 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-image-first-line.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-image-first-line.html
@@ -8,6 +8,8 @@
 <link rel="match" href="reference/background-image-first-line-ref.html">
 <meta name="flags" content="ahem image">
 <meta name="assert" content="background-image applicability to ::first-line">
+<script src="/common/reftest-wait.js"></script>
+<link rel="preload" as="image" href="support/cat.png" onload="takeScreenshot()" />
 <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 <style type="text/css">
 #content {
@@ -21,11 +23,4 @@
 </style>
 <p>Test passes if cat image is visible.</p>
 <div id="content">X</div>
-<script src="/common/reftest-wait.js"></script>
-<script>
-// Some browser may delay one frame to update the background-image in first-line.
-onload = () => {
-  requestAnimationFrame(() => requestAnimationFrame(takeScreenshot));
-};
-</script>
 </html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/reference/background-image-first-letter-ref.html b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/reference/background-image-first-letter-ref.html
index 210994b..fd2fdf93 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/reference/background-image-first-letter-ref.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/reference/background-image-first-letter-ref.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
-<html>
+<html class="reftest-wait">
 <head>
     <title>CSS Reftest Reference</title>
     <link rel="author" title="Ethan Malasky" href="mailto:emalasky@adobe.com">
     <meta name="flags" content="ahem image">
+    <script src="/common/reftest-wait.js"></script>
+    <link rel="preload" as="image" href="../support/cat.png" onload="takeScreenshot()" />
     <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
     <style type="text/css">
         #content {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/reference/background-image-first-line-ref.html b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/reference/background-image-first-line-ref.html
index 3536cba..3bbe8467 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/reference/background-image-first-line-ref.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/reference/background-image-first-line-ref.html
@@ -1,5 +1,8 @@
 <!DOCTYPE html>
+<html class="reftest-wait">
 <meta name="flags" content="ahem image">
+<script src="/common/reftest-wait.js"></script>
+<link rel="preload" as="image" href="../support/cat.png" onload="takeScreenshot()" />
 <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 <style type="text/css">
 #content {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/break-inside-avoid-min-block-size-1-ref.html b/third_party/blink/web_tests/external/wpt/css/css-break/break-inside-avoid-min-block-size-1-ref.html
new file mode 100644
index 0000000..56789f62
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/break-inside-avoid-min-block-size-1-ref.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <title>CSS Test: break-inside:avoid min-block-size block</title>
+  <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+  <style>
+html,body {
+    color:black; background-color:white; font:10px/1 monospace; padding:0; margin:0;
+}
+.columns {
+  columns: 3;
+  background: grey;
+  margin-block-end: 1px;
+  inline-size: 500px;
+}
+.fill {
+  column-fill: auto;
+}
+.short {
+  block-size: 30px;
+}
+.tall {
+  block-size: 60px;
+}
+.columns > div {
+  block-size: 40px;
+  background: blue;
+}
+.columns > div:nth-child(2n) { background: lightblue; }
+  </style>
+</head>
+<body>
+<div class="columns fill" style="block-size:40px">
+  <div></div>
+  <div></div>
+</div>
+<div class="columns fill" style="block-size:40px">
+  <div>&nbsp;<br>&nbsp;</div>
+  <div>&nbsp;<br>&nbsp;</div>
+</div>
+<div class="columns short">
+  <div style="margin-block-end:20px"></div>
+  <div></div>
+</div>
+<div class="columns short">
+  <div style="margin-block-end:20px">&nbsp;<br>&nbsp;</div>
+  <div>&nbsp;<br>&nbsp;</div>
+</div>
+<div class="columns tall">
+  <div style="margin-block-end:40px"></div>
+  <div></div>
+</div>
+<div class="columns tall">
+  <div style="margin-block-end:40px">&nbsp;<br>&nbsp;</div>
+  <div>&nbsp;<br>&nbsp;</div>
+</div>
+<div class="columns fill short">
+  <div style="margin-block-end:20px"></div>
+  <div></div>
+</div>
+<div class="columns fill short">
+  <div style="margin-block-end:20px">&nbsp;<br>&nbsp;</div>
+  <div>&nbsp;<br>&nbsp;</div>
+</div>
+<div class="columns fill tall">
+  <div style="margin-block-end:40px"></div>
+  <div></div>
+</div>
+<div class="columns fill tall">
+  <div style="margin-block-end:40px">&nbsp;<br>&nbsp;</div>
+  <div>&nbsp;<br>&nbsp;</div>
+</div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/break-inside-avoid-min-block-size-1.html b/third_party/blink/web_tests/external/wpt/css/css-break/break-inside-avoid-min-block-size-1.html
new file mode 100644
index 0000000..733aae5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/break-inside-avoid-min-block-size-1.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <title>CSS Test: break-inside:avoid min-block-size block</title>
+  <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+  <link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1711630">
+  <link rel="help" href="https://drafts.csswg.org/css-break">
+  <link rel="match" href="break-inside-avoid-min-block-size-1-ref.html">
+  <style>
+html,body {
+    color:black; background-color:white; font:10px/1 monospace; padding:0; margin:0;
+}
+.columns {
+  columns: 3;
+  background: grey;
+  margin-block-end: 1px;
+  inline-size: 500px;
+}
+.fill {
+  column-fill: auto;
+}
+.short {
+  block-size: 30px;
+}
+.tall {
+  block-size: 60px;
+}
+.columns > div {
+  break-inside: avoid;
+  min-block-size: 40px;
+  background: blue;
+}
+.columns > div:nth-child(2n) { background: lightblue; }
+  </style>
+</head>
+<body>
+<div class="columns">
+  <div></div>
+  <div></div>
+</div>
+<div class="columns">
+  <div>&nbsp;<br>&nbsp;</div>
+  <div>&nbsp;<br>&nbsp;</div>
+</div>
+<div class="columns short">
+  <div></div>
+  <div></div>
+</div>
+<div class="columns short">
+  <div>&nbsp;<br>&nbsp;</div>
+  <div>&nbsp;<br>&nbsp;</div>
+</div>
+<div class="columns tall">
+  <div></div>
+  <div></div>
+</div>
+<div class="columns tall">
+  <div>&nbsp;<br>&nbsp;</div>
+  <div>&nbsp;<br>&nbsp;</div>
+</div>
+<div class="columns fill short">
+  <div></div>
+  <div></div>
+</div>
+<div class="columns fill short">
+  <div>&nbsp;<br>&nbsp;</div>
+  <div>&nbsp;<br>&nbsp;</div>
+</div>
+<div class="columns fill tall">
+  <div></div>
+  <div></div>
+</div>
+<div class="columns fill tall">
+  <div>&nbsp;<br>&nbsp;</div>
+  <div>&nbsp;<br>&nbsp;</div>
+</div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/break-inside-avoid-min-block-size-2-ref.html b/third_party/blink/web_tests/external/wpt/css/css-break/break-inside-avoid-min-block-size-2-ref.html
new file mode 100644
index 0000000..70c40491
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/break-inside-avoid-min-block-size-2-ref.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <title>CSS Test: break-inside:avoid min-block-size block</title>
+  <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+  <style>
+html,body {
+    color:black; background-color:white; font:10px/1 monospace; padding:0; margin:0;
+    writing-mode: vertical-rl;
+}
+.columns {
+  columns: 3;
+  background: grey;
+  margin-block-end: 1px;
+  inline-size: 500px;
+}
+.fill {
+  column-fill: auto;
+}
+.short {
+  block-size: 30px;
+}
+.tall {
+  block-size: 60px;
+}
+.columns > div {
+  block-size: 40px;
+  background: blue;
+}
+.columns > div:nth-child(2n) { background: lightblue; }
+  </style>
+</head>
+<body>
+<div class="columns fill" style="block-size:40px">
+  <div></div>
+  <div></div>
+</div>
+<div class="columns fill" style="block-size:40px">
+  <div>&nbsp;<br>&nbsp;</div>
+  <div>&nbsp;<br>&nbsp;</div>
+</div>
+<div class="columns short">
+  <div style="margin-block-end:20px"></div>
+  <div></div>
+</div>
+<div class="columns short">
+  <div style="margin-block-end:20px">&nbsp;<br>&nbsp;</div>
+  <div>&nbsp;<br>&nbsp;</div>
+</div>
+<div class="columns tall">
+  <div style="margin-block-end:40px"></div>
+  <div></div>
+</div>
+<div class="columns tall">
+  <div style="margin-block-end:40px">&nbsp;<br>&nbsp;</div>
+  <div>&nbsp;<br>&nbsp;</div>
+</div>
+<div class="columns fill short">
+  <div style="margin-block-end:20px"></div>
+  <div></div>
+</div>
+<div class="columns fill short">
+  <div style="margin-block-end:20px">&nbsp;<br>&nbsp;</div>
+  <div>&nbsp;<br>&nbsp;</div>
+</div>
+<div class="columns fill tall">
+  <div style="margin-block-end:40px"></div>
+  <div></div>
+</div>
+<div class="columns fill tall">
+  <div style="margin-block-end:40px">&nbsp;<br>&nbsp;</div>
+  <div>&nbsp;<br>&nbsp;</div>
+</div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/break-inside-avoid-min-block-size-2.html b/third_party/blink/web_tests/external/wpt/css/css-break/break-inside-avoid-min-block-size-2.html
new file mode 100644
index 0000000..e7669d8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/break-inside-avoid-min-block-size-2.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <title>CSS Test: break-inside:avoid min-block-size block</title>
+  <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+  <link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1711630">
+  <link rel="help" href="https://drafts.csswg.org/css-break">
+  <link rel="match" href="break-inside-avoid-min-block-size-2-ref.html">
+  <style>
+html,body {
+    color:black; background-color:white; font:10px/1 monospace; padding:0; margin:0;
+    writing-mode: vertical-rl;
+}
+.columns {
+  columns: 3;
+  background: grey;
+  margin-block-end: 1px;
+  inline-size: 500px;
+}
+.fill {
+  column-fill: auto;
+}
+.short {
+  block-size: 30px;
+}
+.tall {
+  block-size: 60px;
+}
+.columns > div {
+  break-inside: avoid;
+  min-block-size: 40px;
+  background: blue;
+}
+.columns > div:nth-child(2n) { background: lightblue; }
+  </style>
+</head>
+<body>
+<div class="columns">
+  <div></div>
+  <div></div>
+</div>
+<div class="columns">
+  <div>&nbsp;<br>&nbsp;</div>
+  <div>&nbsp;<br>&nbsp;</div>
+</div>
+<div class="columns short">
+  <div></div>
+  <div></div>
+</div>
+<div class="columns short">
+  <div>&nbsp;<br>&nbsp;</div>
+  <div>&nbsp;<br>&nbsp;</div>
+</div>
+<div class="columns tall">
+  <div></div>
+  <div></div>
+</div>
+<div class="columns tall">
+  <div>&nbsp;<br>&nbsp;</div>
+  <div>&nbsp;<br>&nbsp;</div>
+</div>
+<div class="columns fill short">
+  <div></div>
+  <div></div>
+</div>
+<div class="columns fill short">
+  <div>&nbsp;<br>&nbsp;</div>
+  <div>&nbsp;<br>&nbsp;</div>
+</div>
+<div class="columns fill tall">
+  <div></div>
+  <div></div>
+</div>
+<div class="columns fill tall">
+  <div>&nbsp;<br>&nbsp;</div>
+  <div>&nbsp;<br>&nbsp;</div>
+</div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/print-color-adjust-parsing-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/print-color-adjust-parsing-expected.txt
new file mode 100644
index 0000000..38a1c2a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/print-color-adjust-parsing-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+Harness Error. harness_status.status = 1 , harness_status.message = Uncaught ReferenceError: test_valid_value is not defined
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/print-color-adjust-parsing.html b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/print-color-adjust-parsing.html
new file mode 100644
index 0000000..ced8666
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/print-color-adjust-parsing.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<title>print-color-adjust Parsing</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<link rel=help href="https://www.w3.org/TR/css-color-adjust-1/#perf">
+<link rel=author title="Tab Atkins-Bittner" href="https://www.xanthir.com/contact/">"
+
+<script src="/css/supports/parsing-testcommon.js"></script>
+
+<script>
+test_valid_value('print-color-adjust', 'exact', 'exact');
+test_valid_value('print-color-adjust', 'economy', 'economy');
+test_valid_value('color-adjust', 'exact', 'exact');
+test_valid_value('color-adjust', 'economy', 'economy');
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-bg-001.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-bg-001.html
new file mode 100644
index 0000000..b7890fae
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-bg-001.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: layout containment on body prevents background propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="layout containment on body prevents background propagation">
+  <link rel="match" href="reference/contain-body-bg-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html, body, p {
+    margin: 0;
+    width: 300px;
+    height: 200px;
+}
+p {
+    background: white;
+}
+body {
+    background: red;
+    contain: layout;
+}
+</style>
+
+<p>Test passes if there is no red.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-bg-002.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-bg-002.html
new file mode 100644
index 0000000..71237d9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-bg-002.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: paint containment on body prevents background propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="paint containment on body prevents background propagation">
+  <link rel="match" href="reference/contain-body-bg-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html, body, p {
+    margin: 0;
+    width: 300px;
+    height: 200px;
+}
+p {
+    background: white;
+}
+body {
+    background: red;
+    contain: paint;
+}
+</style>
+
+<p>Test passes if there is no red.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-bg-003.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-bg-003.html
new file mode 100644
index 0000000..0aaf8b0d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-bg-003.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: size containment on body prevents background propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="size containment on body prevents background propagation">
+  <link rel="match" href="reference/contain-body-bg-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html, body, p {
+    margin: 0;
+    width: 300px;
+    height: 200px;
+}
+p {
+    background: white;
+}
+body {
+    background: red;
+    contain: size;
+}
+</style>
+
+<p>Test passes if there is no red.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-bg-004.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-bg-004.html
new file mode 100644
index 0000000..af046a9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-bg-004.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: style containment on body prevents background propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="style containment on body prevents background propagation">
+  <link rel="match" href="reference/contain-body-bg-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-2/#contain-property">
+
+<style>
+html, body, p {
+    margin: 0;
+    width: 300px;
+    height: 200px;
+}
+p {
+    background: white;
+}
+body {
+    background: red;
+    contain: style;
+}
+</style>
+
+<p>Test passes if there is no red.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-dir-001.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-dir-001.html
new file mode 100644
index 0000000..65e6f9c5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-dir-001.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: layout containment on body prevents direction propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="layout containment on body prevents direction propagation">
+  <link rel="match" href="reference/contain-body-w-m-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html::before {
+    content: "";
+    width: 100px;
+    height: 100px;
+    background: orange;
+    display: block;
+}
+p { direction: ltr; }
+body {
+    margin: 0 auto 0 0;
+    width: 200px;
+    height: 200px;
+    direction: rtl;
+    contain: layout;
+}
+</style>
+
+<p>Test passes if the orange square is in the upper-left corner.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-dir-002.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-dir-002.html
new file mode 100644
index 0000000..12f8fed
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-dir-002.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: paint containment on body prevents direction propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="paint containment on body prevents direction propagation">
+  <link rel="match" href="reference/contain-body-w-m-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html::before {
+    content: "";
+    width: 100px;
+    height: 100px;
+    background: orange;
+    display: block;
+}
+p { direction: ltr; }
+body {
+    margin: 0 auto 0 0;
+    width: 200px;
+    height: 200px;
+    direction: rtl;
+    contain: paint;
+}
+</style>
+
+<p>Test passes if the orange square is in the upper-left corner.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-dir-003.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-dir-003.html
new file mode 100644
index 0000000..07bd8846
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-dir-003.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: size containment on body prevents direction propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="size containment on body prevents direction propagation">
+  <link rel="match" href="reference/contain-body-w-m-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html::before {
+    content: "";
+    width: 100px;
+    height: 100px;
+    background: orange;
+    display: block;
+}
+p { direction: ltr; }
+body {
+    margin: 0 auto 0 0;
+    width: 200px;
+    height: 200px;
+    direction: rtl;
+    contain: size;
+}
+</style>
+
+<p>Test passes if the orange square is in the upper-left corner.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-dir-004.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-dir-004.html
new file mode 100644
index 0000000..b7bbc14
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-dir-004.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: style containment on body prevents direction propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="style containment on body prevents direction propagation">
+  <link rel="match" href="reference/contain-body-w-m-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html::before {
+    content: "";
+    width: 100px;
+    height: 100px;
+    background: orange;
+    display: block;
+}
+p { direction: ltr; }
+body {
+    margin: 0 auto 0 0;
+    width: 200px;
+    height: 200px;
+    direction: rtl;
+    contain: style;
+}
+</style>
+
+<p>Test passes if the orange square is in the upper-left corner.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-overflow-001.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-overflow-001.html
new file mode 100644
index 0000000..7f368756
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-overflow-001.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: layout containment on body prevents overflow propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="layout containment on body prevents overflow propagation">
+  <link rel="match" href="reference/contain-body-overflow-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html, body, p, div {
+    margin: 0;
+    width: 200px;
+    height: 200px;
+}
+div { background: red; }
+body {
+    overflow: hidden;
+    contain: layout;
+}
+</style>
+
+<p>Test passes if there is no red.
+
+<div></div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-overflow-002.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-overflow-002.html
new file mode 100644
index 0000000..bc432e3e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-overflow-002.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: paint containment on body prevents overflow propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="paint containment on body prevents overflow propagation">
+  <link rel="match" href="reference/contain-body-overflow-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html, body, p, div {
+    margin: 0;
+    width: 200px;
+    height: 200px;
+}
+div { background: red; }
+body {
+    overflow: hidden;
+    contain: paint;
+}
+:focus {
+    outline: none;
+}
+</style>
+
+<div></div>
+<p tabindex=1 id=target>Test passes if there is no red.
+<script>
+window.onload = function() {
+    document.getElementById("target").focus()
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-overflow-003.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-overflow-003.html
new file mode 100644
index 0000000..d38cf53
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-overflow-003.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: size containment on body prevents overflow propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="size containment on body prevents overflow propagation">
+  <link rel="match" href="reference/contain-body-overflow-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html, body, p, div {
+    margin: 0;
+    width: 200px;
+    height: 200px;
+}
+div { background: red; }
+body {
+    overflow: hidden;
+    contain: size;
+}
+</style>
+
+<p>Test passes if there is no red.
+
+<div></div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-overflow-004.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-overflow-004.html
new file mode 100644
index 0000000..5064d00c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-overflow-004.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: style containment on body prevents overflow propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="style containment on body prevents overflow propagation">
+  <link rel="match" href="reference/contain-body-overflow-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-2/#contain-property">
+
+<style>
+html, body, p, div {
+    margin: 0;
+    width: 200px;
+    height: 200px;
+}
+div { background: red; }
+body {
+    overflow: hidden;
+    contain: style;
+}
+</style>
+
+<p>Test passes if there is no red.
+
+<div></div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-t-o-001.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-t-o-001.html
new file mode 100644
index 0000000..36f70a1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-t-o-001.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: layout containment on body prevents text-orientation propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="layout containment on body prevents text-orientation propagation">
+  <link rel="match" href="reference/contain-body-t-o-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html {
+    writing-mode: vertical-lr;
+    direction: rtl;
+    width: 100vw;
+    height: 100vh;
+    overflow: hidden;
+}
+body {
+    margin: 0;
+    border-top: 100px solid red;
+    border-bottom: 100px solid green;
+    width: 100vw;
+    height: 100vh;
+    text-orientation: upright;
+    contain: layout;
+}
+p {
+    margin: auto;
+    padding: 150px 0;
+    writing-mode: horizontal-tb;
+    direction: ltr;
+}
+</style>
+
+<p>Test passes if there is no red.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-t-o-002.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-t-o-002.html
new file mode 100644
index 0000000..47d3f480
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-t-o-002.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: paint containment on body prevents text-orientation propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="paint containment on body prevents text-orientation propagation">
+  <link rel="match" href="reference/contain-body-t-o-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html {
+    writing-mode: vertical-lr;
+    direction: rtl;
+    width: 100vw;
+    height: 100vh;
+    overflow: hidden;
+}
+body {
+    margin: 0;
+    border-top: 100px solid red;
+    border-bottom: 100px solid green;
+    width: 100vw;
+    height: 100vh;
+    text-orientation: upright;
+    contain: paint;
+}
+p {
+    margin: auto;
+    padding: 150px 0;
+    writing-mode: horizontal-tb;
+    direction: ltr;
+}
+</style>
+
+<p>Test passes if there is no red.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-t-o-003.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-t-o-003.html
new file mode 100644
index 0000000..2323d07
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-t-o-003.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: size containment on body prevents text-orientation propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="size containment on body prevents text-orientation propagation">
+  <link rel="match" href="reference/contain-body-t-o-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html {
+    writing-mode: vertical-lr;
+    direction: rtl;
+    width: 100vw;
+    height: 100vh;
+    overflow: hidden;
+}
+body {
+    margin: 0;
+    border-top: 100px solid red;
+    border-bottom: 100px solid green;
+    width: 100vw;
+    height: 100vh;
+    text-orientation: upright;
+    contain: size;
+}
+p {
+    margin: auto;
+    padding: 150px 0;
+    writing-mode: horizontal-tb;
+    direction: ltr;
+}
+</style>
+
+<p>Test passes if there is no red.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-t-o-004.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-t-o-004.html
new file mode 100644
index 0000000..3eea6b8d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-t-o-004.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: style containment on body prevents text-orientation propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="style containment on body prevents text-orientation propagation">
+  <link rel="match" href="reference/contain-body-t-o-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-2/#contain-property">
+
+<style>
+html {
+    writing-mode: vertical-lr;
+    direction: rtl;
+    width: 100vw;
+    height: 100vh;
+    overflow: hidden;
+}
+body {
+    margin: 0;
+    border-top: 100px solid red;
+    border-bottom: 100px solid green;
+    width: 100vw;
+    height: 100vh;
+    text-orientation: upright;
+    contain: style;
+}
+p {
+    margin: auto;
+    padding: 150px 0;
+    writing-mode: horizontal-tb;
+    direction: ltr;
+}
+</style>
+
+<p>Test passes if there is no red.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-w-m-001.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-w-m-001.html
new file mode 100644
index 0000000..b37e961
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-w-m-001.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: layout containment on body prevents writing-mode propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="layout containment on body prevents writing-mode propagation">
+  <link rel="match" href="reference/contain-body-w-m-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html::before {
+    content: "";
+    width: 100px;
+    height: 100px;
+    background: orange;
+    display: block;
+}
+p { writing-mode: horizontal-tb; margin: 0;}
+body {
+    margin: 0;
+    width: 200px;
+    height: 200px;
+    writing-mode: vertical-rl;
+    contain: layout;
+}
+</style>
+
+<p>Test passes if the orange square is in the upper-left corner.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-w-m-002.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-w-m-002.html
new file mode 100644
index 0000000..15040f0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-w-m-002.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: paint containment on body prevents writing-mode propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="paint containment on body prevents writing-mode propagation">
+  <link rel="match" href="reference/contain-body-w-m-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html::before {
+    content: "";
+    width: 100px;
+    height: 100px;
+    background: orange;
+    display: block;
+}
+p { writing-mode: horizontal-tb; margin: 0;}
+body {
+    margin: 0;
+    width: 200px;
+    height: 200px;
+    writing-mode: vertical-rl;
+    contain: paint;
+}
+</style>
+
+<p>Test passes if the orange square is in the upper-left corner.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-w-m-003.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-w-m-003.html
new file mode 100644
index 0000000..87b1d634
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-w-m-003.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: size containment on body prevents writing-mode propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="size containment on body prevents writing-mode propagation">
+  <link rel="match" href="reference/contain-body-w-m-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html::before {
+    content: "";
+    width: 100px;
+    height: 100px;
+    background: orange;
+    display: block;
+}
+p { writing-mode: horizontal-tb; margin: 0;}
+body {
+    margin: 0;
+    width: 200px;
+    height: 200px;
+    writing-mode: vertical-rl;
+    contain: size;
+}
+</style>
+
+<p>Test passes if the orange square is in the upper-left corner.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-w-m-004.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-w-m-004.html
new file mode 100644
index 0000000..736d4a5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-body-w-m-004.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: style containment on body prevents writing-mode propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="style containment on body prevents writing-mode propagation">
+  <link rel="match" href="reference/contain-body-w-m-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-2/#contain-property">
+
+<style>
+html::before {
+    content: "";
+    width: 100px;
+    height: 100px;
+    background: orange;
+    display: block;
+}
+p { writing-mode: horizontal-tb; margin: 0;}
+body {
+    margin: 0;
+    width: 200px;
+    height: 200px;
+    writing-mode: vertical-rl;
+    contain: style;
+}
+</style>
+
+<p>Test passes if the orange square is in the upper-left corner.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-bg-001.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-bg-001.html
new file mode 100644
index 0000000..6d77ce0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-bg-001.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: layout containment on html prevents background propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="layout containment on html prevents background propagation">
+  <link rel="match" href="reference/contain-body-bg-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html, body, p {
+    margin: 0;
+    width: 300px;
+    height: 200px;
+}
+p {
+    background: white;
+}
+body {
+    background: red;
+}
+html {
+    contain: layout;
+}
+</style>
+
+<p>Test passes if there is no red.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-bg-002.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-bg-002.html
new file mode 100644
index 0000000..57324052b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-bg-002.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: paint containment on html prevents background propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="paint containment on html prevents background propagation">
+  <link rel="match" href="reference/contain-body-bg-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html, body, p {
+    margin: 0;
+    width: 300px;
+    height: 200px;
+}
+p {
+    background: white;
+}
+body {
+    background: red;
+}
+html {
+    contain: paint;
+}
+</style>
+
+<p>Test passes if there is no red.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-bg-003.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-bg-003.html
new file mode 100644
index 0000000..f1115ce
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-bg-003.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: size containment on html prevents background propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="size containment on html prevents background propagation">
+  <link rel="match" href="reference/contain-body-bg-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html, body, p {
+    margin: 0;
+    width: 300px;
+    height: 200px;
+}
+p {
+    background: white;
+}
+body {
+    background: red;
+}
+html {
+    contain: size;
+}
+</style>
+
+<p>Test passes if there is no red.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-bg-004.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-bg-004.html
new file mode 100644
index 0000000..05fa3f82
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-bg-004.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: style containment on html prevents background propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="style containment on html prevents background propagation">
+  <link rel="match" href="reference/contain-body-bg-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-2/#contain-property">
+
+<style>
+html, body, p {
+    margin: 0;
+    width: 300px;
+    height: 200px;
+}
+p {
+    background: white;
+}
+body {
+    background: red;
+}
+html {
+    contain: style;
+}
+</style>
+
+<p>Test passes if there is no red.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-dir-001.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-dir-001.html
new file mode 100644
index 0000000..7eeae5e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-dir-001.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: layout containment on html prevents direction propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="layout containment on html prevents direction propagation">
+  <link rel="match" href="reference/contain-body-w-m-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html::before {
+    content: "";
+    width: 100px;
+    height: 100px;
+    background: orange;
+    display: block;
+}
+p { direction: ltr; }
+body {
+    margin: 0 auto 0 0;
+    width: 200px;
+    height: 200px;
+    direction: rtl;
+}
+html {
+    contain: layout;
+}
+</style>
+
+<p>Test passes if the orange square is in the upper-left corner.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-dir-002.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-dir-002.html
new file mode 100644
index 0000000..ad4dd4e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-dir-002.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: paint containment on html prevents direction propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="paint containment on html prevents direction propagation">
+  <link rel="match" href="reference/contain-body-w-m-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html::before {
+    content: "";
+    width: 100px;
+    height: 100px;
+    background: orange;
+    display: block;
+}
+p { direction: ltr; }
+body {
+    margin: 0 auto 0 0;
+    width: 200px;
+    height: 200px;
+    direction: rtl;
+}
+html {
+    contain: paint;
+}
+</style>
+
+<p>Test passes if the orange square is in the upper-left corner.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-dir-003.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-dir-003.html
new file mode 100644
index 0000000..aadc031
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-dir-003.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: size containment on html prevents direction propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="size containment on html prevents direction propagation">
+  <link rel="match" href="reference/contain-body-w-m-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html::before {
+    content: "";
+    width: 100px;
+    height: 100px;
+    background: orange;
+    display: block;
+}
+p { direction: ltr; }
+body {
+    margin: 0 auto 0 0;
+    width: 200px;
+    height: 200px;
+    direction: rtl;
+}
+html {
+    contain: size;
+}
+</style>
+
+<p>Test passes if the orange square is in the upper-left corner.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-dir-004.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-dir-004.html
new file mode 100644
index 0000000..4b6d2d3d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-dir-004.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: style containment on html prevents direction propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="style containment on html prevents direction propagation">
+  <link rel="match" href="reference/contain-body-w-m-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html::before {
+    content: "";
+    width: 100px;
+    height: 100px;
+    background: orange;
+    display: block;
+}
+p { direction: ltr; }
+body {
+    margin: 0 auto 0 0;
+    width: 200px;
+    height: 200px;
+    direction: rtl;
+}
+html {
+    contain: style;
+}
+</style>
+
+<p>Test passes if the orange square is in the upper-left corner.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-overflow-001.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-overflow-001.html
new file mode 100644
index 0000000..736ad1a54
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-overflow-001.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: layout containment on html prevents overflow propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="layout containment on html prevents overflow propagation">
+  <link rel="match" href="reference/contain-body-overflow-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html, body, p, div {
+    margin: 0;
+    width: 200px;
+    height: 200px;
+}
+div { background: red; }
+body {
+    overflow: hidden;
+}
+html {
+    contain: layout;
+}
+</style>
+
+<p>Test passes if there is no red.
+
+<div></div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-overflow-002.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-overflow-002.html
new file mode 100644
index 0000000..2fd0b5e1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-overflow-002.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: paint containment on html prevents overflow propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="paint containment on html prevents overflow propagation">
+  <link rel="match" href="reference/contain-body-overflow-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html, body, p, div {
+    margin: 0;
+    width: 200px;
+    height: 200px;
+}
+div { background: red; }
+body {
+    overflow: hidden;
+}
+html {
+    height: 400px;
+    contain: paint;
+}
+</style>
+
+<p>Test passes if there is no red.
+
+<div></div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-overflow-003.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-overflow-003.html
new file mode 100644
index 0000000..88ce091
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-overflow-003.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: size containment on html prevents overflow propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="size containment on html prevents overflow propagation">
+  <link rel="match" href="reference/contain-body-overflow-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html, body, p, div {
+    margin: 0;
+    width: 200px;
+    height: 200px;
+}
+div { background: red; }
+body {
+    overflow: hidden;
+}
+html {
+    contain: size;
+}
+</style>
+
+<p>Test passes if there is no red.
+
+<div></div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-overflow-004.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-overflow-004.html
new file mode 100644
index 0000000..15339ed3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-overflow-004.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: style containment on html prevents overflow propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="style containment on html prevents overflow propagation">
+  <link rel="match" href="reference/contain-body-overflow-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-2/#contain-property">
+
+<style>
+html, body, p, div {
+    margin: 0;
+    width: 200px;
+    height: 200px;
+}
+div { background: red; }
+body {
+    overflow: hidden;
+}
+html {
+    contain: style;
+}
+</style>
+
+<p>Test passes if there is no red.
+
+<div></div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-t-o-001.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-t-o-001.html
new file mode 100644
index 0000000..d74fa252
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-t-o-001.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: layout containment on html prevents text-orientation propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="layout containment on html prevents text-orientation propagation">
+  <link rel="match" href="reference/contain-body-t-o-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html {
+    writing-mode: vertical-lr;
+    direction: rtl;
+    width: 100vw;
+    height: 100vh;
+    overflow: hidden;
+}
+body {
+    margin: 0;
+    border-top: 100px solid red;
+    border-bottom: 100px solid green;
+    width: 100vw;
+    height: 100vh;
+    text-orientation: upright;
+}
+html {
+    contain: layout;
+}
+p {
+    margin: auto;
+    padding: 150px 0;
+    writing-mode: horizontal-tb;
+    direction: ltr;
+}
+</style>
+
+<p>Test passes if there is no red.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-t-o-002.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-t-o-002.html
new file mode 100644
index 0000000..9ee3837
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-t-o-002.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: paint containment on html prevents text-orientation propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="paint containment on html prevents text-orientation propagation">
+  <link rel="match" href="reference/contain-body-t-o-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html {
+    writing-mode: vertical-lr;
+    direction: rtl;
+    width: 100vw;
+    height: 100vh;
+    overflow: hidden;
+}
+body {
+    margin: 0;
+    border-top: 100px solid red;
+    border-bottom: 100px solid green;
+    width: 100vw;
+    height: 100vh;
+    text-orientation: upright;
+}
+html {
+    contain: paint;
+}
+p {
+    margin: auto;
+    padding: 150px 0;
+    writing-mode: horizontal-tb;
+    direction: ltr;
+}
+</style>
+
+<p>Test passes if there is no red.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-t-o-003.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-t-o-003.html
new file mode 100644
index 0000000..87e70d5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-t-o-003.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: size containment on html prevents text-orientation propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="size containment on html prevents text-orientation propagation">
+  <link rel="match" href="reference/contain-body-t-o-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html {
+    writing-mode: vertical-lr;
+    direction: rtl;
+    width: 100vw;
+    height: 100vh;
+    overflow: hidden;
+}
+body {
+    margin: 0;
+    border-top: 100px solid red;
+    border-bottom: 100px solid green;
+    width: 100vw;
+    height: 100vh;
+    text-orientation: upright;
+}
+html {
+    contain: size;
+}
+p {
+    margin: auto;
+    padding: 150px 0;
+    writing-mode: horizontal-tb;
+    direction: ltr;
+}
+</style>
+
+<p>Test passes if there is no red.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-t-o-004.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-t-o-004.html
new file mode 100644
index 0000000..5f7ea2e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-t-o-004.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: style containment on html prevents text-orientation propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="style containment on html prevents text-orientation propagation">
+  <link rel="match" href="reference/contain-body-t-o-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-2/#contain-property">
+
+<style>
+html {
+    writing-mode: vertical-lr;
+    direction: rtl;
+    width: 100vw;
+    height: 100vh;
+    overflow: hidden;
+}
+body {
+    margin: 0;
+    border-top: 100px solid red;
+    border-bottom: 100px solid green;
+    width: 100vw;
+    height: 100vh;
+    text-orientation: upright;
+}
+html {
+    contain: style;
+}
+p {
+    margin: auto;
+    padding: 150px 0;
+    writing-mode: horizontal-tb;
+    direction: ltr;
+}
+</style>
+
+<p>Test passes if there is no red.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-w-m-001.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-w-m-001.html
new file mode 100644
index 0000000..e8c0a822
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-w-m-001.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: layout containment on html prevents writing-mode propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="layout containment on html prevents writing-mode propagation">
+  <link rel="match" href="reference/contain-body-w-m-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html::before {
+    content: "";
+    width: 100px;
+    height: 100px;
+    background: orange;
+    display: block;
+}
+p { writing-mode: horizontal-tb; margin: 0;}
+body {
+    margin: 0;
+    width: 200px;
+    height: 200px;
+    writing-mode: vertical-rl;
+}
+html {
+    contain: layout;
+}
+</style>
+
+<p>Test passes if the orange square is in the upper-left corner.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-w-m-002.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-w-m-002.html
new file mode 100644
index 0000000..f4001a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-w-m-002.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: paint containment on html prevents writing-mode propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="paint containment on html prevents writing-mode propagation">
+  <link rel="match" href="reference/contain-body-w-m-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html::before {
+    content: "";
+    width: 100px;
+    height: 100px;
+    background: orange;
+    display: block;
+}
+p { writing-mode: horizontal-tb; margin: 0;}
+body {
+    margin: 0;
+    width: 200px;
+    height: 200px;
+    writing-mode: vertical-rl;
+}
+html {
+    contain: paint;
+}
+</style>
+
+<p>Test passes if the orange square is in the upper-left corner.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-w-m-003.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-w-m-003.html
new file mode 100644
index 0000000..c56d42e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-w-m-003.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: size containment on html prevents writing-mode propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="size containment on html prevents writing-mode propagation">
+  <link rel="match" href="reference/contain-body-w-m-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-1/#contain-property">
+
+<style>
+html::before {
+    content: "";
+    width: 100px;
+    height: 100px;
+    background: orange;
+    display: block;
+}
+p { writing-mode: horizontal-tb; margin: 0;}
+body {
+    margin: 0;
+    width: 200px;
+    height: 200px;
+    writing-mode: vertical-rl;
+}
+html {
+    contain: size;
+}
+</style>
+
+<p>Test passes if the orange square is in the upper-left corner.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-w-m-004.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-w-m-004.html
new file mode 100644
index 0000000..09a32ba
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-html-w-m-004.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test: style containment on html prevents writing-mode propagation</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+  <meta name=flags content="">
+  <meta name=assert content="style containment on html prevents writing-mode propagation">
+  <link rel="match" href="reference/contain-body-w-m-001-ref.html">
+  <link rel=help href="https://drafts.csswg.org/css-contain-2/#contain-property">
+
+<style>
+html::before {
+    content: "";
+    width: 100px;
+    height: 100px;
+    background: orange;
+    display: block;
+}
+p { writing-mode: horizontal-tb; margin: 0;}
+body {
+    margin: 0;
+    width: 200px;
+    height: 200px;
+    writing-mode: vertical-rl;
+}
+html {
+    contain: style;
+}
+</style>
+
+<p>Test passes if the orange square is in the upper-left corner.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/reference/contain-body-bg-001-ref.html b/third_party/blink/web_tests/external/wpt/css/css-contain/reference/contain-body-bg-001-ref.html
new file mode 100644
index 0000000..1d6357e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/reference/contain-body-bg-001-ref.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test reference</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+
+<style>
+html, body, p {
+    margin: 0;
+    width: 300px;
+    height: 200px;
+}
+</style>
+
+<p>Test passes if there is no red.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/reference/contain-body-overflow-001-ref.html b/third_party/blink/web_tests/external/wpt/css/css-contain/reference/contain-body-overflow-001-ref.html
new file mode 100644
index 0000000..32bc8b0e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/reference/contain-body-overflow-001-ref.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test referemce</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+
+<style>
+html, body, p, div {
+    margin: 0;
+    width: 200px;
+    height: 200px;
+}
+</style>
+
+<p>Test passes if there is no red.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/reference/contain-body-t-o-001-ref.html b/third_party/blink/web_tests/external/wpt/css/css-contain/reference/contain-body-t-o-001-ref.html
new file mode 100644
index 0000000..ecf9d03
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/reference/contain-body-t-o-001-ref.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test reference</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+
+<style>
+html {
+    writing-mode: vertical-lr;
+    direction: rtl;
+    width: 100vw;
+    height: 100vh;
+    overflow: hidden;
+}
+body {
+    margin: 0;
+    border-top: 100px solid red;
+    border-bottom: 100px solid green;
+    width: 100vw;
+    height: 100vh;
+}
+div {
+    text-orientation: upright;
+}
+p {
+    margin: auto;
+    padding: 150px 0;
+    writing-mode: horizontal-tb;
+    direction: ltr;
+}
+</style>
+
+<div>
+    <p>Test passes if there is no red.
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/reference/contain-body-w-m-001-ref.html b/third_party/blink/web_tests/external/wpt/css/css-contain/reference/contain-body-w-m-001-ref.html
new file mode 100644
index 0000000..3341816
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/reference/contain-body-w-m-001-ref.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<html lang=en>
+  <meta charset=utf-8>
+  <title>CSS-contain test reference</title>
+  <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+
+<style>
+html::before {
+    content: "";
+    width: 100px;
+    height: 100px;
+    background: orange;
+    display: block;
+}
+body { margin: 0; }
+p {
+    margin: 0;
+    width: 200px;
+    height: 200px;
+}
+</style>
+
+<p>Test passes if the orange square is in the upper-left corner.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-baseline-align-cycles-001.html b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-baseline-align-cycles-001.html
index cc6b3b5..c00a9ab 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-baseline-align-cycles-001.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-baseline-align-cycles-001.html
@@ -7,7 +7,10 @@
   A grid item whose size is input
   to the size of the track
   on which its size depends
-  cannot participate in baseline alignment.
+  cannot participate in baseline alignment, unless
+  the grid algorithm requires
+  another pass, where the track
+  sizing can be resovled.
 ">
 <link rel="help" href="https://www.w3.org/TR/css-grid-1/#row-align">
 <link rel="match" href="references/grid-baseline-align-cycles-001-ref.html">
@@ -55,7 +58,7 @@
   <div class="index">
     X
   </div>
-  <div class="percent">
+  <div class="percent orthogonal">
     X
   </div>
 </div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-shadow-parts/invalidation-part-pseudo.html b/third_party/blink/web_tests/external/wpt/css/css-shadow-parts/invalidation-part-pseudo.html
new file mode 100644
index 0000000..fca4a96
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-shadow-parts/invalidation-part-pseudo.html
@@ -0,0 +1,50 @@
+<!doctype html>
+<title>CSS Shadow Parts - Pseudo class and exported parts</title>
+<link rel="help" href="https://drafts.csswg.org/css-shadow-parts" >
+<link rel="help" href="https://drafts.csswg.org/selectors/#matches">
+<link href="https://drafts.csswg.org/selectors/#matches" rel="help">
+<link rel="match" href="interaction-with-nested-pseudo-class-ref.html">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<style>
+/* NOTE: Even though it might be tempting to use :focus instead, because we
+   can more easily add that state programmatically, that'd defeat the point
+   of the test, since :focus / :focus-visible has default styles which
+   invalidate the element's style anyways */
+#host::part(a):hover {
+  background: blue;
+}
+</style>
+<div id="host"></div>
+<script>
+let host = document.querySelector('#host')
+host.attachShadow({mode: 'open'}).innerHTML = `<div part="b" exportparts="a"></div>`;
+
+let innerHost = host.shadowRoot.querySelector('div');
+innerHost.attachShadow({mode: 'open'}).innerHTML = `
+  <style>
+    div {
+      width: 100px;
+      height: 100px;
+      background: black;
+      color: white;
+    }
+  </style>
+  <div part="a">hover, the background should be blue</div>
+`;
+
+let part = innerHost.shadowRoot.querySelector("div");
+let t = async_test("Invalidation of nested part on hover");
+part.addEventListener("mouseover", t.step_func_done(function() {
+  assert_true(part.matches(":hover"), "Element should be hovered");
+  assert_equals(getComputedStyle(part).backgroundColor, "rgb(0, 0, 255)", "Hover style should apply");
+}));
+
+new test_driver.Actions()
+    .pointerMove(0, 0)
+    .pointerMove(50, 50)
+    .send();
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt
index 476b017a0..a25b56c 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt
@@ -19,8 +19,8 @@
 PASS 'max(3%, 2%, 1%)' as a used value should serialize as '3px'.
 PASS 'min(1%, 2%, 3%) 0px' as a specified value should serialize as 'min(1%, 2%, 3%) 0px'.
 FAIL 'min(1%, 2%, 3%) 0px' as a computed value should serialize as 'min(1%, 2%, 3%) 0px'. assert_equals: 'min(1%, 2%, 3%) 0px' should round-trip exactly in computed values. expected "min(1%, 2%, 3%) 0px" but got "min(1% + 0px, 2% + 0px, 3% + 0px) 0px"
-PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a specified value should serialize as 'calc(15%)'.
-PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a computed value should serialize as '15%'.
+FAIL 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a specified value should serialize as 'calc(10% + min(1%, 2%) + max(3%, 4%))'. assert_equals: 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' and 'calc(10% + min(1%, 2%) + max(3%, 4%))' should serialize the same in specified values. expected "calc(10% + min(1%, 2%) + max(3%, 4%))" but got "calc(15%)"
+FAIL 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a computed value should serialize as 'calc(10% + min(1%, 2%) + max(3%, 4%))'. assert_equals: 'calc(10% + min(1%, 2%) + max(3%, 4%))' should round-trip exactly in computed values. expected "calc(10% + min(1%, 2%) + max(3%, 4%))" but got "15%"
 PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a used value should serialize as '15px'.
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/css/css-values/minmax-percentage-serialize.html b/third_party/blink/web_tests/external/wpt/css/css-values/minmax-percentage-serialize.html
index f1cb508..65ab9fad 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-values/minmax-percentage-serialize.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-values/minmax-percentage-serialize.html
@@ -65,8 +65,8 @@
 
 test_serialization(
     'calc(min(1%, 2%) + max(3%, 4%) + 10%)',
-    'calc(15%)',
-    '15%',
+    'calc(10% + min(1%, 2%) + max(3%, 4%))',
+    'calc(10% + min(1%, 2%) + max(3%, 4%))',
     '15px');
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/css/selectors/focus-visible-022.tentative.html b/third_party/blink/web_tests/external/wpt/css/selectors/focus-visible-022.tentative.html
new file mode 100644
index 0000000..e2692a6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/selectors/focus-visible-022.tentative.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo" />
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1711057">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+
+<div id="one" tabindex="1">One</div>
+<div id="two" tabindex="1">Two</div>
+
+<script>
+let one = document.getElementById("one");
+let two = document.getElementById("two");
+
+document.addEventListener("keydown", function(e) {
+  two.focus();
+});
+
+promise_test(async t => {
+  await test_driver.click(one);
+  assert_equals(document.activeElement, one, "#one should be focused by mouse");
+  assert_true(one.matches(":focus"), "#one should match :focus");
+  assert_true(!one.matches(":focus-visible"), "#one should not match :focus-visible");
+
+  await test_driver.send_keys(document.body, " ");
+
+  assert_equals(document.activeElement, two, "#two should be focused by our event listener");
+  assert_true(two.matches(":focus"), "#two should match :focus");
+  assert_true(two.matches(":focus-visible"), "#two should match :focus-visible");
+});
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/dom/events/AddEventListenerOptions-signal.any.js b/third_party/blink/web_tests/external/wpt/dom/events/AddEventListenerOptions-signal.any.js
index 4287106..dc401e3b 100644
--- a/third_party/blink/web_tests/external/wpt/dom/events/AddEventListenerOptions-signal.any.js
+++ b/third_party/blink/web_tests/external/wpt/dom/events/AddEventListenerOptions-signal.any.js
@@ -131,3 +131,8 @@
   }, { once: true });
   et.dispatchEvent(new Event('foo'));
 }, "Aborting from a nested listener should remove it");
+
+test(function() {
+  const et = new EventTarget();
+  assert_throws_js(TypeError, () => { et.addEventListener("foo", () => {}, { signal: null }); });
+}, "Passing null as the signal should throw");
diff --git a/third_party/blink/web_tests/external/wpt/dom/events/document-level-touchmove-event-listener-passive-by-default.html b/third_party/blink/web_tests/external/wpt/dom/events/document-level-touchmove-event-listener-passive-by-default.tentative.html
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/dom/events/document-level-touchmove-event-listener-passive-by-default.html
rename to third_party/blink/web_tests/external/wpt/dom/events/document-level-touchmove-event-listener-passive-by-default.tentative.html
diff --git a/third_party/blink/web_tests/external/wpt/dom/events/document-level-wheel-event-listener-passive-by-default.html b/third_party/blink/web_tests/external/wpt/dom/events/document-level-wheel-event-listener-passive-by-default.tentative.html
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/dom/events/document-level-wheel-event-listener-passive-by-default.html
rename to third_party/blink/web_tests/external/wpt/dom/events/document-level-wheel-event-listener-passive-by-default.tentative.html
diff --git a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/idlharness.tentative.any.js b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/idlharness.tentative.any.js
deleted file mode 100644
index 5a7726f..0000000
--- a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/idlharness.tentative.any.js
+++ /dev/null
@@ -1,24 +0,0 @@
-// META: global=window,worker
-// META: script=/resources/WebIDLParser.js
-// META: script=/resources/idlharness.js
-// META: timeout=long
-
-'use strict';
-
-// https://wicg.github.io/private-network-access/
-
-idl_test(
-  ['private-network-access'],
-  ['html', 'dom'],
-  idlArray => {
-    if (self.GLOBAL.isWorker()) {
-      idlArray.add_objects({
-        WorkerGlobalScope: ['self'],
-      });
-    } else {
-      idlArray.add_objects({
-        Document: ['document'],
-      });
-    }
-  }
-);
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects.html b/third_party/blink/web_tests/external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects.html
index 57712950..d1b6cab 100644
--- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects.html
+++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects.html
@@ -232,7 +232,10 @@
   }
   for (var prop of windowAllowlists.namedFrames) {
     win[prop]; // Shouldn't throw.
-    Object.getOwnPropertyDescriptor(win, prop); // Shouldn't throw.
+    var desc = Object.getOwnPropertyDescriptor(win, prop);
+    assert_false(desc.writable, "[[Writable]] for named frame " + String(prop));
+    assert_false(desc.enumerable, "[[Enumerable]] for named frame " + String(prop));
+    assert_true(desc.configurable, "[[Configurable]] for named frame " + String(prop));
     assert_true(Object.prototype.hasOwnProperty.call(win, prop), "hasOwnProperty for " + String(prop));
   }
   for (var prop in location) {
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties-expected.txt b/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties-expected.txt
index ebdf863d..098ad25b 100644
--- a/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties-expected.txt
@@ -3,7 +3,7 @@
 PASS Static id
 PASS Static name on the prototype
 FAIL constructor assert_false: gsp.hasOwnProperty("constructor") expected false got true
-FAIL duplicate property names assert_equals: expected 1 but got 0
+PASS duplicate property names
 PASS Dynamic name
 PASS Ghost name
 Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties.html b/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties.html
index a0bdb1be..0ec25812d 100644
--- a/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties.html
+++ b/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties.html
@@ -60,9 +60,7 @@
 }, "constructor");
 test(function() {
   var gsp = Object.getPrototypeOf(Object.getPrototypeOf(window));
-  var names = Object.getOwnPropertyNames(gsp);
-  assert_equals(names.filter((name) => name == "baz").length, 1);
-
+  assert_equals(gsp.baz, document.getElementsByTagName("iframe")[1].contentWindow);
 }, "duplicate property names")
 var t = async_test("Dynamic name")
 var t2 = async_test("Ghost name")
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
index d10785d..cc3f61a 100644
--- a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 3761 tests; 3739 PASS, 22 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 3763 tests; 3741 PASS, 22 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS idl_test setup
 PASS idl_test validation
 PASS Partial interface Document: original interface defined
@@ -234,6 +234,7 @@
 PASS HTMLElement interface: attribute spellcheck
 PASS HTMLElement interface: attribute autocapitalize
 PASS HTMLElement interface: attribute innerText
+PASS HTMLElement interface: attribute outerText
 PASS HTMLElement interface: operation attachInternals()
 PASS HTMLElement interface: attribute onabort
 PASS HTMLElement interface: attribute onauxclick
@@ -328,6 +329,7 @@
 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 "outerText" 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
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/newline-normalization.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/newline-normalization.html
index b49468e..2c83c5a 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/newline-normalization.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/newline-normalization.html
@@ -2,7 +2,9 @@
 <html>
   <head>
     <meta charset="utf-8" />
-    <title>Form newline normalization</title>
+    <title>
+      Constructing the entry list shouldn't perform newline normalization
+    </title>
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
   </head>
@@ -40,71 +42,71 @@
 
       test((testCase) => {
         const formData = new FormData(createForm(testCase, "a", "b\nc"));
-        assert_equals(formData.get("a"), "b\r\nc");
-      }, document.title + ": \\n in the value becomes \\r\\n");
+        assert_equals(formData.get("a"), "b\nc");
+      }, document.title + ": \\n in the value");
 
       test((testCase) => {
         const formData = new FormData(createForm(testCase, "a", "b\rc"));
-        assert_equals(formData.get("a"), "b\r\nc");
-      }, document.title + ": \\r in the value becomes \\r\\n");
+        assert_equals(formData.get("a"), "b\rc");
+      }, document.title + ": \\r in the value");
 
       test((testCase) => {
         const formData = new FormData(createForm(testCase, "a", "b\r\nc"));
         assert_equals(formData.get("a"), "b\r\nc");
-      }, document.title + ": \\r\\n in the value stays unchanged");
+      }, document.title + ": \\r\\n in the value");
 
       test((testCase) => {
         const formData = new FormData(createForm(testCase, "a", "b\n\rc"));
-        assert_equals(formData.get("a"), "b\r\n\r\nc");
-      }, document.title + ": \\n\\r in the value becomes \\r\\n\\r\\n");
+        assert_equals(formData.get("a"), "b\n\rc");
+      }, document.title + ": \\n\\r in the value");
 
       test((testCase) => {
         const formData = new FormData(createForm(testCase, "a\nb", "c"));
-        assert_equals([...formData][0][0], "a\r\nb");
-      }, document.title + ": \\n in the name becomes \\r\\n");
+        assert_equals([...formData][0][0], "a\nb");
+      }, document.title + ": \\n in the name");
 
       test((testCase) => {
         const formData = new FormData(createForm(testCase, "a\rb", "c"));
-        assert_equals([...formData][0][0], "a\r\nb");
-      }, document.title + ": \\r in the name becomes \\r\\n");
+        assert_equals([...formData][0][0], "a\rb");
+      }, document.title + ": \\r in the name");
 
       test((testCase) => {
         const formData = new FormData(createForm(testCase, "a\r\nb", "c"));
         assert_equals([...formData][0][0], "a\r\nb");
-      }, document.title + ": \\r\\n in the name stays unchanged");
+      }, document.title + ": \\r\\n in the name");
 
       test((testCase) => {
         const formData = new FormData(createForm(testCase, "a\n\rb", "c"));
-        assert_equals([...formData][0][0], "a\r\n\r\nb");
-      }, document.title + ": \\n\\r in the name becomes \\r\\n\\r\\n");
+        assert_equals([...formData][0][0], "a\n\rb");
+      }, document.title + ": \\n\\r in the name");
 
       test((testCase) => {
         const formData = new FormData(
           createFormWithFile(testCase, "a", "b\nc")
         );
         assert_equals(formData.get("a").name, "b\nc");
-      }, document.title + ": \\n in the filename stays unchanged");
+      }, document.title + ": \\n in the filename");
 
       test((testCase) => {
         const formData = new FormData(
           createFormWithFile(testCase, "a", "b\rc")
         );
         assert_equals(formData.get("a").name, "b\rc");
-      }, document.title + ": \\r in the filename stays unchanged");
+      }, document.title + ": \\r in the filename");
 
       test((testCase) => {
         const formData = new FormData(
           createFormWithFile(testCase, "a", "b\r\nc")
         );
         assert_equals(formData.get("a").name, "b\r\nc");
-      }, document.title + ": \\r\\n in the filename stays unchanged");
+      }, document.title + ": \\r\\n in the filename");
 
       test((testCase) => {
         const formData = new FormData(
           createFormWithFile(testCase, "a", "b\n\rc")
         );
         assert_equals(formData.get("a").name, "b\n\rc");
-      }, document.title + ": \\n\\r in the filename stays unchanged");
+      }, document.title + ": \\n\\r in the filename");
     </script>
   </body>
 </html>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-textarea-element/wrapping-transformation.window.js b/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-textarea-element/wrapping-transformation.window.js
new file mode 100644
index 0000000..c5c28a4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-textarea-element/wrapping-transformation.window.js
@@ -0,0 +1,58 @@
+test((t) => {
+  const form = document.createElement("form");
+  const textarea = document.createElement("textarea");
+  textarea.name = "linebreakTest";
+  textarea.textContent = "a\nb\rc\r\nd\n\re";
+  form.appendChild(textarea);
+  document.body.appendChild(form);
+  t.add_cleanup(() => {
+    document.body.removeChild(form);
+  });
+
+  assert_equals(textarea.textContent, "a\nb\rc\r\nd\n\re");
+  assert_equals(textarea.value, "a\nb\nc\nd\n\ne");
+
+  const formData = new FormData(form);
+  assert_equals(
+    formData.get("linebreakTest"),
+    "a\nb\nc\nd\n\ne",
+  );
+}, "Textarea wrapping transformation: Newlines should be normalized to LF.");
+
+test((t) => {
+  const form = document.createElement("form");
+  const textarea = document.createElement("textarea");
+  textarea.name = "wrapTest";
+  textarea.cols = 10;
+  textarea.wrap = "hard";
+  textarea.textContent =
+    "Some text that is too long for the specified character width.";
+  form.appendChild(textarea);
+  document.body.appendChild(form);
+  t.add_cleanup(() => {
+    document.body.removeChild(form);
+  });
+
+  assert_true(
+    !textarea.textContent.includes("\n") &&
+      !textarea.textContent.includes("\r"),
+    "textContent shouldn't contain any newlines",
+  );
+  assert_true(
+    !textarea.textContent.includes("\n") &&
+      !textarea.textContent.includes("\r"),
+    "The API value shouldn't be line wrapped.",
+  );
+
+  const formData = new FormData(form);
+  const formDataValue = formData.get("wrapTest");
+
+  assert_true(
+    !formDataValue.includes("\r"),
+    "The wrapping done on the value must be LF, not CRLF.",
+  );
+  assert_true(
+    formDataValue.includes("\n"),
+    "The value must be wrapped.",
+  );
+}, "Textarea wrapping transformation: Wrapping happens with LF newlines.");
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/testdriver/delete_all_cookies.html b/third_party/blink/web_tests/external/wpt/infrastructure/testdriver/delete_all_cookies.html
index 14b7d58..8d7b82ab 100644
--- a/third_party/blink/web_tests/external/wpt/infrastructure/testdriver/delete_all_cookies.html
+++ b/third_party/blink/web_tests/external/wpt/infrastructure/testdriver/delete_all_cookies.html
@@ -17,21 +17,11 @@
 }, "DOM-set cookies get deleted");
 
 promise_test(async t => {
-  const cookie = "test1=1";
-  const encoded = encodeURIComponent(cookie);
-  await fetch(`/cookies/resources/cookie.py?set=${encoded}`)
-
-  const cookie2 = "test2=2; path=/";
-  const encoded2 = encodeURIComponent(cookie2);
-  await fetch(`/cookies/resources/cookie.py?set=${encoded2}`)
-
-  const cookie3 = "test3=3; path=/cookies/resources";
-  const encoded3 = encodeURIComponent(cookie3);
-  await fetch(`/cookies/resources/cookie.py?set=${encoded3}`)
-
-  const cookie4 = "test4=4; HttpOnly";
-  const encoded4 = encodeURIComponent(cookie4);
-  await fetch(`/cookies/resources/cookie.py?set=${encoded4}`)
+  const cookies = ["test1=1", "test2=2; path=/", "test3=3; path=/cookies/resources", "test4=4; HttpOnly"];
+  for (const cookie of cookies) {
+      const encoded = encodeURIComponent(JSON.stringify(cookie));
+      await fetch(`/cookies/resources/cookie.py?set=${encoded}`)
+  }
 
   return test_driver.delete_all_cookies().then(() => {
     assert_true(document.cookie === "");
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/WEBGL_multi_draw.idl b/third_party/blink/web_tests/external/wpt/interfaces/WEBGL_multi_draw.idl
index 3ba984d..d5ab6cf 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/WEBGL_multi_draw.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/WEBGL_multi_draw.idl
@@ -7,26 +7,26 @@
 interface WEBGL_multi_draw {
   undefined multiDrawArraysWEBGL(
       GLenum mode,
-      (Int32Array or sequence<GLint>) firstsList, GLuint firstsOffset,
-      (Int32Array or sequence<GLsizei>) countsList, GLuint countsOffset,
+      ([AllowShared] Int32Array or sequence<GLint>) firstsList, GLuint firstsOffset,
+      ([AllowShared] Int32Array or sequence<GLsizei>) countsList, GLuint countsOffset,
       GLsizei drawcount);
   undefined multiDrawElementsWEBGL(
       GLenum mode,
-      (Int32Array or sequence<GLint>) countsList, GLuint countsOffset,
+      ([AllowShared] Int32Array or sequence<GLint>) countsList, GLuint countsOffset,
       GLenum type,
-      (Int32Array or sequence<GLsizei>) offsetsList, GLuint offsetsOffset,
+      ([AllowShared] Int32Array or sequence<GLsizei>) offsetsList, GLuint offsetsOffset,
       GLsizei drawcount);
   undefined multiDrawArraysInstancedWEBGL(
       GLenum mode,
-      (Int32Array or sequence<GLint>) firstsList, GLuint firstsOffset,
-      (Int32Array or sequence<GLsizei>) countsList, GLuint countsOffset,
-      (Int32Array or sequence<GLsizei>) instanceCountsList, GLuint instanceCountsOffset,
+      ([AllowShared] Int32Array or sequence<GLint>) firstsList, GLuint firstsOffset,
+      ([AllowShared] Int32Array or sequence<GLsizei>) countsList, GLuint countsOffset,
+      ([AllowShared] Int32Array or sequence<GLsizei>) instanceCountsList, GLuint instanceCountsOffset,
       GLsizei drawcount);
   undefined multiDrawElementsInstancedWEBGL(
       GLenum mode,
-      (Int32Array or sequence<GLint>) countsList, GLuint countsOffset,
+      ([AllowShared] Int32Array or sequence<GLint>) countsList, GLuint countsOffset,
       GLenum type,
-      (Int32Array or sequence<GLsizei>) offsetsList, GLuint offsetsOffset,
-      (Int32Array or sequence<GLsizei>) instanceCountsList, GLuint instanceCountsOffset,
+      ([AllowShared] Int32Array or sequence<GLsizei>) offsetsList, GLuint offsetsOffset,
+      ([AllowShared] Int32Array or sequence<GLsizei>) instanceCountsList, GLuint instanceCountsOffset,
       GLsizei drawcount);
 };
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/WEBGL_multi_draw_instanced_base_vertex_base_instance.idl b/third_party/blink/web_tests/external/wpt/interfaces/WEBGL_multi_draw_instanced_base_vertex_base_instance.idl
index 2f43d3a..8dd3253a 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/WEBGL_multi_draw_instanced_base_vertex_base_instance.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/WEBGL_multi_draw_instanced_base_vertex_base_instance.idl
@@ -7,20 +7,20 @@
 interface WEBGL_multi_draw_instanced_base_vertex_base_instance {
   undefined multiDrawArraysInstancedBaseInstanceWEBGL(
       GLenum mode,
-      (Int32Array or sequence<GLint>) firstsList, GLuint firstsOffset,
-      (Int32Array or sequence<GLsizei>) countsList, GLuint countsOffset,
-      (Int32Array or sequence<GLsizei>) instanceCountsList, GLuint instanceCountsOffset,
-      (Uint32Array or sequence<GLuint>) baseInstancesList, GLuint baseInstancesOffset,
+      ([AllowShared] Int32Array or sequence<GLint>) firstsList, GLuint firstsOffset,
+      ([AllowShared] Int32Array or sequence<GLsizei>) countsList, GLuint countsOffset,
+      ([AllowShared] Int32Array or sequence<GLsizei>) instanceCountsList, GLuint instanceCountsOffset,
+      ([AllowShared] Uint32Array or sequence<GLuint>) baseInstancesList, GLuint baseInstancesOffset,
       GLsizei drawCount
   );
   undefined multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(
       GLenum mode,
-      (Int32Array or sequence<GLsizei>) countsList, GLuint countsOffset,
+      ([AllowShared] Int32Array or sequence<GLsizei>) countsList, GLuint countsOffset,
       GLenum type,
-      (Int32Array or sequence<GLsizei>) offsetsList, GLuint offsetsOffset,
-      (Int32Array or sequence<GLsizei>) instanceCountsList, GLuint instanceCountsOffset,
-      (Int32Array or sequence<GLint>) baseVerticesList, GLuint baseVerticesOffset,
-      (Uint32Array or sequence<GLuint>) baseInstancesList, GLuint baseInstancesOffset,
+      ([AllowShared] Int32Array or sequence<GLsizei>) offsetsList, GLuint offsetsOffset,
+      ([AllowShared] Int32Array or sequence<GLsizei>) instanceCountsList, GLuint instanceCountsOffset,
+      ([AllowShared] Int32Array or sequence<GLint>) baseVerticesList, GLuint baseVerticesOffset,
+      ([AllowShared] Uint32Array or sequence<GLuint>) baseInstancesList, GLuint baseInstancesOffset,
       GLsizei drawCount
   );
 };
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/css-typed-om.idl b/third_party/blink/web_tests/external/wpt/interfaces/css-typed-om.idl
index 086cef3..262d288 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/css-typed-om.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/css-typed-om.idl
@@ -319,14 +319,8 @@
 
 [Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)]
 interface CSSColorValue : CSSStyleValue {
-    CSSRGB toRGB();
-    CSSHSL toHSL();
-    CSSHWB toHWB();
-    CSSGray toGray();
-    CSSLCH toLCH();
-    CSSLab toLab();
-    CSSColor toColor(CSSKeywordish colorspace);
-
+    readonly attribute CSSKeywordValue colorSpace;
+    CSSColorValue to(CSSKeywordish colorSpace);
     [Exposed=Window] static CSSColorValue parse(USVString cssText);
 };
 
@@ -358,13 +352,6 @@
 };
 
 [Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)]
-interface CSSGray : CSSColorValue {
-    constructor(CSSNumberish gray, optional CSSNumberish alpha = 1);
-    attribute CSSNumberish gray;
-    attribute CSSNumberish alpha;
-};
-
-[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)]
 interface CSSLCH : CSSColorValue {
     constructor(CSSNumberish l, CSSNumberish c, CSSNumericValue h, optional CSSNumberish alpha = 1);
     attribute CSSNumberish l;
@@ -388,3 +375,13 @@
     /* CSSColor(["foo", 0, 1, .5], ["bar", "yellow"], 1, fallbackColor) */
     /* or just make the alpha and fallback successive optional args? */
 };
+
+[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)]
+interface CSSDeviceCMYK : CSSColorValue {
+    constructor(CSSNumberish c, CSSNumberish m, CSSNumberish y, CSSNumberish k, optional CSSNumberish alpha = 1);
+    attribute CSSNumberish c;
+    attribute CSSNumberish m;
+    attribute CSSNumberish y;
+    attribute CSSNumberish k;
+    attribute CSSNumberish alpha;
+};
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/gpuweb.idl b/third_party/blink/web_tests/external/wpt/interfaces/gpuweb.idl
index 53bff4f..3f711182 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/gpuweb.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/gpuweb.idl
@@ -37,6 +37,10 @@
     readonly setlike<DOMString>;
 };
 
+enum GPUPredefinedColorSpace {
+    "srgb",
+};
+
 interface mixin NavigatorGPU {
     [SameObject] readonly attribute GPU gpu;
 };
@@ -92,6 +96,7 @@
     GPUBuffer createBuffer(GPUBufferDescriptor descriptor);
     GPUTexture createTexture(GPUTextureDescriptor descriptor);
     GPUSampler createSampler(optional GPUSamplerDescriptor descriptor = {});
+    GPUExternalTexture importExternalTexture(GPUExternalTextureDescriptor descriptor);
 
     GPUBindGroupLayout createBindGroupLayout(GPUBindGroupLayoutDescriptor descriptor);
     GPUPipelineLayout createPipelineLayout(GPUPipelineLayoutDescriptor descriptor);
@@ -291,6 +296,16 @@
 };
 
 [Exposed=Window]
+interface GPUExternalTexture {
+};
+GPUExternalTexture includes GPUObjectBase;
+
+dictionary GPUExternalTextureDescriptor : GPUObjectDescriptorBase {
+    required HTMLVideoElement source;
+    GPUPredefinedColorSpace colorSpace = "srgb";
+};
+
+[Exposed=Window]
 interface GPUSampler {
 };
 GPUSampler includes GPUObjectBase;
@@ -355,6 +370,7 @@
     GPUSamplerBindingLayout sampler;
     GPUTextureBindingLayout texture;
     GPUStorageTextureBindingLayout storageTexture;
+    GPUExternalTextureBindingLayout externalTexture;
 };
 
 enum GPUBufferBindingType {
@@ -404,6 +420,9 @@
     GPUTextureViewDimension viewDimension = "2d";
 };
 
+dictionary GPUExternalTextureBindingLayout {
+};
+
 [Exposed=Window]
 interface GPUBindGroup {
 };
@@ -414,7 +433,7 @@
     required sequence<GPUBindGroupEntry> entries;
 };
 
-typedef (GPUSampler or GPUTextureView or GPUBufferBinding) GPUBindingResource;
+typedef (GPUSampler or GPUTextureView or GPUBufferBinding or GPUExternalTexture) GPUBindingResource;
 
 dictionary GPUBindGroupEntry {
     required GPUIndex32 binding;
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 99443be4..d878cba 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/html.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/html.idl
@@ -120,6 +120,7 @@
   [CEReactions] attribute DOMString autocapitalize;
 
   [CEReactions] attribute [LegacyNullToEmptyString] DOMString innerText;
+  [CEReactions] attribute [LegacyNullToEmptyString] DOMString outerText;
 
   ElementInternals attachInternals();
 };
@@ -1341,6 +1342,7 @@
   attribute (DOMString or CanvasGradient or CanvasPattern) fillStyle; // (default black)
   CanvasGradient createLinearGradient(double x0, double y0, double x1, double y1);
   CanvasGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1);
+  CanvasGradient createConicGradient(double startAngle, double x, double y);
   CanvasPattern? createPattern(CanvasImageSource image, [LegacyNullToEmptyString] DOMString repetition);
 
 };
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/payment-handler.idl b/third_party/blink/web_tests/external/wpt/interfaces/payment-handler.idl
index b609df75..7636e8a 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/payment-handler.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/payment-handler.idl
@@ -11,14 +11,6 @@
 interface PaymentManager {
   [SameObject] readonly attribute PaymentInstruments instruments;
   attribute DOMString userHint;
-  Promise<undefined> enableDelegations(sequence<PaymentDelegation> delegations);
-};
-
-enum PaymentDelegation {
-  "shippingAddress",
-  "payerName",
-  "payerPhone",
-  "payerEmail"
 };
 
 [SecureContext, Exposed=(Window,Worker)]
@@ -71,9 +63,7 @@
   DOMString error;
   PaymentCurrencyAmount total;
   sequence<PaymentDetailsModifier> modifiers;
-  sequence<PaymentShippingOption> shippingOptions;
   object paymentMethodErrors;
-  AddressErrors shippingAddressErrors;
 };
 
 [Exposed=ServiceWorker]
@@ -86,13 +76,8 @@
   readonly attribute object total;
   readonly attribute FrozenArray<PaymentDetailsModifier> modifiers;
   readonly attribute DOMString instrumentKey;
-  readonly attribute boolean requestBillingAddress;
-  readonly attribute object? paymentOptions;
-  readonly attribute FrozenArray<PaymentShippingOption>? shippingOptions;
   Promise<WindowClient?> openWindow(USVString url);
   Promise<PaymentRequestDetailsUpdate?> changePaymentMethod(DOMString methodName, optional object? methodDetails = null);
-  Promise<PaymentRequestDetailsUpdate?> changeShippingAddress(optional AddressInit shippingAddress = {});
-  Promise<PaymentRequestDetailsUpdate?> changeShippingOption(DOMString shippingOption);
   undefined respondWith(Promise<PaymentHandlerResponse> handlerResponsePromise);
 };
 
@@ -104,16 +89,9 @@
   PaymentCurrencyAmount total;
   sequence<PaymentDetailsModifier> modifiers;
   DOMString instrumentKey;
-  PaymentOptions paymentOptions;
-  sequence<PaymentShippingOption> shippingOptions;
 };
 
 dictionary PaymentHandlerResponse {
 DOMString methodName;
 object details;
-DOMString? payerName;
-DOMString? payerEmail;
-DOMString? payerPhone;
-AddressInit shippingAddress;
-DOMString? shippingOption;
 };
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/payment-request.idl b/third_party/blink/web_tests/external/wpt/interfaces/payment-request.idl
index dc0511b..cd16e2a 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/payment-request.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/payment-request.idl
@@ -7,8 +7,7 @@
 interface PaymentRequest : EventTarget {
   constructor(
     sequence<PaymentMethodData> methodData,
-    PaymentDetailsInit details,
-    optional PaymentOptions options = {}
+    PaymentDetailsInit details
   );
   [NewObject]
   Promise<PaymentResponse> show(optional Promise<PaymentDetailsUpdate> detailsPromise);
@@ -18,12 +17,7 @@
   Promise<boolean> canMakePayment();
 
   readonly attribute DOMString id;
-  readonly attribute PaymentAddress? shippingAddress;
-  readonly attribute DOMString? shippingOption;
-  readonly attribute PaymentShippingType? shippingType;
 
-  attribute EventHandler onshippingaddresschange;
-  attribute EventHandler onshippingoptionchange;
   attribute EventHandler onpaymentmethodchange;
 };
 
@@ -39,7 +33,6 @@
 
 dictionary PaymentDetailsBase {
   sequence<PaymentItem> displayItems;
-  sequence<PaymentShippingOption> shippingOptions;
   sequence<PaymentDetailsModifier> modifiers;
 };
 
@@ -49,10 +42,7 @@
 };
 
 dictionary PaymentDetailsUpdate : PaymentDetailsBase {
-  DOMString error;
   PaymentItem total;
-  AddressErrors shippingAddressErrors;
-  PayerErrors payerErrors;
   object paymentMethodErrors;
 };
 
@@ -63,75 +53,12 @@
   object data;
 };
 
-enum PaymentShippingType {
-  "shipping",
-  "delivery",
-  "pickup"
-};
-
-dictionary PaymentOptions {
-  boolean requestPayerName = false;
-  boolean requestBillingAddress = false;
-  boolean requestPayerEmail = false;
-  boolean requestPayerPhone = false;
-  boolean requestShipping = false;
-  PaymentShippingType shippingType = "shipping";
-};
-
 dictionary PaymentItem {
   required DOMString label;
   required PaymentCurrencyAmount amount;
   boolean pending = false;
 };
 
-[SecureContext, Exposed=(Window)]
-interface PaymentAddress {
-  [Default] object toJSON();
-  readonly attribute DOMString city;
-  readonly attribute DOMString country;
-  readonly attribute DOMString dependentLocality;
-  readonly attribute DOMString organization;
-  readonly attribute DOMString phone;
-  readonly attribute DOMString postalCode;
-  readonly attribute DOMString recipient;
-  readonly attribute DOMString region;
-  readonly attribute DOMString sortingCode;
-  readonly attribute FrozenArray<DOMString> addressLine;
-};
-
-dictionary AddressInit {
-  DOMString country = "";
-  sequence<DOMString> addressLine = [];
-  DOMString region = "";
-  DOMString city = "";
-  DOMString dependentLocality = "";
-  DOMString postalCode = "";
-  DOMString sortingCode = "";
-  DOMString organization = "";
-  DOMString recipient = "";
-  DOMString phone = "";
-};
-
-dictionary AddressErrors {
-  DOMString addressLine;
-  DOMString city;
-  DOMString country;
-  DOMString dependentLocality;
-  DOMString organization;
-  DOMString phone;
-  DOMString postalCode;
-  DOMString recipient;
-  DOMString region;
-  DOMString sortingCode;
-};
-
-dictionary PaymentShippingOption {
-  required DOMString id;
-  required DOMString label;
-  required PaymentCurrencyAmount amount;
-  boolean selected = false;
-};
-
 enum PaymentComplete {
   "fail",
   "success",
@@ -145,33 +72,18 @@
   readonly attribute DOMString requestId;
   readonly attribute DOMString methodName;
   readonly attribute object details;
-  readonly attribute PaymentAddress? shippingAddress;
-  readonly attribute DOMString? shippingOption;
-  readonly attribute DOMString? payerName;
-  readonly attribute DOMString? payerEmail;
-  readonly attribute DOMString? payerPhone;
 
   [NewObject]
   Promise<undefined> complete(optional PaymentComplete result = "unknown");
   [NewObject]
   Promise<undefined> retry(optional PaymentValidationErrors errorFields = {});
-
-  attribute EventHandler onpayerdetailchange;
 };
 
 dictionary PaymentValidationErrors {
-  PayerErrors payer;
-  AddressErrors shippingAddress;
   DOMString error;
   object paymentMethod;
 };
 
-dictionary PayerErrors {
-  DOMString email;
-  DOMString name;
-  DOMString phone;
-};
-
 [SecureContext, Exposed=Window]
 interface PaymentMethodChangeEvent : PaymentRequestUpdateEvent {
   constructor(DOMString type, optional PaymentMethodChangeEventInit eventInitDict = {});
@@ -191,3 +103,31 @@
 };
 
 dictionary PaymentRequestUpdateEventInit : EventInit {};
+
+[SecureContext, Exposed=(Window)]
+interface PaymentAddress {
+  [Default] object toJSON();
+  readonly attribute DOMString city;
+  readonly attribute DOMString country;
+  readonly attribute DOMString dependentLocality;
+  readonly attribute DOMString organization;
+  readonly attribute DOMString phone;
+  readonly attribute DOMString postalCode;
+  readonly attribute DOMString recipient;
+  readonly attribute DOMString region;
+  readonly attribute DOMString sortingCode;
+  readonly attribute FrozenArray<DOMString> addressLine;
+};
+
+dictionary AddressErrors {
+  DOMString addressLine;
+  DOMString city;
+  DOMString country;
+  DOMString dependentLocality;
+  DOMString organization;
+  DOMString phone;
+  DOMString postalCode;
+  DOMString recipient;
+  DOMString region;
+  DOMString sortingCode;
+};
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/private-network-access.idl b/third_party/blink/web_tests/external/wpt/interfaces/private-network-access.idl
deleted file mode 100644
index b470f3f..0000000
--- a/third_party/blink/web_tests/external/wpt/interfaces/private-network-access.idl
+++ /dev/null
@@ -1,14 +0,0 @@
-// GENERATED CONTENT - DO NOT EDIT
-// Content was automatically extracted by Reffy into webref
-// (https://github.com/w3c/webref)
-// Source: Private Network Access (https://wicg.github.io/private-network-access/)
-
-enum AddressSpace { "local", "private", "public" };
-
-partial interface Document {
-  readonly attribute AddressSpace addressSpace;
-};
-
-partial interface WorkerGlobalScope {
-  readonly attribute AddressSpace addressSpace;
-};
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/webcodecs.idl b/third_party/blink/web_tests/external/wpt/interfaces/webcodecs.idl
index aae4aa0..1203eba 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/webcodecs.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/webcodecs.idl
@@ -175,13 +175,15 @@
 interface EncodedAudioChunk {
   constructor(EncodedAudioChunkInit init);
   readonly attribute EncodedAudioChunkType type;
-  readonly attribute unsigned long long timestamp;  // microseconds
-  readonly attribute ArrayBuffer data;
+  readonly attribute long long timestamp;    // microseconds
+  readonly attribute unsigned long byteLength;
+
+  undefined copyTo(ArrayBufferView dst);
 };
 
 dictionary EncodedAudioChunkInit {
   required EncodedAudioChunkType type;
-  required unsigned long long timestamp;
+  required long long timestamp;    // microseconds
   required BufferSource data;
 };
 
@@ -194,15 +196,17 @@
 interface EncodedVideoChunk {
   constructor(EncodedVideoChunkInit init);
   readonly attribute EncodedVideoChunkType type;
-  readonly attribute unsigned long long timestamp;  // microseconds
-  readonly attribute unsigned long long? duration;  // microseconds
-  readonly attribute ArrayBuffer data;
+  readonly attribute long long timestamp;    // microseconds
+  readonly attribute long long? duration;    // microseconds
+  readonly attribute unsigned long byteLength;
+
+  undefined copyTo(ArrayBufferView dst);
 };
 
 dictionary EncodedVideoChunkInit {
   required EncodedVideoChunkType type;
-  required unsigned long long timestamp;
-  unsigned long long duration;
+  required long long timestamp;    // microseconds
+  long long duration;              // microseconds
   required BufferSource data;
 };
 
@@ -220,8 +224,8 @@
   readonly attribute unsigned long numberOfFrames;
   readonly attribute unsigned long numberOfChannels;
   readonly attribute unsigned long allocationSize;
-  readonly attribute unsigned long long duration;
-  readonly attribute unsigned long long timestamp;
+  readonly attribute long long duration;     // microseconds
+  readonly attribute long long timestamp;    // microseconds
 
   undefined copyTo([AllowShared] BufferSource destination, unsigned long planeNumber);
   AudioData clone();
@@ -233,7 +237,7 @@
   required float sampleRate;
   required unsigned long numberOfFrames;
   required unsigned long numberOfChannels;
-  required unsigned long long timestamp;
+  required long long timestamp;    // microseconds
   required BufferSource data;
 };
 
@@ -263,16 +267,16 @@
   readonly attribute unsigned long cropHeight;
   readonly attribute unsigned long displayWidth;
   readonly attribute unsigned long displayHeight;
-  readonly attribute unsigned long long? duration;
-  readonly attribute unsigned long long? timestamp;
+  readonly attribute long long? duration;     // microseconds
+  readonly attribute long long? timestamp;    // microseconds
 
   VideoFrame clone();
   undefined close();
 };
 
 dictionary VideoFrameInit {
-  unsigned long long duration;
-  unsigned long long timestamp;
+  long long duration;     // microseconds
+  long long timestamp;    // microseconds
 };
 
 dictionary VideoFramePlaneInit {
@@ -285,8 +289,8 @@
   unsigned long cropHeight;
   unsigned long displayWidth;
   unsigned long displayHeight;
-  unsigned long long duration;
-  unsigned long long timestamp;
+  long long duration;     // microseconds
+  long long timestamp;    // microseconds
 };
 
 [Exposed=(Window,DedicatedWorker)]
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/webtransport.idl b/third_party/blink/web_tests/external/wpt/interfaces/webtransport.idl
index 220e6ea1..6c3df2ab 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/webtransport.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/webtransport.idl
@@ -12,17 +12,6 @@
 dictionary SendStreamParameters {
 };
 
-interface mixin BidirectionalStreamsTransport {
-    Promise<BidirectionalStream> createBidirectionalStream();
-    /* a ReadableStream of BidirectionalStream objects */
-    readonly attribute ReadableStream incomingBidirectionalStreams;
-};
-
-interface mixin DatagramTransport {
-    readonly attribute unsigned short maxDatagramSize;
-    readonly attribute DatagramDuplexStream datagrams;
-};
-
 [Exposed=(Window,Worker)]
 interface DatagramDuplexStream {
   readonly attribute ReadableStream readable;
@@ -39,11 +28,16 @@
   readonly attribute Promise<WebTransportCloseInfo> closed;
   undefined close(optional WebTransportCloseInfo closeInfo = {});
   attribute EventHandler onstatechange;
+
+  readonly attribute unsigned short maxDatagramSize;
+  readonly attribute DatagramDuplexStream datagrams;
+
+  Promise<BidirectionalStream> createBidirectionalStream();
+  /* a ReadableStream of BidirectionalStream objects */
+  readonly attribute ReadableStream incomingBidirectionalStreams;
 };
 
 WebTransport includes UnidirectionalStreamsTransport;
-WebTransport includes BidirectionalStreamsTransport;
-WebTransport includes DatagramTransport;
 
 dictionary WebTransportOptions {
   boolean allowPooling;
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/webxr.idl b/third_party/blink/web_tests/external/wpt/interfaces/webxr.idl
index b08124e..3e5b4324 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/webxr.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/webxr.idl
@@ -202,6 +202,7 @@
   // Attributes
   readonly attribute boolean antialias;
   readonly attribute boolean ignoreDepthValues;
+  attribute float? fixedFoveation;
 
   [SameObject] readonly attribute WebGLFramebuffer? framebuffer;
   readonly attribute unsigned long framebufferWidth;
diff --git a/third_party/blink/web_tests/external/wpt/private-click-measurement/idlharness.window.js b/third_party/blink/web_tests/external/wpt/private-click-measurement/idlharness.window.js
new file mode 100644
index 0000000..1d0539a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/private-click-measurement/idlharness.window.js
@@ -0,0 +1,14 @@
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+
+'use strict';
+
+idl_test(
+  ['private-click-measurement'],
+  ['html', 'dom'],
+  idl_array => {
+    idl_array.add_objects({
+      HTMLAnchorElement: ['document.createElement("a")'],
+    });
+  }
+);
diff --git a/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-registerprocessor-called-on-globalthis.https.html b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-registerprocessor-called-on-globalthis.https.html
new file mode 100644
index 0000000..718cadff
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-registerprocessor-called-on-globalthis.https.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>
+      Test AudioWorkletGlobalScope's registerProcessor() called on globalThis
+    </title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/webaudio/resources/audit.js"></script>
+  </head>
+  <body>
+    <script id="layout-test-code">
+      const audit = Audit.createTaskRunner();
+      const realtimeContext = new AudioContext();
+      const filePath = 'processors/dummy-processor-globalthis.js';
+
+      audit.define('registerprocessor-called-on-globalthis', (task, should) => {
+        realtimeContext.audioWorklet.addModule(filePath).then(() => {
+          const dummyWorkletNode = new AudioWorkletNode(realtimeContext, 'dummy-globalthis');
+          should(dummyWorkletNode instanceof AudioWorkletNode,
+            '"dummyWorkletNode" is an instance of AudioWorkletNode').beTrue();
+          task.done();
+        });
+      });
+
+      audit.run();
+    </script>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audioworklet-interface/processors/dummy-processor-globalthis.js b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audioworklet-interface/processors/dummy-processor-globalthis.js
new file mode 100644
index 0000000..d1b16cc9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audioworklet-interface/processors/dummy-processor-globalthis.js
@@ -0,0 +1,12 @@
+class DummyProcessor extends AudioWorkletProcessor {
+  constructor() {
+    super();
+  }
+
+  process(inputs, outputs, parameters) {
+    // Doesn't do anything here.
+    return true;
+  }
+}
+
+globalThis.registerProcessor('dummy-globalthis', DummyProcessor);
diff --git a/third_party/blink/web_tests/external/wpt/webdriver/tests/get_window_handle/get.py b/third_party/blink/web_tests/external/wpt/webdriver/tests/get_window_handle/get.py
index 8c26203..68441da 100644
--- a/third_party/blink/web_tests/external/wpt/webdriver/tests/get_window_handle/get.py
+++ b/third_party/blink/web_tests/external/wpt/webdriver/tests/get_window_handle/get.py
@@ -1,3 +1,5 @@
+import pytest
+
 from tests.support.asserts import assert_error, assert_success
 
 
@@ -19,3 +21,23 @@
 def test_basic(session):
     response = get_window_handle(session)
     assert_success(response, session.window_handle)
+
+
+# Capability needed as long as no valid certificate is available:
+#   https://github.com/web-platform-tests/wpt/issues/28847
+@pytest.mark.capabilities({"acceptInsecureCerts": True})
+def test_navigation_with_coop_headers(session, url):
+    base_path = ("/webdriver/tests/support/html/subframe.html" +
+                 "?pipe=header(Cross-Origin-Opener-Policy,same-origin")
+
+    session.url = url(base_path, protocol="https")
+    response = get_window_handle(session)
+    first_handle = assert_success(response)
+
+    # navigating to another domain with COOP headers will force a process change
+    # in most browsers
+    session.url = url(base_path, protocol="https", domain="alt")
+    response = get_window_handle(session)
+    second_handle = assert_success(response)
+
+    assert first_handle == second_handle
diff --git a/third_party/blink/web_tests/external/wpt/webdriver/tests/maximize_window/maximize.py b/third_party/blink/web_tests/external/wpt/webdriver/tests/maximize_window/maximize.py
index 6903eec..e233e45a 100644
--- a/third_party/blink/web_tests/external/wpt/webdriver/tests/maximize_window/maximize.py
+++ b/third_party/blink/web_tests/external/wpt/webdriver/tests/maximize_window/maximize.py
@@ -84,6 +84,7 @@
     session.end()
     session.window.maximize()
     available = session.window.size
+    session.window.size = (800, 600)
     session.end()
 
     session.window.size = available
@@ -95,4 +96,5 @@
     # its expected dimensions.
     before = session.window.size
     session.window.maximize()
-    assert session.window.size == before
+    after = session.window.size
+    assert after == before
diff --git a/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-getStats.https.html b/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-getStats.https.html
index 49f8813..f26a93e 100644
--- a/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-getStats.https.html
+++ b/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-getStats.https.html
@@ -264,8 +264,11 @@
     "outbound-rtp",
     "remote-inbound-rtp",
     "remote-outbound-rtp",
+    "media-source",
     "peer-connection",
     "data-channel",
+    "sender",
+    "receiver",
     "transport",
     "candidate-pair",
     "local-candidate",
diff --git a/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-mandatory-getStats.https.html b/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-mandatory-getStats.https.html
index 7da14cd..f80fa5f 100644
--- a/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-mandatory-getStats.https.html
+++ b/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-mandatory-getStats.https.html
@@ -95,7 +95,11 @@
   ],
   RTCCodecStats: [
     "payloadType",
-    "codecType",
+    /* codecType is part of MTI but is not systematically set
+       per https://www.w3.org/TR/webrtc-stats/#dom-rtccodecstats-codectype
+       If the dictionary member is not present, it means that
+      this media format can be both encoded and decoded. */
+    // "codecType",
     "mimeType",
     "clockRate",
     "channels",
@@ -130,7 +134,11 @@
     "fingerprint",
     "fingerprintAlgorithm",
     "base64Certificate",
-    "issuerCertificateId",
+    /* issuerCertificateId is part of MTI but is not systematically set
+       per https://www.w3.org/TR/webrtc-stats/#dom-rtccertificatestats-issuercertificateid
+       If the current certificate is at the end of the chain
+       (i.e. a self-signed certificate), this will not be set. */
+    // "issuerCertificateId",
   ],
 };
 
diff --git a/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-setLocalDescription-pranswer.html b/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-setLocalDescription-pranswer.html
index e4296aef..01845f0 100644
--- a/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-setLocalDescription-pranswer.html
+++ b/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-setLocalDescription-pranswer.html
@@ -103,7 +103,6 @@
           assert_session_desc_similar(pc.pendingLocalDescription, pranswer);
           assert_equals(pc.currentLocalDescription, null);
 
-          assert_equals(pc.pendingRemoteDescription, null);
 
           assert_array_equals(states, ['have-remote-offer', 'have-local-pranswer']);
         });
diff --git a/third_party/blink/web_tests/external/wpt/webrtc/RTCStats-helper.js b/third_party/blink/web_tests/external/wpt/webrtc/RTCStats-helper.js
index 81abe24..33cbf4a 100644
--- a/third_party/blink/web_tests/external/wpt/webrtc/RTCStats-helper.js
+++ b/third_party/blink/web_tests/external/wpt/webrtc/RTCStats-helper.js
@@ -207,8 +207,9 @@
 
   assert_string_field(stats, 'mimeType');
   assert_unsigned_int_field(stats, 'clockRate');
-  assert_unsigned_int_field(stats, 'channels');
-
+  if (stats.kind === 'audio') {
+    assert_unsigned_int_field(stats, 'channels');
+  }
   assert_string_field(stats, 'sdpFmtpLine');
 }
 
diff --git a/third_party/blink/web_tests/external/wpt/webtransport/idlharness.any-expected.txt b/third_party/blink/web_tests/external/wpt/webtransport/idlharness.any-expected.txt
new file mode 100644
index 0000000..42bc8cd6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/webtransport/idlharness.any-expected.txt
@@ -0,0 +1,73 @@
+This is a testharness.js-based test.
+Found 69 tests; 45 PASS, 24 FAIL, 0 TIMEOUT, 0 NOTRUN.
+FAIL idl_test setup promise_test: Unhandled rejection with value: object "SyntaxError: Failed to construct 'WebTransport': The URL's scheme must be 'https'. 'quic-transport' is not allowed."
+PASS idl_test validation
+PASS WebTransport includes UnidirectionalStreamsTransport: member names are unique
+PASS DatagramDuplexStream interface: existence and properties of interface object
+PASS DatagramDuplexStream interface object length
+PASS DatagramDuplexStream interface object name
+PASS DatagramDuplexStream interface: existence and properties of interface prototype object
+PASS DatagramDuplexStream interface: existence and properties of interface prototype object's "constructor" property
+PASS DatagramDuplexStream interface: existence and properties of interface prototype object's @@unscopables property
+PASS DatagramDuplexStream interface: attribute readable
+PASS DatagramDuplexStream interface: attribute writable
+PASS WebTransport interface: existence and properties of interface object
+PASS WebTransport interface object length
+PASS WebTransport interface object name
+PASS WebTransport interface: existence and properties of interface prototype object
+PASS WebTransport interface: existence and properties of interface prototype object's "constructor" property
+PASS WebTransport interface: existence and properties of interface prototype object's @@unscopables property
+FAIL WebTransport interface: operation getStats() assert_own_property: interface prototype object missing non-static operation expected property "getStats" missing
+FAIL WebTransport interface: attribute state assert_true: The prototype object must have a property "state" expected true got false
+PASS WebTransport interface: attribute ready
+PASS WebTransport interface: attribute closed
+PASS WebTransport interface: operation close(optional WebTransportCloseInfo)
+FAIL WebTransport interface: attribute onstatechange assert_true: The prototype object must have a property "onstatechange" expected true got false
+FAIL WebTransport interface: attribute maxDatagramSize assert_true: The prototype object must have a property "maxDatagramSize" expected true got false
+FAIL WebTransport interface: attribute datagrams assert_true: The prototype object must have a property "datagrams" expected true got false
+PASS WebTransport interface: operation createBidirectionalStream()
+PASS WebTransport interface: attribute incomingBidirectionalStreams
+PASS WebTransport interface: operation createUnidirectionalStream(optional SendStreamParameters)
+PASS WebTransport interface: attribute incomingUnidirectionalStreams
+FAIL WebTransport must be primary interface of webTransport assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL Stringification of webTransport assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "getStats()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "state" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "ready" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "closed" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "close(optional WebTransportCloseInfo)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: calling close(optional WebTransportCloseInfo) on webTransport with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "onstatechange" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "maxDatagramSize" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "datagrams" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "createBidirectionalStream()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "incomingBidirectionalStreams" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "createUnidirectionalStream(optional SendStreamParameters)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: calling createUnidirectionalStream(optional SendStreamParameters) on webTransport with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "incomingUnidirectionalStreams" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+PASS SendStream interface: existence and properties of interface object
+PASS SendStream interface object length
+PASS SendStream interface object name
+PASS SendStream interface: existence and properties of interface prototype object
+PASS SendStream interface: existence and properties of interface prototype object's "constructor" property
+PASS SendStream interface: existence and properties of interface prototype object's @@unscopables property
+PASS SendStream interface: attribute writingAborted
+PASS SendStream interface: operation abortWriting(optional StreamAbortInfo)
+FAIL ReceiveStream interface: existence and properties of interface object assert_equals: prototype of ReceiveStream is not ReadableStream expected function "function ReadableStream() { [native code] }" but got function "function () { [native code] }"
+PASS ReceiveStream interface object length
+PASS ReceiveStream interface object name
+FAIL ReceiveStream interface: existence and properties of interface prototype object assert_equals: prototype of ReceiveStream.prototype is not ReadableStream.prototype expected object "[object ReadableStream]" but got object "[object Object]"
+PASS ReceiveStream interface: existence and properties of interface prototype object's "constructor" property
+PASS ReceiveStream interface: existence and properties of interface prototype object's @@unscopables property
+PASS ReceiveStream interface: attribute readingAborted
+PASS ReceiveStream interface: operation abortReading(optional StreamAbortInfo)
+PASS BidirectionalStream interface: existence and properties of interface object
+PASS BidirectionalStream interface object length
+PASS BidirectionalStream interface object name
+PASS BidirectionalStream interface: existence and properties of interface prototype object
+PASS BidirectionalStream interface: existence and properties of interface prototype object's "constructor" property
+PASS BidirectionalStream interface: existence and properties of interface prototype object's @@unscopables property
+PASS BidirectionalStream interface: attribute readable
+PASS BidirectionalStream interface: attribute writable
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/webtransport/idlharness.any.js b/third_party/blink/web_tests/external/wpt/webtransport/idlharness.any.js
new file mode 100644
index 0000000..1a22753
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/webtransport/idlharness.any.js
@@ -0,0 +1,20 @@
+// META: global=window,worker
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+
+'use strict';
+
+idl_test(
+  ['webtransport'],
+  ['streams'],
+  idl_array => {
+    idl_array.add_objects({
+      WebTransport: ['webTransport'],
+      // TODO: The stream APIs below require a working connection to create.
+      // BidirectionalStream
+      // SendStream
+      // ReceiveStream
+    });
+    self.webTransport = new WebTransport("quic-transport://example.com/");
+  }
+);
diff --git a/third_party/blink/web_tests/external/wpt/webtransport/idlharness.any.serviceworker-expected.txt b/third_party/blink/web_tests/external/wpt/webtransport/idlharness.any.serviceworker-expected.txt
new file mode 100644
index 0000000..42bc8cd6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/webtransport/idlharness.any.serviceworker-expected.txt
@@ -0,0 +1,73 @@
+This is a testharness.js-based test.
+Found 69 tests; 45 PASS, 24 FAIL, 0 TIMEOUT, 0 NOTRUN.
+FAIL idl_test setup promise_test: Unhandled rejection with value: object "SyntaxError: Failed to construct 'WebTransport': The URL's scheme must be 'https'. 'quic-transport' is not allowed."
+PASS idl_test validation
+PASS WebTransport includes UnidirectionalStreamsTransport: member names are unique
+PASS DatagramDuplexStream interface: existence and properties of interface object
+PASS DatagramDuplexStream interface object length
+PASS DatagramDuplexStream interface object name
+PASS DatagramDuplexStream interface: existence and properties of interface prototype object
+PASS DatagramDuplexStream interface: existence and properties of interface prototype object's "constructor" property
+PASS DatagramDuplexStream interface: existence and properties of interface prototype object's @@unscopables property
+PASS DatagramDuplexStream interface: attribute readable
+PASS DatagramDuplexStream interface: attribute writable
+PASS WebTransport interface: existence and properties of interface object
+PASS WebTransport interface object length
+PASS WebTransport interface object name
+PASS WebTransport interface: existence and properties of interface prototype object
+PASS WebTransport interface: existence and properties of interface prototype object's "constructor" property
+PASS WebTransport interface: existence and properties of interface prototype object's @@unscopables property
+FAIL WebTransport interface: operation getStats() assert_own_property: interface prototype object missing non-static operation expected property "getStats" missing
+FAIL WebTransport interface: attribute state assert_true: The prototype object must have a property "state" expected true got false
+PASS WebTransport interface: attribute ready
+PASS WebTransport interface: attribute closed
+PASS WebTransport interface: operation close(optional WebTransportCloseInfo)
+FAIL WebTransport interface: attribute onstatechange assert_true: The prototype object must have a property "onstatechange" expected true got false
+FAIL WebTransport interface: attribute maxDatagramSize assert_true: The prototype object must have a property "maxDatagramSize" expected true got false
+FAIL WebTransport interface: attribute datagrams assert_true: The prototype object must have a property "datagrams" expected true got false
+PASS WebTransport interface: operation createBidirectionalStream()
+PASS WebTransport interface: attribute incomingBidirectionalStreams
+PASS WebTransport interface: operation createUnidirectionalStream(optional SendStreamParameters)
+PASS WebTransport interface: attribute incomingUnidirectionalStreams
+FAIL WebTransport must be primary interface of webTransport assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL Stringification of webTransport assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "getStats()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "state" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "ready" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "closed" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "close(optional WebTransportCloseInfo)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: calling close(optional WebTransportCloseInfo) on webTransport with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "onstatechange" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "maxDatagramSize" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "datagrams" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "createBidirectionalStream()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "incomingBidirectionalStreams" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "createUnidirectionalStream(optional SendStreamParameters)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: calling createUnidirectionalStream(optional SendStreamParameters) on webTransport with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "incomingUnidirectionalStreams" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+PASS SendStream interface: existence and properties of interface object
+PASS SendStream interface object length
+PASS SendStream interface object name
+PASS SendStream interface: existence and properties of interface prototype object
+PASS SendStream interface: existence and properties of interface prototype object's "constructor" property
+PASS SendStream interface: existence and properties of interface prototype object's @@unscopables property
+PASS SendStream interface: attribute writingAborted
+PASS SendStream interface: operation abortWriting(optional StreamAbortInfo)
+FAIL ReceiveStream interface: existence and properties of interface object assert_equals: prototype of ReceiveStream is not ReadableStream expected function "function ReadableStream() { [native code] }" but got function "function () { [native code] }"
+PASS ReceiveStream interface object length
+PASS ReceiveStream interface object name
+FAIL ReceiveStream interface: existence and properties of interface prototype object assert_equals: prototype of ReceiveStream.prototype is not ReadableStream.prototype expected object "[object ReadableStream]" but got object "[object Object]"
+PASS ReceiveStream interface: existence and properties of interface prototype object's "constructor" property
+PASS ReceiveStream interface: existence and properties of interface prototype object's @@unscopables property
+PASS ReceiveStream interface: attribute readingAborted
+PASS ReceiveStream interface: operation abortReading(optional StreamAbortInfo)
+PASS BidirectionalStream interface: existence and properties of interface object
+PASS BidirectionalStream interface object length
+PASS BidirectionalStream interface object name
+PASS BidirectionalStream interface: existence and properties of interface prototype object
+PASS BidirectionalStream interface: existence and properties of interface prototype object's "constructor" property
+PASS BidirectionalStream interface: existence and properties of interface prototype object's @@unscopables property
+PASS BidirectionalStream interface: attribute readable
+PASS BidirectionalStream interface: attribute writable
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/webtransport/idlharness.any.sharedworker-expected.txt b/third_party/blink/web_tests/external/wpt/webtransport/idlharness.any.sharedworker-expected.txt
new file mode 100644
index 0000000..42bc8cd6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/webtransport/idlharness.any.sharedworker-expected.txt
@@ -0,0 +1,73 @@
+This is a testharness.js-based test.
+Found 69 tests; 45 PASS, 24 FAIL, 0 TIMEOUT, 0 NOTRUN.
+FAIL idl_test setup promise_test: Unhandled rejection with value: object "SyntaxError: Failed to construct 'WebTransport': The URL's scheme must be 'https'. 'quic-transport' is not allowed."
+PASS idl_test validation
+PASS WebTransport includes UnidirectionalStreamsTransport: member names are unique
+PASS DatagramDuplexStream interface: existence and properties of interface object
+PASS DatagramDuplexStream interface object length
+PASS DatagramDuplexStream interface object name
+PASS DatagramDuplexStream interface: existence and properties of interface prototype object
+PASS DatagramDuplexStream interface: existence and properties of interface prototype object's "constructor" property
+PASS DatagramDuplexStream interface: existence and properties of interface prototype object's @@unscopables property
+PASS DatagramDuplexStream interface: attribute readable
+PASS DatagramDuplexStream interface: attribute writable
+PASS WebTransport interface: existence and properties of interface object
+PASS WebTransport interface object length
+PASS WebTransport interface object name
+PASS WebTransport interface: existence and properties of interface prototype object
+PASS WebTransport interface: existence and properties of interface prototype object's "constructor" property
+PASS WebTransport interface: existence and properties of interface prototype object's @@unscopables property
+FAIL WebTransport interface: operation getStats() assert_own_property: interface prototype object missing non-static operation expected property "getStats" missing
+FAIL WebTransport interface: attribute state assert_true: The prototype object must have a property "state" expected true got false
+PASS WebTransport interface: attribute ready
+PASS WebTransport interface: attribute closed
+PASS WebTransport interface: operation close(optional WebTransportCloseInfo)
+FAIL WebTransport interface: attribute onstatechange assert_true: The prototype object must have a property "onstatechange" expected true got false
+FAIL WebTransport interface: attribute maxDatagramSize assert_true: The prototype object must have a property "maxDatagramSize" expected true got false
+FAIL WebTransport interface: attribute datagrams assert_true: The prototype object must have a property "datagrams" expected true got false
+PASS WebTransport interface: operation createBidirectionalStream()
+PASS WebTransport interface: attribute incomingBidirectionalStreams
+PASS WebTransport interface: operation createUnidirectionalStream(optional SendStreamParameters)
+PASS WebTransport interface: attribute incomingUnidirectionalStreams
+FAIL WebTransport must be primary interface of webTransport assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL Stringification of webTransport assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "getStats()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "state" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "ready" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "closed" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "close(optional WebTransportCloseInfo)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: calling close(optional WebTransportCloseInfo) on webTransport with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "onstatechange" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "maxDatagramSize" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "datagrams" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "createBidirectionalStream()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "incomingBidirectionalStreams" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "createUnidirectionalStream(optional SendStreamParameters)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: calling createUnidirectionalStream(optional SendStreamParameters) on webTransport with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "incomingUnidirectionalStreams" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+PASS SendStream interface: existence and properties of interface object
+PASS SendStream interface object length
+PASS SendStream interface object name
+PASS SendStream interface: existence and properties of interface prototype object
+PASS SendStream interface: existence and properties of interface prototype object's "constructor" property
+PASS SendStream interface: existence and properties of interface prototype object's @@unscopables property
+PASS SendStream interface: attribute writingAborted
+PASS SendStream interface: operation abortWriting(optional StreamAbortInfo)
+FAIL ReceiveStream interface: existence and properties of interface object assert_equals: prototype of ReceiveStream is not ReadableStream expected function "function ReadableStream() { [native code] }" but got function "function () { [native code] }"
+PASS ReceiveStream interface object length
+PASS ReceiveStream interface object name
+FAIL ReceiveStream interface: existence and properties of interface prototype object assert_equals: prototype of ReceiveStream.prototype is not ReadableStream.prototype expected object "[object ReadableStream]" but got object "[object Object]"
+PASS ReceiveStream interface: existence and properties of interface prototype object's "constructor" property
+PASS ReceiveStream interface: existence and properties of interface prototype object's @@unscopables property
+PASS ReceiveStream interface: attribute readingAborted
+PASS ReceiveStream interface: operation abortReading(optional StreamAbortInfo)
+PASS BidirectionalStream interface: existence and properties of interface object
+PASS BidirectionalStream interface object length
+PASS BidirectionalStream interface object name
+PASS BidirectionalStream interface: existence and properties of interface prototype object
+PASS BidirectionalStream interface: existence and properties of interface prototype object's "constructor" property
+PASS BidirectionalStream interface: existence and properties of interface prototype object's @@unscopables property
+PASS BidirectionalStream interface: attribute readable
+PASS BidirectionalStream interface: attribute writable
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/webtransport/idlharness.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/webtransport/idlharness.any.worker-expected.txt
new file mode 100644
index 0000000..42bc8cd6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/webtransport/idlharness.any.worker-expected.txt
@@ -0,0 +1,73 @@
+This is a testharness.js-based test.
+Found 69 tests; 45 PASS, 24 FAIL, 0 TIMEOUT, 0 NOTRUN.
+FAIL idl_test setup promise_test: Unhandled rejection with value: object "SyntaxError: Failed to construct 'WebTransport': The URL's scheme must be 'https'. 'quic-transport' is not allowed."
+PASS idl_test validation
+PASS WebTransport includes UnidirectionalStreamsTransport: member names are unique
+PASS DatagramDuplexStream interface: existence and properties of interface object
+PASS DatagramDuplexStream interface object length
+PASS DatagramDuplexStream interface object name
+PASS DatagramDuplexStream interface: existence and properties of interface prototype object
+PASS DatagramDuplexStream interface: existence and properties of interface prototype object's "constructor" property
+PASS DatagramDuplexStream interface: existence and properties of interface prototype object's @@unscopables property
+PASS DatagramDuplexStream interface: attribute readable
+PASS DatagramDuplexStream interface: attribute writable
+PASS WebTransport interface: existence and properties of interface object
+PASS WebTransport interface object length
+PASS WebTransport interface object name
+PASS WebTransport interface: existence and properties of interface prototype object
+PASS WebTransport interface: existence and properties of interface prototype object's "constructor" property
+PASS WebTransport interface: existence and properties of interface prototype object's @@unscopables property
+FAIL WebTransport interface: operation getStats() assert_own_property: interface prototype object missing non-static operation expected property "getStats" missing
+FAIL WebTransport interface: attribute state assert_true: The prototype object must have a property "state" expected true got false
+PASS WebTransport interface: attribute ready
+PASS WebTransport interface: attribute closed
+PASS WebTransport interface: operation close(optional WebTransportCloseInfo)
+FAIL WebTransport interface: attribute onstatechange assert_true: The prototype object must have a property "onstatechange" expected true got false
+FAIL WebTransport interface: attribute maxDatagramSize assert_true: The prototype object must have a property "maxDatagramSize" expected true got false
+FAIL WebTransport interface: attribute datagrams assert_true: The prototype object must have a property "datagrams" expected true got false
+PASS WebTransport interface: operation createBidirectionalStream()
+PASS WebTransport interface: attribute incomingBidirectionalStreams
+PASS WebTransport interface: operation createUnidirectionalStream(optional SendStreamParameters)
+PASS WebTransport interface: attribute incomingUnidirectionalStreams
+FAIL WebTransport must be primary interface of webTransport assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL Stringification of webTransport assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "getStats()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "state" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "ready" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "closed" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "close(optional WebTransportCloseInfo)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: calling close(optional WebTransportCloseInfo) on webTransport with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "onstatechange" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "maxDatagramSize" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "datagrams" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "createBidirectionalStream()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "incomingBidirectionalStreams" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "createUnidirectionalStream(optional SendStreamParameters)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: calling createUnidirectionalStream(optional SendStreamParameters) on webTransport with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+FAIL WebTransport interface: webTransport must inherit property "incomingUnidirectionalStreams" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: webTransport is not defined"
+PASS SendStream interface: existence and properties of interface object
+PASS SendStream interface object length
+PASS SendStream interface object name
+PASS SendStream interface: existence and properties of interface prototype object
+PASS SendStream interface: existence and properties of interface prototype object's "constructor" property
+PASS SendStream interface: existence and properties of interface prototype object's @@unscopables property
+PASS SendStream interface: attribute writingAborted
+PASS SendStream interface: operation abortWriting(optional StreamAbortInfo)
+FAIL ReceiveStream interface: existence and properties of interface object assert_equals: prototype of ReceiveStream is not ReadableStream expected function "function ReadableStream() { [native code] }" but got function "function () { [native code] }"
+PASS ReceiveStream interface object length
+PASS ReceiveStream interface object name
+FAIL ReceiveStream interface: existence and properties of interface prototype object assert_equals: prototype of ReceiveStream.prototype is not ReadableStream.prototype expected object "[object ReadableStream]" but got object "[object Object]"
+PASS ReceiveStream interface: existence and properties of interface prototype object's "constructor" property
+PASS ReceiveStream interface: existence and properties of interface prototype object's @@unscopables property
+PASS ReceiveStream interface: attribute readingAborted
+PASS ReceiveStream interface: operation abortReading(optional StreamAbortInfo)
+PASS BidirectionalStream interface: existence and properties of interface object
+PASS BidirectionalStream interface object length
+PASS BidirectionalStream interface object name
+PASS BidirectionalStream interface: existence and properties of interface prototype object
+PASS BidirectionalStream interface: existence and properties of interface prototype object's "constructor" property
+PASS BidirectionalStream interface: existence and properties of interface prototype object's @@unscopables property
+PASS BidirectionalStream interface: attribute readable
+PASS BidirectionalStream interface: attribute writable
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/webxr/resources/webxr_util.js b/third_party/blink/web_tests/external/wpt/webxr/resources/webxr_util.js
index cf9c6ff..75d73968cc 100644
--- a/third_party/blink/web_tests/external/wpt/webxr/resources/webxr_util.js
+++ b/third_party/blink/web_tests/external/wpt/webxr/resources/webxr_util.js
@@ -15,6 +15,10 @@
 
 function xr_promise_test(name, func, properties, glContextType, glContextProperties) {
   promise_test(async (t) => {
+    if (glContextType === 'webgl2') {
+      // Fast fail on platforms not supporting WebGL2.
+      assert_implements('WebGL2RenderingContext' in window, 'webgl2 not supported.');
+    }
     // Perform any required test setup:
     xr_debug(name, 'setup');
 
diff --git a/third_party/blink/web_tests/external/wpt/xhr/formdata/constructor-formelement.html b/third_party/blink/web_tests/external/wpt/xhr/formdata/constructor-formelement.html
index cce0f42..813e1d2a6 100644
--- a/third_party/blink/web_tests/external/wpt/xhr/formdata/constructor-formelement.html
+++ b/third_party/blink/web_tests/external/wpt/xhr/formdata/constructor-formelement.html
@@ -77,7 +77,7 @@
   <input type="color" name="submit-me-15" value="#123456">
 
   <textarea name="submit-me-16">textarea value
-with linebreaks set to CRLF</textarea>
+with linebreaks set to LF</textarea>
 
   <!-- this generates two form data entries! -->
   <input type="text" name="dirname-is-special" dirname="submit-me-17" value="dirname-value">
@@ -123,11 +123,11 @@
     ["submit-me-13", "11"],
     ["submit-me-14", "11"],
     ["submit-me-15", "#123456"],
-    ["submit-me-16", "textarea value\r\nwith linebreaks set to CRLF"],
+    ["submit-me-16", "textarea value\nwith linebreaks set to LF"],
     ["dirname-is-special", "dirname-value"],
     ["submit-me-17", "ltr"],
     ["submit-me-18-\uFFFD", "value-\uFFFD"],
-    ["submit-me-\r\n19\r\n", "value"],
+    ["submit-me-\r19\n", "value"],
     ["submit-me-21", ""]
   ];
 
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-ignoredNodes-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-ignoredNodes-expected.txt
index 40dab7f..e9d5981 100644
--- a/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-ignoredNodes-expected.txt
+++ b/third_party/blink/web_tests/http/tests/inspector-protocol/accessibility/accessibility-ignoredNodes-expected.txt
@@ -14,16 +14,40 @@
     }
 }
 
-*none
+RootWebArea
+  img
+    *SvgRoot
 {
     domNode : svg
-    ignored : true
-    ignoredReasons : [
-    ]
+    ignored : false
+    name : {
+        sources : [
+            [0] : {
+                attribute : aria-labelledby
+                type : relatedElement
+            }
+            [1] : {
+                attribute : aria-label
+                type : attribute
+            }
+            [2] : {
+                nativeSource : title
+                type : relatedElement
+            }
+            [3] : {
+                attribute : title
+                type : attribute
+            }
+        ]
+        type : computedString
+        value : 
+    }
     nodeId : <string>
+    properties : [
+    ]
     role : {
-        type : role
-        value : none
+        type : internalRole
+        value : SvgRoot
     }
 }
 
diff --git a/third_party/blink/web_tests/images/resources/avif/README.md b/third_party/blink/web_tests/images/resources/avif/README.md
index 3cc35267..78abe86 100644
--- a/third_party/blink/web_tests/images/resources/avif/README.md
+++ b/third_party/blink/web_tests/images/resources/avif/README.md
@@ -88,4 +88,9 @@
 This image uses a 'clap' (clean aperture) image property to crop the image to
 contain the blue rectangle only (with a magenta rectangle inside).
 
+### blue-and-magenta-crop-invalid.avif
+This image is the same as blue-and-magenta-crop.avif except that the fractions
+horizOff and vertOff have positive numerators and negative denominators (30/-1
+and 10/-1 instead of -30/1 and -10/1). Changed with a hex editor.
+
 ### TODO(crbug.com/960620): Figure out how the rest of files were generated.
diff --git a/third_party/blink/web_tests/images/resources/avif/blue-and-magenta-crop-invalid.avif b/third_party/blink/web_tests/images/resources/avif/blue-and-magenta-crop-invalid.avif
new file mode 100644
index 0000000..e465182
--- /dev/null
+++ b/third_party/blink/web_tests/images/resources/avif/blue-and-magenta-crop-invalid.avif
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png
index 316483ca..e6933e9 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
index 662cbfb..df20a95 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-image-01-b-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-image-01-b-expected.png
index 1297542f..fd0d0f3 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-image-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-image-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
index 4da9bb4a..8f70bf2 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-image-01-b-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-image-01-b-expected.png
new file mode 100644
index 0000000..fd0d0f3
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-image-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png b/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png
new file mode 100644
index 0000000..e6933e9
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png b/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
new file mode 100644
index 0000000..df20a95
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-image-01-b-expected.png b/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-image-01-b-expected.png
new file mode 100644
index 0000000..fd0d0f3
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-image-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt
new file mode 100644
index 0000000..476b017a0
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt
@@ -0,0 +1,26 @@
+This is a testharness.js-based test.
+FAIL 'min(1%)' as a specified value should serialize as 'calc(1%)'. assert_equals: 'min(1%)' and 'calc(1%)' should serialize the same in specified values. expected "calc(1%)" but got "min(1%)"
+PASS 'min(1%)' as a computed value should serialize as '1%'.
+PASS 'min(1%)' as a used value should serialize as '1px'.
+FAIL 'max(1%)' as a specified value should serialize as 'calc(1%)'. assert_equals: 'max(1%)' and 'calc(1%)' should serialize the same in specified values. expected "calc(1%)" but got "max(1%)"
+PASS 'max(1%)' as a computed value should serialize as '1%'.
+PASS 'max(1%)' as a used value should serialize as '1px'.
+PASS 'min(1%, 2%, 3%)' as a specified value should serialize as 'min(1%, 2%, 3%)'.
+FAIL 'min(1%, 2%, 3%)' as a computed value should serialize as 'min(1%, 2%, 3%)'. assert_equals: 'min(1%, 2%, 3%)' should round-trip exactly in computed values. expected "min(1%, 2%, 3%)" but got "1%"
+PASS 'min(1%, 2%, 3%)' as a used value should serialize as '1px'.
+PASS 'min(3%, 2%, 1%)' as a specified value should serialize as 'min(3%, 2%, 1%)'.
+FAIL 'min(3%, 2%, 1%)' as a computed value should serialize as 'min(3%, 2%, 1%)'. assert_equals: 'min(3%, 2%, 1%)' should round-trip exactly in computed values. expected "min(3%, 2%, 1%)" but got "1%"
+PASS 'min(3%, 2%, 1%)' as a used value should serialize as '1px'.
+PASS 'max(1%, 2%, 3%)' as a specified value should serialize as 'max(1%, 2%, 3%)'.
+FAIL 'max(1%, 2%, 3%)' as a computed value should serialize as 'max(1%, 2%, 3%)'. assert_equals: 'max(1%, 2%, 3%)' should round-trip exactly in computed values. expected "max(1%, 2%, 3%)" but got "3%"
+PASS 'max(1%, 2%, 3%)' as a used value should serialize as '3px'.
+PASS 'max(3%, 2%, 1%)' as a specified value should serialize as 'max(3%, 2%, 1%)'.
+FAIL 'max(3%, 2%, 1%)' as a computed value should serialize as 'max(3%, 2%, 1%)'. assert_equals: 'max(3%, 2%, 1%)' should round-trip exactly in computed values. expected "max(3%, 2%, 1%)" but got "3%"
+PASS 'max(3%, 2%, 1%)' as a used value should serialize as '3px'.
+PASS 'min(1%, 2%, 3%) 0px' as a specified value should serialize as 'min(1%, 2%, 3%) 0px'.
+FAIL 'min(1%, 2%, 3%) 0px' as a computed value should serialize as 'min(1%, 2%, 3%) 0px'. assert_equals: 'min(1%, 2%, 3%) 0px' should round-trip exactly in computed values. expected "min(1%, 2%, 3%) 0px" but got "min(1% + 0px, 2% + 0px, 3% + 0px) 0px"
+PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a specified value should serialize as 'calc(15%)'.
+PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a computed value should serialize as '15%'.
+PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a used value should serialize as '15px'.
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties-expected.txt b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties-expected.txt
new file mode 100644
index 0000000..ebdf863d
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties-expected.txt
@@ -0,0 +1,10 @@
+This is a testharness.js-based test.
+PASS Static name
+PASS Static id
+PASS Static name on the prototype
+FAIL constructor assert_false: gsp.hasOwnProperty("constructor") expected false got true
+FAIL duplicate property names assert_equals: expected 1 but got 0
+PASS Dynamic name
+PASS Ghost name
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
new file mode 100644
index 0000000..d10785d
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
@@ -0,0 +1,3765 @@
+This is a testharness.js-based test.
+Found 3761 tests; 3739 PASS, 22 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS idl_test validation
+PASS Partial interface Document: original interface defined
+PASS Partial interface Document: member names are unique
+PASS Partial interface mixin DocumentOrShadowRoot: original interface mixin defined
+PASS Partial interface mixin DocumentOrShadowRoot: member names are unique
+PASS Partial interface mixin NavigatorID: original interface mixin defined
+PASS Partial interface mixin NavigatorID: member names are unique
+PASS Partial interface HTMLAnchorElement: original interface defined
+PASS Partial interface HTMLAnchorElement: member names are unique
+PASS Partial interface HTMLAreaElement: original interface defined
+PASS Partial interface HTMLAreaElement: member names are unique
+PASS Partial interface HTMLBodyElement: original interface defined
+PASS Partial interface HTMLBodyElement: member names are unique
+PASS Partial interface HTMLBRElement: original interface defined
+PASS Partial interface HTMLBRElement: member names are unique
+PASS Partial interface HTMLTableCaptionElement: original interface defined
+PASS Partial interface HTMLTableCaptionElement: member names are unique
+PASS Partial interface HTMLTableColElement: original interface defined
+PASS Partial interface HTMLTableColElement: member names are unique
+PASS Partial interface HTMLDivElement: original interface defined
+PASS Partial interface HTMLDivElement: member names are unique
+PASS Partial interface HTMLDListElement: original interface defined
+PASS Partial interface HTMLDListElement: member names are unique
+PASS Partial interface HTMLEmbedElement: original interface defined
+PASS Partial interface HTMLEmbedElement: member names are unique
+PASS Partial interface HTMLHeadingElement: original interface defined
+PASS Partial interface HTMLHeadingElement: member names are unique
+PASS Partial interface HTMLHRElement: original interface defined
+PASS Partial interface HTMLHRElement: member names are unique
+PASS Partial interface HTMLHtmlElement: original interface defined
+PASS Partial interface HTMLHtmlElement: member names are unique
+PASS Partial interface HTMLIFrameElement: original interface defined
+PASS Partial interface HTMLIFrameElement: member names are unique
+PASS Partial interface HTMLImageElement: original interface defined
+PASS Partial interface HTMLImageElement: member names are unique
+PASS Partial interface HTMLInputElement: original interface defined
+PASS Partial interface HTMLInputElement: member names are unique
+PASS Partial interface HTMLLegendElement: original interface defined
+PASS Partial interface HTMLLegendElement: member names are unique
+PASS Partial interface HTMLLIElement: original interface defined
+PASS Partial interface HTMLLIElement: member names are unique
+PASS Partial interface HTMLLinkElement: original interface defined
+PASS Partial interface HTMLLinkElement: member names are unique
+PASS Partial interface HTMLMenuElement: original interface defined
+PASS Partial interface HTMLMenuElement: member names are unique
+PASS Partial interface HTMLMetaElement: original interface defined
+PASS Partial interface HTMLMetaElement: member names are unique
+PASS Partial interface HTMLObjectElement: original interface defined
+PASS Partial interface HTMLObjectElement: member names are unique
+PASS Partial interface HTMLOListElement: original interface defined
+PASS Partial interface HTMLOListElement: member names are unique
+PASS Partial interface HTMLParagraphElement: original interface defined
+PASS Partial interface HTMLParagraphElement: member names are unique
+PASS Partial interface HTMLParamElement: original interface defined
+PASS Partial interface HTMLParamElement: member names are unique
+PASS Partial interface HTMLPreElement: original interface defined
+PASS Partial interface HTMLPreElement: member names are unique
+PASS Partial interface HTMLStyleElement: original interface defined
+PASS Partial interface HTMLStyleElement: member names are unique
+PASS Partial interface HTMLScriptElement: original interface defined
+PASS Partial interface HTMLScriptElement: member names are unique
+PASS Partial interface HTMLTableElement: original interface defined
+PASS Partial interface HTMLTableElement: member names are unique
+PASS Partial interface HTMLTableSectionElement: original interface defined
+PASS Partial interface HTMLTableSectionElement: member names are unique
+PASS Partial interface HTMLTableCellElement: original interface defined
+PASS Partial interface HTMLTableCellElement: member names are unique
+PASS Partial interface HTMLTableRowElement: original interface defined
+PASS Partial interface HTMLTableRowElement: member names are unique
+PASS Partial interface HTMLUListElement: original interface defined
+PASS Partial interface HTMLUListElement: member names are unique
+PASS Partial interface Document[2]: original interface defined
+PASS Partial interface Document[2]: member names are unique
+PASS Partial interface Window: original interface defined
+PASS Partial interface Window: member names are unique
+PASS Partial interface Document[3]: member names are unique
+PASS Partial interface mixin DocumentOrShadowRoot[2]: member names are unique
+PASS Partial interface UIEvent: member names are unique
+PASS Partial interface MouseEvent: member names are unique
+PASS Partial interface UIEvent[2]: member names are unique
+PASS Partial dictionary UIEventInit: member names are unique
+PASS Document includes GlobalEventHandlers: member names are unique
+PASS Document includes DocumentAndElementEventHandlers: member names are unique
+PASS HTMLElement includes GlobalEventHandlers: member names are unique
+PASS HTMLElement includes DocumentAndElementEventHandlers: member names are unique
+PASS HTMLElement includes ElementContentEditable: member names are unique
+PASS HTMLElement includes HTMLOrSVGElement: member names are unique
+PASS HTMLLinkElement includes LinkStyle: member names are unique
+PASS HTMLStyleElement includes LinkStyle: member names are unique
+PASS HTMLBodyElement includes WindowEventHandlers: member names are unique
+PASS HTMLAnchorElement includes HTMLHyperlinkElementUtils: member names are unique
+PASS HTMLAreaElement includes HTMLHyperlinkElementUtils: member names are unique
+PASS CanvasRenderingContext2D includes CanvasState: member names are unique
+PASS CanvasRenderingContext2D includes CanvasTransform: member names are unique
+PASS CanvasRenderingContext2D includes CanvasCompositing: member names are unique
+PASS CanvasRenderingContext2D includes CanvasImageSmoothing: member names are unique
+PASS CanvasRenderingContext2D includes CanvasFillStrokeStyles: member names are unique
+PASS CanvasRenderingContext2D includes CanvasShadowStyles: member names are unique
+PASS CanvasRenderingContext2D includes CanvasFilters: member names are unique
+PASS CanvasRenderingContext2D includes CanvasRect: member names are unique
+PASS CanvasRenderingContext2D includes CanvasDrawPath: member names are unique
+PASS CanvasRenderingContext2D includes CanvasUserInterface: member names are unique
+PASS CanvasRenderingContext2D includes CanvasText: member names are unique
+PASS CanvasRenderingContext2D includes CanvasDrawImage: member names are unique
+PASS CanvasRenderingContext2D includes CanvasImageData: member names are unique
+PASS CanvasRenderingContext2D includes CanvasPathDrawingStyles: member names are unique
+PASS CanvasRenderingContext2D includes CanvasTextDrawingStyles: member names are unique
+PASS CanvasRenderingContext2D includes CanvasPath: member names are unique
+PASS Path2D includes CanvasPath: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasState: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasTransform: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasCompositing: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasImageSmoothing: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasFillStrokeStyles: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasShadowStyles: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasFilters: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasRect: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasDrawPath: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasText: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasDrawImage: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasImageData: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasPathDrawingStyles: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasTextDrawingStyles: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasPath: member names are unique
+PASS ElementInternals includes ARIAMixin: member names are unique
+PASS Window includes GlobalEventHandlers: member names are unique
+PASS Window includes WindowEventHandlers: member names are unique
+PASS Window includes WindowOrWorkerGlobalScope: member names are unique
+PASS WorkerGlobalScope includes WindowOrWorkerGlobalScope: member names are unique
+PASS Navigator includes NavigatorID: member names are unique
+PASS Navigator includes NavigatorLanguage: member names are unique
+PASS Navigator includes NavigatorOnLine: member names are unique
+PASS Navigator includes NavigatorContentUtils: member names are unique
+PASS Navigator includes NavigatorCookies: member names are unique
+PASS Navigator includes NavigatorPlugins: member names are unique
+PASS Navigator includes NavigatorConcurrentHardware: member names are unique
+PASS Window includes AnimationFrameProvider: member names are unique
+PASS DedicatedWorkerGlobalScope includes AnimationFrameProvider: member names are unique
+PASS Worker includes AbstractWorker: member names are unique
+PASS SharedWorker includes AbstractWorker: member names are unique
+PASS WorkerNavigator includes NavigatorID: member names are unique
+PASS WorkerNavigator includes NavigatorLanguage: member names are unique
+PASS WorkerNavigator includes NavigatorOnLine: member names are unique
+PASS WorkerNavigator includes NavigatorConcurrentHardware: member names are unique
+PASS Window includes WindowSessionStorage: member names are unique
+PASS Window includes WindowLocalStorage: member names are unique
+PASS HTMLFrameSetElement includes WindowEventHandlers: member names are unique
+PASS Element includes ARIAMixin: member names are unique
+PASS SVGElement includes GlobalEventHandlers: member names are unique
+PASS SVGElement includes DocumentAndElementEventHandlers: member names are unique
+PASS SVGElement includes SVGElementInstance: member names are unique
+PASS SVGElement includes HTMLOrSVGElement: member names are unique
+PASS SVGGraphicsElement includes SVGTests: member names are unique
+PASS SVGSVGElement includes SVGFitToViewBox: member names are unique
+PASS SVGSVGElement includes WindowEventHandlers: member names are unique
+PASS SVGImageElement includes SVGURIReference: member names are unique
+PASS SVGScriptElement includes SVGURIReference: member names are unique
+PASS HTMLElement includes ElementCSSInlineStyle: member names are unique
+PASS SVGElement includes ElementCSSInlineStyle: member names are unique
+PASS Document includes NonElementParentNode: member names are unique
+PASS DocumentFragment includes NonElementParentNode: member names are unique
+PASS Document includes DocumentOrShadowRoot: member names are unique
+PASS ShadowRoot includes DocumentOrShadowRoot: member names are unique
+PASS Document includes ParentNode: member names are unique
+PASS DocumentFragment includes ParentNode: member names are unique
+PASS Element includes ParentNode: member names are unique
+PASS Element includes NonDocumentTypeChildNode: member names are unique
+PASS Element includes ChildNode: member names are unique
+PASS Element includes Slottable: member names are unique
+PASS Document includes XPathEvaluatorBase: member names are unique
+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(optional DOMString)
+PASS HTMLAllCollection must be primary interface of document.all
+PASS Stringification of document.all
+PASS HTMLAllCollection interface: document.all must inherit property "length" with the proper type
+PASS HTMLAllCollection interface: document.all must inherit property "namedItem(DOMString)" with the proper type
+PASS HTMLAllCollection interface: calling namedItem(DOMString) on document.all with too few arguments must throw TypeError
+PASS HTMLAllCollection interface: document.all must inherit property "item(optional DOMString)" with the proper type
+PASS HTMLAllCollection interface: calling item(optional DOMString) on document.all with too few arguments must throw TypeError
+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((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?)
+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((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?)" with the proper type
+PASS HTMLOptionsCollection interface: calling add((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?) 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
+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 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
+FAIL HTMLElement interface: attribute onslotchange assert_true: The prototype object must have a property "onslotchange" expected true got false
+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 onwebkitanimationend
+PASS HTMLElement interface: attribute onwebkitanimationiteration
+PASS HTMLElement interface: attribute onwebkitanimationstart
+PASS HTMLElement interface: attribute onwebkittransitionend
+PASS HTMLElement interface: attribute onwheel
+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
+PASS HTMLElement interface: attribute autofocus
+PASS HTMLElement interface: attribute tabIndex
+PASS HTMLElement interface: operation focus(optional 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
+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 "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
+FAIL HTMLElement interface: document.createElement("noscript") must inherit property "onslotchange" with the proper type assert_inherits: property "onslotchange" not found in prototype chain
+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 "onwebkitanimationend" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwebkitanimationiteration" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwebkitanimationstart" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwebkittransitionend" 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 "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
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "autofocus" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "tabIndex" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "focus(optional FocusOptions)" with the proper type
+PASS HTMLElement interface: calling focus(optional 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 disabled
+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 "disabled" 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 interface: attribute width
+PASS HTMLSourceElement interface: attribute height
+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 HTMLSourceElement interface: document.createElement("source") must inherit property "width" with the proper type
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "height" 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: attribute loading
+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 "loading" 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 "loading" 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 width
+PASS HTMLIFrameElement interface: attribute height
+PASS HTMLIFrameElement interface: attribute referrerPolicy
+PASS HTMLIFrameElement interface: attribute loading
+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 HTMLIFrameElement must be primary interface of document.createElement("iframe")
+PASS Stringification of document.createElement("iframe")
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "src" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "srcdoc" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "name" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "sandbox" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "allow" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "allowFullscreen" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "width" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "height" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "referrerPolicy" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "loading" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "contentDocument" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "contentWindow" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "getSVGDocument()" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "align" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "scrolling" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "frameBorder" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "longDesc" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "marginHeight" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "marginWidth" with the proper type
+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 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 useMap
+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 "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 "useMap" 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
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "srcObject" with the proper type
+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 "preservesPitch" 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, optional DOMString, optional DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, optional DOMString, optional 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
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "srcObject" with the proper type
+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 "preservesPitch" 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, optional DOMString, optional DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, optional DOMString, optional 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
+PASS HTMLMediaElement interface: new Audio() must inherit property "srcObject" with the proper type
+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 "preservesPitch" 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, optional DOMString, optional DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, optional DOMString, optional 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 preservesPitch
+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, optional DOMString, optional 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(optional 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(optional long)" with the proper type
+PASS HTMLTableElement interface: calling insertRow(optional 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(optional 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(optional long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(optional 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(optional long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(optional 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(optional long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(optional 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(optional 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(optional long)" with the proper type
+PASS HTMLTableRowElement interface: calling insertCell(optional 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(optional 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(optional HTMLElement?)" with the proper type
+PASS HTMLFormElement interface: calling requestSubmit(optional 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(optional long)
+PASS HTMLInputElement interface: operation stepDown(optional 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, optional SelectionMode)
+PASS HTMLInputElement interface: operation setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional 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, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional 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, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?)
+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((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?)" with the proper type
+PASS HTMLSelectElement interface: calling add((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?) 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, optional SelectionMode)
+PASS HTMLTextAreaElement interface: operation setSelectionRange(unsigned long, unsigned long, optional 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, optional SelectionMode)" with the proper type
+PASS HTMLTextAreaElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional 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, optional DOMString)" with the proper type
+PASS HTMLTextAreaElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional 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(optional AssignedNodesOptions)
+PASS HTMLSlotElement interface: operation assignedElements(optional AssignedNodesOptions)
+PASS HTMLSlotElement interface: operation assign((Element or Text)...)
+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(optional AssignedNodesOptions)" with the proper type
+PASS HTMLSlotElement interface: calling assignedNodes(optional AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError
+PASS HTMLSlotElement interface: document.createElement("slot") must inherit property "assignedElements(optional AssignedNodesOptions)" with the proper type
+PASS HTMLSlotElement interface: calling assignedElements(optional AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError
+PASS HTMLSlotElement interface: document.createElement("slot") must inherit property "assign((Element or Text)...)" with the proper type
+PASS HTMLSlotElement interface: calling assign((Element or Text)...) 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, optional any)
+PASS HTMLCanvasElement interface: operation toDataURL(optional DOMString, optional any)
+PASS HTMLCanvasElement interface: operation toBlob(BlobCallback, optional DOMString, optional 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, optional any)" with the proper type
+PASS HTMLCanvasElement interface: calling getContext(DOMString, optional any) on document.createElement("canvas") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toDataURL(optional DOMString, optional any)" with the proper type
+PASS HTMLCanvasElement interface: calling toDataURL(optional DOMString, optional any) on document.createElement("canvas") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toBlob(BlobCallback, optional DOMString, optional any)" with the proper type
+PASS HTMLCanvasElement interface: calling toBlob(BlobCallback, optional DOMString, optional 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
+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
+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-mac-arm11.0/virtual/css-calc-infinity-and-nan/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/css-calc-infinity-and-nan/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt
new file mode 100644
index 0000000..476b017a0
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/css-calc-infinity-and-nan/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt
@@ -0,0 +1,26 @@
+This is a testharness.js-based test.
+FAIL 'min(1%)' as a specified value should serialize as 'calc(1%)'. assert_equals: 'min(1%)' and 'calc(1%)' should serialize the same in specified values. expected "calc(1%)" but got "min(1%)"
+PASS 'min(1%)' as a computed value should serialize as '1%'.
+PASS 'min(1%)' as a used value should serialize as '1px'.
+FAIL 'max(1%)' as a specified value should serialize as 'calc(1%)'. assert_equals: 'max(1%)' and 'calc(1%)' should serialize the same in specified values. expected "calc(1%)" but got "max(1%)"
+PASS 'max(1%)' as a computed value should serialize as '1%'.
+PASS 'max(1%)' as a used value should serialize as '1px'.
+PASS 'min(1%, 2%, 3%)' as a specified value should serialize as 'min(1%, 2%, 3%)'.
+FAIL 'min(1%, 2%, 3%)' as a computed value should serialize as 'min(1%, 2%, 3%)'. assert_equals: 'min(1%, 2%, 3%)' should round-trip exactly in computed values. expected "min(1%, 2%, 3%)" but got "1%"
+PASS 'min(1%, 2%, 3%)' as a used value should serialize as '1px'.
+PASS 'min(3%, 2%, 1%)' as a specified value should serialize as 'min(3%, 2%, 1%)'.
+FAIL 'min(3%, 2%, 1%)' as a computed value should serialize as 'min(3%, 2%, 1%)'. assert_equals: 'min(3%, 2%, 1%)' should round-trip exactly in computed values. expected "min(3%, 2%, 1%)" but got "1%"
+PASS 'min(3%, 2%, 1%)' as a used value should serialize as '1px'.
+PASS 'max(1%, 2%, 3%)' as a specified value should serialize as 'max(1%, 2%, 3%)'.
+FAIL 'max(1%, 2%, 3%)' as a computed value should serialize as 'max(1%, 2%, 3%)'. assert_equals: 'max(1%, 2%, 3%)' should round-trip exactly in computed values. expected "max(1%, 2%, 3%)" but got "3%"
+PASS 'max(1%, 2%, 3%)' as a used value should serialize as '3px'.
+PASS 'max(3%, 2%, 1%)' as a specified value should serialize as 'max(3%, 2%, 1%)'.
+FAIL 'max(3%, 2%, 1%)' as a computed value should serialize as 'max(3%, 2%, 1%)'. assert_equals: 'max(3%, 2%, 1%)' should round-trip exactly in computed values. expected "max(3%, 2%, 1%)" but got "3%"
+PASS 'max(3%, 2%, 1%)' as a used value should serialize as '3px'.
+PASS 'min(1%, 2%, 3%) 0px' as a specified value should serialize as 'min(1%, 2%, 3%) 0px'.
+FAIL 'min(1%, 2%, 3%) 0px' as a computed value should serialize as 'min(1%, 2%, 3%) 0px'. assert_equals: 'min(1%, 2%, 3%) 0px' should round-trip exactly in computed values. expected "min(1%, 2%, 3%) 0px" but got "min(1% + 0px, 2% + 0px, 3% + 0px) 0px"
+PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a specified value should serialize as 'calc(15%)'.
+PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a computed value should serialize as '15%'.
+PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a used value should serialize as '15px'.
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png
new file mode 100644
index 0000000..97efa50
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
new file mode 100644
index 0000000..dc1e113
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/filters/feImage-preserveAspectRatio-all-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/filters/feImage-preserveAspectRatio-all-expected.png
new file mode 100644
index 0000000..8296338
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/filters/feImage-preserveAspectRatio-all-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt
new file mode 100644
index 0000000..a25b56c
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt
@@ -0,0 +1,26 @@
+This is a testharness.js-based test.
+FAIL 'min(1%)' as a specified value should serialize as 'calc(1%)'. assert_equals: 'min(1%)' and 'calc(1%)' should serialize the same in specified values. expected "calc(1%)" but got "min(1%)"
+PASS 'min(1%)' as a computed value should serialize as '1%'.
+PASS 'min(1%)' as a used value should serialize as '1px'.
+FAIL 'max(1%)' as a specified value should serialize as 'calc(1%)'. assert_equals: 'max(1%)' and 'calc(1%)' should serialize the same in specified values. expected "calc(1%)" but got "max(1%)"
+PASS 'max(1%)' as a computed value should serialize as '1%'.
+PASS 'max(1%)' as a used value should serialize as '1px'.
+PASS 'min(1%, 2%, 3%)' as a specified value should serialize as 'min(1%, 2%, 3%)'.
+FAIL 'min(1%, 2%, 3%)' as a computed value should serialize as 'min(1%, 2%, 3%)'. assert_equals: 'min(1%, 2%, 3%)' should round-trip exactly in computed values. expected "min(1%, 2%, 3%)" but got "1%"
+PASS 'min(1%, 2%, 3%)' as a used value should serialize as '1px'.
+PASS 'min(3%, 2%, 1%)' as a specified value should serialize as 'min(3%, 2%, 1%)'.
+FAIL 'min(3%, 2%, 1%)' as a computed value should serialize as 'min(3%, 2%, 1%)'. assert_equals: 'min(3%, 2%, 1%)' should round-trip exactly in computed values. expected "min(3%, 2%, 1%)" but got "1%"
+PASS 'min(3%, 2%, 1%)' as a used value should serialize as '1px'.
+PASS 'max(1%, 2%, 3%)' as a specified value should serialize as 'max(1%, 2%, 3%)'.
+FAIL 'max(1%, 2%, 3%)' as a computed value should serialize as 'max(1%, 2%, 3%)'. assert_equals: 'max(1%, 2%, 3%)' should round-trip exactly in computed values. expected "max(1%, 2%, 3%)" but got "3%"
+PASS 'max(1%, 2%, 3%)' as a used value should serialize as '3px'.
+PASS 'max(3%, 2%, 1%)' as a specified value should serialize as 'max(3%, 2%, 1%)'.
+FAIL 'max(3%, 2%, 1%)' as a computed value should serialize as 'max(3%, 2%, 1%)'. assert_equals: 'max(3%, 2%, 1%)' should round-trip exactly in computed values. expected "max(3%, 2%, 1%)" but got "3%"
+PASS 'max(3%, 2%, 1%)' as a used value should serialize as '3px'.
+PASS 'min(1%, 2%, 3%) 0px' as a specified value should serialize as 'min(1%, 2%, 3%) 0px'.
+FAIL 'min(1%, 2%, 3%) 0px' as a computed value should serialize as 'min(1%, 2%, 3%) 0px'. assert_equals: 'min(1%, 2%, 3%) 0px' should round-trip exactly in computed values. expected "min(1%, 2%, 3%) 0px" but got "min(1% + 0px, 2% + 0px, 3% + 0px) 0px"
+FAIL 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a specified value should serialize as 'calc(10% + min(1%, 2%) + max(3%, 4%))'. assert_equals: 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' and 'calc(10% + min(1%, 2%) + max(3%, 4%))' should serialize the same in specified values. expected "calc(10% + min(1%, 2%) + max(3%, 4%))" but got "calc(15%)"
+FAIL 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a computed value should serialize as 'calc(10% + min(1%, 2%) + max(3%, 4%))'. assert_equals: 'calc(10% + min(1%, 2%) + max(3%, 4%))' should round-trip exactly in computed values. expected "calc(10% + min(1%, 2%) + max(3%, 4%))" but got "15%"
+PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a used value should serialize as '15px'.
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties-expected.txt
new file mode 100644
index 0000000..098ad25b
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties-expected.txt
@@ -0,0 +1,10 @@
+This is a testharness.js-based test.
+PASS Static name
+PASS Static id
+PASS Static name on the prototype
+FAIL constructor assert_false: gsp.hasOwnProperty("constructor") expected false got true
+PASS duplicate property names
+PASS Dynamic name
+PASS Ghost name
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
new file mode 100644
index 0000000..cc3f61a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
@@ -0,0 +1,3767 @@
+This is a testharness.js-based test.
+Found 3763 tests; 3741 PASS, 22 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS idl_test validation
+PASS Partial interface Document: original interface defined
+PASS Partial interface Document: member names are unique
+PASS Partial interface mixin DocumentOrShadowRoot: original interface mixin defined
+PASS Partial interface mixin DocumentOrShadowRoot: member names are unique
+PASS Partial interface mixin NavigatorID: original interface mixin defined
+PASS Partial interface mixin NavigatorID: member names are unique
+PASS Partial interface HTMLAnchorElement: original interface defined
+PASS Partial interface HTMLAnchorElement: member names are unique
+PASS Partial interface HTMLAreaElement: original interface defined
+PASS Partial interface HTMLAreaElement: member names are unique
+PASS Partial interface HTMLBodyElement: original interface defined
+PASS Partial interface HTMLBodyElement: member names are unique
+PASS Partial interface HTMLBRElement: original interface defined
+PASS Partial interface HTMLBRElement: member names are unique
+PASS Partial interface HTMLTableCaptionElement: original interface defined
+PASS Partial interface HTMLTableCaptionElement: member names are unique
+PASS Partial interface HTMLTableColElement: original interface defined
+PASS Partial interface HTMLTableColElement: member names are unique
+PASS Partial interface HTMLDivElement: original interface defined
+PASS Partial interface HTMLDivElement: member names are unique
+PASS Partial interface HTMLDListElement: original interface defined
+PASS Partial interface HTMLDListElement: member names are unique
+PASS Partial interface HTMLEmbedElement: original interface defined
+PASS Partial interface HTMLEmbedElement: member names are unique
+PASS Partial interface HTMLHeadingElement: original interface defined
+PASS Partial interface HTMLHeadingElement: member names are unique
+PASS Partial interface HTMLHRElement: original interface defined
+PASS Partial interface HTMLHRElement: member names are unique
+PASS Partial interface HTMLHtmlElement: original interface defined
+PASS Partial interface HTMLHtmlElement: member names are unique
+PASS Partial interface HTMLIFrameElement: original interface defined
+PASS Partial interface HTMLIFrameElement: member names are unique
+PASS Partial interface HTMLImageElement: original interface defined
+PASS Partial interface HTMLImageElement: member names are unique
+PASS Partial interface HTMLInputElement: original interface defined
+PASS Partial interface HTMLInputElement: member names are unique
+PASS Partial interface HTMLLegendElement: original interface defined
+PASS Partial interface HTMLLegendElement: member names are unique
+PASS Partial interface HTMLLIElement: original interface defined
+PASS Partial interface HTMLLIElement: member names are unique
+PASS Partial interface HTMLLinkElement: original interface defined
+PASS Partial interface HTMLLinkElement: member names are unique
+PASS Partial interface HTMLMenuElement: original interface defined
+PASS Partial interface HTMLMenuElement: member names are unique
+PASS Partial interface HTMLMetaElement: original interface defined
+PASS Partial interface HTMLMetaElement: member names are unique
+PASS Partial interface HTMLObjectElement: original interface defined
+PASS Partial interface HTMLObjectElement: member names are unique
+PASS Partial interface HTMLOListElement: original interface defined
+PASS Partial interface HTMLOListElement: member names are unique
+PASS Partial interface HTMLParagraphElement: original interface defined
+PASS Partial interface HTMLParagraphElement: member names are unique
+PASS Partial interface HTMLParamElement: original interface defined
+PASS Partial interface HTMLParamElement: member names are unique
+PASS Partial interface HTMLPreElement: original interface defined
+PASS Partial interface HTMLPreElement: member names are unique
+PASS Partial interface HTMLStyleElement: original interface defined
+PASS Partial interface HTMLStyleElement: member names are unique
+PASS Partial interface HTMLScriptElement: original interface defined
+PASS Partial interface HTMLScriptElement: member names are unique
+PASS Partial interface HTMLTableElement: original interface defined
+PASS Partial interface HTMLTableElement: member names are unique
+PASS Partial interface HTMLTableSectionElement: original interface defined
+PASS Partial interface HTMLTableSectionElement: member names are unique
+PASS Partial interface HTMLTableCellElement: original interface defined
+PASS Partial interface HTMLTableCellElement: member names are unique
+PASS Partial interface HTMLTableRowElement: original interface defined
+PASS Partial interface HTMLTableRowElement: member names are unique
+PASS Partial interface HTMLUListElement: original interface defined
+PASS Partial interface HTMLUListElement: member names are unique
+PASS Partial interface Document[2]: original interface defined
+PASS Partial interface Document[2]: member names are unique
+PASS Partial interface Window: original interface defined
+PASS Partial interface Window: member names are unique
+PASS Partial interface Document[3]: member names are unique
+PASS Partial interface mixin DocumentOrShadowRoot[2]: member names are unique
+PASS Partial interface UIEvent: member names are unique
+PASS Partial interface MouseEvent: member names are unique
+PASS Partial interface UIEvent[2]: member names are unique
+PASS Partial dictionary UIEventInit: member names are unique
+PASS Document includes GlobalEventHandlers: member names are unique
+PASS Document includes DocumentAndElementEventHandlers: member names are unique
+PASS HTMLElement includes GlobalEventHandlers: member names are unique
+PASS HTMLElement includes DocumentAndElementEventHandlers: member names are unique
+PASS HTMLElement includes ElementContentEditable: member names are unique
+PASS HTMLElement includes HTMLOrSVGElement: member names are unique
+PASS HTMLLinkElement includes LinkStyle: member names are unique
+PASS HTMLStyleElement includes LinkStyle: member names are unique
+PASS HTMLBodyElement includes WindowEventHandlers: member names are unique
+PASS HTMLAnchorElement includes HTMLHyperlinkElementUtils: member names are unique
+PASS HTMLAreaElement includes HTMLHyperlinkElementUtils: member names are unique
+PASS CanvasRenderingContext2D includes CanvasState: member names are unique
+PASS CanvasRenderingContext2D includes CanvasTransform: member names are unique
+PASS CanvasRenderingContext2D includes CanvasCompositing: member names are unique
+PASS CanvasRenderingContext2D includes CanvasImageSmoothing: member names are unique
+PASS CanvasRenderingContext2D includes CanvasFillStrokeStyles: member names are unique
+PASS CanvasRenderingContext2D includes CanvasShadowStyles: member names are unique
+PASS CanvasRenderingContext2D includes CanvasFilters: member names are unique
+PASS CanvasRenderingContext2D includes CanvasRect: member names are unique
+PASS CanvasRenderingContext2D includes CanvasDrawPath: member names are unique
+PASS CanvasRenderingContext2D includes CanvasUserInterface: member names are unique
+PASS CanvasRenderingContext2D includes CanvasText: member names are unique
+PASS CanvasRenderingContext2D includes CanvasDrawImage: member names are unique
+PASS CanvasRenderingContext2D includes CanvasImageData: member names are unique
+PASS CanvasRenderingContext2D includes CanvasPathDrawingStyles: member names are unique
+PASS CanvasRenderingContext2D includes CanvasTextDrawingStyles: member names are unique
+PASS CanvasRenderingContext2D includes CanvasPath: member names are unique
+PASS Path2D includes CanvasPath: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasState: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasTransform: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasCompositing: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasImageSmoothing: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasFillStrokeStyles: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasShadowStyles: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasFilters: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasRect: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasDrawPath: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasText: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasDrawImage: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasImageData: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasPathDrawingStyles: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasTextDrawingStyles: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasPath: member names are unique
+PASS ElementInternals includes ARIAMixin: member names are unique
+PASS Window includes GlobalEventHandlers: member names are unique
+PASS Window includes WindowEventHandlers: member names are unique
+PASS Window includes WindowOrWorkerGlobalScope: member names are unique
+PASS WorkerGlobalScope includes WindowOrWorkerGlobalScope: member names are unique
+PASS Navigator includes NavigatorID: member names are unique
+PASS Navigator includes NavigatorLanguage: member names are unique
+PASS Navigator includes NavigatorOnLine: member names are unique
+PASS Navigator includes NavigatorContentUtils: member names are unique
+PASS Navigator includes NavigatorCookies: member names are unique
+PASS Navigator includes NavigatorPlugins: member names are unique
+PASS Navigator includes NavigatorConcurrentHardware: member names are unique
+PASS Window includes AnimationFrameProvider: member names are unique
+PASS DedicatedWorkerGlobalScope includes AnimationFrameProvider: member names are unique
+PASS Worker includes AbstractWorker: member names are unique
+PASS SharedWorker includes AbstractWorker: member names are unique
+PASS WorkerNavigator includes NavigatorID: member names are unique
+PASS WorkerNavigator includes NavigatorLanguage: member names are unique
+PASS WorkerNavigator includes NavigatorOnLine: member names are unique
+PASS WorkerNavigator includes NavigatorConcurrentHardware: member names are unique
+PASS Window includes WindowSessionStorage: member names are unique
+PASS Window includes WindowLocalStorage: member names are unique
+PASS HTMLFrameSetElement includes WindowEventHandlers: member names are unique
+PASS Element includes ARIAMixin: member names are unique
+PASS SVGElement includes GlobalEventHandlers: member names are unique
+PASS SVGElement includes DocumentAndElementEventHandlers: member names are unique
+PASS SVGElement includes SVGElementInstance: member names are unique
+PASS SVGElement includes HTMLOrSVGElement: member names are unique
+PASS SVGGraphicsElement includes SVGTests: member names are unique
+PASS SVGSVGElement includes SVGFitToViewBox: member names are unique
+PASS SVGSVGElement includes WindowEventHandlers: member names are unique
+PASS SVGImageElement includes SVGURIReference: member names are unique
+PASS SVGScriptElement includes SVGURIReference: member names are unique
+PASS HTMLElement includes ElementCSSInlineStyle: member names are unique
+PASS SVGElement includes ElementCSSInlineStyle: member names are unique
+PASS Document includes NonElementParentNode: member names are unique
+PASS DocumentFragment includes NonElementParentNode: member names are unique
+PASS Document includes DocumentOrShadowRoot: member names are unique
+PASS ShadowRoot includes DocumentOrShadowRoot: member names are unique
+PASS Document includes ParentNode: member names are unique
+PASS DocumentFragment includes ParentNode: member names are unique
+PASS Element includes ParentNode: member names are unique
+PASS Element includes NonDocumentTypeChildNode: member names are unique
+PASS Element includes ChildNode: member names are unique
+PASS Element includes Slottable: member names are unique
+PASS Document includes XPathEvaluatorBase: member names are unique
+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(optional DOMString)
+PASS HTMLAllCollection must be primary interface of document.all
+PASS Stringification of document.all
+PASS HTMLAllCollection interface: document.all must inherit property "length" with the proper type
+PASS HTMLAllCollection interface: document.all must inherit property "namedItem(DOMString)" with the proper type
+PASS HTMLAllCollection interface: calling namedItem(DOMString) on document.all with too few arguments must throw TypeError
+PASS HTMLAllCollection interface: document.all must inherit property "item(optional DOMString)" with the proper type
+PASS HTMLAllCollection interface: calling item(optional DOMString) on document.all with too few arguments must throw TypeError
+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((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?)
+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((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?)" with the proper type
+PASS HTMLOptionsCollection interface: calling add((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?) 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: attribute outerText
+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
+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 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
+FAIL HTMLElement interface: attribute onslotchange assert_true: The prototype object must have a property "onslotchange" expected true got false
+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 onwebkitanimationend
+PASS HTMLElement interface: attribute onwebkitanimationiteration
+PASS HTMLElement interface: attribute onwebkitanimationstart
+PASS HTMLElement interface: attribute onwebkittransitionend
+PASS HTMLElement interface: attribute onwheel
+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
+PASS HTMLElement interface: attribute autofocus
+PASS HTMLElement interface: attribute tabIndex
+PASS HTMLElement interface: operation focus(optional 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 "outerText" 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
+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 "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
+FAIL HTMLElement interface: document.createElement("noscript") must inherit property "onslotchange" with the proper type assert_inherits: property "onslotchange" not found in prototype chain
+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 "onwebkitanimationend" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwebkitanimationiteration" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwebkitanimationstart" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwebkittransitionend" 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 "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
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "autofocus" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "tabIndex" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "focus(optional FocusOptions)" with the proper type
+PASS HTMLElement interface: calling focus(optional 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 disabled
+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 "disabled" 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 interface: attribute width
+PASS HTMLSourceElement interface: attribute height
+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 HTMLSourceElement interface: document.createElement("source") must inherit property "width" with the proper type
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "height" 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: attribute loading
+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 "loading" 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 "loading" 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 width
+PASS HTMLIFrameElement interface: attribute height
+PASS HTMLIFrameElement interface: attribute referrerPolicy
+PASS HTMLIFrameElement interface: attribute loading
+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 HTMLIFrameElement must be primary interface of document.createElement("iframe")
+PASS Stringification of document.createElement("iframe")
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "src" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "srcdoc" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "name" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "sandbox" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "allow" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "allowFullscreen" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "width" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "height" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "referrerPolicy" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "loading" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "contentDocument" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "contentWindow" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "getSVGDocument()" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "align" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "scrolling" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "frameBorder" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "longDesc" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "marginHeight" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "marginWidth" with the proper type
+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 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 useMap
+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 "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 "useMap" 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
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "srcObject" with the proper type
+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 "preservesPitch" 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, optional DOMString, optional DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, optional DOMString, optional 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
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "srcObject" with the proper type
+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 "preservesPitch" 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, optional DOMString, optional DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, optional DOMString, optional 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
+PASS HTMLMediaElement interface: new Audio() must inherit property "srcObject" with the proper type
+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 "preservesPitch" 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, optional DOMString, optional DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, optional DOMString, optional 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 preservesPitch
+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, optional DOMString, optional 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(optional 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(optional long)" with the proper type
+PASS HTMLTableElement interface: calling insertRow(optional 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(optional 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(optional long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(optional 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(optional long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(optional 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(optional long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(optional 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(optional 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(optional long)" with the proper type
+PASS HTMLTableRowElement interface: calling insertCell(optional 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(optional 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(optional HTMLElement?)" with the proper type
+PASS HTMLFormElement interface: calling requestSubmit(optional 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(optional long)
+PASS HTMLInputElement interface: operation stepDown(optional 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, optional SelectionMode)
+PASS HTMLInputElement interface: operation setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional 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, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional 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, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?)
+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((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?)" with the proper type
+PASS HTMLSelectElement interface: calling add((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?) 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, optional SelectionMode)
+PASS HTMLTextAreaElement interface: operation setSelectionRange(unsigned long, unsigned long, optional 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, optional SelectionMode)" with the proper type
+PASS HTMLTextAreaElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional 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, optional DOMString)" with the proper type
+PASS HTMLTextAreaElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional 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(optional AssignedNodesOptions)
+PASS HTMLSlotElement interface: operation assignedElements(optional AssignedNodesOptions)
+PASS HTMLSlotElement interface: operation assign((Element or Text)...)
+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(optional AssignedNodesOptions)" with the proper type
+PASS HTMLSlotElement interface: calling assignedNodes(optional AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError
+PASS HTMLSlotElement interface: document.createElement("slot") must inherit property "assignedElements(optional AssignedNodesOptions)" with the proper type
+PASS HTMLSlotElement interface: calling assignedElements(optional AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError
+PASS HTMLSlotElement interface: document.createElement("slot") must inherit property "assign((Element or Text)...)" with the proper type
+PASS HTMLSlotElement interface: calling assign((Element or Text)...) 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, optional any)
+PASS HTMLCanvasElement interface: operation toDataURL(optional DOMString, optional any)
+PASS HTMLCanvasElement interface: operation toBlob(BlobCallback, optional DOMString, optional 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, optional any)" with the proper type
+PASS HTMLCanvasElement interface: calling getContext(DOMString, optional any) on document.createElement("canvas") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toDataURL(optional DOMString, optional any)" with the proper type
+PASS HTMLCanvasElement interface: calling toDataURL(optional DOMString, optional any) on document.createElement("canvas") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toBlob(BlobCallback, optional DOMString, optional any)" with the proper type
+PASS HTMLCanvasElement interface: calling toBlob(BlobCallback, optional DOMString, optional 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
+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
+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.13/virtual/css-calc-infinity-and-nan/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/css-calc-infinity-and-nan/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt
new file mode 100644
index 0000000..a25b56c
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/css-calc-infinity-and-nan/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt
@@ -0,0 +1,26 @@
+This is a testharness.js-based test.
+FAIL 'min(1%)' as a specified value should serialize as 'calc(1%)'. assert_equals: 'min(1%)' and 'calc(1%)' should serialize the same in specified values. expected "calc(1%)" but got "min(1%)"
+PASS 'min(1%)' as a computed value should serialize as '1%'.
+PASS 'min(1%)' as a used value should serialize as '1px'.
+FAIL 'max(1%)' as a specified value should serialize as 'calc(1%)'. assert_equals: 'max(1%)' and 'calc(1%)' should serialize the same in specified values. expected "calc(1%)" but got "max(1%)"
+PASS 'max(1%)' as a computed value should serialize as '1%'.
+PASS 'max(1%)' as a used value should serialize as '1px'.
+PASS 'min(1%, 2%, 3%)' as a specified value should serialize as 'min(1%, 2%, 3%)'.
+FAIL 'min(1%, 2%, 3%)' as a computed value should serialize as 'min(1%, 2%, 3%)'. assert_equals: 'min(1%, 2%, 3%)' should round-trip exactly in computed values. expected "min(1%, 2%, 3%)" but got "1%"
+PASS 'min(1%, 2%, 3%)' as a used value should serialize as '1px'.
+PASS 'min(3%, 2%, 1%)' as a specified value should serialize as 'min(3%, 2%, 1%)'.
+FAIL 'min(3%, 2%, 1%)' as a computed value should serialize as 'min(3%, 2%, 1%)'. assert_equals: 'min(3%, 2%, 1%)' should round-trip exactly in computed values. expected "min(3%, 2%, 1%)" but got "1%"
+PASS 'min(3%, 2%, 1%)' as a used value should serialize as '1px'.
+PASS 'max(1%, 2%, 3%)' as a specified value should serialize as 'max(1%, 2%, 3%)'.
+FAIL 'max(1%, 2%, 3%)' as a computed value should serialize as 'max(1%, 2%, 3%)'. assert_equals: 'max(1%, 2%, 3%)' should round-trip exactly in computed values. expected "max(1%, 2%, 3%)" but got "3%"
+PASS 'max(1%, 2%, 3%)' as a used value should serialize as '3px'.
+PASS 'max(3%, 2%, 1%)' as a specified value should serialize as 'max(3%, 2%, 1%)'.
+FAIL 'max(3%, 2%, 1%)' as a computed value should serialize as 'max(3%, 2%, 1%)'. assert_equals: 'max(3%, 2%, 1%)' should round-trip exactly in computed values. expected "max(3%, 2%, 1%)" but got "3%"
+PASS 'max(3%, 2%, 1%)' as a used value should serialize as '3px'.
+PASS 'min(1%, 2%, 3%) 0px' as a specified value should serialize as 'min(1%, 2%, 3%) 0px'.
+FAIL 'min(1%, 2%, 3%) 0px' as a computed value should serialize as 'min(1%, 2%, 3%) 0px'. assert_equals: 'min(1%, 2%, 3%) 0px' should round-trip exactly in computed values. expected "min(1%, 2%, 3%) 0px" but got "min(1% + 0px, 2% + 0px, 3% + 0px) 0px"
+FAIL 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a specified value should serialize as 'calc(10% + min(1%, 2%) + max(3%, 4%))'. assert_equals: 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' and 'calc(10% + min(1%, 2%) + max(3%, 4%))' should serialize the same in specified values. expected "calc(10% + min(1%, 2%) + max(3%, 4%))" but got "calc(15%)"
+FAIL 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a computed value should serialize as 'calc(10% + min(1%, 2%) + max(3%, 4%))'. assert_equals: 'calc(10% + min(1%, 2%) + max(3%, 4%))' should round-trip exactly in computed values. expected "calc(10% + min(1%, 2%) + max(3%, 4%))" but got "15%"
+PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a used value should serialize as '15px'.
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.14/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt
new file mode 100644
index 0000000..476b017a0
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt
@@ -0,0 +1,26 @@
+This is a testharness.js-based test.
+FAIL 'min(1%)' as a specified value should serialize as 'calc(1%)'. assert_equals: 'min(1%)' and 'calc(1%)' should serialize the same in specified values. expected "calc(1%)" but got "min(1%)"
+PASS 'min(1%)' as a computed value should serialize as '1%'.
+PASS 'min(1%)' as a used value should serialize as '1px'.
+FAIL 'max(1%)' as a specified value should serialize as 'calc(1%)'. assert_equals: 'max(1%)' and 'calc(1%)' should serialize the same in specified values. expected "calc(1%)" but got "max(1%)"
+PASS 'max(1%)' as a computed value should serialize as '1%'.
+PASS 'max(1%)' as a used value should serialize as '1px'.
+PASS 'min(1%, 2%, 3%)' as a specified value should serialize as 'min(1%, 2%, 3%)'.
+FAIL 'min(1%, 2%, 3%)' as a computed value should serialize as 'min(1%, 2%, 3%)'. assert_equals: 'min(1%, 2%, 3%)' should round-trip exactly in computed values. expected "min(1%, 2%, 3%)" but got "1%"
+PASS 'min(1%, 2%, 3%)' as a used value should serialize as '1px'.
+PASS 'min(3%, 2%, 1%)' as a specified value should serialize as 'min(3%, 2%, 1%)'.
+FAIL 'min(3%, 2%, 1%)' as a computed value should serialize as 'min(3%, 2%, 1%)'. assert_equals: 'min(3%, 2%, 1%)' should round-trip exactly in computed values. expected "min(3%, 2%, 1%)" but got "1%"
+PASS 'min(3%, 2%, 1%)' as a used value should serialize as '1px'.
+PASS 'max(1%, 2%, 3%)' as a specified value should serialize as 'max(1%, 2%, 3%)'.
+FAIL 'max(1%, 2%, 3%)' as a computed value should serialize as 'max(1%, 2%, 3%)'. assert_equals: 'max(1%, 2%, 3%)' should round-trip exactly in computed values. expected "max(1%, 2%, 3%)" but got "3%"
+PASS 'max(1%, 2%, 3%)' as a used value should serialize as '3px'.
+PASS 'max(3%, 2%, 1%)' as a specified value should serialize as 'max(3%, 2%, 1%)'.
+FAIL 'max(3%, 2%, 1%)' as a computed value should serialize as 'max(3%, 2%, 1%)'. assert_equals: 'max(3%, 2%, 1%)' should round-trip exactly in computed values. expected "max(3%, 2%, 1%)" but got "3%"
+PASS 'max(3%, 2%, 1%)' as a used value should serialize as '3px'.
+PASS 'min(1%, 2%, 3%) 0px' as a specified value should serialize as 'min(1%, 2%, 3%) 0px'.
+FAIL 'min(1%, 2%, 3%) 0px' as a computed value should serialize as 'min(1%, 2%, 3%) 0px'. assert_equals: 'min(1%, 2%, 3%) 0px' should round-trip exactly in computed values. expected "min(1%, 2%, 3%) 0px" but got "min(1% + 0px, 2% + 0px, 3% + 0px) 0px"
+PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a specified value should serialize as 'calc(15%)'.
+PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a computed value should serialize as '15%'.
+PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a used value should serialize as '15px'.
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.14/external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties-expected.txt
new file mode 100644
index 0000000..ebdf863d
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties-expected.txt
@@ -0,0 +1,10 @@
+This is a testharness.js-based test.
+PASS Static name
+PASS Static id
+PASS Static name on the prototype
+FAIL constructor assert_false: gsp.hasOwnProperty("constructor") expected false got true
+FAIL duplicate property names assert_equals: expected 1 but got 0
+PASS Dynamic name
+PASS Ghost name
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.14/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
new file mode 100644
index 0000000..d10785d
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
@@ -0,0 +1,3765 @@
+This is a testharness.js-based test.
+Found 3761 tests; 3739 PASS, 22 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS idl_test validation
+PASS Partial interface Document: original interface defined
+PASS Partial interface Document: member names are unique
+PASS Partial interface mixin DocumentOrShadowRoot: original interface mixin defined
+PASS Partial interface mixin DocumentOrShadowRoot: member names are unique
+PASS Partial interface mixin NavigatorID: original interface mixin defined
+PASS Partial interface mixin NavigatorID: member names are unique
+PASS Partial interface HTMLAnchorElement: original interface defined
+PASS Partial interface HTMLAnchorElement: member names are unique
+PASS Partial interface HTMLAreaElement: original interface defined
+PASS Partial interface HTMLAreaElement: member names are unique
+PASS Partial interface HTMLBodyElement: original interface defined
+PASS Partial interface HTMLBodyElement: member names are unique
+PASS Partial interface HTMLBRElement: original interface defined
+PASS Partial interface HTMLBRElement: member names are unique
+PASS Partial interface HTMLTableCaptionElement: original interface defined
+PASS Partial interface HTMLTableCaptionElement: member names are unique
+PASS Partial interface HTMLTableColElement: original interface defined
+PASS Partial interface HTMLTableColElement: member names are unique
+PASS Partial interface HTMLDivElement: original interface defined
+PASS Partial interface HTMLDivElement: member names are unique
+PASS Partial interface HTMLDListElement: original interface defined
+PASS Partial interface HTMLDListElement: member names are unique
+PASS Partial interface HTMLEmbedElement: original interface defined
+PASS Partial interface HTMLEmbedElement: member names are unique
+PASS Partial interface HTMLHeadingElement: original interface defined
+PASS Partial interface HTMLHeadingElement: member names are unique
+PASS Partial interface HTMLHRElement: original interface defined
+PASS Partial interface HTMLHRElement: member names are unique
+PASS Partial interface HTMLHtmlElement: original interface defined
+PASS Partial interface HTMLHtmlElement: member names are unique
+PASS Partial interface HTMLIFrameElement: original interface defined
+PASS Partial interface HTMLIFrameElement: member names are unique
+PASS Partial interface HTMLImageElement: original interface defined
+PASS Partial interface HTMLImageElement: member names are unique
+PASS Partial interface HTMLInputElement: original interface defined
+PASS Partial interface HTMLInputElement: member names are unique
+PASS Partial interface HTMLLegendElement: original interface defined
+PASS Partial interface HTMLLegendElement: member names are unique
+PASS Partial interface HTMLLIElement: original interface defined
+PASS Partial interface HTMLLIElement: member names are unique
+PASS Partial interface HTMLLinkElement: original interface defined
+PASS Partial interface HTMLLinkElement: member names are unique
+PASS Partial interface HTMLMenuElement: original interface defined
+PASS Partial interface HTMLMenuElement: member names are unique
+PASS Partial interface HTMLMetaElement: original interface defined
+PASS Partial interface HTMLMetaElement: member names are unique
+PASS Partial interface HTMLObjectElement: original interface defined
+PASS Partial interface HTMLObjectElement: member names are unique
+PASS Partial interface HTMLOListElement: original interface defined
+PASS Partial interface HTMLOListElement: member names are unique
+PASS Partial interface HTMLParagraphElement: original interface defined
+PASS Partial interface HTMLParagraphElement: member names are unique
+PASS Partial interface HTMLParamElement: original interface defined
+PASS Partial interface HTMLParamElement: member names are unique
+PASS Partial interface HTMLPreElement: original interface defined
+PASS Partial interface HTMLPreElement: member names are unique
+PASS Partial interface HTMLStyleElement: original interface defined
+PASS Partial interface HTMLStyleElement: member names are unique
+PASS Partial interface HTMLScriptElement: original interface defined
+PASS Partial interface HTMLScriptElement: member names are unique
+PASS Partial interface HTMLTableElement: original interface defined
+PASS Partial interface HTMLTableElement: member names are unique
+PASS Partial interface HTMLTableSectionElement: original interface defined
+PASS Partial interface HTMLTableSectionElement: member names are unique
+PASS Partial interface HTMLTableCellElement: original interface defined
+PASS Partial interface HTMLTableCellElement: member names are unique
+PASS Partial interface HTMLTableRowElement: original interface defined
+PASS Partial interface HTMLTableRowElement: member names are unique
+PASS Partial interface HTMLUListElement: original interface defined
+PASS Partial interface HTMLUListElement: member names are unique
+PASS Partial interface Document[2]: original interface defined
+PASS Partial interface Document[2]: member names are unique
+PASS Partial interface Window: original interface defined
+PASS Partial interface Window: member names are unique
+PASS Partial interface Document[3]: member names are unique
+PASS Partial interface mixin DocumentOrShadowRoot[2]: member names are unique
+PASS Partial interface UIEvent: member names are unique
+PASS Partial interface MouseEvent: member names are unique
+PASS Partial interface UIEvent[2]: member names are unique
+PASS Partial dictionary UIEventInit: member names are unique
+PASS Document includes GlobalEventHandlers: member names are unique
+PASS Document includes DocumentAndElementEventHandlers: member names are unique
+PASS HTMLElement includes GlobalEventHandlers: member names are unique
+PASS HTMLElement includes DocumentAndElementEventHandlers: member names are unique
+PASS HTMLElement includes ElementContentEditable: member names are unique
+PASS HTMLElement includes HTMLOrSVGElement: member names are unique
+PASS HTMLLinkElement includes LinkStyle: member names are unique
+PASS HTMLStyleElement includes LinkStyle: member names are unique
+PASS HTMLBodyElement includes WindowEventHandlers: member names are unique
+PASS HTMLAnchorElement includes HTMLHyperlinkElementUtils: member names are unique
+PASS HTMLAreaElement includes HTMLHyperlinkElementUtils: member names are unique
+PASS CanvasRenderingContext2D includes CanvasState: member names are unique
+PASS CanvasRenderingContext2D includes CanvasTransform: member names are unique
+PASS CanvasRenderingContext2D includes CanvasCompositing: member names are unique
+PASS CanvasRenderingContext2D includes CanvasImageSmoothing: member names are unique
+PASS CanvasRenderingContext2D includes CanvasFillStrokeStyles: member names are unique
+PASS CanvasRenderingContext2D includes CanvasShadowStyles: member names are unique
+PASS CanvasRenderingContext2D includes CanvasFilters: member names are unique
+PASS CanvasRenderingContext2D includes CanvasRect: member names are unique
+PASS CanvasRenderingContext2D includes CanvasDrawPath: member names are unique
+PASS CanvasRenderingContext2D includes CanvasUserInterface: member names are unique
+PASS CanvasRenderingContext2D includes CanvasText: member names are unique
+PASS CanvasRenderingContext2D includes CanvasDrawImage: member names are unique
+PASS CanvasRenderingContext2D includes CanvasImageData: member names are unique
+PASS CanvasRenderingContext2D includes CanvasPathDrawingStyles: member names are unique
+PASS CanvasRenderingContext2D includes CanvasTextDrawingStyles: member names are unique
+PASS CanvasRenderingContext2D includes CanvasPath: member names are unique
+PASS Path2D includes CanvasPath: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasState: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasTransform: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasCompositing: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasImageSmoothing: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasFillStrokeStyles: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasShadowStyles: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasFilters: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasRect: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasDrawPath: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasText: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasDrawImage: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasImageData: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasPathDrawingStyles: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasTextDrawingStyles: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasPath: member names are unique
+PASS ElementInternals includes ARIAMixin: member names are unique
+PASS Window includes GlobalEventHandlers: member names are unique
+PASS Window includes WindowEventHandlers: member names are unique
+PASS Window includes WindowOrWorkerGlobalScope: member names are unique
+PASS WorkerGlobalScope includes WindowOrWorkerGlobalScope: member names are unique
+PASS Navigator includes NavigatorID: member names are unique
+PASS Navigator includes NavigatorLanguage: member names are unique
+PASS Navigator includes NavigatorOnLine: member names are unique
+PASS Navigator includes NavigatorContentUtils: member names are unique
+PASS Navigator includes NavigatorCookies: member names are unique
+PASS Navigator includes NavigatorPlugins: member names are unique
+PASS Navigator includes NavigatorConcurrentHardware: member names are unique
+PASS Window includes AnimationFrameProvider: member names are unique
+PASS DedicatedWorkerGlobalScope includes AnimationFrameProvider: member names are unique
+PASS Worker includes AbstractWorker: member names are unique
+PASS SharedWorker includes AbstractWorker: member names are unique
+PASS WorkerNavigator includes NavigatorID: member names are unique
+PASS WorkerNavigator includes NavigatorLanguage: member names are unique
+PASS WorkerNavigator includes NavigatorOnLine: member names are unique
+PASS WorkerNavigator includes NavigatorConcurrentHardware: member names are unique
+PASS Window includes WindowSessionStorage: member names are unique
+PASS Window includes WindowLocalStorage: member names are unique
+PASS HTMLFrameSetElement includes WindowEventHandlers: member names are unique
+PASS Element includes ARIAMixin: member names are unique
+PASS SVGElement includes GlobalEventHandlers: member names are unique
+PASS SVGElement includes DocumentAndElementEventHandlers: member names are unique
+PASS SVGElement includes SVGElementInstance: member names are unique
+PASS SVGElement includes HTMLOrSVGElement: member names are unique
+PASS SVGGraphicsElement includes SVGTests: member names are unique
+PASS SVGSVGElement includes SVGFitToViewBox: member names are unique
+PASS SVGSVGElement includes WindowEventHandlers: member names are unique
+PASS SVGImageElement includes SVGURIReference: member names are unique
+PASS SVGScriptElement includes SVGURIReference: member names are unique
+PASS HTMLElement includes ElementCSSInlineStyle: member names are unique
+PASS SVGElement includes ElementCSSInlineStyle: member names are unique
+PASS Document includes NonElementParentNode: member names are unique
+PASS DocumentFragment includes NonElementParentNode: member names are unique
+PASS Document includes DocumentOrShadowRoot: member names are unique
+PASS ShadowRoot includes DocumentOrShadowRoot: member names are unique
+PASS Document includes ParentNode: member names are unique
+PASS DocumentFragment includes ParentNode: member names are unique
+PASS Element includes ParentNode: member names are unique
+PASS Element includes NonDocumentTypeChildNode: member names are unique
+PASS Element includes ChildNode: member names are unique
+PASS Element includes Slottable: member names are unique
+PASS Document includes XPathEvaluatorBase: member names are unique
+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(optional DOMString)
+PASS HTMLAllCollection must be primary interface of document.all
+PASS Stringification of document.all
+PASS HTMLAllCollection interface: document.all must inherit property "length" with the proper type
+PASS HTMLAllCollection interface: document.all must inherit property "namedItem(DOMString)" with the proper type
+PASS HTMLAllCollection interface: calling namedItem(DOMString) on document.all with too few arguments must throw TypeError
+PASS HTMLAllCollection interface: document.all must inherit property "item(optional DOMString)" with the proper type
+PASS HTMLAllCollection interface: calling item(optional DOMString) on document.all with too few arguments must throw TypeError
+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((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?)
+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((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?)" with the proper type
+PASS HTMLOptionsCollection interface: calling add((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?) 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
+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 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
+FAIL HTMLElement interface: attribute onslotchange assert_true: The prototype object must have a property "onslotchange" expected true got false
+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 onwebkitanimationend
+PASS HTMLElement interface: attribute onwebkitanimationiteration
+PASS HTMLElement interface: attribute onwebkitanimationstart
+PASS HTMLElement interface: attribute onwebkittransitionend
+PASS HTMLElement interface: attribute onwheel
+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
+PASS HTMLElement interface: attribute autofocus
+PASS HTMLElement interface: attribute tabIndex
+PASS HTMLElement interface: operation focus(optional 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
+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 "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
+FAIL HTMLElement interface: document.createElement("noscript") must inherit property "onslotchange" with the proper type assert_inherits: property "onslotchange" not found in prototype chain
+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 "onwebkitanimationend" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwebkitanimationiteration" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwebkitanimationstart" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwebkittransitionend" 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 "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
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "autofocus" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "tabIndex" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "focus(optional FocusOptions)" with the proper type
+PASS HTMLElement interface: calling focus(optional 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 disabled
+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 "disabled" 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 interface: attribute width
+PASS HTMLSourceElement interface: attribute height
+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 HTMLSourceElement interface: document.createElement("source") must inherit property "width" with the proper type
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "height" 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: attribute loading
+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 "loading" 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 "loading" 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 width
+PASS HTMLIFrameElement interface: attribute height
+PASS HTMLIFrameElement interface: attribute referrerPolicy
+PASS HTMLIFrameElement interface: attribute loading
+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 HTMLIFrameElement must be primary interface of document.createElement("iframe")
+PASS Stringification of document.createElement("iframe")
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "src" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "srcdoc" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "name" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "sandbox" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "allow" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "allowFullscreen" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "width" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "height" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "referrerPolicy" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "loading" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "contentDocument" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "contentWindow" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "getSVGDocument()" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "align" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "scrolling" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "frameBorder" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "longDesc" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "marginHeight" with the proper type
+PASS HTMLIFrameElement interface: document.createElement("iframe") must inherit property "marginWidth" with the proper type
+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 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 useMap
+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 "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 "useMap" 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
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "srcObject" with the proper type
+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 "preservesPitch" 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, optional DOMString, optional DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, optional DOMString, optional 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
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "srcObject" with the proper type
+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 "preservesPitch" 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, optional DOMString, optional DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, optional DOMString, optional 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
+PASS HTMLMediaElement interface: new Audio() must inherit property "srcObject" with the proper type
+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 "preservesPitch" 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, optional DOMString, optional DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, optional DOMString, optional 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 preservesPitch
+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, optional DOMString, optional 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(optional 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(optional long)" with the proper type
+PASS HTMLTableElement interface: calling insertRow(optional 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(optional 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(optional long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(optional 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(optional long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(optional 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(optional long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(optional 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(optional 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(optional long)" with the proper type
+PASS HTMLTableRowElement interface: calling insertCell(optional 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(optional 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(optional HTMLElement?)" with the proper type
+PASS HTMLFormElement interface: calling requestSubmit(optional 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(optional long)
+PASS HTMLInputElement interface: operation stepDown(optional 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, optional SelectionMode)
+PASS HTMLInputElement interface: operation setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional 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, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional 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, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional 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, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?)
+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((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?)" with the proper type
+PASS HTMLSelectElement interface: calling add((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?) 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, optional SelectionMode)
+PASS HTMLTextAreaElement interface: operation setSelectionRange(unsigned long, unsigned long, optional 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, optional SelectionMode)" with the proper type
+PASS HTMLTextAreaElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional 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, optional DOMString)" with the proper type
+PASS HTMLTextAreaElement interface: calling setSelectionRange(unsigned long, unsigned long, optional 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(optional 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(optional AssignedNodesOptions)
+PASS HTMLSlotElement interface: operation assignedElements(optional AssignedNodesOptions)
+PASS HTMLSlotElement interface: operation assign((Element or Text)...)
+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(optional AssignedNodesOptions)" with the proper type
+PASS HTMLSlotElement interface: calling assignedNodes(optional AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError
+PASS HTMLSlotElement interface: document.createElement("slot") must inherit property "assignedElements(optional AssignedNodesOptions)" with the proper type
+PASS HTMLSlotElement interface: calling assignedElements(optional AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError
+PASS HTMLSlotElement interface: document.createElement("slot") must inherit property "assign((Element or Text)...)" with the proper type
+PASS HTMLSlotElement interface: calling assign((Element or Text)...) 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, optional any)
+PASS HTMLCanvasElement interface: operation toDataURL(optional DOMString, optional any)
+PASS HTMLCanvasElement interface: operation toBlob(BlobCallback, optional DOMString, optional 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, optional any)" with the proper type
+PASS HTMLCanvasElement interface: calling getContext(DOMString, optional any) on document.createElement("canvas") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toDataURL(optional DOMString, optional any)" with the proper type
+PASS HTMLCanvasElement interface: calling toDataURL(optional DOMString, optional any) on document.createElement("canvas") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toBlob(BlobCallback, optional DOMString, optional any)" with the proper type
+PASS HTMLCanvasElement interface: calling toBlob(BlobCallback, optional DOMString, optional 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
+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
+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.14/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png
index aebcad77..e6cb52e9 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
index 9ada46c..5353ca6 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/css-calc-infinity-and-nan/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/css-calc-infinity-and-nan/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt
new file mode 100644
index 0000000..476b017a0
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/css-calc-infinity-and-nan/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt
@@ -0,0 +1,26 @@
+This is a testharness.js-based test.
+FAIL 'min(1%)' as a specified value should serialize as 'calc(1%)'. assert_equals: 'min(1%)' and 'calc(1%)' should serialize the same in specified values. expected "calc(1%)" but got "min(1%)"
+PASS 'min(1%)' as a computed value should serialize as '1%'.
+PASS 'min(1%)' as a used value should serialize as '1px'.
+FAIL 'max(1%)' as a specified value should serialize as 'calc(1%)'. assert_equals: 'max(1%)' and 'calc(1%)' should serialize the same in specified values. expected "calc(1%)" but got "max(1%)"
+PASS 'max(1%)' as a computed value should serialize as '1%'.
+PASS 'max(1%)' as a used value should serialize as '1px'.
+PASS 'min(1%, 2%, 3%)' as a specified value should serialize as 'min(1%, 2%, 3%)'.
+FAIL 'min(1%, 2%, 3%)' as a computed value should serialize as 'min(1%, 2%, 3%)'. assert_equals: 'min(1%, 2%, 3%)' should round-trip exactly in computed values. expected "min(1%, 2%, 3%)" but got "1%"
+PASS 'min(1%, 2%, 3%)' as a used value should serialize as '1px'.
+PASS 'min(3%, 2%, 1%)' as a specified value should serialize as 'min(3%, 2%, 1%)'.
+FAIL 'min(3%, 2%, 1%)' as a computed value should serialize as 'min(3%, 2%, 1%)'. assert_equals: 'min(3%, 2%, 1%)' should round-trip exactly in computed values. expected "min(3%, 2%, 1%)" but got "1%"
+PASS 'min(3%, 2%, 1%)' as a used value should serialize as '1px'.
+PASS 'max(1%, 2%, 3%)' as a specified value should serialize as 'max(1%, 2%, 3%)'.
+FAIL 'max(1%, 2%, 3%)' as a computed value should serialize as 'max(1%, 2%, 3%)'. assert_equals: 'max(1%, 2%, 3%)' should round-trip exactly in computed values. expected "max(1%, 2%, 3%)" but got "3%"
+PASS 'max(1%, 2%, 3%)' as a used value should serialize as '3px'.
+PASS 'max(3%, 2%, 1%)' as a specified value should serialize as 'max(3%, 2%, 1%)'.
+FAIL 'max(3%, 2%, 1%)' as a computed value should serialize as 'max(3%, 2%, 1%)'. assert_equals: 'max(3%, 2%, 1%)' should round-trip exactly in computed values. expected "max(3%, 2%, 1%)" but got "3%"
+PASS 'max(3%, 2%, 1%)' as a used value should serialize as '3px'.
+PASS 'min(1%, 2%, 3%) 0px' as a specified value should serialize as 'min(1%, 2%, 3%) 0px'.
+FAIL 'min(1%, 2%, 3%) 0px' as a computed value should serialize as 'min(1%, 2%, 3%) 0px'. assert_equals: 'min(1%, 2%, 3%) 0px' should round-trip exactly in computed values. expected "min(1%, 2%, 3%) 0px" but got "min(1% + 0px, 2% + 0px, 3% + 0px) 0px"
+PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a specified value should serialize as 'calc(15%)'.
+PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a computed value should serialize as '15%'.
+PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a used value should serialize as '15px'.
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png
new file mode 100644
index 0000000..e6cb52e9
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
new file mode 100644
index 0000000..5353ca6
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/external/wpt/webrtc-stats/supported-stats-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.15/external/wpt/webrtc-stats/supported-stats-expected.txt
new file mode 100644
index 0000000..84cb4f1
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.15/external/wpt/webrtc-stats/supported-stats-expected.txt
@@ -0,0 +1,314 @@
+This is a testharness.js-based test.
+Found 310 tests; 195 PASS, 115 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS getStats succeeds
+PASS Validating stats
+PASS codec's payloadType
+FAIL codec's codecType assert_true: Is codecType present expected true got false
+PASS codec's transportId
+PASS codec's mimeType
+PASS codec's clockRate
+PASS codec's channels
+PASS codec's sdpFmtpLine
+PASS codec's timestamp
+PASS codec's type
+PASS codec's id
+FAIL inbound-rtp's receiverId assert_true: Is receiverId present expected true got false
+PASS inbound-rtp's remoteId
+PASS inbound-rtp's framesDecoded
+PASS inbound-rtp's keyFramesDecoded
+PASS inbound-rtp's frameWidth
+PASS inbound-rtp's frameHeight
+FAIL inbound-rtp's frameBitDepth assert_true: Is frameBitDepth present expected true got false
+PASS inbound-rtp's framesPerSecond
+PASS inbound-rtp's qpSum
+PASS inbound-rtp's totalDecodeTime
+PASS inbound-rtp's totalInterFrameDelay
+PASS inbound-rtp's totalSquaredInterFrameDelay
+FAIL inbound-rtp's voiceActivityFlag assert_true: Is voiceActivityFlag present expected true got false
+PASS inbound-rtp's lastPacketReceivedTimestamp
+FAIL inbound-rtp's averageRtcpInterval assert_true: Is averageRtcpInterval present expected true got false
+PASS inbound-rtp's headerBytesReceived
+PASS inbound-rtp's fecPacketsReceived
+PASS inbound-rtp's fecPacketsDiscarded
+PASS inbound-rtp's bytesReceived
+FAIL inbound-rtp's packetsFailedDecryption assert_true: Is packetsFailedDecryption present expected true got false
+FAIL inbound-rtp's packetsDuplicated assert_true: Is packetsDuplicated present expected true got false
+FAIL inbound-rtp's perDscpPacketsReceived assert_true: Is perDscpPacketsReceived present expected true got false
+PASS inbound-rtp's nackCount
+PASS inbound-rtp's firCount
+PASS inbound-rtp's pliCount
+FAIL inbound-rtp's sliCount assert_true: Is sliCount present expected true got false
+FAIL inbound-rtp's totalProcessingDelay assert_true: Is totalProcessingDelay present expected true got false
+FAIL inbound-rtp's estimatedPlayoutTimestamp assert_true: Is estimatedPlayoutTimestamp present expected true got false
+PASS inbound-rtp's jitterBufferDelay
+PASS inbound-rtp's jitterBufferEmittedCount
+PASS inbound-rtp's totalSamplesReceived
+FAIL inbound-rtp's totalSamplesDecoded assert_true: Is totalSamplesDecoded present expected true got false
+FAIL inbound-rtp's samplesDecodedWithSilk assert_true: Is samplesDecodedWithSilk present expected true got false
+FAIL inbound-rtp's samplesDecodedWithCelt assert_true: Is samplesDecodedWithCelt present expected true got false
+PASS inbound-rtp's concealedSamples
+PASS inbound-rtp's silentConcealedSamples
+PASS inbound-rtp's concealmentEvents
+PASS inbound-rtp's insertedSamplesForDeceleration
+PASS inbound-rtp's removedSamplesForAcceleration
+PASS inbound-rtp's audioLevel
+PASS inbound-rtp's totalAudioEnergy
+PASS inbound-rtp's totalSamplesDuration
+PASS inbound-rtp's framesReceived
+PASS inbound-rtp's decoderImplementation
+PASS inbound-rtp's packetsReceived
+PASS inbound-rtp's packetsLost
+PASS inbound-rtp's jitter
+FAIL inbound-rtp's packetsDiscarded assert_true: Is packetsDiscarded present expected true got false
+FAIL inbound-rtp's packetsRepaired assert_true: Is packetsRepaired present expected true got false
+FAIL inbound-rtp's burstPacketsLost assert_true: Is burstPacketsLost present expected true got false
+FAIL inbound-rtp's burstPacketsDiscarded assert_true: Is burstPacketsDiscarded present expected true got false
+FAIL inbound-rtp's burstLossCount assert_true: Is burstLossCount present expected true got false
+FAIL inbound-rtp's burstDiscardCount assert_true: Is burstDiscardCount present expected true got false
+FAIL inbound-rtp's burstLossRate assert_true: Is burstLossRate present expected true got false
+FAIL inbound-rtp's burstDiscardRate assert_true: Is burstDiscardRate present expected true got false
+FAIL inbound-rtp's gapLossRate assert_true: Is gapLossRate present expected true got false
+FAIL inbound-rtp's gapDiscardRate assert_true: Is gapDiscardRate present expected true got false
+PASS inbound-rtp's framesDropped
+FAIL inbound-rtp's partialFramesLost assert_true: Is partialFramesLost present expected true got false
+FAIL inbound-rtp's fullFramesLost assert_true: Is fullFramesLost present expected true got false
+PASS inbound-rtp's ssrc
+PASS inbound-rtp's kind
+PASS inbound-rtp's transportId
+PASS inbound-rtp's codecId
+PASS inbound-rtp's timestamp
+PASS inbound-rtp's type
+PASS inbound-rtp's id
+FAIL outbound-rtp's rtxSsrc assert_true: Is rtxSsrc present expected true got false
+PASS outbound-rtp's mediaSourceId
+FAIL outbound-rtp's senderId assert_true: Is senderId present expected true got false
+PASS outbound-rtp's remoteId
+FAIL outbound-rtp's rid assert_true: Is rid present expected true got false
+FAIL outbound-rtp's lastPacketSentTimestamp assert_true: Is lastPacketSentTimestamp present expected true got false
+PASS outbound-rtp's headerBytesSent
+FAIL outbound-rtp's packetsDiscardedOnSend assert_true: Is packetsDiscardedOnSend present expected true got false
+FAIL outbound-rtp's bytesDiscardedOnSend assert_true: Is bytesDiscardedOnSend present expected true got false
+FAIL outbound-rtp's fecPacketsSent assert_true: Is fecPacketsSent present expected true got false
+PASS outbound-rtp's retransmittedPacketsSent
+PASS outbound-rtp's retransmittedBytesSent
+FAIL outbound-rtp's targetBitrate assert_true: Is targetBitrate present expected true got false
+PASS outbound-rtp's totalEncodedBytesTarget
+PASS outbound-rtp's frameWidth
+PASS outbound-rtp's frameHeight
+FAIL outbound-rtp's frameBitDepth assert_true: Is frameBitDepth present expected true got false
+PASS outbound-rtp's framesPerSecond
+PASS outbound-rtp's framesSent
+PASS outbound-rtp's hugeFramesSent
+PASS outbound-rtp's framesEncoded
+PASS outbound-rtp's keyFramesEncoded
+FAIL outbound-rtp's framesDiscardedOnSend assert_true: Is framesDiscardedOnSend present expected true got false
+PASS outbound-rtp's qpSum
+FAIL outbound-rtp's totalSamplesSent assert_true: Is totalSamplesSent present expected true got false
+FAIL outbound-rtp's samplesEncodedWithSilk assert_true: Is samplesEncodedWithSilk present expected true got false
+FAIL outbound-rtp's samplesEncodedWithCelt assert_true: Is samplesEncodedWithCelt present expected true got false
+FAIL outbound-rtp's voiceActivityFlag assert_true: Is voiceActivityFlag present expected true got false
+PASS outbound-rtp's totalEncodeTime
+PASS outbound-rtp's totalPacketSendDelay
+FAIL outbound-rtp's averageRtcpInterval assert_true: Is averageRtcpInterval present expected true got false
+PASS outbound-rtp's qualityLimitationReason
+FAIL outbound-rtp's qualityLimitationDurations assert_true: Is qualityLimitationDurations present expected true got false
+PASS outbound-rtp's qualityLimitationResolutionChanges
+FAIL outbound-rtp's perDscpPacketsSent assert_true: Is perDscpPacketsSent present expected true got false
+PASS outbound-rtp's nackCount
+PASS outbound-rtp's firCount
+PASS outbound-rtp's pliCount
+FAIL outbound-rtp's sliCount assert_true: Is sliCount present expected true got false
+PASS outbound-rtp's encoderImplementation
+PASS outbound-rtp's packetsSent
+PASS outbound-rtp's bytesSent
+PASS outbound-rtp's ssrc
+PASS outbound-rtp's kind
+PASS outbound-rtp's transportId
+PASS outbound-rtp's codecId
+PASS outbound-rtp's timestamp
+PASS outbound-rtp's type
+PASS outbound-rtp's id
+PASS remote-inbound-rtp's localId
+PASS remote-inbound-rtp's roundTripTime
+PASS remote-inbound-rtp's totalRoundTripTime
+PASS remote-inbound-rtp's fractionLost
+FAIL remote-inbound-rtp's reportsReceived assert_true: Is reportsReceived present expected true got false
+PASS remote-inbound-rtp's roundTripTimeMeasurements
+FAIL remote-inbound-rtp's packetsReceived assert_true: Is packetsReceived present expected true got false
+PASS remote-inbound-rtp's packetsLost
+PASS remote-inbound-rtp's jitter
+FAIL remote-inbound-rtp's packetsDiscarded assert_true: Is packetsDiscarded present expected true got false
+FAIL remote-inbound-rtp's packetsRepaired assert_true: Is packetsRepaired present expected true got false
+FAIL remote-inbound-rtp's burstPacketsLost assert_true: Is burstPacketsLost present expected true got false
+FAIL remote-inbound-rtp's burstPacketsDiscarded assert_true: Is burstPacketsDiscarded present expected true got false
+FAIL remote-inbound-rtp's burstLossCount assert_true: Is burstLossCount present expected true got false
+FAIL remote-inbound-rtp's burstDiscardCount assert_true: Is burstDiscardCount present expected true got false
+FAIL remote-inbound-rtp's burstLossRate assert_true: Is burstLossRate present expected true got false
+FAIL remote-inbound-rtp's burstDiscardRate assert_true: Is burstDiscardRate present expected true got false
+FAIL remote-inbound-rtp's gapLossRate assert_true: Is gapLossRate present expected true got false
+FAIL remote-inbound-rtp's gapDiscardRate assert_true: Is gapDiscardRate present expected true got false
+FAIL remote-inbound-rtp's framesDropped assert_true: Is framesDropped present expected true got false
+FAIL remote-inbound-rtp's partialFramesLost assert_true: Is partialFramesLost present expected true got false
+FAIL remote-inbound-rtp's fullFramesLost assert_true: Is fullFramesLost present expected true got false
+PASS remote-inbound-rtp's ssrc
+PASS remote-inbound-rtp's kind
+PASS remote-inbound-rtp's transportId
+PASS remote-inbound-rtp's codecId
+PASS remote-inbound-rtp's timestamp
+PASS remote-inbound-rtp's type
+PASS remote-inbound-rtp's id
+PASS remote-outbound-rtp's localId
+PASS remote-outbound-rtp's remoteTimestamp
+PASS remote-outbound-rtp's reportsSent
+FAIL remote-outbound-rtp's roundTripTime assert_true: Is roundTripTime present expected true got false
+FAIL remote-outbound-rtp's totalRoundTripTime assert_true: Is totalRoundTripTime present expected true got false
+FAIL remote-outbound-rtp's roundTripTimeMeasurements assert_true: Is roundTripTimeMeasurements present expected true got false
+PASS remote-outbound-rtp's packetsSent
+PASS remote-outbound-rtp's bytesSent
+PASS remote-outbound-rtp's ssrc
+PASS remote-outbound-rtp's kind
+PASS remote-outbound-rtp's transportId
+PASS remote-outbound-rtp's codecId
+PASS remote-outbound-rtp's timestamp
+PASS remote-outbound-rtp's type
+PASS remote-outbound-rtp's id
+FAIL csrc's contributorSsrc assert_true: Is contributorSsrc present expected true got false
+FAIL csrc's inboundRtpStreamId assert_true: Is inboundRtpStreamId present expected true got false
+FAIL csrc's packetsContributedTo assert_true: Is packetsContributedTo present expected true got false
+FAIL csrc's audioLevel assert_true: Is audioLevel present expected true got false
+FAIL csrc's timestamp assert_true: Is timestamp present expected true got false
+FAIL csrc's type assert_true: Is type present expected true got false
+FAIL csrc's id assert_true: Is id present expected true got false
+PASS peer-connection's dataChannelsOpened
+PASS peer-connection's dataChannelsClosed
+FAIL peer-connection's dataChannelsRequested assert_true: Is dataChannelsRequested present expected true got false
+FAIL peer-connection's dataChannelsAccepted assert_true: Is dataChannelsAccepted present expected true got false
+PASS peer-connection's timestamp
+PASS peer-connection's type
+PASS peer-connection's id
+PASS data-channel's label
+PASS data-channel's protocol
+PASS data-channel's dataChannelIdentifier
+PASS data-channel's state
+PASS data-channel's messagesSent
+PASS data-channel's bytesSent
+PASS data-channel's messagesReceived
+PASS data-channel's bytesReceived
+PASS data-channel's timestamp
+PASS data-channel's type
+PASS data-channel's id
+PASS media-source's audioLevel
+PASS media-source's totalAudioEnergy
+PASS media-source's totalSamplesDuration
+FAIL media-source's echoReturnLoss assert_true: Is echoReturnLoss present expected true got false
+FAIL media-source's echoReturnLossEnhancement assert_true: Is echoReturnLossEnhancement present expected true got false
+PASS media-source's width
+PASS media-source's height
+FAIL media-source's bitDepth assert_true: Is bitDepth present expected true got false
+PASS media-source's frames
+PASS media-source's framesPerSecond
+PASS media-source's trackIdentifier
+PASS media-source's kind
+FAIL media-source's relayedSource assert_true: Is relayedSource present expected true got false
+PASS media-source's timestamp
+PASS media-source's type
+PASS media-source's id
+FAIL sender's mediaSourceId assert_true: Is mediaSourceId present expected true got false
+FAIL sender's trackIdentifier assert_true: Is trackIdentifier present expected true got false
+FAIL sender's ended assert_true: Is ended present expected true got false
+FAIL sender's kind assert_true: Is kind present expected true got false
+FAIL sender's timestamp assert_true: Is timestamp present expected true got false
+FAIL sender's type assert_true: Is type present expected true got false
+FAIL sender's id assert_true: Is id present expected true got false
+FAIL receiver's trackIdentifier assert_true: Is trackIdentifier present expected true got false
+FAIL receiver's ended assert_true: Is ended present expected true got false
+FAIL receiver's kind assert_true: Is kind present expected true got false
+FAIL receiver's timestamp assert_true: Is timestamp present expected true got false
+FAIL receiver's type assert_true: Is type present expected true got false
+FAIL receiver's id assert_true: Is id present expected true got false
+PASS transport's packetsSent
+PASS transport's packetsReceived
+PASS transport's bytesSent
+PASS transport's bytesReceived
+FAIL transport's rtcpTransportStatsId assert_true: Is rtcpTransportStatsId present expected true got false
+FAIL transport's iceRole assert_true: Is iceRole present expected true got false
+FAIL transport's iceLocalUsernameFragment assert_true: Is iceLocalUsernameFragment present expected true got false
+PASS transport's dtlsState
+FAIL transport's iceState assert_true: Is iceState present expected true got false
+PASS transport's selectedCandidatePairId
+PASS transport's localCertificateId
+PASS transport's remoteCertificateId
+PASS transport's tlsVersion
+PASS transport's dtlsCipher
+PASS transport's srtpCipher
+FAIL transport's tlsGroup assert_true: Is tlsGroup present expected true got false
+PASS transport's selectedCandidatePairChanges
+PASS transport's timestamp
+PASS transport's type
+PASS transport's id
+PASS candidate-pair's transportId
+PASS candidate-pair's localCandidateId
+PASS candidate-pair's remoteCandidateId
+PASS candidate-pair's state
+PASS candidate-pair's nominated
+FAIL candidate-pair's packetsSent assert_true: Is packetsSent present expected true got false
+FAIL candidate-pair's packetsReceived assert_true: Is packetsReceived present expected true got false
+PASS candidate-pair's bytesSent
+PASS candidate-pair's bytesReceived
+FAIL candidate-pair's lastPacketSentTimestamp assert_true: Is lastPacketSentTimestamp present expected true got false
+FAIL candidate-pair's lastPacketReceivedTimestamp assert_true: Is lastPacketReceivedTimestamp present expected true got false
+FAIL candidate-pair's firstRequestTimestamp assert_true: Is firstRequestTimestamp present expected true got false
+FAIL candidate-pair's lastRequestTimestamp assert_true: Is lastRequestTimestamp present expected true got false
+FAIL candidate-pair's lastResponseTimestamp assert_true: Is lastResponseTimestamp present expected true got false
+PASS candidate-pair's totalRoundTripTime
+PASS candidate-pair's currentRoundTripTime
+PASS candidate-pair's availableOutgoingBitrate
+FAIL candidate-pair's availableIncomingBitrate assert_true: Is availableIncomingBitrate present expected true got false
+FAIL candidate-pair's circuitBreakerTriggerCount assert_true: Is circuitBreakerTriggerCount present expected true got false
+PASS candidate-pair's requestsReceived
+PASS candidate-pair's requestsSent
+PASS candidate-pair's responsesReceived
+PASS candidate-pair's responsesSent
+FAIL candidate-pair's retransmissionsReceived assert_true: Is retransmissionsReceived present expected true got false
+FAIL candidate-pair's retransmissionsSent assert_true: Is retransmissionsSent present expected true got false
+PASS candidate-pair's consentRequestsSent
+FAIL candidate-pair's consentExpiredTimestamp assert_true: Is consentExpiredTimestamp present expected true got false
+FAIL candidate-pair's packetsDiscardedOnSend assert_true: Is packetsDiscardedOnSend present expected true got false
+FAIL candidate-pair's bytesDiscardedOnSend assert_true: Is bytesDiscardedOnSend present expected true got false
+FAIL candidate-pair's requestBytesSent assert_true: Is requestBytesSent present expected true got false
+FAIL candidate-pair's consentRequestBytesSent assert_true: Is consentRequestBytesSent present expected true got false
+FAIL candidate-pair's responseBytesSent assert_true: Is responseBytesSent present expected true got false
+PASS candidate-pair's timestamp
+PASS candidate-pair's type
+PASS candidate-pair's id
+PASS local-candidate's transportId
+PASS local-candidate's address
+PASS local-candidate's port
+PASS local-candidate's protocol
+PASS local-candidate's candidateType
+PASS local-candidate's priority
+FAIL local-candidate's url assert_true: Is url present expected true got false
+FAIL local-candidate's relayProtocol assert_true: Is relayProtocol present expected true got false
+PASS local-candidate's timestamp
+PASS local-candidate's type
+PASS local-candidate's id
+PASS remote-candidate's transportId
+PASS remote-candidate's address
+PASS remote-candidate's port
+PASS remote-candidate's protocol
+PASS remote-candidate's candidateType
+PASS remote-candidate's priority
+FAIL remote-candidate's url assert_true: Is url present expected true got false
+FAIL remote-candidate's relayProtocol assert_true: Is relayProtocol present expected true got false
+PASS remote-candidate's timestamp
+PASS remote-candidate's type
+PASS remote-candidate's id
+PASS certificate's fingerprint
+PASS certificate's fingerprintAlgorithm
+PASS certificate's base64Certificate
+FAIL certificate's issuerCertificateId assert_true: Is issuerCertificateId present expected true got false
+PASS certificate's timestamp
+PASS certificate's type
+PASS certificate's id
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/svg/filters/feImage-preserveAspectRatio-all-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/svg/filters/feImage-preserveAspectRatio-all-expected.png
new file mode 100644
index 0000000..8bc59d61
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.15/svg/filters/feImage-preserveAspectRatio-all-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
index 8ca48c8..268a4fa 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-image-01-b-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-image-01-b-expected.png
new file mode 100644
index 0000000..842f0711
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-image-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/filters/feImage-preserveAspectRatio-all-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/filters/feImage-preserveAspectRatio-all-expected.png
new file mode 100644
index 0000000..8bc59d61
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/filters/feImage-preserveAspectRatio-all-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/external/wpt/webrtc-stats/supported-stats-expected.txt b/third_party/blink/web_tests/platform/mac/external/wpt/webrtc-stats/supported-stats-expected.txt
new file mode 100644
index 0000000..9781bfe
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/external/wpt/webrtc-stats/supported-stats-expected.txt
@@ -0,0 +1,314 @@
+This is a testharness.js-based test.
+Found 310 tests; 115 PASS, 195 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS getStats succeeds
+PASS Validating stats
+PASS codec's payloadType
+FAIL codec's codecType assert_true: Is codecType present expected true got false
+PASS codec's transportId
+PASS codec's mimeType
+PASS codec's clockRate
+PASS codec's channels
+PASS codec's sdpFmtpLine
+PASS codec's timestamp
+PASS codec's type
+PASS codec's id
+FAIL inbound-rtp's receiverId assert_true: Is receiverId present expected true got false
+FAIL inbound-rtp's remoteId assert_true: Is remoteId present expected true got false
+PASS inbound-rtp's framesDecoded
+PASS inbound-rtp's keyFramesDecoded
+FAIL inbound-rtp's frameWidth assert_true: Is frameWidth present expected true got false
+FAIL inbound-rtp's frameHeight assert_true: Is frameHeight present expected true got false
+FAIL inbound-rtp's frameBitDepth assert_true: Is frameBitDepth present expected true got false
+FAIL inbound-rtp's framesPerSecond assert_true: Is framesPerSecond present expected true got false
+FAIL inbound-rtp's qpSum assert_true: Is qpSum present expected true got false
+PASS inbound-rtp's totalDecodeTime
+PASS inbound-rtp's totalInterFrameDelay
+PASS inbound-rtp's totalSquaredInterFrameDelay
+FAIL inbound-rtp's voiceActivityFlag assert_true: Is voiceActivityFlag present expected true got false
+FAIL inbound-rtp's lastPacketReceivedTimestamp assert_true: Is lastPacketReceivedTimestamp present expected true got false
+FAIL inbound-rtp's averageRtcpInterval assert_true: Is averageRtcpInterval present expected true got false
+PASS inbound-rtp's headerBytesReceived
+PASS inbound-rtp's fecPacketsReceived
+PASS inbound-rtp's fecPacketsDiscarded
+PASS inbound-rtp's bytesReceived
+FAIL inbound-rtp's packetsFailedDecryption assert_true: Is packetsFailedDecryption present expected true got false
+FAIL inbound-rtp's packetsDuplicated assert_true: Is packetsDuplicated present expected true got false
+FAIL inbound-rtp's perDscpPacketsReceived assert_true: Is perDscpPacketsReceived present expected true got false
+PASS inbound-rtp's nackCount
+PASS inbound-rtp's firCount
+PASS inbound-rtp's pliCount
+FAIL inbound-rtp's sliCount assert_true: Is sliCount present expected true got false
+FAIL inbound-rtp's totalProcessingDelay assert_true: Is totalProcessingDelay present expected true got false
+FAIL inbound-rtp's estimatedPlayoutTimestamp assert_true: Is estimatedPlayoutTimestamp present expected true got false
+PASS inbound-rtp's jitterBufferDelay
+PASS inbound-rtp's jitterBufferEmittedCount
+PASS inbound-rtp's totalSamplesReceived
+FAIL inbound-rtp's totalSamplesDecoded assert_true: Is totalSamplesDecoded present expected true got false
+FAIL inbound-rtp's samplesDecodedWithSilk assert_true: Is samplesDecodedWithSilk present expected true got false
+FAIL inbound-rtp's samplesDecodedWithCelt assert_true: Is samplesDecodedWithCelt present expected true got false
+PASS inbound-rtp's concealedSamples
+PASS inbound-rtp's silentConcealedSamples
+PASS inbound-rtp's concealmentEvents
+PASS inbound-rtp's insertedSamplesForDeceleration
+PASS inbound-rtp's removedSamplesForAcceleration
+FAIL inbound-rtp's audioLevel assert_true: Is audioLevel present expected true got false
+PASS inbound-rtp's totalAudioEnergy
+PASS inbound-rtp's totalSamplesDuration
+PASS inbound-rtp's framesReceived
+PASS inbound-rtp's decoderImplementation
+PASS inbound-rtp's packetsReceived
+PASS inbound-rtp's packetsLost
+PASS inbound-rtp's jitter
+FAIL inbound-rtp's packetsDiscarded assert_true: Is packetsDiscarded present expected true got false
+FAIL inbound-rtp's packetsRepaired assert_true: Is packetsRepaired present expected true got false
+FAIL inbound-rtp's burstPacketsLost assert_true: Is burstPacketsLost present expected true got false
+FAIL inbound-rtp's burstPacketsDiscarded assert_true: Is burstPacketsDiscarded present expected true got false
+FAIL inbound-rtp's burstLossCount assert_true: Is burstLossCount present expected true got false
+FAIL inbound-rtp's burstDiscardCount assert_true: Is burstDiscardCount present expected true got false
+FAIL inbound-rtp's burstLossRate assert_true: Is burstLossRate present expected true got false
+FAIL inbound-rtp's burstDiscardRate assert_true: Is burstDiscardRate present expected true got false
+FAIL inbound-rtp's gapLossRate assert_true: Is gapLossRate present expected true got false
+FAIL inbound-rtp's gapDiscardRate assert_true: Is gapDiscardRate present expected true got false
+PASS inbound-rtp's framesDropped
+FAIL inbound-rtp's partialFramesLost assert_true: Is partialFramesLost present expected true got false
+FAIL inbound-rtp's fullFramesLost assert_true: Is fullFramesLost present expected true got false
+PASS inbound-rtp's ssrc
+PASS inbound-rtp's kind
+PASS inbound-rtp's transportId
+FAIL inbound-rtp's codecId assert_true: Is codecId present expected true got false
+PASS inbound-rtp's timestamp
+PASS inbound-rtp's type
+PASS inbound-rtp's id
+FAIL outbound-rtp's rtxSsrc assert_true: Is rtxSsrc present expected true got false
+PASS outbound-rtp's mediaSourceId
+FAIL outbound-rtp's senderId assert_true: Is senderId present expected true got false
+FAIL outbound-rtp's remoteId assert_true: Is remoteId present expected true got false
+FAIL outbound-rtp's rid assert_true: Is rid present expected true got false
+FAIL outbound-rtp's lastPacketSentTimestamp assert_true: Is lastPacketSentTimestamp present expected true got false
+PASS outbound-rtp's headerBytesSent
+FAIL outbound-rtp's packetsDiscardedOnSend assert_true: Is packetsDiscardedOnSend present expected true got false
+FAIL outbound-rtp's bytesDiscardedOnSend assert_true: Is bytesDiscardedOnSend present expected true got false
+FAIL outbound-rtp's fecPacketsSent assert_true: Is fecPacketsSent present expected true got false
+PASS outbound-rtp's retransmittedPacketsSent
+PASS outbound-rtp's retransmittedBytesSent
+FAIL outbound-rtp's targetBitrate assert_true: Is targetBitrate present expected true got false
+PASS outbound-rtp's totalEncodedBytesTarget
+FAIL outbound-rtp's frameWidth assert_true: Is frameWidth present expected true got false
+FAIL outbound-rtp's frameHeight assert_true: Is frameHeight present expected true got false
+FAIL outbound-rtp's frameBitDepth assert_true: Is frameBitDepth present expected true got false
+FAIL outbound-rtp's framesPerSecond assert_true: Is framesPerSecond present expected true got false
+PASS outbound-rtp's framesSent
+PASS outbound-rtp's hugeFramesSent
+PASS outbound-rtp's framesEncoded
+PASS outbound-rtp's keyFramesEncoded
+FAIL outbound-rtp's framesDiscardedOnSend assert_true: Is framesDiscardedOnSend present expected true got false
+FAIL outbound-rtp's qpSum assert_true: Is qpSum present expected true got false
+FAIL outbound-rtp's totalSamplesSent assert_true: Is totalSamplesSent present expected true got false
+FAIL outbound-rtp's samplesEncodedWithSilk assert_true: Is samplesEncodedWithSilk present expected true got false
+FAIL outbound-rtp's samplesEncodedWithCelt assert_true: Is samplesEncodedWithCelt present expected true got false
+FAIL outbound-rtp's voiceActivityFlag assert_true: Is voiceActivityFlag present expected true got false
+PASS outbound-rtp's totalEncodeTime
+PASS outbound-rtp's totalPacketSendDelay
+FAIL outbound-rtp's averageRtcpInterval assert_true: Is averageRtcpInterval present expected true got false
+PASS outbound-rtp's qualityLimitationReason
+FAIL outbound-rtp's qualityLimitationDurations assert_true: Is qualityLimitationDurations present expected true got false
+PASS outbound-rtp's qualityLimitationResolutionChanges
+FAIL outbound-rtp's perDscpPacketsSent assert_true: Is perDscpPacketsSent present expected true got false
+PASS outbound-rtp's nackCount
+PASS outbound-rtp's firCount
+PASS outbound-rtp's pliCount
+FAIL outbound-rtp's sliCount assert_true: Is sliCount present expected true got false
+PASS outbound-rtp's encoderImplementation
+PASS outbound-rtp's packetsSent
+PASS outbound-rtp's bytesSent
+PASS outbound-rtp's ssrc
+PASS outbound-rtp's kind
+PASS outbound-rtp's transportId
+PASS outbound-rtp's codecId
+PASS outbound-rtp's timestamp
+PASS outbound-rtp's type
+PASS outbound-rtp's id
+FAIL remote-inbound-rtp's localId assert_true: Is localId present expected true got false
+FAIL remote-inbound-rtp's roundTripTime assert_true: Is roundTripTime present expected true got false
+FAIL remote-inbound-rtp's totalRoundTripTime assert_true: Is totalRoundTripTime present expected true got false
+FAIL remote-inbound-rtp's fractionLost assert_true: Is fractionLost present expected true got false
+FAIL remote-inbound-rtp's reportsReceived assert_true: Is reportsReceived present expected true got false
+FAIL remote-inbound-rtp's roundTripTimeMeasurements assert_true: Is roundTripTimeMeasurements present expected true got false
+FAIL remote-inbound-rtp's packetsReceived assert_true: Is packetsReceived present expected true got false
+FAIL remote-inbound-rtp's packetsLost assert_true: Is packetsLost present expected true got false
+FAIL remote-inbound-rtp's jitter assert_true: Is jitter present expected true got false
+FAIL remote-inbound-rtp's packetsDiscarded assert_true: Is packetsDiscarded present expected true got false
+FAIL remote-inbound-rtp's packetsRepaired assert_true: Is packetsRepaired present expected true got false
+FAIL remote-inbound-rtp's burstPacketsLost assert_true: Is burstPacketsLost present expected true got false
+FAIL remote-inbound-rtp's burstPacketsDiscarded assert_true: Is burstPacketsDiscarded present expected true got false
+FAIL remote-inbound-rtp's burstLossCount assert_true: Is burstLossCount present expected true got false
+FAIL remote-inbound-rtp's burstDiscardCount assert_true: Is burstDiscardCount present expected true got false
+FAIL remote-inbound-rtp's burstLossRate assert_true: Is burstLossRate present expected true got false
+FAIL remote-inbound-rtp's burstDiscardRate assert_true: Is burstDiscardRate present expected true got false
+FAIL remote-inbound-rtp's gapLossRate assert_true: Is gapLossRate present expected true got false
+FAIL remote-inbound-rtp's gapDiscardRate assert_true: Is gapDiscardRate present expected true got false
+FAIL remote-inbound-rtp's framesDropped assert_true: Is framesDropped present expected true got false
+FAIL remote-inbound-rtp's partialFramesLost assert_true: Is partialFramesLost present expected true got false
+FAIL remote-inbound-rtp's fullFramesLost assert_true: Is fullFramesLost present expected true got false
+FAIL remote-inbound-rtp's ssrc assert_true: Is ssrc present expected true got false
+FAIL remote-inbound-rtp's kind assert_true: Is kind present expected true got false
+FAIL remote-inbound-rtp's transportId assert_true: Is transportId present expected true got false
+FAIL remote-inbound-rtp's codecId assert_true: Is codecId present expected true got false
+FAIL remote-inbound-rtp's timestamp assert_true: Is timestamp present expected true got false
+FAIL remote-inbound-rtp's type assert_true: Is type present expected true got false
+FAIL remote-inbound-rtp's id assert_true: Is id present expected true got false
+FAIL remote-outbound-rtp's localId assert_true: Is localId present expected true got false
+FAIL remote-outbound-rtp's remoteTimestamp assert_true: Is remoteTimestamp present expected true got false
+FAIL remote-outbound-rtp's reportsSent assert_true: Is reportsSent present expected true got false
+FAIL remote-outbound-rtp's roundTripTime assert_true: Is roundTripTime present expected true got false
+FAIL remote-outbound-rtp's totalRoundTripTime assert_true: Is totalRoundTripTime present expected true got false
+FAIL remote-outbound-rtp's roundTripTimeMeasurements assert_true: Is roundTripTimeMeasurements present expected true got false
+FAIL remote-outbound-rtp's packetsSent assert_true: Is packetsSent present expected true got false
+FAIL remote-outbound-rtp's bytesSent assert_true: Is bytesSent present expected true got false
+FAIL remote-outbound-rtp's ssrc assert_true: Is ssrc present expected true got false
+FAIL remote-outbound-rtp's kind assert_true: Is kind present expected true got false
+FAIL remote-outbound-rtp's transportId assert_true: Is transportId present expected true got false
+FAIL remote-outbound-rtp's codecId assert_true: Is codecId present expected true got false
+FAIL remote-outbound-rtp's timestamp assert_true: Is timestamp present expected true got false
+FAIL remote-outbound-rtp's type assert_true: Is type present expected true got false
+FAIL remote-outbound-rtp's id assert_true: Is id present expected true got false
+FAIL csrc's contributorSsrc assert_true: Is contributorSsrc present expected true got false
+FAIL csrc's inboundRtpStreamId assert_true: Is inboundRtpStreamId present expected true got false
+FAIL csrc's packetsContributedTo assert_true: Is packetsContributedTo present expected true got false
+FAIL csrc's audioLevel assert_true: Is audioLevel present expected true got false
+FAIL csrc's timestamp assert_true: Is timestamp present expected true got false
+FAIL csrc's type assert_true: Is type present expected true got false
+FAIL csrc's id assert_true: Is id present expected true got false
+PASS peer-connection's dataChannelsOpened
+PASS peer-connection's dataChannelsClosed
+FAIL peer-connection's dataChannelsRequested assert_true: Is dataChannelsRequested present expected true got false
+FAIL peer-connection's dataChannelsAccepted assert_true: Is dataChannelsAccepted present expected true got false
+PASS peer-connection's timestamp
+PASS peer-connection's type
+PASS peer-connection's id
+PASS data-channel's label
+PASS data-channel's protocol
+PASS data-channel's dataChannelIdentifier
+PASS data-channel's state
+PASS data-channel's messagesSent
+PASS data-channel's bytesSent
+PASS data-channel's messagesReceived
+PASS data-channel's bytesReceived
+PASS data-channel's timestamp
+PASS data-channel's type
+PASS data-channel's id
+PASS media-source's audioLevel
+PASS media-source's totalAudioEnergy
+PASS media-source's totalSamplesDuration
+FAIL media-source's echoReturnLoss assert_true: Is echoReturnLoss present expected true got false
+FAIL media-source's echoReturnLossEnhancement assert_true: Is echoReturnLossEnhancement present expected true got false
+PASS media-source's width
+PASS media-source's height
+FAIL media-source's bitDepth assert_true: Is bitDepth present expected true got false
+PASS media-source's frames
+PASS media-source's framesPerSecond
+PASS media-source's trackIdentifier
+PASS media-source's kind
+FAIL media-source's relayedSource assert_true: Is relayedSource present expected true got false
+PASS media-source's timestamp
+PASS media-source's type
+PASS media-source's id
+FAIL sender's mediaSourceId assert_true: Is mediaSourceId present expected true got false
+FAIL sender's trackIdentifier assert_true: Is trackIdentifier present expected true got false
+FAIL sender's ended assert_true: Is ended present expected true got false
+FAIL sender's kind assert_true: Is kind present expected true got false
+FAIL sender's timestamp assert_true: Is timestamp present expected true got false
+FAIL sender's type assert_true: Is type present expected true got false
+FAIL sender's id assert_true: Is id present expected true got false
+FAIL receiver's trackIdentifier assert_true: Is trackIdentifier present expected true got false
+FAIL receiver's ended assert_true: Is ended present expected true got false
+FAIL receiver's kind assert_true: Is kind present expected true got false
+FAIL receiver's timestamp assert_true: Is timestamp present expected true got false
+FAIL receiver's type assert_true: Is type present expected true got false
+FAIL receiver's id assert_true: Is id present expected true got false
+PASS transport's packetsSent
+PASS transport's packetsReceived
+PASS transport's bytesSent
+PASS transport's bytesReceived
+FAIL transport's rtcpTransportStatsId assert_true: Is rtcpTransportStatsId present expected true got false
+FAIL transport's iceRole assert_true: Is iceRole present expected true got false
+FAIL transport's iceLocalUsernameFragment assert_true: Is iceLocalUsernameFragment present expected true got false
+PASS transport's dtlsState
+FAIL transport's iceState assert_true: Is iceState present expected true got false
+FAIL transport's selectedCandidatePairId assert_true: Is selectedCandidatePairId present expected true got false
+PASS transport's localCertificateId
+FAIL transport's remoteCertificateId assert_true: Is remoteCertificateId present expected true got false
+FAIL transport's tlsVersion assert_true: Is tlsVersion present expected true got false
+FAIL transport's dtlsCipher assert_true: Is dtlsCipher present expected true got false
+FAIL transport's srtpCipher assert_true: Is srtpCipher present expected true got false
+FAIL transport's tlsGroup assert_true: Is tlsGroup present expected true got false
+PASS transport's selectedCandidatePairChanges
+PASS transport's timestamp
+PASS transport's type
+PASS transport's id
+FAIL candidate-pair's transportId assert_true: Is transportId present expected true got false
+FAIL candidate-pair's localCandidateId assert_true: Is localCandidateId present expected true got false
+FAIL candidate-pair's remoteCandidateId assert_true: Is remoteCandidateId present expected true got false
+FAIL candidate-pair's state assert_true: Is state present expected true got false
+FAIL candidate-pair's nominated assert_true: Is nominated present expected true got false
+FAIL candidate-pair's packetsSent assert_true: Is packetsSent present expected true got false
+FAIL candidate-pair's packetsReceived assert_true: Is packetsReceived present expected true got false
+FAIL candidate-pair's bytesSent assert_true: Is bytesSent present expected true got false
+FAIL candidate-pair's bytesReceived assert_true: Is bytesReceived present expected true got false
+FAIL candidate-pair's lastPacketSentTimestamp assert_true: Is lastPacketSentTimestamp present expected true got false
+FAIL candidate-pair's lastPacketReceivedTimestamp assert_true: Is lastPacketReceivedTimestamp present expected true got false
+FAIL candidate-pair's firstRequestTimestamp assert_true: Is firstRequestTimestamp present expected true got false
+FAIL candidate-pair's lastRequestTimestamp assert_true: Is lastRequestTimestamp present expected true got false
+FAIL candidate-pair's lastResponseTimestamp assert_true: Is lastResponseTimestamp present expected true got false
+FAIL candidate-pair's totalRoundTripTime assert_true: Is totalRoundTripTime present expected true got false
+FAIL candidate-pair's currentRoundTripTime assert_true: Is currentRoundTripTime present expected true got false
+FAIL candidate-pair's availableOutgoingBitrate assert_true: Is availableOutgoingBitrate present expected true got false
+FAIL candidate-pair's availableIncomingBitrate assert_true: Is availableIncomingBitrate present expected true got false
+FAIL candidate-pair's circuitBreakerTriggerCount assert_true: Is circuitBreakerTriggerCount present expected true got false
+FAIL candidate-pair's requestsReceived assert_true: Is requestsReceived present expected true got false
+FAIL candidate-pair's requestsSent assert_true: Is requestsSent present expected true got false
+FAIL candidate-pair's responsesReceived assert_true: Is responsesReceived present expected true got false
+FAIL candidate-pair's responsesSent assert_true: Is responsesSent present expected true got false
+FAIL candidate-pair's retransmissionsReceived assert_true: Is retransmissionsReceived present expected true got false
+FAIL candidate-pair's retransmissionsSent assert_true: Is retransmissionsSent present expected true got false
+FAIL candidate-pair's consentRequestsSent assert_true: Is consentRequestsSent present expected true got false
+FAIL candidate-pair's consentExpiredTimestamp assert_true: Is consentExpiredTimestamp present expected true got false
+FAIL candidate-pair's packetsDiscardedOnSend assert_true: Is packetsDiscardedOnSend present expected true got false
+FAIL candidate-pair's bytesDiscardedOnSend assert_true: Is bytesDiscardedOnSend present expected true got false
+FAIL candidate-pair's requestBytesSent assert_true: Is requestBytesSent present expected true got false
+FAIL candidate-pair's consentRequestBytesSent assert_true: Is consentRequestBytesSent present expected true got false
+FAIL candidate-pair's responseBytesSent assert_true: Is responseBytesSent present expected true got false
+FAIL candidate-pair's timestamp assert_true: Is timestamp present expected true got false
+FAIL candidate-pair's type assert_true: Is type present expected true got false
+FAIL candidate-pair's id assert_true: Is id present expected true got false
+FAIL local-candidate's transportId assert_true: Is transportId present expected true got false
+FAIL local-candidate's address assert_true: Is address present expected true got false
+FAIL local-candidate's port assert_true: Is port present expected true got false
+FAIL local-candidate's protocol assert_true: Is protocol present expected true got false
+FAIL local-candidate's candidateType assert_true: Is candidateType present expected true got false
+FAIL local-candidate's priority assert_true: Is priority present expected true got false
+FAIL local-candidate's url assert_true: Is url present expected true got false
+FAIL local-candidate's relayProtocol assert_true: Is relayProtocol present expected true got false
+FAIL local-candidate's timestamp assert_true: Is timestamp present expected true got false
+FAIL local-candidate's type assert_true: Is type present expected true got false
+FAIL local-candidate's id assert_true: Is id present expected true got false
+FAIL remote-candidate's transportId assert_true: Is transportId present expected true got false
+FAIL remote-candidate's address assert_true: Is address present expected true got false
+FAIL remote-candidate's port assert_true: Is port present expected true got false
+FAIL remote-candidate's protocol assert_true: Is protocol present expected true got false
+FAIL remote-candidate's candidateType assert_true: Is candidateType present expected true got false
+FAIL remote-candidate's priority assert_true: Is priority present expected true got false
+FAIL remote-candidate's url assert_true: Is url present expected true got false
+FAIL remote-candidate's relayProtocol assert_true: Is relayProtocol present expected true got false
+FAIL remote-candidate's timestamp assert_true: Is timestamp present expected true got false
+FAIL remote-candidate's type assert_true: Is type present expected true got false
+FAIL remote-candidate's id assert_true: Is id present expected true got false
+PASS certificate's fingerprint
+PASS certificate's fingerprintAlgorithm
+PASS certificate's base64Certificate
+FAIL certificate's issuerCertificateId assert_true: Is issuerCertificateId present expected true got false
+PASS certificate's timestamp
+PASS certificate's type
+PASS certificate's id
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac/external/wpt/webrtc/RTCDTMFSender-ontonechange-long.https-expected.txt b/third_party/blink/web_tests/platform/mac/external/wpt/webrtc/RTCDTMFSender-ontonechange-long.https-expected.txt
new file mode 100644
index 0000000..b543ad7
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/external/wpt/webrtc/RTCDTMFSender-ontonechange-long.https-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL insertDTMF with duration greater than 6000 should be clamped to 6000 promise_test: Unhandled rejection with value: "Waited too long for canInsertDTMF"
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png
index 0c03f4a..522a03b 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
index 37fda7b..7ecb427 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-image-01-b-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-image-01-b-expected.png
index 4970697..321e75d 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-image-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-image-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png
index 55b1e00fc..eca8977c 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
index d47aa42c6..454d729 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-image-01-b-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-image-01-b-expected.png
index 7685494..d75d05dc 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-image-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-image-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/filters/feImage-preserveAspectRatio-all-expected.png b/third_party/blink/web_tests/platform/win/svg/filters/feImage-preserveAspectRatio-all-expected.png
new file mode 100644
index 0000000..8bc59d61
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/svg/filters/feImage-preserveAspectRatio-all-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/css-calc-infinity-and-nan/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt b/third_party/blink/web_tests/virtual/css-calc-infinity-and-nan/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt
new file mode 100644
index 0000000..a25b56c
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/css-calc-infinity-and-nan/external/wpt/css/css-values/minmax-percentage-serialize-expected.txt
@@ -0,0 +1,26 @@
+This is a testharness.js-based test.
+FAIL 'min(1%)' as a specified value should serialize as 'calc(1%)'. assert_equals: 'min(1%)' and 'calc(1%)' should serialize the same in specified values. expected "calc(1%)" but got "min(1%)"
+PASS 'min(1%)' as a computed value should serialize as '1%'.
+PASS 'min(1%)' as a used value should serialize as '1px'.
+FAIL 'max(1%)' as a specified value should serialize as 'calc(1%)'. assert_equals: 'max(1%)' and 'calc(1%)' should serialize the same in specified values. expected "calc(1%)" but got "max(1%)"
+PASS 'max(1%)' as a computed value should serialize as '1%'.
+PASS 'max(1%)' as a used value should serialize as '1px'.
+PASS 'min(1%, 2%, 3%)' as a specified value should serialize as 'min(1%, 2%, 3%)'.
+FAIL 'min(1%, 2%, 3%)' as a computed value should serialize as 'min(1%, 2%, 3%)'. assert_equals: 'min(1%, 2%, 3%)' should round-trip exactly in computed values. expected "min(1%, 2%, 3%)" but got "1%"
+PASS 'min(1%, 2%, 3%)' as a used value should serialize as '1px'.
+PASS 'min(3%, 2%, 1%)' as a specified value should serialize as 'min(3%, 2%, 1%)'.
+FAIL 'min(3%, 2%, 1%)' as a computed value should serialize as 'min(3%, 2%, 1%)'. assert_equals: 'min(3%, 2%, 1%)' should round-trip exactly in computed values. expected "min(3%, 2%, 1%)" but got "1%"
+PASS 'min(3%, 2%, 1%)' as a used value should serialize as '1px'.
+PASS 'max(1%, 2%, 3%)' as a specified value should serialize as 'max(1%, 2%, 3%)'.
+FAIL 'max(1%, 2%, 3%)' as a computed value should serialize as 'max(1%, 2%, 3%)'. assert_equals: 'max(1%, 2%, 3%)' should round-trip exactly in computed values. expected "max(1%, 2%, 3%)" but got "3%"
+PASS 'max(1%, 2%, 3%)' as a used value should serialize as '3px'.
+PASS 'max(3%, 2%, 1%)' as a specified value should serialize as 'max(3%, 2%, 1%)'.
+FAIL 'max(3%, 2%, 1%)' as a computed value should serialize as 'max(3%, 2%, 1%)'. assert_equals: 'max(3%, 2%, 1%)' should round-trip exactly in computed values. expected "max(3%, 2%, 1%)" but got "3%"
+PASS 'max(3%, 2%, 1%)' as a used value should serialize as '3px'.
+PASS 'min(1%, 2%, 3%) 0px' as a specified value should serialize as 'min(1%, 2%, 3%) 0px'.
+FAIL 'min(1%, 2%, 3%) 0px' as a computed value should serialize as 'min(1%, 2%, 3%) 0px'. assert_equals: 'min(1%, 2%, 3%) 0px' should round-trip exactly in computed values. expected "min(1%, 2%, 3%) 0px" but got "min(1% + 0px, 2% + 0px, 3% + 0px) 0px"
+FAIL 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a specified value should serialize as 'calc(10% + min(1%, 2%) + max(3%, 4%))'. assert_equals: 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' and 'calc(10% + min(1%, 2%) + max(3%, 4%))' should serialize the same in specified values. expected "calc(10% + min(1%, 2%) + max(3%, 4%))" but got "calc(15%)"
+FAIL 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a computed value should serialize as 'calc(10% + min(1%, 2%) + max(3%, 4%))'. assert_equals: 'calc(10% + min(1%, 2%) + max(3%, 4%))' should round-trip exactly in computed values. expected "calc(10% + min(1%, 2%) + max(3%, 4%))" but got "15%"
+PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a used value should serialize as '15px'.
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/filters/feImage-preserveAspectRatio-all-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/filters/feImage-preserveAspectRatio-all-expected.png
new file mode 100644
index 0000000..8bc59d61
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/filters/feImage-preserveAspectRatio-all-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/change_delayed_task_priority.html b/third_party/blink/web_tests/wpt_internal/scheduler/change_delayed_task_priority.any.js
similarity index 62%
rename from third_party/blink/web_tests/wpt_internal/scheduler/change_delayed_task_priority.html
rename to third_party/blink/web_tests/wpt_internal/scheduler/change_delayed_task_priority.any.js
index dc5517d..ad07d86 100644
--- a/third_party/blink/web_tests/wpt_internal/scheduler/change_delayed_task_priority.html
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/change_delayed_task_priority.any.js
@@ -1,11 +1,6 @@
-<!doctype html>
-<title>Scheduling API: Move Delayed Tasks</title>
-<link rel="author" title="Scott Haseley" href="mailto:shaseley@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
+// META: title=Scheduling API: Move Delayed Tasks
+// META: global=window
 
-<script>
 'use strict';
 
 let taskCount = 0;
@@ -29,5 +24,3 @@
   }), { signal: tc.signal, delay: 20 });
 
 }, "Tests delay when changing a delayed task's priority");
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/change_task_priority.html b/third_party/blink/web_tests/wpt_internal/scheduler/change_task_priority.any.js
similarity index 61%
rename from third_party/blink/web_tests/wpt_internal/scheduler/change_task_priority.html
rename to third_party/blink/web_tests/wpt_internal/scheduler/change_task_priority.any.js
index d35a5531..a561546 100644
--- a/third_party/blink/web_tests/wpt_internal/scheduler/change_task_priority.html
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/change_task_priority.any.js
@@ -1,11 +1,5 @@
-<!doctype html>
-<title>Scheduling API: Setting TaskController.priority</title>
-<link rel="author" title="Scott Haseley" href="mailto:shaseley@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
+// META: title=Scheduling API: Setting TaskController.priority
+// META: global=window
 'use strict';
 
 async_test(t => {
@@ -28,5 +22,3 @@
   }), { priority: 'background' });
 
 }, 'Test modifying TaskController priority');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal.html b/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal.any.js
similarity index 62%
rename from third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal.html
rename to third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal.any.js
index 92451ece..041e776 100644
--- a/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal.html
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal.any.js
@@ -1,11 +1,5 @@
-<!doctype html>
-<title>Scheduling API: Signal inheritance</title>
-<link rel="author" title="Nate Chapin" href="mailto:japhet@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
+// META: title=Scheduling API: Signal inheritance
+// META: global=window
 'use strict';
 
 async_test(t => {
@@ -13,7 +7,7 @@
   let tc = new TaskController("user-blocking");
   scheduler.postTask(() => {
     scheduler.postTask(() => {
-      assert_equals(scheduler.currentTaskSignal.priority, "user-blocking"); 
+      assert_equals(scheduler.currentTaskSignal.priority, "user-blocking");
       result = "pass";
     }, { signal: scheduler.currentTaskSignal });
   }, { signal: tc.signal });
@@ -24,5 +18,3 @@
     assert_equals(result, "pass");
   }));
 }, 'Test that currentTaskSignal uses the incumbent priority');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_abort_signal.any.js b/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_abort_signal.any.js
new file mode 100644
index 0000000..4c6e3341
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_abort_signal.any.js
@@ -0,0 +1,13 @@
+// META: title=Scheduling API: Signal inheritance
+// META: global=window
+'use strict';
+
+async_test(t => {
+  let ac = new AbortController()
+  scheduler.postTask(() => {
+    scheduler.postTask(() => {}, { signal : scheduler.currentTaskSignal }).then(
+        () => { assert_unreached('This task should have been aborted'); },
+        t.step_func_done());
+    ac.abort();
+  }, { signal: ac.signal });
+}, 'Test that currentTaskSignal wraps and follows an AbortSignal');
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_abort_signal.html b/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_abort_signal.html
deleted file mode 100644
index 1e9ddbd8..0000000
--- a/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_abort_signal.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!doctype html>
-<title>Scheduling API: Signal inheritance</title>
-<link rel="author" title="Nate Chapin" href="mailto:japhet@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-'use strict';
-
-async_test(t => {
-  let ac = new AbortController()
-  scheduler.postTask(() => {
-    scheduler.postTask(() => {}, { signal : scheduler.currentTaskSignal }).then(
-        () => { assert_unreached('This task should have been aborted'); },
-        t.step_func_done());
-    ac.abort();
-  }, { signal: ac.signal });
-}, 'Test that currentTaskSignal wraps and follows an AbortSignal');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_async_abort.any.js b/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_async_abort.any.js
new file mode 100644
index 0000000..4c6e3341
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_async_abort.any.js
@@ -0,0 +1,13 @@
+// META: title=Scheduling API: Signal inheritance
+// META: global=window
+'use strict';
+
+async_test(t => {
+  let ac = new AbortController()
+  scheduler.postTask(() => {
+    scheduler.postTask(() => {}, { signal : scheduler.currentTaskSignal }).then(
+        () => { assert_unreached('This task should have been aborted'); },
+        t.step_func_done());
+    ac.abort();
+  }, { signal: ac.signal });
+}, 'Test that currentTaskSignal wraps and follows an AbortSignal');
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_async_abort.html b/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_async_abort.html
deleted file mode 100644
index 70c26156..0000000
--- a/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_async_abort.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!doctype html>
-<title>Scheduling API: Signal inheritance</title>
-<link rel="author" title="Nate Chapin" href="mailto:japhet@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-'use strict';
-
-async_test(t => {
-  let tc = new TaskController("user-blocking");
-  scheduler.postTask(async () => {
-    await new Promise(resolve => setTimeout(resolve, 0));
-    scheduler.postTask(() => {}, { signal: scheduler.currentTaskSignal }).then(
-      () => { assert_unreached('This task should have been aborted'); },
-      t.step_func_done());
-    tc.abort();
-  }, { signal: tc.signal });
-}, 'Test that currentTaskSignal works through promise resolution');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_async_priority.any.js b/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_async_priority.any.js
new file mode 100644
index 0000000..67009dff
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_async_priority.any.js
@@ -0,0 +1,12 @@
+// META: title=Scheduling API: Signal inheritance
+// META: global=window
+'use strict';
+
+async_test(t => {
+  let tc = new TaskController("user-blocking");
+  scheduler.postTask(async () => {
+    await new Promise(resolve => setTimeout(resolve, 0));
+    assert_equals(scheduler.currentTaskSignal.priority, "user-blocking");
+    t.done();
+  }, { signal: tc.signal });
+}, 'Test that currentTaskSignal works through promise resolution');
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_async_priority.html b/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_async_priority.html
deleted file mode 100644
index 94cbdcd..0000000
--- a/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_async_priority.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!doctype html>
-<title>Scheduling API: Signal inheritance</title>
-<link rel="author" title="Nate Chapin" href="mailto:japhet@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-'use strict';
-
-async_test(t => {
-  let tc = new TaskController("user-blocking");
-  scheduler.postTask(async () => {
-    await new Promise(resolve => setTimeout(resolve, 0));
-    assert_equals(scheduler.currentTaskSignal.priority, "user-blocking");
-    t.done();
-  }, { signal: tc.signal });
-}, 'Test that currentTaskSignal works through promise resolution');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_inherit_priority.any.js b/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_inherit_priority.any.js
new file mode 100644
index 0000000..59ed0d0c
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_inherit_priority.any.js
@@ -0,0 +1,9 @@
+// META: title=Scheduling API: Signal inheritance
+// META: global=window
+'use strict';
+
+async_test(t => {
+  scheduler.postTask(t.step_func_done(() => {
+    assert_equals('user-blocking', scheduler.currentTaskSignal.priority);
+  }), { priority: "user-blocking" });
+}, 'Test that currentTaskSignal propagates priority even if an explicit signal was not given');
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_inherit_priority.html b/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_inherit_priority.html
deleted file mode 100644
index 427af77..0000000
--- a/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_inherit_priority.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!doctype html>
-<title>Scheduling API: Signal inheritance</title>
-<link rel="author" title="Nate Chapin" href="mailto:japhet@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-'use strict';
-
-async_test(t => {
-  scheduler.postTask(t.step_func_done(() => {
-    assert_equals('user-blocking', scheduler.currentTaskSignal.priority);
-  }), { priority: "user-blocking" });
-}, 'Test that currentTaskSignal propagates priority even if an explicit signal was not given');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_thru_fetch.any.js b/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_thru_fetch.any.js
new file mode 100644
index 0000000..c3d84b0
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_thru_fetch.any.js
@@ -0,0 +1,14 @@
+// META: title=Scheduling API: Signal inheritance
+// META: global=window
+'use strict';
+
+async_test(t => {
+  let tc = new TaskController("user-blocking");
+  scheduler.postTask(async () => {
+    await fetch("support/dummy.txt");
+    scheduler.postTask(() => {}, { signal: scheduler.currentTaskSignal }).then(
+      () => { assert_unreached('This task should have been aborted'); },
+      t.step_func_done());
+    tc.abort();
+  }, { signal: tc.signal });
+}, 'Test that currentTaskSignal works through promise resolution');
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_thru_fetch.html b/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_thru_fetch.html
deleted file mode 100644
index df430fe..0000000
--- a/third_party/blink/web_tests/wpt_internal/scheduler/current_task_signal_thru_fetch.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!doctype html>
-<title>Scheduling API: Signal inheritance</title>
-<link rel="author" title="Nate Chapin" href="mailto:japhet@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-'use strict';
-
-async_test(t => {
-  let tc = new TaskController("user-blocking");
-  scheduler.postTask(async () => {
-    await fetch("support/dummy.txt");
-    scheduler.postTask(() => {}, { signal: scheduler.currentTaskSignal }).then(
-      () => { assert_unreached('This task should have been aborted'); },
-      t.step_func_done());
-    tc.abort();
-  }, { signal: tc.signal });
-}, 'Test that currentTaskSignal works through promise resolution');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/post_delayed_task.any.js b/third_party/blink/web_tests/wpt_internal/scheduler/post_delayed_task.any.js
new file mode 100644
index 0000000..2d9401a7
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/post_delayed_task.any.js
@@ -0,0 +1,11 @@
+// META: title=Scheduling API: Post Delayed Tasks
+// META: global=window
+'use strict';
+
+async_test(t => {
+  let now = performance.now();
+    scheduler.postTask(t.step_func_done(() => {
+      let elapsed = performance.now() - now;
+      assert_greater_than_equal(elapsed, 10);
+    }), { priority: 'user-blocking', delay: 10 });
+}, 'Tests basic scheduler.postTask with a delay');
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/post_delayed_task.html b/third_party/blink/web_tests/wpt_internal/scheduler/post_delayed_task.html
deleted file mode 100644
index 824d201..0000000
--- a/third_party/blink/web_tests/wpt_internal/scheduler/post_delayed_task.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html>
-<title>Scheduling API: Post Delayed Tasks</title>
-<link rel="author" title="Scott Haseley" href="mailto:shaseley@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-'use strict';
-
-async_test(t => {
-  let now = performance.now();
-    scheduler.postTask(t.step_func_done(() => {
-      let elapsed = performance.now() - now;
-      assert_greater_than_equal(elapsed, 10);
-    }), { priority: 'user-blocking', delay: 10 });
-}, 'Tests basic scheduler.postTask with a delay');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/post_task_with_abort_signal.any.js b/third_party/blink/web_tests/wpt_internal/scheduler/post_task_with_abort_signal.any.js
new file mode 100644
index 0000000..af751b26
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/post_task_with_abort_signal.any.js
@@ -0,0 +1,17 @@
+// META: title=Scheduling API: postTask and AbortSignal
+// META: global=window
+'use strict';
+
+async_test(t => {
+  let result = "fail";
+  let ac = new AbortController;
+  scheduler.postTask(() => {}, { signal: ac.signal }).then(
+      () => { assert_unreached('This task should have been aborted'); },
+      () => { result = "pass"; });
+  ac.abort();
+
+  // The task should be aborted.
+  scheduler.postTask(t.step_func_done(() => {
+    assert_equals(result, "pass");
+  }));
+}, 'Test that scheduler.postTask() accepts an AbortSignal that is not also a TaskSignal');
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/post_task_with_abort_signal.html b/third_party/blink/web_tests/wpt_internal/scheduler/post_task_with_abort_signal.html
deleted file mode 100644
index f6d128c..0000000
--- a/third_party/blink/web_tests/wpt_internal/scheduler/post_task_with_abort_signal.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!doctype html>
-<title>Scheduling API: postTask and AbortSignal</title>
-<link rel="author" title="Scott Haseley" href="mailto:shaseley@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-'use strict';
-
-async_test(t => {
-  let result = "fail";
-  let ac = new AbortController;
-  scheduler.postTask(() => {}, { signal: ac.signal }).then(
-      () => { assert_unreached('This task should have been aborted'); },
-      () => { result = "pass"; });
-  ac.abort();
-
-  // The task should be aborted.
-  scheduler.postTask(t.step_func_done(() => {
-    assert_equals(result, "pass");
-  }));
-}, 'Test that scheduler.postTask() accepts an AbortSignal that is not also a TaskSignal');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/post_task_with_aborted_signal.any.js b/third_party/blink/web_tests/wpt_internal/scheduler/post_task_with_aborted_signal.any.js
new file mode 100644
index 0000000..d143825
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/post_task_with_aborted_signal.any.js
@@ -0,0 +1,10 @@
+// META: title=Scheduling API: postTask
+// META: global=window
+'use strict';
+
+promise_test(t => {
+  const controller = new TaskController();
+  const signal = controller.signal;
+  controller.abort();
+  return promise_rejects_dom(t, 'AbortError', scheduler.postTask(() => {}, {signal}));
+}, 'Posting a task with an aborted signal rejects with an AbortError');
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/post_task_with_aborted_signal.html b/third_party/blink/web_tests/wpt_internal/scheduler/post_task_with_aborted_signal.html
deleted file mode 100644
index a380fb7a..0000000
--- a/third_party/blink/web_tests/wpt_internal/scheduler/post_task_with_aborted_signal.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!doctype html>
-<title>Scheduling API: postTask</title>
-<link rel="author" title="Scott Haseley" href="mailto:shaseley@chromium.org">
-<link rel="help" href="https://wicg.github.io/scheduling-apis/">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-'use strict';
-
-promise_test(t => {
-  const controller = new TaskController();
-  const signal = controller.signal;
-  controller.abort();
-  return promise_rejects_dom(t, 'AbortError', scheduler.postTask(() => {}, {signal}));
-}, 'Posting a task with an aborted signal rejects with an AbortError');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/post_task_with_signal_and_priority.any.js b/third_party/blink/web_tests/wpt_internal/scheduler/post_task_with_signal_and_priority.any.js
new file mode 100644
index 0000000..a1ab144
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/post_task_with_signal_and_priority.any.js
@@ -0,0 +1,15 @@
+// META: title=Scheduling API: Global Task Queues
+// META: global=window
+'use strict';
+
+async_test(t => {
+  var result = "fail";
+  let tc = new TaskController("background");
+  scheduler.postTask(() => { result = "pass"; }, { priority : "user-blocking", signal: tc.signal });
+
+  // Since the above task should be run at user-blocking priority, it should execute
+  // before this user-visible priority task.
+  scheduler.postTask(t.step_func_done(() => {
+    assert_equals(result, "pass");
+  }));
+}, 'Test when scheduler.postTask() is passed both a signal and a priority');
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/post_task_with_signal_and_priority.html b/third_party/blink/web_tests/wpt_internal/scheduler/post_task_with_signal_and_priority.html
deleted file mode 100644
index 525d56f..0000000
--- a/third_party/blink/web_tests/wpt_internal/scheduler/post_task_with_signal_and_priority.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!doctype html>
-<title>Scheduling API: Global Task Queues</title>
-<link rel="author" title="Scott Haseley" href="mailto:shaseley@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-'use strict';
-
-async_test(t => {
-  var result = "fail";
-  let tc = new TaskController("background");
-  scheduler.postTask(() => { result = "pass"; }, { priority : "user-blocking", signal: tc.signal });
-
-  // Since the above task should be run at user-blocking priority, it should execute
-  // before this user-visible priority task.
-  scheduler.postTask(t.step_func_done(() => {
-    assert_equals(result, "pass");
-  }));
-}, 'Test when scheduler.postTask() is passed both a signal and a priority');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/post_task_without_signals.html b/third_party/blink/web_tests/wpt_internal/scheduler/post_task_without_signals.any.js
similarity index 68%
rename from third_party/blink/web_tests/wpt_internal/scheduler/post_task_without_signals.html
rename to third_party/blink/web_tests/wpt_internal/scheduler/post_task_without_signals.any.js
index 644e22b59..7e161301d 100644
--- a/third_party/blink/web_tests/wpt_internal/scheduler/post_task_without_signals.html
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/post_task_without_signals.any.js
@@ -1,11 +1,5 @@
-<!doctype html>
-<title>Scheduling API: Global Task Queues</title>
-<link rel="author" title="Scott Haseley" href="mailto:shaseley@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
+// META: title=Scheduling API: Global Task Queues
+// META: global=window
 'use strict';
 
 async_test(t => {
@@ -39,5 +33,3 @@
     nextTaskQueue();
   }));
 }, 'Basic functionality for scheduler.postTask() without using a task signal');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/task_controller_abort.html b/third_party/blink/web_tests/wpt_internal/scheduler/task_controller_abort.any.js
similarity index 73%
rename from third_party/blink/web_tests/wpt_internal/scheduler/task_controller_abort.html
rename to third_party/blink/web_tests/wpt_internal/scheduler/task_controller_abort.any.js
index 6c32dfd..04f4b89 100644
--- a/third_party/blink/web_tests/wpt_internal/scheduler/task_controller_abort.html
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/task_controller_abort.any.js
@@ -1,11 +1,5 @@
-<!doctype html>
-<title>Scheduling API: Task Cancellation</title>
-<link rel="author" title="Scott Haseley" href="mailto:shaseley@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
+// META: title=Scheduling API: Task Cancellation
+// META: global=window
 'use strict';
 
 async_test(t => {
@@ -43,5 +37,3 @@
   }), { signal: final_task_tc.signal });
 
 }, 'Test canceling a task');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/task_controller_abort_with_custom_priority.html b/third_party/blink/web_tests/wpt_internal/scheduler/task_controller_abort_with_custom_priority.any.js
similarity index 65%
rename from third_party/blink/web_tests/wpt_internal/scheduler/task_controller_abort_with_custom_priority.html
rename to third_party/blink/web_tests/wpt_internal/scheduler/task_controller_abort_with_custom_priority.any.js
index 6a26dba4..65264120 100644
--- a/third_party/blink/web_tests/wpt_internal/scheduler/task_controller_abort_with_custom_priority.html
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/task_controller_abort_with_custom_priority.any.js
@@ -1,11 +1,5 @@
-<!doctype html>
-<title>Scheduling API: TaskController.abort()</title>
-<link rel="author" title="Scott Haseley" href="mailto:shaseley@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
+// META: title=Scheduling API: TaskController.abort()
+// META: global=window
 'use strict';
 
 async_test(t => {
@@ -25,5 +19,3 @@
   }), { priority: "background" });
 
 }, 'Test that when scheduler.postTask() is given both a signal and priority. the signal abort is honored');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/task_controller_setPriority.html b/third_party/blink/web_tests/wpt_internal/scheduler/task_controller_setPriority.any.js
similarity index 64%
rename from third_party/blink/web_tests/wpt_internal/scheduler/task_controller_setPriority.html
rename to third_party/blink/web_tests/wpt_internal/scheduler/task_controller_setPriority.any.js
index 0610cfa6..702b0eac 100644
--- a/third_party/blink/web_tests/wpt_internal/scheduler/task_controller_setPriority.html
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/task_controller_setPriority.any.js
@@ -1,11 +1,5 @@
-<!doctype html>
-<title>Scheduling API: TaskController.setPriority()</title>
-<link rel="author" title="Scott Haseley" href="mailto:shaseley@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
+// META: title=Scheduling API: TaskController.setPriority()
+// META: global=window
 'use strict';
 
 async_test(t => {
@@ -28,5 +22,3 @@
   }), { priority: "background" });
 
 }, 'Test that TaskController.setPriority() changes the priority of all associated tasks');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/task_order.html b/third_party/blink/web_tests/wpt_internal/scheduler/task_order.any.js
similarity index 68%
rename from third_party/blink/web_tests/wpt_internal/scheduler/task_order.html
rename to third_party/blink/web_tests/wpt_internal/scheduler/task_order.any.js
index c7d7536..658996e 100644
--- a/third_party/blink/web_tests/wpt_internal/scheduler/task_order.html
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/task_order.any.js
@@ -1,12 +1,5 @@
-<!doctype html>
-<title>Scheduling API: Tasks Run in Priority Order</title>
-<link rel="author" title="Scott Haseley" href="mailto:shaseley@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-'use strict';
+// META: title=Scheduling API: Tasks Run in Priority Order
+// META: global=window
 
 async_test(t => {
   let result = '';
@@ -34,5 +27,3 @@
     assert_equals(result, 'UB1 UB2 UV1 UV2 B1 B2');
   }), { priority: 'background' });
 }, 'Test scheduler.postTask task run in priority order');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/task_priority_change_error_on_recursive_call.any.js b/third_party/blink/web_tests/wpt_internal/scheduler/task_priority_change_error_on_recursive_call.any.js
new file mode 100644
index 0000000..c07e107
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/task_priority_change_error_on_recursive_call.any.js
@@ -0,0 +1,12 @@
+// META: title=Scheduling API: Recursive TaskController.setPriority()
+// META: global=window
+'use strict';
+
+async_test(t => {
+  let tc = new TaskController("user-visible");
+  tc.signal.onprioritychange = t.step_func_done(() => {
+    assert_equals(tc.signal.priority, "background");
+    assert_throws_dom("NotAllowedError", () => { tc.setPriority("user-blocking"); });
+  });
+  tc.setPriority("background");
+}, 'Test that TaskController.setPriority() throws an error if called recursively');
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/task_priority_change_error_on_recursive_call.html b/third_party/blink/web_tests/wpt_internal/scheduler/task_priority_change_error_on_recursive_call.html
deleted file mode 100644
index a4772dcde..0000000
--- a/third_party/blink/web_tests/wpt_internal/scheduler/task_priority_change_error_on_recursive_call.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!doctype html>
-<title>Scheduling API: Recursive TaskController.setPriority()</title>
-<link rel="author" title="Scott Haseley" href="mailto:shaseley@chromium.org">
-<link rel="help" href="https://github.com/WICG/scheduling-APIs">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-'use strict';
-
-async_test(t => {
-  let tc = new TaskController("user-visible");
-  tc.signal.onprioritychange = t.step_func_done(() => {
-    assert_equals(tc.signal.priority, "background");
-    assert_throws_dom("NotAllowedError", () => { tc.setPriority("user-blocking"); });
-  });
-  tc.setPriority("background");
-}, 'Test that TaskController.setPriority() throws an error if called recursively');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/task_result_access_result_after_task_runs.any.js b/third_party/blink/web_tests/wpt_internal/scheduler/task_result_access_result_after_task_runs.any.js
new file mode 100644
index 0000000..fb26fa9a
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/task_result_access_result_after_task_runs.any.js
@@ -0,0 +1,18 @@
+// META: title=Scheduling API: Task.result Accessed After Task Runs
+// META: global=window
+'use strict';
+
+async_test(t => {
+  (function() {
+    let task_promise = scheduler.postTask(t.step_func(() => {
+      // This task will run after |task| finishes.
+      scheduler.postTask(t.step_func(() => {
+        task_promise.then(t.step_func_done((res) => {
+          assert_equals(res, 1234);
+        }));
+      }));
+      return 1234;
+    }));
+  })();
+
+}, 'Test task result is resolved properly when accessed after the task runs');
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/task_result_access_result_after_task_runs.html b/third_party/blink/web_tests/wpt_internal/scheduler/task_result_access_result_after_task_runs.html
deleted file mode 100644
index be94a4b7..0000000
--- a/third_party/blink/web_tests/wpt_internal/scheduler/task_result_access_result_after_task_runs.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!doctype html>
-<title>Scheduling API: Task.result Accessed After Task Runs</title>
-<link rel="author" title="Scott Haseley" href="mailto:shaseley@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-'use strict';
-
-async_test(t => {
-  (function() {
-    let task_promise = scheduler.postTask(t.step_func(() => {
-      // This task will run after |task| finishes.
-      scheduler.postTask(t.step_func(() => {
-        task_promise.then(t.step_func_done((res) => {
-          assert_equals(res, 1234);
-        }));
-      }));
-      return 1234;
-    }));
-  })();
-
-}, 'Test task result is resolved properly when accessed after the task runs');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/task_result_access_result_before_task_runs.any.js b/third_party/blink/web_tests/wpt_internal/scheduler/task_result_access_result_before_task_runs.any.js
new file mode 100644
index 0000000..4b5994b
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/task_result_access_result_before_task_runs.any.js
@@ -0,0 +1,11 @@
+// META: title=Scheduling API: Task.result Accessed Before Task Runs
+// META: global=window
+'use strict';
+
+async_test(t => {
+  (function() {
+    scheduler.postTask(() => 1234).then(t.step_func_done((res) => {
+      assert_equals(res, 1234);
+    }));
+  })();
+}, 'Test task result is resolved properly when accessed before the task runs');
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/task_result_access_result_before_task_runs.html b/third_party/blink/web_tests/wpt_internal/scheduler/task_result_access_result_before_task_runs.html
deleted file mode 100644
index f5a39eb..0000000
--- a/third_party/blink/web_tests/wpt_internal/scheduler/task_result_access_result_before_task_runs.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html>
-<title>Scheduling API: Task.result Accessed Before Task Runs</title>
-<link rel="author" title="Scott Haseley" href="mailto:shaseley@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-'use strict';
-
-async_test(t => {
-  (function() {
-    scheduler.postTask(() => 1234).then(t.step_func_done((res) => {
-      assert_equals(res, 1234);
-    }));
-  })();
-}, 'Test task result is resolved properly when accessed before the task runs');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/task_result_cancel_after_accessing_result.any.js b/third_party/blink/web_tests/wpt_internal/scheduler/task_result_cancel_after_accessing_result.any.js
new file mode 100644
index 0000000..ea19065
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/task_result_cancel_after_accessing_result.any.js
@@ -0,0 +1,17 @@
+// META: title=Scheduling API: Canceling Task Rejects Task.result (After Accessing Result)
+// META: global=window
+'use strict';
+
+async_test(t => {
+  (function() {
+    let tc = new TaskController();
+    let task_promise = scheduler.postTask(() => 1234, { signal: tc.signal });
+    task_promise.then(t.step_func((res) => {
+      assert_true(false, 'task promise should not be fulfilled when the task is canceled.');
+    }))
+    .catch(t.step_func_done((e) => {
+      assert_equals(e.name, 'AbortError');
+    }));
+    tc.abort();
+  })();
+}, 'Test task result is rejected properly when the task is canceled after accessing the result');
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/task_result_cancel_after_accessing_result.html b/third_party/blink/web_tests/wpt_internal/scheduler/task_result_cancel_after_accessing_result.html
deleted file mode 100644
index 1b1c3f4c..0000000
--- a/third_party/blink/web_tests/wpt_internal/scheduler/task_result_cancel_after_accessing_result.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!doctype html>
-<title>Scheduling API: Canceling Task Rejects Task.result (After Accessing Result)</title>
-<link rel="author" title="Scott Haseley" href="mailto:shaseley@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-'use strict';
-
-async_test(t => {
-  (function() {
-    let tc = new TaskController();
-    let task_promise = scheduler.postTask(() => 1234, { signal: tc.signal });
-    task_promise.then(t.step_func((res) => {
-      assert_true(false, 'task promise should not be fulfilled when the task is canceled.');
-    }))
-    .catch(t.step_func_done((e) => {
-      assert_equals(e.name, 'AbortError');
-    }));
-    tc.abort();
-  })();
-}, 'Test task result is rejected properly when the task is canceled after accessing the result');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/task_result_cancel_before_accessing_result.any.js b/third_party/blink/web_tests/wpt_internal/scheduler/task_result_cancel_before_accessing_result.any.js
new file mode 100644
index 0000000..1dc3f3a
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/task_result_cancel_before_accessing_result.any.js
@@ -0,0 +1,17 @@
+// META: title=Scheduling API: Canceling Task Rejects Task.result (Beforre Accessing Result)
+// META: global=window
+'use strict';
+
+async_test(t => {
+  (function() {
+    let tc = new TaskController();
+    let task_promise = scheduler.postTask(() => 1234, { signal: tc.signal });
+    tc.abort();
+    task_promise.then(t.step_func((res) => {
+      assert_true(false, 'task promise should not be fulfilled when the task is canceled.');
+    }))
+    .catch(t.step_func_done((e) => {
+      assert_equals(e.name, 'AbortError');
+    }));
+  })();
+}, 'Test task result is rejected properly when the task is canceled before accessing the result');
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/task_result_cancel_before_accessing_result.html b/third_party/blink/web_tests/wpt_internal/scheduler/task_result_cancel_before_accessing_result.html
deleted file mode 100644
index 952f823..0000000
--- a/third_party/blink/web_tests/wpt_internal/scheduler/task_result_cancel_before_accessing_result.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!doctype html>
-<title>Scheduling API: Canceling Task Rejects Task.result (Beforre Accessing Result)</title>
-<link rel="author" title="Scott Haseley" href="mailto:shaseley@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-'use strict';
-
-async_test(t => {
-  (function() {
-    let tc = new TaskController();
-    let task_promise = scheduler.postTask(() => 1234, { signal: tc.signal });
-    tc.abort();
-    task_promise.then(t.step_func((res) => {
-      assert_true(false, 'task promise should not be fulfilled when the task is canceled.');
-    }))
-    .catch(t.step_func_done((e) => {
-      assert_equals(e.name, 'AbortError');
-    }));
-  })();
-}, 'Test task result is rejected properly when the task is canceled before accessing the result');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/task_result_error.any.js b/third_party/blink/web_tests/wpt_internal/scheduler/task_result_error.any.js
new file mode 100644
index 0000000..c0d195f6
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/task_result_error.any.js
@@ -0,0 +1,16 @@
+// META: title=Scheduling API: Task.result When a Task Throws an Error
+// META: global=window
+'use strict';
+
+async_test(t => {
+  (function() {
+    let task_promise = scheduler.postTask(() => { throw Error('Failed'); });
+    task_promise.then(t.step_func((res) => {
+      assert_true(false, 'task promise should not be fulfilled when the task throws an error.');
+    }))
+    .catch(t.step_func_done((e) => {
+      assert_equals(e.name, 'Error');
+      assert_equals(e.message, 'Failed');
+    }));
+  })();
+}, 'Test task promise is rejected properly when the task throws an error');
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/task_result_error.html b/third_party/blink/web_tests/wpt_internal/scheduler/task_result_error.html
deleted file mode 100644
index dc24c2f8..0000000
--- a/third_party/blink/web_tests/wpt_internal/scheduler/task_result_error.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!doctype html>
-<title>Scheduling API: Task.result When a Task Throws an Error</title>
-<link rel="author" title="Scott Haseley" href="mailto:shaseley@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-'use strict';
-
-async_test(t => {
-  (function() {
-    let task_promise = scheduler.postTask(() => { throw Error('Failed'); });
-    task_promise.then(t.step_func((res) => {
-      assert_true(false, 'task promise should not be fulfilled when the task throws an error.');
-    }))
-    .catch(t.step_func_done((e) => {
-      assert_equals(e.name, 'Error');
-      assert_equals(e.message, 'Failed');
-    }));
-  })();
-}, 'Test task promise is rejected properly when the task throws an error');
-
-</script>
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/task_signal_onprioritychange.any.js b/third_party/blink/web_tests/wpt_internal/scheduler/task_signal_onprioritychange.any.js
new file mode 100644
index 0000000..0817eb39
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/scheduler/task_signal_onprioritychange.any.js
@@ -0,0 +1,14 @@
+// META: title=Scheduling API: TaskController.setPriority()
+// META: global=window
+'use strict';
+
+async_test(t => {
+  let tc = new TaskController("user-visible");
+  tc.signal.onprioritychange = t.step_func_done((event) => {
+    assert_equals(tc.signal.priority, "background");
+    assert_equals(event.type, "prioritychange");
+    assert_equals(event.target.priority, "background");
+    assert_equals(event.previousPriority, "user-visible");
+  });
+  tc.setPriority("background");
+}, 'Test that TaskController.setPriority() triggers an onprioritychange event on the signal');
diff --git a/third_party/blink/web_tests/wpt_internal/scheduler/task_signal_onprioritychange.html b/third_party/blink/web_tests/wpt_internal/scheduler/task_signal_onprioritychange.html
deleted file mode 100644
index 6b4c7ee..0000000
--- a/third_party/blink/web_tests/wpt_internal/scheduler/task_signal_onprioritychange.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!doctype html>
-<title>Scheduling API: TaskController.setPriority()</title>
-<link rel="author" title="Nate Chapin" href="mailto:japhet@chromium.org">
-<link rel="help" href="https://github.com/WICG/main-thread-scheduling">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-'use strict';
-
-async_test(t => {
-  let tc = new TaskController("user-visible");
-  tc.signal.onprioritychange = t.step_func_done((event) => {
-    assert_equals(tc.signal.priority, "background");
-    assert_equals(event.type, "prioritychange");
-    assert_equals(event.target.priority, "background");
-    assert_equals(event.previousPriority, "user-visible");
-  });
-  tc.setPriority("background");
-}, 'Test that TaskController.setPriority() triggers an onprioritychange event on the signal');
-
-</script>
diff --git a/third_party/googletest/custom/gtest/internal/custom/chrome_custom_temp_dir.cc b/third_party/googletest/custom/gtest/internal/custom/chrome_custom_temp_dir.cc
index 73ef2fb..52c4bd09 100644
--- a/third_party/googletest/custom/gtest/internal/custom/chrome_custom_temp_dir.cc
+++ b/third_party/googletest/custom/gtest/internal/custom/chrome_custom_temp_dir.cc
@@ -74,9 +74,31 @@
     return "/sdcard/";
   // Generic POSIX fallback.
   return "/tmp/";
+#elif GTEST_OS_IOS
+  char name_template[PATH_MAX + 1];
+
+  // Documented alternative to NSTemporaryDirectory() (for obtaining creating
+  // a temporary directory) at
+  // https://developer.apple.com/library/archive/documentation/Security/Conceptual/SecureCodingGuide/Articles/RaceConditions.html#//apple_ref/doc/uid/TP40002585-SW10
+  //
+  // _CS_DARWIN_USER_TEMP_DIR (as well as _CS_DARWIN_USER_CACHE_DIR) is not
+  // documented in the confstr() man page at
+  // https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/confstr.3.html#//apple_ref/doc/man/3/confstr
+  // but are still available, according to the WebKit patches at
+  // https://trac.webkit.org/changeset/262004/webkit
+  // https://trac.webkit.org/changeset/263705/webkit
+  //
+  // The confstr() implementation falls back to getenv("TMPDIR"). See
+  // https://opensource.apple.com/source/Libc/Libc-1439.100.3/gen/confstr.c.auto.html
+  ::confstr(_CS_DARWIN_USER_TEMP_DIR, name_template, sizeof(name_template));
+
+  temp_dir = name_template;
+  if (temp_dir.back() != GTEST_PATH_SEP_[0])
+    temp_dir.push_back(GTEST_PATH_SEP_[0]);
+  return temp_dir;
 #else
   return "/tmp/";
-#endif  // GTEST_OS_WINDOWS_MOBILE
+#endif  // GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS
 }
 
 }  // namespace testing
diff --git a/third_party/webxr_test_pages/webxr-samples/tests/permission-request.html b/third_party/webxr_test_pages/webxr-samples/tests/permission-request.html
index 15e750ce..d057156 100644
--- a/third_party/webxr_test_pages/webxr-samples/tests/permission-request.html
+++ b/third_party/webxr_test_pages/webxr-samples/tests/permission-request.html
@@ -260,10 +260,10 @@
             icon: '../test-media/third-party/screen-share-button.png',
             callback: (success, fail) => {
               let promise = null;
-              if (navigator.mediaDevices.getDisplayMedia == null) {
-                promise = navigator.mediaDevices.getCurrentBrowsingContextMedia({video:true});
-              } else {
+              if (navigator.mediaDevices.getCurrentBrowsingContextMedia == null) {
                 promise = navigator.mediaDevices.getDisplayMedia();
+              } else {
+                promise = navigator.mediaDevices.getCurrentBrowsingContextMedia({video:true});
               }
 
               promise.then(device => {
diff --git a/tools/gritsettings/startup_resources_mac.txt b/tools/gritsettings/startup_resources_mac.txt
index bb505acf..8d2c20d1 100644
--- a/tools/gritsettings/startup_resources_mac.txt
+++ b/tools/gritsettings/startup_resources_mac.txt
@@ -1,4 +1,3 @@
-IDS_PROFILES_OPTIONS_GROUP_NAME 101
 IDS_APP_MENU_PRODUCT_NAME 102
 IDS_PRODUCT_NAME 103
 IDS_ABOUT_MAC 104
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl
index 3b5a348d..e14cd76 100644
--- a/tools/mb/mb_config.pyl
+++ b/tools/mb/mb_config.pyl
@@ -573,6 +573,7 @@
 
     'chromium.perf.calibration': {
       'linux-perf-calibration': 'official_goma_linux_perf',
+      'android-pixel2-perf-calibration': 'official_goma_minimal_symbols_android_arm64',
     },
 
     'chromium.perf.fyi': {
@@ -995,6 +996,7 @@
       'gpu-try-linux-nvidia-rel': 'gpu_tests_release_trybot',
       'layout_test_leak_detection': 'release_trybot',
       'leak_detection_linux': 'release_trybot',
+      'linux-1mbu-compile-fyi-rel': 'release_trybot',
       'linux-annotator-rel': 'release_trybot',
       'linux-autofill-assistant': 'autofill_assistant_release_trybot',
       'linux-blink-heap-concurrent-marking-tsan-rel': 'release_trybot_tsan',
diff --git a/tools/mb/mb_config_expectations/chromium.perf.calibration.json b/tools/mb/mb_config_expectations/chromium.perf.calibration.json
index 8254354..be07a91 100644
--- a/tools/mb/mb_config_expectations/chromium.perf.calibration.json
+++ b/tools/mb/mb_config_expectations/chromium.perf.calibration.json
@@ -1,4 +1,19 @@
 {
+  "android-pixel2-perf-calibration": {
+    "gn_args": {
+      "chrome_pgo_phase": 0,
+      "clang_use_default_sample_profile": false,
+      "ffmpeg_branding": "Chrome",
+      "is_chrome_branded": true,
+      "is_official_build": true,
+      "proprietary_codecs": true,
+      "strip_absolute_paths_from_debug_symbols": true,
+      "symbol_level": 1,
+      "target_cpu": "arm64",
+      "target_os": "android",
+      "use_goma": true
+    }
+  },
   "linux-perf-calibration": {
     "gn_args": {
       "chrome_pgo_phase": 0,
diff --git a/tools/mb/mb_config_expectations/tryserver.chromium.linux.json b/tools/mb/mb_config_expectations/tryserver.chromium.linux.json
index f60cf63a..622fd83 100644
--- a/tools/mb/mb_config_expectations/tryserver.chromium.linux.json
+++ b/tools/mb/mb_config_expectations/tryserver.chromium.linux.json
@@ -387,6 +387,15 @@
       "use_goma": true
     }
   },
+  "linux-1mbu-compile-fyi-rel": {
+    "gn_args": {
+      "dcheck_always_on": true,
+      "is_component_build": false,
+      "is_debug": false,
+      "symbol_level": 1,
+      "use_goma": true
+    }
+  },
   "linux-annotator-rel": {
     "gn_args": {
       "dcheck_always_on": true,
diff --git a/tools/mb/rts_banned_suites.json b/tools/mb/rts_banned_suites.json
index 5317924..48b0ff6 100644
--- a/tools/mb/rts_banned_suites.json
+++ b/tools/mb/rts_banned_suites.json
@@ -9,7 +9,8 @@
     "grit_python_unittests",
     "telemetry_perf_unittests",
     "maps_tests",
-    "telemetry_gpu_unittests"
+    "telemetry_gpu_unittests",
+    "telemetry_gpu_integration_test"
   ],
   "fuchsia_x64_rts": [
     "blink_web_tests"
diff --git a/tools/metrics/actions/actions.xml b/tools/metrics/actions/actions.xml
index 38e2b49..982047c 100644
--- a/tools/metrics/actions/actions.xml
+++ b/tools/metrics/actions/actions.xml
@@ -28376,6 +28376,8 @@
   <suffix name="ReadingListEntryPoint"
       label="For ReadingListEntryPoint feature."/>
   <suffix name="ReopenTab" label="For ReopenTab feature."/>
+  <suffix name="SharedHighlightingBuilder"
+      label="For SharedHighlightingBuilder feature."/>
   <suffix name="TabGroupsDragAndDrop" label="For drop-to-merge in tab group."/>
   <suffix name="TabGroupsQuicklyComparePages"
       label="For long press links to create tab groups."/>
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 8ce1347..599c4073 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -9699,6 +9699,19 @@
   <int value="9" label="INTERACTION_COMPLETE"/>
 </enum>
 
+<enum name="BreakoutBoxUsage">
+  <int value="0" label="ReadableVideo"/>
+  <int value="1" label="ReadableVideoWorker"/>
+  <int value="2" label="ReadableAudio"/>
+  <int value="3" label="ReadableAudioWorker"/>
+  <int value="4" label="WritableVideo"/>
+  <int value="5" label="WritableVideoWorker"/>
+  <int value="6" label="WritableAudio"/>
+  <int value="7" label="WritableAudioWorker"/>
+  <int value="8" label="ReadableControlVideo"/>
+  <int value="9" label="WritableControlVideo"/>
+</enum>
+
 <enum name="BrokenAlternateProtocolLocation">
   <int value="0" label="HTTP_STREAM_FACTORY_JOB"/>
   <int value="1" label="QUIC_STREAM_FACTORY"/>
@@ -82311,6 +82324,22 @@
   <int value="1" label="Android Wallpapers App"/>
 </enum>
 
+<enum name="WallpaperCollection">
+  <int value="-1750392449" label="Landscapes"/>
+  <int value="-1479919333" label="Made by Canvas"/>
+  <int value="-1094276707" label="Element"/>
+  <int value="-917389828" label="Collage"/>
+  <int value="-622998436" label="Imaginary"/>
+  <int value="711032077" label="Cityscapes"/>
+  <int value="1129315377" label="Composition"/>
+  <int value="1659755048" label="Illustrations"/>
+  <int value="1668389814" label="Art"/>
+  <int value="1804492839" label="Colors"/>
+  <int value="1894705443" label="Leisure"/>
+  <int value="2084467495" label="Dessert time"/>
+  <int value="2094027636" label="Solid colors"/>
+</enum>
+
 <enum name="WallpaperColorExtractionResult">
   <int value="0" label="(Dark, Vibrant): failure"/>
   <int value="1" label="(Dark, Vibrant): success"/>
diff --git a/tools/metrics/histograms/histograms_xml/ash/histograms.xml b/tools/metrics/histograms/histograms_xml/ash/histograms.xml
index af6336c..b89a7b1 100644
--- a/tools/metrics/histograms/histograms_xml/ash/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/ash/histograms.xml
@@ -2616,6 +2616,17 @@
   </summary>
 </histogram>
 
+<histogram name="Ash.Wallpaper.Collection" enum="WallpaperCollection"
+    expires_after="2022-05-17">
+  <owner>jasontt@chromium.org</owner>
+  <owner>assistive-eng@google.com</owner>
+  <summary>
+    The wallpaper collection of the selected online wallpaper. Recorded each
+    time the online wallpaper image is selected, but not when wallpaper is
+    automatically refreshed.
+  </summary>
+</histogram>
+
 <histogram name="Ash.Wallpaper.ColorExtractionResult2"
     enum="WallpaperColorExtractionResult" expires_after="M92">
   <owner>newcomer@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml b/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml
index d27c80c..c5e2d43b 100644
--- a/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml
+++ b/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml
@@ -8261,6 +8261,9 @@
              tab to reading list."/>
   <suffix name="IPH_ReopenTab"
       label="In product help for reopening closed tabs."/>
+  <suffix name="IPH_SharedHighlightingBuilder"
+      label="The in product help message to notify the user that the share
+             action can preemptively share a link-to-text."/>
   <suffix name="IPH_TabGroupsDragAndDrop"
       label="In product help for educating user to drop one tab on another
              tab to create group."/>
@@ -14686,15 +14689,6 @@
   <affected-histogram name="Power.CpuTimeSecondsPerCoreTypeAndFrequency"/>
 </histogram_suffixes>
 
-<histogram_suffixes name="Power_CpuTimeProcessTypes" separator=".">
-  <suffix name="Browser" label=""/>
-  <suffix name="GPU" label=""/>
-  <suffix name="Other" label=""/>
-  <suffix name="Renderer" label=""/>
-  <affected-histogram name="Power.CpuTimeSecondsPerPowerMode"/>
-  <affected-histogram name="Power.CpuTimeSecondsPerThreadType"/>
-</histogram_suffixes>
-
 <histogram_suffixes name="PowerConsumptionSources" separator=".">
   <suffix name="CPU" label="Instantaneous power used by the CPU."/>
   <suffix name="GPU0"
diff --git a/tools/metrics/histograms/histograms_xml/local/histograms.xml b/tools/metrics/histograms/histograms_xml/local/histograms.xml
index 854f5c4..46bf875 100644
--- a/tools/metrics/histograms/histograms_xml/local/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/local/histograms.xml
@@ -362,6 +362,9 @@
 
 <histogram name="LocalStorageContext.MigrationFixUpNeeded" enum="Boolean"
     expires_after="M87">
+  <obsolete>
+    Removed May 2021 as part of legacy migration code cleanup.
+  </obsolete>
   <owner>mek@chromium.org</owner>
   <summary>
     Whether or not any fixes needed to be made to localstorage data, as a result
diff --git a/tools/metrics/histograms/histograms_xml/media/histograms.xml b/tools/metrics/histograms/histograms_xml/media/histograms.xml
index 128b2e9..dd85640 100644
--- a/tools/metrics/histograms/histograms_xml/media/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/media/histograms.xml
@@ -1291,6 +1291,17 @@
   </summary>
 </histogram>
 
+<histogram name="Media.BreakoutBox.Usage" enum="BreakoutBoxUsage"
+    expires_after="2022-05-21">
+  <owner>guidou@chromium.org</owner>
+  <owner>hta@chromium.org</owner>
+  <owner>tguilbert@chromium.org</owner>
+  <summary>
+    Usage of various BreakoutBox features. Recorded when a stream is created or
+    transferred in MediaStreamTrackProcessor or MediaStreamTrackGenerator.
+  </summary>
+</histogram>
+
 <histogram name="Media.Capabilities.DecodingInfo.Time.Video" units="ms"
     expires_after="2021-10-04">
   <owner>chcunningham@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/power/histograms.xml b/tools/metrics/histograms/histograms_xml/power/histograms.xml
index e144507..4dd4514 100644
--- a/tools/metrics/histograms/histograms_xml/power/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/power/histograms.xml
@@ -291,22 +291,28 @@
   </summary>
 </histogram>
 
-<histogram name="Power.CpuTimeSecondsPerPowerMode" enum="PowerMode"
-    expires_after="2021-12-31">
+<histogram name="Power.CpuTimeSecondsPerPowerMode.{ProcessType}"
+    enum="PowerMode" expires_after="2021-12-31">
   <owner>eseckler@chromium.org</owner>
   <owner>skyostil@chromium.org</owner>
   <summary>
-    Total seconds of CPU time consumed by Chrome, split by process type and
-    power mode. Currently only implemented on Android. For every second of CPU
-    time consumed by a process of the chosen type, while a specific PowerMode
-    was active, a sample is recorded into the bucket for the PowerMode. Samples
-    are recorded periodically depending on the task load of each process's main
-    thread. The histogram thus shows the total sum of CPU time seconds spent per
-    PowerMode within all processes of the chosen type across all users.
+    Total seconds of CPU time consumed by Chrome's {ProcessType} process, split
+    by power mode. Currently only implemented on Android. For every second of
+    CPU time consumed by the process, while a specific PowerMode was active, a
+    sample is recorded into the bucket for the PowerMode. Samples are recorded
+    periodically depending on the task load of each process's main thread. The
+    histogram thus shows the total sum of CPU time seconds spent per PowerMode
+    within all {ProcessType} processes across all users.
 
     For a histogram of daily per-user values, select &quot;Per-Client
     Aggregation Mode&quot;.
   </summary>
+  <token key="ProcessType">
+    <variant name="Browser" summary="browser"/>
+    <variant name="GPU" summary="GPU"/>
+    <variant name="Other" summary="other type of"/>
+    <variant name="Renderer" summary="renderer"/>
+  </token>
 </histogram>
 
 <histogram name="Power.CpuTimeSecondsPerProcessType" enum="ProcessType2"
@@ -349,24 +355,30 @@
   </token>
 </histogram>
 
-<histogram name="Power.CpuTimeSecondsPerThreadType"
+<histogram name="Power.CpuTimeSecondsPerThreadType.{ProcessType}"
     enum="CpuTimeMetricsThreadType" expires_after="2021-10-10">
   <owner>eseckler@chromium.org</owner>
   <owner>skyostil@chromium.org</owner>
   <summary>
-    Total seconds of CPU time consumed by Chrome, split by process type and
-    thread type. Currently only implemented on Android. For every second of CPU
-    time consumed by one thread, a sample is recorded into the bucket for the
-    thread's type. CPU time consumed by a process that cannot be attributed to a
-    specific thread is recorded into the &quot;UnattributedThread&quot; bucket.
-    Samples are recorded periodically depending on the task load of each
+    Total seconds of CPU time consumed by Chrome's {ProcessType} process, split
+    by thread type. Currently only implemented on Android. For every second of
+    CPU time consumed by one thread, a sample is recorded into the bucket for
+    the thread's type. CPU time consumed by a process that cannot be attributed
+    to a specific thread is recorded into the &quot;UnattributedThread&quot;
+    bucket. Samples are recorded periodically depending on the task load of each
     process's main thread. The histogram thus shows the total sum of CPU time
-    seconds spent per thread type (within processes of a specific type) across
-    all users.
+    seconds spent per thread type (within {ProcessType} processes) across all
+    users.
 
     For a histogram of daily per-user values, select &quot;Per-Client
     Aggregation Mode&quot;.
   </summary>
+  <token key="ProcessType">
+    <variant name="Browser" summary="browser"/>
+    <variant name="GPU" summary="GPU"/>
+    <variant name="Other" summary="other type of"/>
+    <variant name="Renderer" summary="renderer"/>
+  </token>
 </histogram>
 
 <histogram name="Power.DarkResumeWakeDurationMs" units="ms" expires_after="M85">
@@ -1021,6 +1033,19 @@
   </summary>
 </histogram>
 
+<histogram name="Power.PowerScheduler.ThrottlingDurationPerCpuAffinityMode"
+    enum="CpuAffinityMode" expires_after="2021-10-29">
+  <owner>eseckler@chromium.org</owner>
+  <owner>skyostil@chromium.org</owner>
+  <summary>
+    Duration in milliseconds during which CPU throttling was active, split by
+    the CPU affinity for that duration. Only recorded when a CPU throttling
+    policy is active (e.g. throttle while idle). A sample is recorded every time
+    throttling stops (e.g. when exiting idle state), on the order of once per
+    second.
+  </summary>
+</histogram>
+
 <histogram name="Power.PowerSupplyMaxPower" units="W"
     expires_after="2021-10-31">
   <owner>bleung@chromium.org</owner>
diff --git a/tools/perf/core/bot_platforms.py b/tools/perf/core/bot_platforms.py
index c3257a7c..3730b15 100644
--- a/tools/perf/core/bot_platforms.py
+++ b/tools/perf/core/bot_platforms.py
@@ -669,6 +669,7 @@
 FYI_PLATFORMS = {
     p for p in ALL_PLATFORMS if p.is_fyi
 }
+CALIBRATION_PLATFORMS = {p for p in ALL_PLATFORMS if p.is_calibration}
 OFFICIAL_PLATFORMS = {p for p in ALL_PLATFORMS if p.is_official}
 ALL_PLATFORM_NAMES = {
     p.name for p in ALL_PLATFORMS
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json
index 7a4d33e..144898a8 100644
--- a/tools/perf/core/perfetto_binary_roller/binary_deps.json
+++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -9,8 +9,8 @@
             "remote_path": "perfetto_binaries/trace_processor_shell/mac/09ac375b1cd018988ad890c78b44f6731bf301dc/trace_processor_shell"
         },
         "linux": {
-            "hash": "9076c8b15696207c77b63956250bee3969d86d35",
-            "remote_path": "perfetto_binaries/trace_processor_shell/linux/1cbe5e703e4de134fd35b97b445c4008f6316fea/trace_processor_shell"
+            "hash": "e05c613f05fbfeefb3d15bb7ae4f545d50eb6f77",
+            "remote_path": "perfetto_binaries/trace_processor_shell/linux/78af063a636c83fbaafa05a1af2b6a41dc6bc40e/trace_processor_shell"
         }
     },
     "power_profile.sql": {
diff --git a/tools/perf/cross_device_test_config.py b/tools/perf/cross_device_test_config.py
index b6148552..dcef114 100644
--- a/tools/perf/cross_device_test_config.py
+++ b/tools/perf/cross_device_test_config.py
@@ -28,8 +28,6 @@
             'css_transitions_triggered_style_element': 4,
             'canvas_animation_no_clear': 4
         },
-        'system_health.common_mobile': 3,
-        'system_health.memory_mobile': 3,
     },
     'android-pixel2-perf': {
         'system_health.common_mobile': 3,
diff --git a/tools/perf/process_perf_results.py b/tools/perf/process_perf_results.py
index e0685e3..9243851 100755
--- a/tools/perf/process_perf_results.py
+++ b/tools/perf/process_perf_results.py
@@ -25,8 +25,11 @@
 import cross_device_test_config
 
 from core import path_util
+path_util.AddTelemetryToPath()
+
 from core import upload_results_to_perf_dashboard
 from core import results_merger
+from core import bot_platforms
 
 path_util.AddAndroidPylibToPath()
 
@@ -362,6 +365,10 @@
     # we are deprecating perf-id crbug.com/817823
     configuration_name = build_properties_map['buildername']
 
+  _update_perf_results_for_calibration(benchmarks_shard_map_file,
+                                       benchmark_enabled_map,
+                                       benchmark_directory_map,
+                                       configuration_name)
   if not smoke_test_mode and handle_perf:
     try:
       return_code, benchmark_upload_result_map = _handle_perf_results(
@@ -500,6 +507,91 @@
     return 4
 
 
+def _load_shard_id_from_test_results(directory):
+  shard_id = None
+  test_json_path = os.path.join(directory, 'test_results.json')
+  try:
+    with open(test_json_path) as f:
+      test_json = json.load(f)
+      all_results = test_json['tests']
+      for _, benchmark_results in all_results.items():
+        for _, measurement_result in benchmark_results.items():
+          shard_id = measurement_result['shard']
+          break
+  except IOError as e:
+    logging.error('Failed to open test_results.json from %s: %s',
+                  test_json_path, e)
+  except KeyError as e:
+    logging.error('Failed to locate results in test_results.json: %s', e)
+  return shard_id
+
+
+def _find_device_id_by_shard_id(benchmarks_shard_map_file, shard_id):
+  try:
+    with open(benchmarks_shard_map_file) as f:
+      shard_map_json = json.load(f)
+      device_id = shard_map_json['extra_infos']['bot #%s' % shard_id]
+  except KeyError as e:
+    logging.error('Failed to locate device name in shard map: %s', e)
+  return device_id
+
+
+def _update_perf_json_with_summary_on_device_id(directory, device_id):
+  perf_json_path = os.path.join(directory, 'perf_results.json')
+  try:
+    with open(perf_json_path, 'r') as f:
+      perf_json = json.load(f)
+  except IOError as e:
+    logging.error('Failed to open perf_results.json from %s: %s',
+                  perf_json_path, e)
+  summary_key_guid = str(uuid.uuid4())
+  summary_key_generic_set = {
+      'value': ['device_id'],
+      'guid': summary_key_guid,
+      'type': 'GenericSet'
+  }
+  perf_json.insert(0, summary_key_generic_set)
+  stories_guids = set()
+  for entry in perf_json:
+    if 'diagnostics' in entry:
+      entry['diagnostics']['summaryKeys'] = summary_key_guid
+      stories_guids.add(entry['diagnostics']['stories'])
+  for entry in perf_json:
+    if 'guid' in entry and entry['guid'] in stories_guids:
+      entry['values'].append(device_id)
+  try:
+    with open(perf_json_path, 'w') as f:
+      json.dump(perf_json, f)
+  except IOError as e:
+    logging.error('Failed to writing perf_results.json to %s: %s',
+                  perf_json_path, e)
+
+
+def _should_add_device_id_in_perf_result(builder_name):
+  # We should always add device id in calibration builders.
+  # For testing purpose, adding fyi as well for faster turnaround, because
+  # calibration builders run every 24 hours.
+  return (builder_name in bot_platforms.CALIBRATION_PLATFORMS) or (
+      builder_name == 'android-pixel2-perf-fyi')
+
+
+def _update_perf_results_for_calibration(benchmarks_shard_map_file,
+                                         benchmark_enabled_map,
+                                         benchmark_directory_map,
+                                         configuration_name):
+  if not _should_add_device_id_in_perf_result(configuration_name):
+    return
+  logging.info('Updating perf results for %s.', configuration_name)
+  for benchmark_name, directories in benchmark_directory_map.items():
+    if not benchmark_enabled_map.get(benchmark_name, False):
+      continue
+    for directory in directories:
+      shard_id = _load_shard_id_from_test_results(directory)
+      device_id = _find_device_id_by_shard_id(benchmarks_shard_map_file,
+                                              shard_id)
+      _update_perf_json_with_summary_on_device_id(directory, device_id)
+
+
 def _handle_perf_results(
     benchmark_enabled_map, benchmark_directory_map, configuration_name,
     build_properties, extra_links, output_results_dir):
diff --git a/ui/accessibility/ax_node.cc b/ui/accessibility/ax_node.cc
index e6cf4b3..a4b8306 100644
--- a/ui/accessibility/ax_node.cc
+++ b/ui/accessibility/ax_node.cc
@@ -1536,10 +1536,15 @@
     // contents. See https://crbug.com/689204.
     // So we decided to not enforce the leafiness of buttons and expose all
     // children.
-    // Images are not leaves because the same role is used for image maps,
-    // which can have link and/or text children.
     case ax::mojom::Role::kButton:
       return false;
+    case ax::mojom::Role::kImage: {
+      // Images are not leaves when they are image maps. Therefore, do not
+      // truncate descendants except in the case where ARIA role=img.
+      std::string role =
+          data().GetStringAttribute(ax::mojom::StringAttribute::kRole);
+      return role == "img" || role == "image";
+    }
     case ax::mojom::Role::kDocCover:
     case ax::mojom::Role::kGraphicsSymbol:
     case ax::mojom::Role::kMeter:
diff --git a/ui/aura/native_window_occlusion_tracker_win.cc b/ui/aura/native_window_occlusion_tracker_win.cc
index 7146e55..974ffd8 100644
--- a/ui/aura/native_window_occlusion_tracker_win.cc
+++ b/ui/aura/native_window_occlusion_tracker_win.cc
@@ -180,9 +180,12 @@
   // Filter out "tool windows", which are floating windows that do not appear on
   // the taskbar or ALT-TAB. Floating windows can have larger window rectangles
   // than what is visible to the user, so by filtering them out we will avoid
-  // incorrectly marking native windows as occluded.
-  if (ex_styles & WS_EX_TOOLWINDOW)
-    return false;
+  // incorrectly marking native windows as occluded. We do not filter out the
+  // Windows Taskbar.
+  if (ex_styles & WS_EX_TOOLWINDOW) {
+    if (gfx::GetClassName(hwnd) != L"Shell_TrayWnd")
+      return false;
+  }
 
   // Filter out layered windows that are not opaque or that set a transparency
   // colorkey.
@@ -230,15 +233,36 @@
     return false;
 
   // Ignore popup windows since they're transient unless it is a Chrome Widget
-  // Window.
+  // Window or the Windows Taskbar
   if (::GetWindowLong(hwnd, GWL_STYLE) & WS_POPUP) {
-    if (!base::StartsWith(gfx::GetClassName(hwnd), L"Chrome_WidgetWin_")) {
+    std::wstring hwnd_class_name = gfx::GetClassName(hwnd);
+    if (!base::StartsWith(hwnd_class_name, L"Chrome_WidgetWin_") &&
+        hwnd_class_name != L"Shell_TrayWnd") {
       return false;
     }
   }
 
   *window_rect = gfx::Rect(win_rect);
 
+  WINDOWPLACEMENT window_placement = {0};
+  window_placement.length = sizeof(WINDOWPLACEMENT);
+  ::GetWindowPlacement(hwnd, &window_placement);
+  if (window_placement.showCmd == SW_MAXIMIZE) {
+    // If the window is maximized the window border extends beyond the visible
+    // region of the screen.  Adjust the maximized window rect to fit the
+    // screen dimensions to ensure that fullscreen windows, which do not extend
+    // beyond the screen boundaries since they typically have no borders, will
+    // occlude maximized windows underneath them.
+    HMONITOR hmon = MonitorFromWindow(hwnd, MONITOR_DEFAULTTONEAREST);
+    if (hmon) {
+      MONITORINFO mi;
+      mi.cbSize = sizeof(mi);
+      if (GetMonitorInfo(hmon, &mi)) {
+        (*window_rect).AdjustToFit(gfx::Rect(mi.rcWork));
+      }
+    }
+  }
+
   return true;
 }
 
@@ -695,12 +719,14 @@
     return;
 
   // We generally ignore events for popup windows, except for when the taskbar
-  // is hidden or when the popup is a Chrome Widget, in which case we
-  // recalculate occlusion.
+  // is hidden or when the popup is a Chrome Widget or Windows Taskbar, in
+  // which case we recalculate occlusion.
   bool calculate_occlusion = true;
   if (::GetWindowLong(hwnd, GWL_STYLE) & WS_POPUP) {
+    std::wstring hwnd_class_name = gfx::GetClassName(hwnd);
     calculate_occlusion =
-        base::StartsWith(gfx::GetClassName(hwnd), L"Chrome_WidgetWin_");
+        base::StartsWith(hwnd_class_name, L"Chrome_WidgetWin_") ||
+        hwnd_class_name == L"Shell_TrayWnd";
   }
 
   // Detect if either the alt tab view or the task list thumbnail is being
diff --git a/ui/aura/native_window_occlusion_tracker_win_interactive_test.cc b/ui/aura/native_window_occlusion_tracker_win_interactive_test.cc
index f86003a..c25df9d 100644
--- a/ui/aura/native_window_occlusion_tracker_win_interactive_test.cc
+++ b/ui/aura/native_window_occlusion_tracker_win_interactive_test.cc
@@ -161,7 +161,7 @@
     return hwnd;
   }
 
-  void CreateTrackedAuraWindowWithBounds(MockWindowTreeHostObserver* observer,
+  HWND CreateTrackedAuraWindowWithBounds(MockWindowTreeHostObserver* observer,
                                          gfx::Rect bounds) {
     host()->Show();
     host()->SetBoundsInPixels(bounds);
@@ -171,6 +171,8 @@
     window->SetBounds(bounds);
 
     Env::GetInstance()->GetWindowOcclusionTracker()->Track(window);
+
+    return window->GetHost()->GetAcceleratedWidget();
   }
 
   int GetNumVisibleRootWindows() {
@@ -178,6 +180,24 @@
         ->num_visible_root_windows_;
   }
 
+  void MakeFullscreen(HWND hwnd) {
+    DWORD style = GetWindowLong(hwnd, GWL_STYLE);
+    DWORD ex_style = GetWindowLong(hwnd, GWL_STYLE);
+    SetWindowLong(hwnd, GWL_STYLE, style & ~(WS_CAPTION | WS_THICKFRAME));
+    SetWindowLong(hwnd, GWL_EXSTYLE,
+                  ex_style & ~(WS_EX_DLGMODALFRAME | WS_EX_WINDOWEDGE |
+                               WS_EX_CLIENTEDGE | WS_EX_STATICEDGE));
+
+    MONITORINFO monitor_info;
+    monitor_info.cbSize = sizeof(monitor_info);
+    GetMonitorInfo(MonitorFromWindow(hwnd, MONITOR_DEFAULTTONEAREST),
+                   &monitor_info);
+    gfx::Rect window_rect(monitor_info.rcMonitor);
+    SetWindowPos(hwnd, nullptr, window_rect.x(), window_rect.y(),
+                 window_rect.width(), window_rect.height(),
+                 SWP_FRAMECHANGED | SWP_ASYNCWINDOWPOS);
+  }
+
  private:
   base::test::ScopedFeatureList scoped_feature_list_;
   std::unique_ptr<TestNativeWindow> native_win_;
@@ -432,4 +452,29 @@
   host()->RemoveObserver(&observer);
 }
 
+// Test that a maximized aura window that is covered by a fullscreen window is
+// marked as occluded.
+TEST_F(NativeWindowOcclusionTrackerTest, MaximizedOccludedByFullscreenWindow) {
+  // Create an aura window that is miximized.
+  base::RunLoop run_loop1;
+  MockWindowTreeHostObserver observer(run_loop1.QuitClosure());
+  HWND hwnd_aura_window_maximized =
+      CreateTrackedAuraWindowWithBounds(&observer, gfx::Rect(0, 0, 100, 100));
+  ShowWindow(hwnd_aura_window_maximized, SW_SHOWMAXIMIZED);
+  observer.set_expectation(Window::OcclusionState::VISIBLE);
+  run_loop1.Run();
+  EXPECT_FALSE(observer.is_expecting_call());
+
+  // Create a fullscreen native window that occludes the aura window.
+  base::RunLoop run_loop2;
+  observer.set_quit_closure(run_loop2.QuitClosure());
+  observer.set_expectation(Window::OcclusionState::OCCLUDED);
+  HWND hwnd_native_window =
+      CreateNativeWindowWithBounds(gfx::Rect(0, 0, 100, 100));
+  MakeFullscreen(hwnd_native_window);
+  run_loop2.Run();
+  EXPECT_FALSE(observer.is_expecting_call());
+  host()->RemoveObserver(&observer);
+}
+
 }  // namespace aura
diff --git a/ui/aura/scoped_window_capture_request.cc b/ui/aura/scoped_window_capture_request.cc
index 0d7c3f2..5b903f8a 100644
--- a/ui/aura/scoped_window_capture_request.cc
+++ b/ui/aura/scoped_window_capture_request.cc
@@ -10,33 +10,66 @@
 
 ScopedWindowCaptureRequest::ScopedWindowCaptureRequest(
     ScopedWindowCaptureRequest&& other)
-    : window_(other.window_) {
-  other.window_ = nullptr;
+    // Do not decrement requests on |other| nor increment them on |this| since
+    // we are moving the same request into here.
+    : window_(other.DetachFromCurrentWindow(/*decrement_requests=*/false)) {
+  if (window_)
+    AttachToCurrentWindow(/*increment_requests=*/false);
 }
 
 ScopedWindowCaptureRequest& ScopedWindowCaptureRequest::operator=(
     ScopedWindowCaptureRequest&& rhs) {
+  // Note that |this| might have been attached to a different window than that
+  // of |rhs|, so we need to detach from while decrementing the requests.
+  DetachFromCurrentWindow(/*decrement_requests=*/true);
+
+  // However, |rhs| is moving into |this|, so it's essentially the same request,
+  // therefore, no need to either increment or decrement the requests.
+  window_ = rhs.DetachFromCurrentWindow(/*decrement_requests=*/false);
   if (window_)
-    window_->OnScopedWindowCaptureRequestRemoved();
-  window_ = rhs.window_;
-  rhs.window_ = nullptr;
+    AttachToCurrentWindow(/*increment_requests=*/false);
+
   return *this;
 }
 
 ScopedWindowCaptureRequest::~ScopedWindowCaptureRequest() {
-  if (window_)
-    window_->OnScopedWindowCaptureRequestRemoved();
+  DetachFromCurrentWindow(/*decrement_requests=*/true);
 }
 
 viz::SubtreeCaptureId ScopedWindowCaptureRequest::GetCaptureId() const {
   return window_ ? window_->subtree_capture_id() : viz::SubtreeCaptureId();
 }
 
+void ScopedWindowCaptureRequest::OnWindowDestroying(Window* window) {
+  // No need to call OnScopedWindowCaptureRequestRemoved() since the window is
+  // being destroyed.
+  DetachFromCurrentWindow(/*decrement_requests=*/false);
+}
+
 ScopedWindowCaptureRequest::ScopedWindowCaptureRequest(Window* window)
     : window_(window) {
+  AttachToCurrentWindow(/*increment_requests=*/true);
+}
+
+void ScopedWindowCaptureRequest::AttachToCurrentWindow(
+    bool increment_requests) {
   DCHECK(window_);
   DCHECK(!window_->IsRootWindow());
-  window_->OnScopedWindowCaptureRequestAdded();
+  if (increment_requests)
+    window_->OnScopedWindowCaptureRequestAdded();
+  window_->AddObserver(this);
+}
+
+Window* ScopedWindowCaptureRequest::DetachFromCurrentWindow(
+    bool decrement_requests) {
+  Window* result = window_;
+  if (window_) {
+    window_->RemoveObserver(this);
+    if (decrement_requests)
+      window_->OnScopedWindowCaptureRequestRemoved();
+    window_ = nullptr;
+  }
+  return result;
 }
 
 }  // namespace aura
diff --git a/ui/aura/scoped_window_capture_request.h b/ui/aura/scoped_window_capture_request.h
index ee7e4f95..794d5d7 100644
--- a/ui/aura/scoped_window_capture_request.h
+++ b/ui/aura/scoped_window_capture_request.h
@@ -7,6 +7,7 @@
 
 #include "components/viz/common/surfaces/subtree_capture_id.h"
 #include "ui/aura/aura_export.h"
+#include "ui/aura/window_observer.h"
 
 namespace aura {
 
@@ -21,24 +22,40 @@
 // Note that making a window capturable forces the layer tree root at its layer
 // to be promoted to a render surface that draw into a render pass.
 // See https://crbug.com/1143930 for more details.
-class AURA_EXPORT ScopedWindowCaptureRequest {
+class AURA_EXPORT ScopedWindowCaptureRequest : public WindowObserver {
  public:
   // Creates an empty request that doesn't affect any window.
   ScopedWindowCaptureRequest() = default;
   ScopedWindowCaptureRequest(ScopedWindowCaptureRequest&& other);
   ScopedWindowCaptureRequest& operator=(ScopedWindowCaptureRequest&& rhs);
-  ~ScopedWindowCaptureRequest();
+  ~ScopedWindowCaptureRequest() override;
 
   Window* window() const { return window_; }
 
   viz::SubtreeCaptureId GetCaptureId() const;
 
+  // WindowObserver:
+  void OnWindowDestroying(Window* window) override;
+
  private:
   friend class Window;
 
   // Private so it can only be called through Window::MakeWindowCapturable().
   explicit ScopedWindowCaptureRequest(Window* window);
 
+  // Attaches to the current |window_| by observing it. If |increment_requests|
+  // is true (meaning this is a new request, rather than an existing one being
+  // moved into |this|), OnScopedWindowCaptureRequestAdded() will be called on
+  // |window_|. |window_| must be valid.
+  void AttachToCurrentWindow(bool increment_requests);
+
+  // Detaches from the current |window_| (if any) by ending observing it. If
+  // |decrement_requests| is true (meaning this request is actually ending
+  // rather than being moved from |this|), OnScopedWindowCaptureRequestRemoved()
+  // will be called on |window_|.
+  // |window_| will be reset to |nullptr|, and its old value will be returned.
+  Window* DetachFromCurrentWindow(bool decrement_requests);
+
   // The window on which this request has been made. Can be |nullptr| if this is
   // an empty request (created by the default ctor), or if this object was
   // std::move()'d from.
diff --git a/ui/aura/window_unittest.cc b/ui/aura/window_unittest.cc
index 69af357..8849a06e 100644
--- a/ui/aura/window_unittest.cc
+++ b/ui/aura/window_unittest.cc
@@ -439,7 +439,7 @@
 
 TEST_F(WindowTest, MakeWindowCapturable) {
   std::unique_ptr<Window> w1(CreateTestWindowWithId(1, root_window()));
-  // Initailly the window is not capturable.
+  // Initially the window is not capturable.
   EXPECT_FALSE(w1->subtree_capture_id().is_valid());
 
   // Creating requests makes the window capturable as long as those requests
@@ -485,6 +485,21 @@
   EXPECT_FALSE(w1->layer()->GetSubtreeCaptureId().is_valid());
 }
 
+TEST_F(WindowTest, DeletingCapturableWindows) {
+  std::unique_ptr<Window> w1(CreateTestWindowWithId(1, root_window()));
+  // Initially the window is not capturable.
+  EXPECT_FALSE(w1->subtree_capture_id().is_valid());
+
+  // Deleting a window with capture requests on them will not result in a use-
+  // after-free crash.
+  ScopedWindowCaptureRequest request1 = w1->MakeWindowCapturable();
+  ScopedWindowCaptureRequest request2 = w1->MakeWindowCapturable();
+  EXPECT_TRUE(w1->subtree_capture_id().is_valid());
+  w1.reset();
+  EXPECT_FALSE(request1.GetCaptureId().is_valid());
+  EXPECT_FALSE(request2.GetCaptureId().is_valid());
+}
+
 TEST_F(WindowTest, LayerReleasingAndSettingOfCapturableWindow) {
   std::unique_ptr<Window> w1(CreateTestWindowWithId(1, root_window()));
   EXPECT_FALSE(w1->subtree_capture_id().is_valid());
diff --git a/ui/gfx/mojom/presentation_feedback.mojom b/ui/gfx/mojom/presentation_feedback.mojom
index d91fe6a4..2ddc661 100644
--- a/ui/gfx/mojom/presentation_feedback.mojom
+++ b/ui/gfx/mojom/presentation_feedback.mojom
@@ -15,4 +15,5 @@
   mojo_base.mojom.TimeTicks available_timestamp;
   mojo_base.mojom.TimeTicks ready_timestamp;
   mojo_base.mojom.TimeTicks latch_timestamp;
+  mojo_base.mojom.TimeTicks writes_done_timestamp;
 };
diff --git a/ui/gfx/mojom/presentation_feedback_mojom_traits.h b/ui/gfx/mojom/presentation_feedback_mojom_traits.h
index 26b0f2e7..bee9e78 100644
--- a/ui/gfx/mojom/presentation_feedback_mojom_traits.h
+++ b/ui/gfx/mojom/presentation_feedback_mojom_traits.h
@@ -42,6 +42,11 @@
     return input.latch_timestamp;
   }
 
+  static base::TimeTicks writes_done_timestamp(
+      const gfx::PresentationFeedback& input) {
+    return input.writes_done_timestamp;
+  }
+
   static bool Read(gfx::mojom::PresentationFeedbackDataView data,
                    gfx::PresentationFeedback* out) {
     out->flags = data.flags();
@@ -49,7 +54,8 @@
            data.ReadInterval(&out->interval) &&
            data.ReadAvailableTimestamp(&out->available_timestamp) &&
            data.ReadReadyTimestamp(&out->ready_timestamp) &&
-           data.ReadLatchTimestamp(&out->latch_timestamp);
+           data.ReadLatchTimestamp(&out->latch_timestamp) &&
+           data.ReadWritesDoneTimestamp(&out->writes_done_timestamp);
   }
 };
 
diff --git a/ui/gfx/presentation_feedback.h b/ui/gfx/presentation_feedback.h
index d810219..d1b9502 100644
--- a/ui/gfx/presentation_feedback.h
+++ b/ui/gfx/presentation_feedback.h
@@ -82,6 +82,10 @@
   // next rendering update. On Android this corresponds to the SurfaceFlinger
   // latch time.
   base::TimeTicks latch_timestamp;
+
+  // The time when write operations have completed, corresponding to the time
+  // when rendering on the GPU finished.
+  base::TimeTicks writes_done_timestamp;
 };
 
 inline bool operator==(const PresentationFeedback& lhs,
@@ -90,7 +94,8 @@
          lhs.flags == rhs.flags &&
          lhs.available_timestamp == rhs.available_timestamp &&
          lhs.ready_timestamp == rhs.ready_timestamp &&
-         lhs.latch_timestamp == rhs.latch_timestamp;
+         lhs.latch_timestamp == rhs.latch_timestamp &&
+         lhs.writes_done_timestamp == rhs.writes_done_timestamp;
 }
 
 inline bool operator!=(const PresentationFeedback& lhs,
diff --git a/ui/gl/egl_timestamps.h b/ui/gl/egl_timestamps.h
index 50ccdfb..429d852c 100644
--- a/ui/gl/egl_timestamps.h
+++ b/ui/gl/egl_timestamps.h
@@ -25,6 +25,7 @@
   virtual bool GetFrameTimestampInfoIfAvailable(
       base::TimeTicks* presentation_time,
       base::TimeDelta* composite_interval,
+      base::TimeTicks* writes_done_time,
       uint32_t* presentation_flags,
       int frame_id) = 0;
 };
diff --git a/ui/gl/gl_surface_egl.cc b/ui/gl/gl_surface_egl.cc
index 61fb45a..f7928a8a 100644
--- a/ui/gl/gl_surface_egl.cc
+++ b/ui/gl/gl_surface_egl.cc
@@ -1603,6 +1603,9 @@
         presentation_flags_ = gfx::PresentationFeedback::kVSync |
                               gfx::PresentationFeedback::kHWCompletion;
         break;
+      case EGL_RENDERING_COMPLETE_TIME_ANDROID:
+        writes_done_index_ = static_cast<int>(supported_egl_timestamps_.size());
+        break;
     }
 
     // Stored in separate vectors so we can pass the egl timestamps
@@ -1880,6 +1883,7 @@
 bool NativeViewGLSurfaceEGL::GetFrameTimestampInfoIfAvailable(
     base::TimeTicks* presentation_time,
     base::TimeDelta* composite_interval,
+    base::TimeTicks* writes_done_time,
     uint32_t* presentation_flags,
     int frame_id) {
   DCHECK(presentation_time);
@@ -1962,6 +1966,17 @@
                          base::TimeDelta::FromNanoseconds(presentation_time_ns);
     *presentation_flags = presentation_flags_;
   }
+
+  // Get the WritesDone time if available, otherwise set to a null TimeTicks.
+  EGLnsecsANDROID writes_done_time_ns = egl_timestamps[writes_done_index_];
+  if (writes_done_time_ns == EGL_TIMESTAMP_INVALID_ANDROID ||
+      writes_done_time_ns == EGL_TIMESTAMP_PENDING_ANDROID) {
+    *writes_done_time = base::TimeTicks();
+  } else {
+    *writes_done_time = base::TimeTicks() +
+                        base::TimeDelta::FromNanoseconds(writes_done_time_ns);
+  }
+
   return true;
 }
 
diff --git a/ui/gl/gl_surface_egl.h b/ui/gl/gl_surface_egl.h
index c649b5f..abe2f3f 100644
--- a/ui/gl/gl_surface_egl.h
+++ b/ui/gl/gl_surface_egl.h
@@ -189,6 +189,7 @@
 
   bool GetFrameTimestampInfoIfAvailable(base::TimeTicks* presentation_time,
                                         base::TimeDelta* composite_interval,
+                                        base::TimeTicks* writes_done_time,
                                         uint32_t* presentation_flags,
                                         int frame_id) override;
 
@@ -239,6 +240,7 @@
   // PresentationFeedback support.
   int presentation_feedback_index_ = -1;
   int composition_start_index_ = -1;
+  int writes_done_index_ = -1;
   uint32_t presentation_flags_ = 0;
 
   base::queue<SwapInfo> swap_info_queue_;
diff --git a/ui/gl/gl_surface_presentation_helper.cc b/ui/gl/gl_surface_presentation_helper.cc
index 0521b51d4..901e025 100644
--- a/ui/gl/gl_surface_presentation_helper.cc
+++ b/ui/gl/gl_surface_presentation_helper.cc
@@ -67,12 +67,13 @@
     const Frame& frame,
     base::TimeTicks* timestamp,
     base::TimeDelta* interval,
+    base::TimeTicks* writes_done,
     uint32_t* flags) {
   DCHECK(frame.timer || frame.fence || egl_timestamp_client_);
 
   if (egl_timestamp_client_) {
     bool result = egl_timestamp_client_->GetFrameTimestampInfoIfAvailable(
-        timestamp, interval, flags, frame.frame_id);
+        timestamp, interval, writes_done, flags, frame.frame_id);
 
     // Workaround null timestamp by setting it to TimeTicks::Now() snapped to
     // the next vsync interval. See
@@ -319,14 +320,17 @@
 
     base::TimeTicks timestamp;
     base::TimeDelta interval;
+    base::TimeTicks writes_done;
     uint32_t flags = 0;
     // Get timestamp info for a frame if available. If timestamp is not
     // available, it means this frame is not yet done.
-    if (!GetFrameTimestampInfoIfAvailable(frame, &timestamp, &interval, &flags))
+    if (!GetFrameTimestampInfoIfAvailable(frame, &timestamp, &interval,
+                                          &writes_done, &flags))
       break;
 
-    frame_presentation_callback(
-        gfx::PresentationFeedback(timestamp, interval, flags));
+    gfx::PresentationFeedback feedback(timestamp, interval, flags);
+    feedback.writes_done_timestamp = writes_done;
+    frame_presentation_callback(feedback);
   }
 
   if (!pending_frames_.empty())
diff --git a/ui/gl/gl_surface_presentation_helper.h b/ui/gl/gl_surface_presentation_helper.h
index 67a163c..097989f 100644
--- a/ui/gl/gl_surface_presentation_helper.h
+++ b/ui/gl/gl_surface_presentation_helper.h
@@ -83,6 +83,7 @@
   bool GetFrameTimestampInfoIfAvailable(const Frame& frame,
                                         base::TimeTicks* timestamp,
                                         base::TimeDelta* interval,
+                                        base::TimeTicks* writes_done,
                                         uint32_t* flags);
 
   // Check |pending_frames_| and run presentation callbacks.
diff --git a/ui/views/controls/focus_ring.cc b/ui/views/controls/focus_ring.cc
index 67cce14..c4f27997 100644
--- a/ui/views/controls/focus_ring.cc
+++ b/ui/views/controls/focus_ring.cc
@@ -13,8 +13,10 @@
 #include "ui/accessibility/ax_enums.mojom.h"
 #include "ui/accessibility/ax_node_data.h"
 #include "ui/base/metadata/metadata_impl_macros.h"
+#include "ui/base/theme_provider.h"
 #include "ui/compositor/layer.h"
 #include "ui/gfx/canvas.h"
+#include "ui/gfx/color_utils.h"
 #include "ui/views/controls/focusable_border.h"
 #include "ui/views/controls/highlight_path_generator.h"
 #include "ui/views/style/platform_style.h"
@@ -25,6 +27,9 @@
 
 namespace {
 
+DEFINE_UI_CLASS_PROPERTY_KEY(int, kFocusRingBackgroundColorId, -1)
+DEFINE_UI_CLASS_PROPERTY_KEY(int, kFocusRingFallbackColorId, -1)
+
 bool IsPathUsable(const SkPath& path) {
   return !path.isEmpty() && (path.isRect(nullptr) || path.isOval(nullptr) ||
                              path.isRRect(nullptr));
@@ -35,6 +40,51 @@
                : ui::NativeTheme::kColorId_AlertSeverityHigh;
 }
 
+View* GetViewForSubtreeColors(View* view) {
+  int color_id_property = view->GetProperty(kFocusRingBackgroundColorId);
+  if (color_id_property != -1)
+    return view;
+  if (!view->parent())
+    return nullptr;
+  return GetViewForSubtreeColors(view->parent());
+}
+
+SkColor GetColor(View* focus_ring, bool valid) {
+  const SkColor default_color =
+      focus_ring->GetNativeTheme()->GetSystemColor(ColorIdForValidity(valid));
+  if (!valid)
+    return default_color;
+
+  View* const fallback_color_view = GetViewForSubtreeColors(focus_ring);
+  if (!fallback_color_view)
+    return default_color;
+
+  const SkColor background_color = focus_ring->GetThemeProvider()->GetColor(
+      fallback_color_view->GetProperty(kFocusRingBackgroundColorId));
+
+  // This blends towards the fully-opaque version of the focus-ring color until
+  // the minimum contrast is reached (if possible). If `default_color` is
+  // already contrasty enough it will be used directly.
+  const color_utils::BlendResult contrasty_color =
+      color_utils::BlendForMinContrast(
+          default_color, background_color, SkColorSetA(default_color, 0xFF),
+          color_utils::kMinimumVisibleContrastRatio);
+
+  const float boosted_contrast = color_utils::GetContrastRatio(
+      color_utils::GetResultingPaintColor(contrasty_color.color,
+                                          background_color),
+      background_color);
+
+  // If the contrast of the boosted color is enough, use it. If not, increasing
+  // opacity was insufficient to meet contrast minimums. This happens when
+  // painting a blue focus ring on a blue theme for instance.
+  if (boosted_contrast > color_utils::kMinimumVisibleContrastRatio)
+    return contrasty_color.color;
+
+  return focus_ring->GetThemeProvider()->GetColor(
+      fallback_color_view->GetProperty(kFocusRingFallbackColorId));
+}
+
 double GetCornerRadius() {
   double thickness = PlatformStyle::kFocusHaloThickness / 2.f;
   return FocusableBorder::kCornerRadiusDp + thickness;
@@ -73,6 +123,13 @@
   return parent->AddChildView(std::move(ring));
 }
 
+void FocusRing::SetColorContextForSubtree(View* view,
+                                          int background_color_id,
+                                          int fallback_color_id) {
+  view->SetProperty(kFocusRingBackgroundColorId, background_color_id);
+  view->SetProperty(kFocusRingFallbackColorId, fallback_color_id);
+}
+
 FocusRing::~FocusRing() = default;
 
 void FocusRing::SetPathGenerator(
@@ -142,8 +199,7 @@
 
   cc::PaintFlags paint;
   paint.setAntiAlias(true);
-  paint.setColor(color_.value_or(
-      GetNativeTheme()->GetSystemColor(ColorIdForValidity(!invalid_))));
+  paint.setColor(color_.value_or(GetColor(this, !invalid_)));
   paint.setStyle(cc::PaintFlags::kStroke_Style);
   paint.setStrokeWidth(PlatformStyle::kFocusHaloThickness);
 
diff --git a/ui/views/controls/focus_ring.h b/ui/views/controls/focus_ring.h
index 99330eb..b576d27 100644
--- a/ui/views/controls/focus_ring.h
+++ b/ui/views/controls/focus_ring.h
@@ -37,6 +37,18 @@
   // owned by the |parent|.
   static FocusRing* Install(View* parent);
 
+  // Configures `view` so that FocusRings under it are aware of the background
+  // they are painted against. If the default color can't be made to contrast
+  // against `background_color_id` then `fallback_color_id` will be used.
+  // Warning: The FocusRing ThemeProvider is queried for these IDs, do not use
+  // NativeTheme color IDs here.
+  // WARNING: This is temporary shenanigans to solve an accessibility problem.
+  // DO NOT COPY this pattern or its implementation to other places in its
+  // current state.
+  static void SetColorContextForSubtree(View* view,
+                                        int background_color_id,
+                                        int fallback_color_id);
+
   ~FocusRing() override;
 
   // Sets the HighlightPathGenerator to draw this FocusRing around.
diff --git a/ui/webui/resources/cr_components/chromeos/network/BUILD.gn b/ui/webui/resources/cr_components/chromeos/network/BUILD.gn
index 2c5f4c15..61ff21c 100644
--- a/ui/webui/resources/cr_components/chromeos/network/BUILD.gn
+++ b/ui/webui/resources/cr_components/chromeos/network/BUILD.gn
@@ -196,6 +196,7 @@
     ":mojo_interface_provider",
     ":onc_mojo",
     ":sim_lock_dialogs",
+    "//ui/webui/resources/cr_elements/cr_button:cr_button",
     "//ui/webui/resources/js:i18n_behavior",
     "//ui/webui/resources/js/cr/ui:focus_without_ink",
   ]
diff --git a/ui/webui/resources/cr_components/chromeos/network/network_password_input.html b/ui/webui/resources/cr_components/chromeos/network/network_password_input.html
index 92bca29c..2b06e2f 100644
--- a/ui/webui/resources/cr_components/chromeos/network/network_password_input.html
+++ b/ui/webui/resources/cr_components/chromeos/network/network_password_input.html
@@ -51,16 +51,20 @@
           invalid="[[invalid]]"
           error-message="[[errorMessage]]">
         <template is="dom-if" if="[[!showPolicyIndicator_]]" restamp>
-          <cr-icon-button id="icon" slot="suffix"
-              class$="[[getIconClass_(showPassword)]]"
-              aria-describedby="passwordVisibilityTooltip"
-              on-click="onShowPasswordTap_"
-              on-touchend="onShowPasswordTap_">
-          </cr-icon-button>
-          <paper-tooltip id="passwordVisibilityTooltip" for="icon" position="left"
-              fit-to-visible-bounds role="tooltip">
-            [[getShowPasswordTitle_(showPassword)]]
-          </paper-tooltip>
+          <div slot="suffix">
+            <cr-icon-button id="icon"
+                class$="[[getIconClass_(showPassword)]]"
+                aria-describedby="passwordVisibilityTooltip"
+                on-click="onShowPasswordTap_"
+                on-touchend="onShowPasswordTap_">
+            </cr-icon-button>
+            <paper-tooltip id="passwordVisibilityTooltip"
+                for="icon"
+                position="left"
+                fit-to-visible-bounds role="tooltip">
+              [[getShowPasswordTitle_(showPassword)]]
+            </paper-tooltip>
+          </div>
         </template>
       </cr-input>
       <template is="dom-if" if="[[showPolicyIndicator_]]" restamp>
diff --git a/ui/webui/resources/cr_components/chromeos/network/network_siminfo.js b/ui/webui/resources/cr_components/chromeos/network/network_siminfo.js
index 2990d11..570b5e3 100644
--- a/ui/webui/resources/cr_components/chromeos/network/network_siminfo.js
+++ b/ui/webui/resources/cr_components/chromeos/network/network_siminfo.js
@@ -120,6 +120,13 @@
     return /** @type {?CrToggleElement} */ (this.$$('#simLockButton'));
   },
 
+  /**
+   * @return {?CrButtonElement}
+   */
+  getUnlockButton() {
+    return /** @type {?CrButtonElement} */ (this.$$('#unlockPinButton'));
+  },
+
   /** @private */
   onDialogOpenChanged_() {
     if (this.isDialogOpen_) {
diff --git a/weblayer/browser/persistence/browser_persister.cc b/weblayer/browser/persistence/browser_persister.cc
index 2298243..762cc4b 100644
--- a/weblayer/browser/persistence/browser_persister.cc
+++ b/weblayer/browser/persistence/browser_persister.cc
@@ -61,7 +61,6 @@
               sessions::CommandStorageManager::kOther,
               path,
               this,
-              /* use_marker */ true,
               browser->profile()->GetBrowserContext()->IsOffTheRecord(),
               decryption_key)),
       rebuild_on_next_save_(false),