Merge m-i to m-c, a=merge
authorPhil Ringnalda <philringnalda@gmail.com>
Mon, 20 Feb 2017 20:28:42 -0800
changeset 343927 d84beb192e57e26846c82d3df3599381f4663792
parent 343926 276bd9ed3dbf85f4a6dac67df54a5f2631804de5 (current diff)
parent 343890 a62ce221207c4db6f542426a68cfa0dbb91d118c (diff)
child 343928 c749de1036a3b751a2174b160861a2831e23467b
child 343967 1a10c7d3712eed83d87166f8bc19742a355e8861
push id87221
push userphilringnalda@gmail.com
push dateTue, 21 Feb 2017 04:34:24 +0000
treeherdermozilla-inbound@c749de1036a3 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone54.0a1
first release with
nightly linux32
d84beb192e57 / 54.0a1 / 20170221110300 / files
nightly linux64
d84beb192e57 / 54.0a1 / 20170221110300 / files
nightly mac
d84beb192e57 / 54.0a1 / 20170221030205 / files
nightly win32
d84beb192e57 / 54.0a1 / 20170221030205 / files
nightly win64
d84beb192e57 / 54.0a1 / 20170221030205 / files
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge m-i to m-c, a=merge
layout/base/nsRefreshDriver.cpp
modules/libpref/init/all.js
netwerk/protocol/http/HttpChannelChild.cpp
netwerk/protocol/http/nsHttpChannel.cpp
testing/web-platform/meta/FileAPI/blob/Blob-close.html.ini
testing/web-platform/meta/IndexedDB/open-request-queue.html.ini
testing/web-platform/meta/XMLHttpRequest/setrequestheader-bogus-value.htm.ini
testing/web-platform/meta/dom/events/ProgressEvent.html.ini
testing/web-platform/meta/eventsource/interfaces.html.ini
testing/web-platform/meta/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html.ini
testing/web-platform/meta/html/semantics/forms/the-input-element/time-2.html.ini
testing/web-platform/meta/html/semantics/forms/the-input-element/week.html.ini
testing/web-platform/meta/html/semantics/scripting-1/the-template-element/template-element/template-as-a-descendant.html.ini
testing/web-platform/meta/html/syntax/parsing/html5lib_innerHTML_foreign-fragment.html.ini
testing/web-platform/meta/html/syntax/parsing/html5lib_template.html.ini
testing/web-platform/meta/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_autocomplete.html.ini
testing/web-platform/meta/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_list.html.ini
testing/web-platform/meta/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_valueasdate.html.ini
testing/web-platform/meta/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_valueasnumber.html.ini
testing/web-platform/meta/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/select_length.html.ini
testing/web-platform/meta/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/select_selectedindex.html.ini
testing/web-platform/meta/old-tests/submission/Infraware/Forms/contents/Forms/keygen_labels.html.ini
testing/web-platform/meta/old-tests/submission/Opera/script_scheduling/096.html.ini
testing/web-platform/meta/old-tests/submission/Opera/script_scheduling/098.html.ini
testing/web-platform/meta/old-tests/submission/Opera/script_scheduling/128.html.ini
testing/web-platform/meta/preload/download_resources.html.ini
testing/web-platform/meta/preload/dynamic_adding_preload.html.ini
testing/web-platform/meta/preload/fetch_destination.https.html.ini
testing/web-platform/meta/preload/link_header_preload.html.ini
testing/web-platform/meta/preload/onerror_event.html.ini
testing/web-platform/meta/preload/onload_event.html.ini
testing/web-platform/meta/preload/preload_with_type.html.ini
testing/web-platform/meta/preload/single_download_preload.html.ini
testing/web-platform/meta/presentation-api/controlling-ua/getAvailability_mixedcontent.https.html.ini
testing/web-platform/meta/presentation-api/controlling-ua/getAvailability_sandboxing_error.html.ini
testing/web-platform/meta/presentation-api/controlling-ua/reconnectToPresentation_mixedcontent.https.html.ini
testing/web-platform/meta/presentation-api/controlling-ua/reconnectToPresentation_sandboxing_error.html.ini
testing/web-platform/meta/selection/addRange.html.ini
testing/web-platform/meta/selection/collapse.html.ini
testing/web-platform/meta/selection/extend.html.ini
testing/web-platform/meta/streams/byte-length-queuing-strategy.https.html.ini
testing/web-platform/meta/streams/count-queuing-strategy.https.html.ini
testing/web-platform/meta/streams/readable-streams/bad-strategies.https.html.ini
testing/web-platform/meta/streams/readable-streams/bad-underlying-sources.https.html.ini
testing/web-platform/meta/streams/readable-streams/brand-checks.https.html.ini
testing/web-platform/meta/streams/readable-streams/cancel.https.html.ini
testing/web-platform/meta/streams/readable-streams/count-queuing-strategy-integration.https.html.ini
testing/web-platform/meta/streams/readable-streams/garbage-collection.https.html.ini
testing/web-platform/meta/streams/readable-streams/general.https.html.ini
testing/web-platform/meta/streams/readable-streams/pipe-through.https.html.ini
testing/web-platform/meta/streams/readable-streams/readable-stream-reader.https.html.ini
testing/web-platform/meta/streams/readable-streams/tee.https.html.ini
testing/web-platform/meta/streams/readable-streams/templated.https.html.ini
testing/web-platform/meta/vr/idlharness.html.ini
testing/web-platform/tests/FileAPI/blob/Blob-close.html
testing/web-platform/tests/docs/configuration.md
testing/web-platform/tests/docs/css-metadata.md
testing/web-platform/tests/docs/css-naming.md
testing/web-platform/tests/docs/css-user-styles.md
testing/web-platform/tests/docs/github-101.md
testing/web-platform/tests/docs/lint-tool.md
testing/web-platform/tests/docs/manual-test.md
testing/web-platform/tests/docs/reftests.md
testing/web-platform/tests/docs/review-checklist.md
testing/web-platform/tests/docs/review-process.md
testing/web-platform/tests/docs/running_tests.md
testing/web-platform/tests/docs/submission-process.md
testing/web-platform/tests/docs/test-format-guidelines.md
testing/web-platform/tests/docs/test-style-guidelines.md
testing/web-platform/tests/docs/test-templates.md
testing/web-platform/tests/dom/events/ProgressEvent.html
testing/web-platform/tests/fullscreen/api/blank.html
testing/web-platform/tests/html/browsers/browsing-the-web/history-traversal/MANIFEST
testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/MANIFEST
testing/web-platform/tests/html/browsers/browsing-the-web/scroll-to-fragid/MANIFEST
testing/web-platform/tests/html/browsers/browsing-the-web/unloading-documents/MANIFEST
testing/web-platform/tests/html/browsers/browsing-the-web/unloading-documents/prompt/MANIFEST
testing/web-platform/tests/html/browsers/browsing-the-web/unloading-documents/unload/MANIFEST
testing/web-platform/tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html
testing/web-platform/tests/html/browsers/windows/browsing-context-names/MANIFEST
testing/web-platform/tests/html/browsers/windows/nested-browsing-contexts/MANIFEST
testing/web-platform/tests/html/rendering/bindings/the-button-element-0/.gitkeep
testing/web-platform/tests/html/rendering/bindings/the-keygen-element-0/.gitkeep
testing/web-platform/tests/html/semantics/forms/the-keygen-element/.gitkeep
testing/web-platform/tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-no-list-owner-ref.html
testing/web-platform/tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-no-list-owner.html
testing/web-platform/tests/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_autocomplete.html
testing/web-platform/tests/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_list.html
testing/web-platform/tests/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_valueasdate.html
testing/web-platform/tests/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_valueasnumber.html
testing/web-platform/tests/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/select_length.html
testing/web-platform/tests/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/select_selectedindex.html
testing/web-platform/tests/old-tests/submission/Infraware/Forms/contents/Forms/keygen_checkvalidity.html
testing/web-platform/tests/old-tests/submission/Infraware/Forms/contents/Forms/keygen_labels.html
testing/web-platform/tests/old-tests/submission/Opera/script_scheduling/098.html
testing/web-platform/tests/preload/avoid_delaying_onload_link_preload.html
testing/web-platform/tests/preload/delaying_onload_link_preload_after_discovery.html
testing/web-platform/tests/preload/download_resources.html
testing/web-platform/tests/preload/dynamic_adding_preload.html
testing/web-platform/tests/preload/fetch_destination.https.html
testing/web-platform/tests/preload/link_header_preload.html
testing/web-platform/tests/preload/link_header_preload.html.headers
testing/web-platform/tests/preload/link_header_preload_delay_onload.html
testing/web-platform/tests/preload/link_header_preload_delay_onload.html.headers
testing/web-platform/tests/preload/onerror_event.html
testing/web-platform/tests/preload/onload_event.html
testing/web-platform/tests/preload/preload_with_type.html
testing/web-platform/tests/preload/single_download_late_used_preload.html
testing/web-platform/tests/preload/single_download_preload.html
testing/web-platform/tests/presentation-api/controlling-ua/getAvailability_mixedcontent.https.html
testing/web-platform/tests/presentation-api/controlling-ua/getAvailability_sandboxing_error.html
testing/web-platform/tests/presentation-api/controlling-ua/reconnectToPresentation_mixedcontent.https.html
testing/web-platform/tests/presentation-api/controlling-ua/reconnectToPresentation_sandboxing_error.html
testing/web-platform/tests/presentation-api/controlling-ua/startNewPresentation_mixedcontent-manual.https.html
testing/web-platform/tests/presentation-api/controlling-ua/startNewPresentation_mixedcontent_multiple-manual.https.html
testing/web-platform/tests/presentation-api/controlling-ua/startNewPresentation_sandboxing_error-manual.html
testing/web-platform/tests/selection/addRange.html
testing/web-platform/tests/selection/collapse.html
testing/web-platform/tests/selection/extend.html
testing/web-platform/tests/streams/byte-length-queuing-strategy.https.html
testing/web-platform/tests/streams/count-queuing-strategy.https.html
testing/web-platform/tests/streams/readable-streams/bad-strategies.https.html
testing/web-platform/tests/streams/readable-streams/bad-underlying-sources.https.html
testing/web-platform/tests/streams/readable-streams/brand-checks.https.html
testing/web-platform/tests/streams/readable-streams/cancel.https.html
testing/web-platform/tests/streams/readable-streams/count-queuing-strategy-integration.https.html
testing/web-platform/tests/streams/readable-streams/garbage-collection.https.html
testing/web-platform/tests/streams/readable-streams/general.https.html
testing/web-platform/tests/streams/readable-streams/pipe-through.https.html
testing/web-platform/tests/streams/readable-streams/readable-stream-reader.https.html
testing/web-platform/tests/streams/readable-streams/tee.https.html
testing/web-platform/tests/streams/readable-streams/templated.https.html
testing/web-platform/tests/streams/resources/test-initializer.js
testing/web-platform/tests/vr/idlharness.html
testing/web-platform/tests/websockets/Close-0.htm
testing/web-platform/tests/websockets/Close-NaN.htm
testing/web-platform/tests/websockets/Close-clamp.htm
testing/web-platform/tests/websockets/Close-null.htm
testing/web-platform/tests/websockets/Close-string.htm
testing/web-platform/tests/websockets/Secure-Close-0.htm
testing/web-platform/tests/websockets/Secure-Close-NaN.htm
testing/web-platform/tests/websockets/Secure-Close-null.htm
testing/web-platform/tests/websockets/Secure-Close-string.htm
--- a/accessible/atk/AccessibleWrap.cpp
+++ b/accessible/atk/AccessibleWrap.cpp
@@ -609,18 +609,17 @@ getNameCB(AtkObject* aAtkObj)
 
   return aAtkObj->name;
 }
 
 static void
 MaybeFireNameChange(AtkObject* aAtkObj, const nsString& aNewName)
 {
   NS_ConvertUTF16toUTF8 newNameUTF8(aNewName);
-  if (aAtkObj->name &&
-      !strncmp(aAtkObj->name, newNameUTF8.get(), newNameUTF8.Length()))
+  if (aAtkObj->name && !strcmp(aAtkObj->name, newNameUTF8.get()))
     return;
 
   // Below we duplicate the functionality of atk_object_set_name(),
   // but without calling atk_object_get_name(). Instead of
   // atk_object_get_name() we directly access aAtkObj->name. This is because
   // atk_object_get_name() would call getNameCB() which would call
   // MaybeFireNameChange() (or atk_object_set_name() before this problem was
   // fixed) and we would get an infinite recursion.
--- a/browser/base/content/test/popupNotifications/browser_popupNotification_5.js
+++ b/browser/base/content/test/popupNotifications/browser_popupNotification_5.js
@@ -190,16 +190,17 @@ var tests = [
       this.notification = showNotification(notifyObj);
       yield shown;
 
       ok(notifyObj.shownCallbackTriggered, "Should have triggered the shown event");
       ok(notifyObj.showingCallbackTriggered, "Should have triggered the showing event");
       // Reset to false so that we can ensure these are not fired a second time.
       notifyObj.shownCallbackTriggered = false;
       notifyObj.showingCallbackTriggered = false;
+      let timeShown = this.notification.timeShown;
 
       let promiseWin = BrowserTestUtils.waitForNewWindow();
       gBrowser.replaceTabWithWindow(firstTab);
       let win = yield promiseWin;
 
       let anchor = win.document.getElementById("default-notification-icon");
       win.PopupNotifications._reshowNotifications(anchor);
       ok(win.PopupNotifications.panel.childNodes.length == 0,
@@ -213,16 +214,18 @@ var tests = [
       ok(PopupNotifications.isPanelOpen,
          "Should have kept the popup on the first window");
       ok(!notifyObj.dismissalCallbackTriggered,
          "Should not have triggered a dismissed event");
       ok(!notifyObj.shownCallbackTriggered,
          "Should not have triggered a second shown event");
       ok(!notifyObj.showingCallbackTriggered,
          "Should not have triggered a second showing event");
+      ok(this.notification.timeShown > timeShown,
+         "should have updated timeShown to restart the security delay");
 
       this.notification.remove();
       gBrowser.removeTab(gBrowser.selectedTab);
       gBrowser.selectedTab = this.oldSelectedTab;
 
       goNext();
     }
   },
--- a/dom/base/nsGlobalWindow.cpp
+++ b/dom/base/nsGlobalWindow.cpp
@@ -49,16 +49,17 @@
 #include "nsScriptNameSpaceManager.h"
 #include "nsISlowScriptDebug.h"
 #include "nsWindowMemoryReporter.h"
 #include "WindowNamedPropertiesHandler.h"
 #include "nsFrameSelection.h"
 #include "nsNetUtil.h"
 #include "nsVariant.h"
 #include "nsPrintfCString.h"
+#include "mozilla/intl/LocaleService.h"
 
 // Helper Classes
 #include "nsJSUtils.h"
 #include "jsapi.h"              // for JSAutoRequest
 #include "jswrapper.h"
 #include "nsCharSeparatedTokenizer.h"
 #include "nsReadableUtils.h"
 #include "nsDOMClassInfo.h"
@@ -14912,11 +14913,22 @@ nsGlobalWindow::GetPaintWorklet(ErrorRes
     }
 
     mPaintWorklet = new Worklet(AsInner(), principal, Worklet::ePaintWorklet);
   }
 
   return mPaintWorklet;
 }
 
+void
+nsGlobalWindow::GetAppLocales(nsTArray<nsString>& aLocales)
+{
+  nsTArray<nsCString> appLocales;
+  mozilla::intl::LocaleService::GetInstance()->GetAppLocales(appLocales);
+
+  for (uint32_t i = 0; i < appLocales.Length(); i++) {
+    aLocales.AppendElement(NS_ConvertUTF8toUTF16(appLocales[i]));
+  }
+}
+
 template class nsPIDOMWindow<mozIDOMWindowProxy>;
 template class nsPIDOMWindow<mozIDOMWindow>;
 template class nsPIDOMWindow<nsISupports>;
--- a/dom/base/nsGlobalWindow.h
+++ b/dom/base/nsGlobalWindow.h
@@ -942,16 +942,19 @@ public:
   ConvertDialogOptions(const nsAString& aOptions, nsAString& aResult);
 
   mozilla::dom::Worklet*
   GetAudioWorklet(mozilla::ErrorResult& aRv);
 
   mozilla::dom::Worklet*
   GetPaintWorklet(mozilla::ErrorResult& aRv);
 
+  void
+  GetAppLocales(nsTArray<nsString>& aLocales);
+
 protected:
   bool AlertOrConfirm(bool aAlert, const nsAString& aMessage,
                       nsIPrincipal& aSubjectPrincipal,
                       mozilla::ErrorResult& aError);
 
 public:
   void Alert(nsIPrincipal& aSubjectPrincipal,
              mozilla::ErrorResult& aError);
--- a/dom/events/test/pointerevents/test_bug1285128.html
+++ b/dom/events/test/pointerevents/test_bug1285128.html
@@ -36,13 +36,15 @@ function runTests() {
     SimpleTest.finish();
   });
 
   synthesizeMouseAtCenter(target0, { type: "mousemove",
                                      inputSource: SpecialPowers.Ci.nsIDOMMouseEvent.MOZ_SOURCE_MOUSE,
                                      isWidgetEventSynthesized: true });
 }
 
-SpecialPowers.pushPrefEnv({"set": [["dom.w3c_pointer_events.enabled", true]]}, runTests);
+SimpleTest.waitForFocus(() => {
+  SpecialPowers.pushPrefEnv({"set": [["dom.w3c_pointer_events.enabled", true]]}, runTests);
+});
 
 </script>
 </body>
 </html>
--- a/dom/events/test/pointerevents/test_bug1303704.html
+++ b/dom/events/test/pointerevents/test_bug1303704.html
@@ -42,13 +42,15 @@ function runTests() {
   synthesizeMouseAtCenter(link1, { type: "mousedown",
                                    inputSource: SpecialPowers.Ci.nsIDOMMouseEvent.MOZ_SOURCE_MOUSE });
   synthesizeMouseAtCenter(link1, { type: "mousemove",
                                    inputSource: SpecialPowers.Ci.nsIDOMMouseEvent.MOZ_SOURCE_MOUSE });
   synthesizeMouseAtCenter(link1, { type: "mouseup",
                                    inputSource: SpecialPowers.Ci.nsIDOMMouseEvent.MOZ_SOURCE_MOUSE });
 }
 
-SpecialPowers.pushPrefEnv({"set": [["dom.w3c_pointer_events.enabled", true]]}, runTests);
+SimpleTest.waitForFocus(() => {
+  SpecialPowers.pushPrefEnv({"set": [["dom.w3c_pointer_events.enabled", true]]}, runTests);
+});
 
 </script>
 </body>
 </html>
--- a/dom/events/test/pointerevents/test_bug1315862.html
+++ b/dom/events/test/pointerevents/test_bug1315862.html
@@ -54,13 +54,15 @@ function runTests() {
   synthesizeMouse(target, 5, 5, { type: "mousedown", inputSource: source },
                   iframe.contentWindow);
   synthesizeMouse(target, 5, 5, { type: "mousemove", inputSource: source },
                   iframe.contentWindow);
   synthesizeMouse(target, 5, 5, { type: "mouseup", inputSource: source },
                   iframe.contentWindow);
 }
 
-SpecialPowers.pushPrefEnv({"set": [["dom.w3c_pointer_events.enabled", true]]}, runTests);
+SimpleTest.waitForFocus(() => {
+  SpecialPowers.pushPrefEnv({"set": [["dom.w3c_pointer_events.enabled", true]]}, runTests);
+});
 
 </script>
 </body>
 </html>
--- a/dom/tests/mochitest/chrome/chrome.ini
+++ b/dom/tests/mochitest/chrome/chrome.ini
@@ -82,8 +82,9 @@ skip-if = os == 'linux'
 [test_sandbox_postMessage.html]
 [test_selectAtPoint.html]
 [test_sizemode_attribute.xul]
 tags = fullscreen
 skip-if = os != 'win'
 [test_subscript_bindings.xul]
 [test_xray_event_constructor.xul]
 [test_clipboard_events_chrome.html]
+[test_window_getAppLocales.html]
new file mode 100644
--- /dev/null
+++ b/dom/tests/mochitest/chrome/test_window_getAppLocales.html
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1337234
+-->
+<head>
+  <title>Test for Bug 1337234</title>
+  <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1337234">Mozilla Bug 1337234</a>
+<p id="display"></p>
+<div id="content" style="display: none">
+<script>
+
+let appLocales = window.getAppLocales();
+ok(appLocales.length > 0, "getAppLocales returns at least one locale.");
+is(appLocales[0], "en-US", "The first app locale should be en-US.");
+
+</script>
+</body>
+</html>
--- a/dom/webidl/Window.webidl
+++ b/dom/webidl/Window.webidl
@@ -514,8 +514,23 @@ callback IdleRequestCallback = void (Idl
  * WARNING: Do not use this unless you are familiar with the issues that
  * taking opener state into account is designed to address (or else you may
  * introduce security issues).  If in doubt, use |isSecureContext|.  In
  * particular do not use this to gate access to JavaScript APIs.
  */
 partial interface Window {
   [ChromeOnly] readonly attribute boolean isSecureContextIfOpenerIgnored;
 };
+
+partial interface Window {
+/**
+  * Returns a list of locales that the application should be localized to.
+  *
+  * The result is a sorted list of valid locale IDs and it should be
+  * used for all APIs that accept list of locales, like ECMA402 and L10n APIs.
+  *
+  * This API always returns at least one locale.
+  *
+  * Example: ["en-US", "de", "pl", "sr-Cyrl", "zh-Hans-HK"]
+  */
+  [Func="IsChromeOrXBL"]
+  sequence<DOMString> getAppLocales();
+};
--- a/dom/workers/ScriptLoader.cpp
+++ b/dom/workers/ScriptLoader.cpp
@@ -1204,39 +1204,38 @@ private:
                                      loadInfo.mScriptTextLength);
     if (NS_SUCCEEDED(rv) && IsMainWorkerScript()) {
       nsCOMPtr<nsIURI> finalURI;
       rv = NS_NewURI(getter_AddRefs(finalURI), loadInfo.mFullURL, nullptr, nullptr);
       if (NS_SUCCEEDED(rv)) {
         mWorkerPrivate->SetBaseURI(finalURI);
       }
 
-      nsILoadGroup* loadGroup = mWorkerPrivate->GetLoadGroup();
-      MOZ_DIAGNOSTIC_ASSERT(loadGroup);
-
 #if defined(DEBUG) || !defined(RELEASE_OR_BETA)
       nsIPrincipal* principal = mWorkerPrivate->GetPrincipal();
       MOZ_DIAGNOSTIC_ASSERT(principal);
 
       bool equal = false;
       MOZ_ALWAYS_SUCCEEDS(responsePrincipal->Equals(principal, &equal));
       MOZ_DIAGNOSTIC_ASSERT(equal);
 
       nsCOMPtr<nsIContentSecurityPolicy> csp;
       MOZ_ALWAYS_SUCCEEDS(responsePrincipal->GetCsp(getter_AddRefs(csp)));
       MOZ_DIAGNOSTIC_ASSERT(!csp);
 #endif
 
       mWorkerPrivate->InitChannelInfo(aChannelInfo);
 
-      // Override the principal on the WorkerPrivate.  We just asserted that
-      // this is the same as our current WorkerPrivate principal, so this is
-      // almost a no-op.  We must do, it though, in order to avoid accidentally
-      // propagating the CSP object back to the ServiceWorkerRegistration
-      // principal.  If bug 965637 is fixed then this can be removed.
+      nsILoadGroup* loadGroup = mWorkerPrivate->GetLoadGroup();
+      MOZ_DIAGNOSTIC_ASSERT(loadGroup);
+
+      // Override the principal on the WorkerPrivate.  This is only necessary
+      // in order to get a principal with exactly the correct URL.  The fetch
+      // referrer logic depends on the WorkerPrivate principal having a URL
+      // that matches the worker script URL.
       rv = mWorkerPrivate->SetPrincipalOnMainThread(responsePrincipal, loadGroup);
       MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv));
 
       rv = mWorkerPrivate->SetCSPFromHeaderValues(aCSPHeaderValue,
                                                   aCSPReportOnlyHeaderValue);
       MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv));
     }
 
--- a/dom/workers/ServiceWorkerInfo.h
+++ b/dom/workers/ServiceWorkerInfo.h
@@ -67,17 +67,17 @@ public:
   class ServiceWorkerPrivate*
   WorkerPrivate() const
   {
     MOZ_ASSERT(mServiceWorkerPrivate);
     return mServiceWorkerPrivate;
   }
 
   nsIPrincipal*
-  GetPrincipal() const
+  Principal() const
   {
     return mPrincipal;
   }
 
   const nsCString&
   ScriptSpec() const
   {
     return mScriptSpec;
--- a/dom/workers/ServiceWorkerManager.cpp
+++ b/dom/workers/ServiceWorkerManager.cpp
@@ -1012,17 +1012,17 @@ ServiceWorkerManager::SendPushEvent(cons
   }
 
   ServiceWorkerInfo* serviceWorker = GetActiveWorkerInfoForScope(attrs, aScope);
   if (NS_WARN_IF(!serviceWorker)) {
     return NS_ERROR_FAILURE;
   }
 
   RefPtr<ServiceWorkerRegistrationInfo> registration =
-    GetRegistration(serviceWorker->GetPrincipal(), aScope);
+    GetRegistration(serviceWorker->Principal(), aScope);
   MOZ_DIAGNOSTIC_ASSERT(registration);
 
   return serviceWorker->WorkerPrivate()->SendPushEvent(aMessageId, aData,
                                                        registration);
 }
 
 NS_IMETHODIMP
 ServiceWorkerManager::SendPushSubscriptionChangeEvent(const nsACString& aOriginAttributes,
@@ -1372,17 +1372,17 @@ ServiceWorkerManager::NotifyUnregister(n
 
 void
 ServiceWorkerManager::WorkerIsIdle(ServiceWorkerInfo* aWorker)
 {
   AssertIsOnMainThread();
   MOZ_DIAGNOSTIC_ASSERT(aWorker);
 
   RefPtr<ServiceWorkerRegistrationInfo> reg =
-    GetRegistration(aWorker->GetPrincipal(), aWorker->Scope());
+    GetRegistration(aWorker->Principal(), aWorker->Scope());
   if (!reg) {
     return;
   }
 
   if (reg->GetActive() != aWorker) {
     return;
   }
 
@@ -3201,58 +3201,29 @@ ServiceWorkerManager::GetRegistration(co
   return reg.forget();
 }
 
 already_AddRefed<ServiceWorkerRegistrationInfo>
 ServiceWorkerManager::CreateNewRegistration(const nsCString& aScope,
                                             nsIPrincipal* aPrincipal,
                                             nsLoadFlags aLoadFlags)
 {
-  nsresult rv;
-
 #ifdef DEBUG
   AssertIsOnMainThread();
   nsCOMPtr<nsIURI> scopeURI;
-  rv = NS_NewURI(getter_AddRefs(scopeURI), aScope, nullptr, nullptr);
+  nsresult rv = NS_NewURI(getter_AddRefs(scopeURI), aScope, nullptr, nullptr);
   MOZ_ASSERT(NS_SUCCEEDED(rv));
 
   RefPtr<ServiceWorkerRegistrationInfo> tmp =
     GetRegistration(aPrincipal, aScope);
   MOZ_ASSERT(!tmp);
 #endif
 
-  // The environment that registers the document may have some CSP applied
-  // to its principal.  This should not be inherited by the registration
-  // itself or the worker it creates.  To avoid confusion in callsites
-  // downstream we strip the CSP from the principal now.
-  //
-  // Unfortunately there is no API to clone a principal without its CSP.  To
-  // achieve the same thing we serialize to the IPC PrincipalInfo type and
-  // back to an nsIPrincipal.
-  PrincipalInfo principalInfo;
-  rv = PrincipalToPrincipalInfo(aPrincipal, &principalInfo);
-  if (NS_WARN_IF(NS_FAILED(rv))) {
-    return nullptr;
-  }
-
-  nsCOMPtr<nsIPrincipal> cleanPrincipal =
-    PrincipalInfoToPrincipal(principalInfo, &rv);
-  if (NS_WARN_IF(NS_FAILED(rv))) {
-    return nullptr;
-  }
-
-  // Verify that we do not have any CSP set on our principal "clone".
-#if defined(DEBUG) || !defined(RELEASE_OR_BETA)
-  nsCOMPtr<nsIContentSecurityPolicy> csp;
-  MOZ_ALWAYS_SUCCEEDS(cleanPrincipal->GetCsp(getter_AddRefs(csp)));
-  MOZ_DIAGNOSTIC_ASSERT(!csp);
-#endif
-
   RefPtr<ServiceWorkerRegistrationInfo> registration =
-    new ServiceWorkerRegistrationInfo(aScope, cleanPrincipal, aLoadFlags);
+    new ServiceWorkerRegistrationInfo(aScope, aPrincipal, aLoadFlags);
   // From now on ownership of registration is with
   // mServiceWorkerRegistrationInfos.
   AddScopeAndRegistration(aScope, registration);
   return registration.forget();
 }
 
 void
 ServiceWorkerManager::MaybeRemoveRegistration(ServiceWorkerRegistrationInfo* aRegistration)
--- a/dom/workers/ServiceWorkerPrivate.cpp
+++ b/dom/workers/ServiceWorkerPrivate.cpp
@@ -1608,17 +1608,17 @@ ServiceWorkerPrivate::SendFetchEvent(nsI
   AssertIsOnMainThread();
 
   RefPtr<ServiceWorkerManager> swm = ServiceWorkerManager::GetInstance();
   if (NS_WARN_IF(!mInfo || !swm)) {
     return NS_ERROR_FAILURE;
   }
 
   RefPtr<ServiceWorkerRegistrationInfo> registration =
-    swm->GetRegistration(mInfo->GetPrincipal(), mInfo->Scope());
+    swm->GetRegistration(mInfo->Principal(), mInfo->Scope());
 
   // Its possible the registration is removed between starting the interception
   // and actually dispatching the fetch event.  In these cases we simply
   // want to restart the original network request.  Since this is a normal
   // condition we handle the reset here instead of returning an error which
   // would in turn trigger a console report.
   if (!registration) {
     aChannel->ResetInterception();
@@ -1731,33 +1731,45 @@ ServiceWorkerPrivate::SpawnWorkerIfNeede
   info.mLoadFlags = mInfo->GetLoadFlags() |
                     nsIChannel::LOAD_BYPASS_SERVICE_WORKER;
 
   rv = info.mBaseURI->GetHost(info.mDomain);
   if (NS_WARN_IF(NS_FAILED(rv))) {
     return rv;
   }
 
-  info.mPrincipal = mInfo->GetPrincipal();
+  nsCOMPtr<nsIURI> uri;
+  rv = mInfo->Principal()->GetURI(getter_AddRefs(uri));
+  if (NS_WARN_IF(NS_FAILED(rv))) {
+    return rv;
+  }
+
+  if (NS_WARN_IF(!uri)) {
+    return NS_ERROR_FAILURE;
+  }
+
+  // Create a pristine codebase principal to avoid any possibility of inheriting
+  // CSP values.  The principal on the registration may be polluted with CSP
+  // from the registering page or other places the principal is passed.  If
+  // bug 965637 is ever fixed this can be removed.
+  info.mPrincipal =
+    BasePrincipal::CreateCodebasePrincipal(uri, mInfo->GetOriginAttributes());
+  if (NS_WARN_IF(!info.mPrincipal)) {
+    return NS_ERROR_FAILURE;
+  }
 
   nsContentUtils::StorageAccess access =
     nsContentUtils::StorageAllowedForPrincipal(info.mPrincipal);
   info.mStorageAllowed = access > nsContentUtils::StorageAccess::ePrivateBrowsing;
   info.mOriginAttributes = mInfo->GetOriginAttributes();
 
-  // The ServiceWorkerRegistration principal should never have any CSP
-  // set.  The CSP from the page that registered the SW should not be
-  // inherited.  Verify this is the case in non-release builds
+  // Verify that we don't have any CSP on pristine principal.
 #if defined(DEBUG) || !defined(RELEASE_OR_BETA)
   nsCOMPtr<nsIContentSecurityPolicy> csp;
-  rv = info.mPrincipal->GetCsp(getter_AddRefs(csp));
-  if (NS_WARN_IF(NS_FAILED(rv))) {
-    return rv;
-  }
-
+  Unused << info.mPrincipal->GetCsp(getter_AddRefs(csp));
   MOZ_DIAGNOSTIC_ASSERT(!csp);
 #endif
 
   // Default CSP permissions for now.  These will be overrided if necessary
   // based on the script CSP headers during load in ScriptLoader.
   info.mEvalAllowed = true;
   info.mReportCSPViolations = false;
 
--- a/gfx/thebes/gfxPrefs.h
+++ b/gfx/thebes/gfxPrefs.h
@@ -378,16 +378,17 @@ private:
 
   DECL_GFX_PREF(Once, "gfx.device-reset.limit",                DeviceResetLimitCount, int32_t, 10);
   DECL_GFX_PREF(Once, "gfx.device-reset.threshold-ms",         DeviceResetThresholdMilliseconds, int32_t, -1);
 
   DECL_GFX_PREF(Once, "gfx.direct2d.disabled",                 Direct2DDisabled, bool, false);
   DECL_GFX_PREF(Once, "gfx.direct2d.force-enabled",            Direct2DForceEnabled, bool, false);
   DECL_GFX_PREF(Live, "gfx.direct3d11.reuse-decoder-device",   Direct3D11ReuseDecoderDevice, int32_t, -1);
   DECL_GFX_PREF(Live, "gfx.direct3d11.allow-intel-mutex",      Direct3D11AllowIntelMutex, bool, true);
+  DECL_GFX_PREF(Live, "gfx.downloadable_fonts.keep_variation_tables", KeepVariationTables, bool, false);
   DECL_GFX_PREF(Live, "gfx.downloadable_fonts.otl_validation", ValidateOTLTables, bool, true);
   DECL_GFX_PREF(Live, "gfx.draw-color-bars",                   CompositorDrawColorBars, bool, false);
   DECL_GFX_PREF(Once, "gfx.e10s.hide-plugins-for-scroll",      HidePluginsForScroll, bool, true);
   DECL_GFX_PREF(Live, "gfx.layerscope.enabled",                LayerScopeEnabled, bool, false);
   DECL_GFX_PREF(Live, "gfx.layerscope.port",                   LayerScopePort, int32_t, 23456);
   // Note that        "gfx.logging.level" is defined in Logging.h.
   DECL_GFX_PREF(Live, "gfx.logging.level",                     GfxLoggingLevel, int32_t, mozilla::gfx::LOG_DEFAULT);
   DECL_GFX_PREF(Once, "gfx.logging.crash.length",              GfxLoggingCrashLength, uint32_t, 16);
--- a/gfx/thebes/gfxUserFontSet.cpp
+++ b/gfx/thebes/gfxUserFontSet.cpp
@@ -176,25 +176,35 @@ gfxUserFontEntry::CreateFontInstance(con
 
 class gfxOTSContext : public ots::OTSContext {
 public:
     explicit gfxOTSContext(gfxUserFontEntry* aUserFontEntry)
         : mUserFontEntry(aUserFontEntry)
     {
         // Whether to apply OTS validation to OpenType Layout tables
         mCheckOTLTables = gfxPrefs::ValidateOTLTables();
+        // Whether to preserve Variation tables in downloaded fonts
+        mKeepVariationTables = gfxPrefs::KeepVariationTables();
     }
 
     virtual ots::TableAction GetTableAction(uint32_t aTag) override {
         // Preserve Graphite, color glyph and SVG tables,
-        // and possibly OTL tables (depending on pref)
+        // and possibly OTL and Variation tables (depending on prefs)
         if ((!mCheckOTLTables &&
              (aTag == TRUETYPE_TAG('G', 'D', 'E', 'F') ||
               aTag == TRUETYPE_TAG('G', 'P', 'O', 'S') ||
               aTag == TRUETYPE_TAG('G', 'S', 'U', 'B'))) ||
+            (mKeepVariationTables &&
+             (aTag == TRUETYPE_TAG('a', 'v', 'a', 'r') ||
+              aTag == TRUETYPE_TAG('c', 'v', 'a', 'r') ||
+              aTag == TRUETYPE_TAG('f', 'v', 'a', 'r') ||
+              aTag == TRUETYPE_TAG('g', 'v', 'a', 'r') ||
+              aTag == TRUETYPE_TAG('H', 'V', 'A', 'R') ||
+              aTag == TRUETYPE_TAG('M', 'V', 'A', 'R') ||
+              aTag == TRUETYPE_TAG('V', 'V', 'A', 'R'))) ||
             aTag == TRUETYPE_TAG('S', 'i', 'l', 'f') ||
             aTag == TRUETYPE_TAG('S', 'i', 'l', 'l') ||
             aTag == TRUETYPE_TAG('G', 'l', 'o', 'c') ||
             aTag == TRUETYPE_TAG('G', 'l', 'a', 't') ||
             aTag == TRUETYPE_TAG('F', 'e', 'a', 't') ||
             aTag == TRUETYPE_TAG('S', 'V', 'G', ' ') ||
             aTag == TRUETYPE_TAG('C', 'O', 'L', 'R') ||
             aTag == TRUETYPE_TAG('C', 'P', 'A', 'L')) {
@@ -224,16 +234,17 @@ public:
 
         mUserFontEntry->mFontSet->LogMessage(mUserFontEntry, msg.get());
     }
 
 private:
     gfxUserFontEntry* mUserFontEntry;
     nsTHashtable<nsCStringHashKey> mWarningsIssued;
     bool mCheckOTLTables;
+    bool mKeepVariationTables;
 };
 
 // Call the OTS library to sanitize an sfnt before attempting to use it.
 // Returns a newly-allocated block, or nullptr in case of fatal errors.
 const uint8_t*
 gfxUserFontEntry::SanitizeOpenTypeData(const uint8_t* aData,
                                        uint32_t       aLength,
                                        uint32_t&      aSaneLength,
--- a/intl/locale/LocaleService.cpp
+++ b/intl/locale/LocaleService.cpp
@@ -1,16 +1,15 @@
 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "LocaleService.h"
 
-#include "jsapi.h"
 #include "mozilla/ClearOnShutdown.h"
 #include "mozilla/Services.h"
 #include "nsIObserverService.h"
 #include "nsIToolkitChromeRegistry.h"
 
 using namespace mozilla::intl;
 
 NS_IMPL_ISUPPORTS(LocaleService, mozILocaleService)
@@ -74,35 +73,29 @@ LocaleService::Refresh()
     }
   }
 }
 
 /**
  * mozILocaleService methods
  */
 NS_IMETHODIMP
-LocaleService::GetAppLocales(JSContext* aCtx, JS::MutableHandleValue aRetVal)
+LocaleService::GetAppLocales(uint32_t* aCount, char*** aOutArray)
 {
   if (mAppLocales.IsEmpty()) {
     ReadAppLocales(mAppLocales);
   }
 
-  uint32_t appLocalesNum = mAppLocales.Length();
-
-  JS::RootedObject locales(aCtx, JS_NewArrayObject(aCtx, appLocalesNum));
-  JS::Rooted<JS::Value> value(aCtx);
+  *aCount = mAppLocales.Length();
+  *aOutArray = static_cast<char**>(moz_xmalloc(*aCount * sizeof(char*)));
 
-  for (size_t i = 0; i < appLocalesNum; i++) {
-    const nsCString& loc = mAppLocales[i];
-    JSString* str = JS_NewStringCopyN(aCtx, loc.get(), loc.Length());
-    value.setString(str);
-    JS_DefineElement(aCtx, locales, i, value, JSPROP_ENUMERATE);
+  for (uint32_t i = 0; i < *aCount; i++) {
+    (*aOutArray)[i] = moz_xstrdup(mAppLocales[i].get());
   }
 
-  aRetVal.setObject(*locales);
   return NS_OK;
 }
 
 NS_IMETHODIMP
 LocaleService::GetAppLocale(nsACString& aRetVal)
 {
   if (mAppLocales.IsEmpty()) {
     ReadAppLocales(mAppLocales);
--- a/intl/locale/mozILocaleService.idl
+++ b/intl/locale/mozILocaleService.idl
@@ -23,17 +23,18 @@ interface mozILocaleService : nsISupport
    * used for all APIs that accept list of locales, like ECMA402 and L10n APIs.
    *
    * This API always returns at least one locale.
    *
    * Example: ["en-US", "de", "pl", "sr-Cyrl", "zh-Hans-HK"]
    *
    * (See LocaleService.h for a more C++-friendly version of this.)
    */
-  [implicit_jscontext] jsval getAppLocales();
+  void getAppLocales([optional] out unsigned long aCount,
+                     [retval, array, size_is(aCount)] out string aLocales);
 
   /**
    * Returns the best locale that the application should be localized to.
    *
    * The result is a valid locale ID and it should be
    * used for all APIs that do not handle language negotiation.
    *
    * Where possible, getAppLocales() should be preferred over this API and
--- a/js/src/builtin/ModuleObject.cpp
+++ b/js/src/builtin/ModuleObject.cpp
@@ -325,17 +325,17 @@ ModuleNamespaceObject::addBinding(JSCont
     RootedId exportedNameId(cx, AtomToId(exportedName));
     RootedId localNameId(cx, AtomToId(localName));
     return bindings->putNew(cx, exportedNameId, environment, localNameId);
 }
 
 const char ModuleNamespaceObject::ProxyHandler::family = 0;
 
 ModuleNamespaceObject::ProxyHandler::ProxyHandler()
-  : BaseProxyHandler(&family, true)
+  : BaseProxyHandler(&family, false)
 {}
 
 bool
 ModuleNamespaceObject::ProxyHandler::getPrototype(JSContext* cx, HandleObject proxy,
                                                   MutableHandleObject protop) const
 {
     protop.set(nullptr);
     return true;
@@ -433,17 +433,18 @@ ModuleNamespaceObject::ProxyHandler::def
 
 bool
 ModuleNamespaceObject::ProxyHandler::has(JSContext* cx, HandleObject proxy, HandleId id,
                                          bool* bp) const
 {
     Rooted<ModuleNamespaceObject*> ns(cx, &proxy->as<ModuleNamespaceObject>());
     if (JSID_IS_SYMBOL(id)) {
         Rooted<JS::Symbol*> symbol(cx, JSID_TO_SYMBOL(id));
-        return symbol == cx->wellKnownSymbols().toStringTag;
+        *bp = symbol == cx->wellKnownSymbols().toStringTag;
+        return true;
     }
 
     *bp = ns->bindings().has(id);
     return true;
 }
 
 bool
 ModuleNamespaceObject::ProxyHandler::get(JSContext* cx, HandleObject proxy, HandleValue receiver,
@@ -452,17 +453,18 @@ ModuleNamespaceObject::ProxyHandler::get
     Rooted<ModuleNamespaceObject*> ns(cx, &proxy->as<ModuleNamespaceObject>());
     if (JSID_IS_SYMBOL(id)) {
         Rooted<JS::Symbol*> symbol(cx, JSID_TO_SYMBOL(id));
         if (symbol == cx->wellKnownSymbols().toStringTag) {
             vp.setString(cx->names().Module);
             return true;
         }
 
-        return false;
+        vp.setUndefined();
+        return true;
     }
 
     ModuleEnvironmentObject* env;
     Shape* shape;
     if (!ns->bindings().lookup(id, &env, &shape))
         return false;
 
     RootedValue value(cx, env->getSlot(shape->slot()));
--- a/js/src/gc/NurseryAwareHashMap.h
+++ b/js/src/gc/NurseryAwareHashMap.h
@@ -65,171 +65,101 @@ class UnsafeBareReadBarriered : public R
 template <typename Key,
           typename Value,
           typename HashPolicy = DefaultHasher<Key>,
           typename AllocPolicy = TempAllocPolicy>
 class NurseryAwareHashMap
 {
     using BarrieredValue = detail::UnsafeBareReadBarriered<Value>;
     using MapType = GCRekeyableHashMap<Key, BarrieredValue, HashPolicy, AllocPolicy>;
-
-    // Contains entries that have a nursery-allocated key or value (or both).
-    MapType nurseryMap_;
+    MapType map;
 
-    // All entries in this map have a tenured key and value.
-    MapType tenuredMap_;
-
-    // Keys and values usually have the same lifetime (for the WrapperMap we
-    // ensure this when we allocate the wrapper object). If this flag is set,
-    // it means nurseryMap_ contains a tenured key with a nursery allocated
-    // value.
-    bool nurseryMapContainsTenuredKeys_;
+    // Keep a list of all keys for which JS::GCPolicy<Key>::isTenured is false.
+    // This lets us avoid a full traveral of the map on each minor GC, keeping
+    // the minor GC times proportional to the nursery heap size.
+    Vector<Key, 0, AllocPolicy> nurseryEntries;
 
   public:
     using Lookup = typename MapType::Lookup;
-
-    class Ptr {
-        friend class NurseryAwareHashMap;
-
-        typename MapType::Ptr ptr_;
-        bool isNurseryMap_;
-
-      public:
-        Ptr(typename MapType::Ptr ptr, bool isNurseryMap)
-          : ptr_(ptr), isNurseryMap_(isNurseryMap)
-        {}
+    using Ptr = typename MapType::Ptr;
+    using Range = typename MapType::Range;
 
-        const typename MapType::Entry& operator*() const { return *ptr_; }
-        const typename MapType::Entry* operator->() const { return &*ptr_; }
-
-        bool found() const { return ptr_.found(); }
-        explicit operator bool() const { return bool(ptr_); }
-    };
+    explicit NurseryAwareHashMap(AllocPolicy a = AllocPolicy()) : map(a) {}
 
-    explicit NurseryAwareHashMap(AllocPolicy a = AllocPolicy())
-      : nurseryMap_(a), tenuredMap_(a), nurseryMapContainsTenuredKeys_(false)
-    {}
-
-    MOZ_MUST_USE bool init(uint32_t len = 16) {
-        return nurseryMap_.init(len) && tenuredMap_.init(len);
-    }
-
-    bool empty() const { return nurseryMap_.empty() && tenuredMap_.empty(); }
+    MOZ_MUST_USE bool init(uint32_t len = 16) { return map.init(len); }
 
-    Ptr lookup(const Lookup& l) const {
-        if (JS::GCPolicy<Key>::isTenured(l)) {
-            // If we find the key in the tenuredMap_, we're done. If we don't
-            // find it there and we know nurseryMap_ contains tenured keys
-            // (hopefully uncommon), we have to try nurseryMap_ as well.
-            typename MapType::Ptr p = tenuredMap_.lookup(l);
-            if (p || !nurseryMapContainsTenuredKeys_)
-                return Ptr(p, /* isNurseryMap = */ false);
-        }
-        return Ptr(nurseryMap_.lookup(l), /* isNurseryMap = */ true);
-    }
-
-    void remove(Ptr p) {
-        if (p.isNurseryMap_)
-            nurseryMap_.remove(p.ptr_);
-        else
-            tenuredMap_.remove(p.ptr_);
-    }
-
-    class Enum {
-        // First iterate over the nursery map. When nurseryEnum_ becomes
-        // empty() we switch to tenuredEnum_.
-        typename MapType::Enum nurseryEnum_;
-        typename MapType::Enum tenuredEnum_;
-
-        const typename MapType::Enum& currentEnum() const {
-            return nurseryEnum_.empty() ? tenuredEnum_ : nurseryEnum_;
-        }
-        typename MapType::Enum& currentEnum() {
-            return nurseryEnum_.empty() ? tenuredEnum_ : nurseryEnum_;
-        }
-
-      public:
-        explicit Enum(NurseryAwareHashMap& namap)
-          : nurseryEnum_(namap.nurseryMap_), tenuredEnum_(namap.tenuredMap_)
-        {}
-
-        typename MapType::Entry& front() const { return currentEnum().front(); }
-        void popFront() { currentEnum().popFront(); }
-        void removeFront() { currentEnum().removeFront(); }
-
-        bool empty() const { return nurseryEnum_.empty() && tenuredEnum_.empty(); }
+    bool empty() const { return map.empty(); }
+    Ptr lookup(const Lookup& l) const { return map.lookup(l); }
+    void remove(Ptr p) { map.remove(p); }
+    Range all() const { return map.all(); }
+    struct Enum : public MapType::Enum {
+        explicit Enum(NurseryAwareHashMap& namap) : MapType::Enum(namap.map) {}
     };
-
     size_t sizeOfExcludingThis(mozilla::MallocSizeOf mallocSizeOf) const {
-        size_t size = nurseryMap_.sizeOfExcludingThis(mallocSizeOf);
-        size += tenuredMap_.sizeOfExcludingThis(mallocSizeOf);
-        return size;
+        return map.sizeOfExcludingThis(mallocSizeOf);
     }
     size_t sizeOfIncludingThis(mozilla::MallocSizeOf mallocSizeOf) const {
-        size_t size = nurseryMap_.sizeOfIncludingThis(mallocSizeOf);
-        size += tenuredMap_.sizeOfIncludingThis(mallocSizeOf);
-        return size;
-    }
-
-    MOZ_MUST_USE bool putNew(const Key& k, const Value& v) {
-        MOZ_ASSERT(!tenuredMap_.has(k));
-        MOZ_ASSERT(!nurseryMap_.has(k));
-
-        bool tenuredKey = JS::GCPolicy<Key>::isTenured(k);
-        if (tenuredKey && JS::GCPolicy<Value>::isTenured(v))
-            return tenuredMap_.putNew(k, v);
-
-        if (tenuredKey)
-            nurseryMapContainsTenuredKeys_ = true;
-
-        return nurseryMap_.putNew(k, v);
+        return map.sizeOfIncludingThis(mallocSizeOf);
     }
 
     MOZ_MUST_USE bool put(const Key& k, const Value& v) {
-        // For simplicity, just remove the entry and forward to putNew for now.
-        // Performance-sensitive callers should prefer putNew.
-        if (Ptr p = lookup(k))
-            remove(p);
-        return putNew(k, v);
+        auto p = map.lookupForAdd(k);
+        if (p) {
+            if (!JS::GCPolicy<Key>::isTenured(k) || !JS::GCPolicy<Value>::isTenured(v)) {
+                if (!nurseryEntries.append(k))
+                    return false;
+            }
+            p->value() = v;
+            return true;
+        }
+
+        bool ok = map.add(p, k, v);
+        if (!ok)
+            return false;
+
+        if (!JS::GCPolicy<Key>::isTenured(k) || !JS::GCPolicy<Value>::isTenured(v)) {
+            if (!nurseryEntries.append(k)) {
+                map.remove(k);
+                return false;
+            }
+        }
+
+        return true;
     }
 
     void sweepAfterMinorGC(JSTracer* trc) {
-        for (typename MapType::Enum e(nurseryMap_); !e.empty(); e.popFront()) {
-            auto& key = e.front().key();
-            auto& value = e.front().value();
+        for (auto& key : nurseryEntries) {
+            auto p = map.lookup(key);
+            if (!p)
+                continue;
 
             // Drop the entry if the value is not marked.
-            if (JS::GCPolicy<BarrieredValue>::needsSweep(&value))
+            if (JS::GCPolicy<BarrieredValue>::needsSweep(&p->value())) {
+                map.remove(key);
                 continue;
+            }
 
-            // Insert the key/value in the tenured map, if the value is still
-            // needed.
+            // Update and relocate the key, if the value is still needed.
             //
-            // Note that this currently assumes that each Value will contain a
+            // Note that this currently assumes that all Value will contain a
             // strong reference to Key, as per its use as the
             // CrossCompartmentWrapperMap. We may need to make the following
             // behavior more dynamic if we use this map in other nursery-aware
             // contexts.
-
-            Key keyCopy(key);
-            mozilla::DebugOnly<bool> sweepKey = JS::GCPolicy<Key>::needsSweep(&keyCopy);
+            Key copy(key);
+            mozilla::DebugOnly<bool> sweepKey = JS::GCPolicy<Key>::needsSweep(&copy);
             MOZ_ASSERT(!sweepKey);
-
-            AutoEnterOOMUnsafeRegion oomUnsafe;
-            if (!tenuredMap_.putNew(keyCopy, value))
-                oomUnsafe.crash("NurseryAwareHashMap sweepAfterMinorGC");
+            map.rekeyIfMoved(key, copy);
         }
-
-        nurseryMap_.clear();
-        nurseryMapContainsTenuredKeys_ = false;
+        nurseryEntries.clear();
     }
 
     void sweep() {
-        MOZ_ASSERT(nurseryMap_.empty());
-        tenuredMap_.sweep();
+        MOZ_ASSERT(nurseryEntries.empty());
+        map.sweep();
     }
 };
 
 } // namespace js
 
 namespace JS {
 template <typename T>
 struct GCPolicy<js::detail::UnsafeBareReadBarriered<T>>
new file mode 100644
--- /dev/null
+++ b/js/src/jit-test/tests/gc/bug-1340010.js
@@ -0,0 +1,24 @@
+if (helperThreadCount() === 0)
+    quit();
+if (!('deterministicgc' in this))
+    quit();
+
+gc();
+function weighted(wa) {
+    var a = [];
+    for (var i = 0; i < 30; ++i) {
+        for (var j = 0; j < 20; ++j) {
+            a.push(0);
+        }
+    }
+    return a;
+}
+var statementMakers = weighted();
+if (typeof oomTest == "function") {
+    statementMakers = statementMakers.concat([function (d, b) {
+        return "oomTest(" + makeFunction(d - 1, b) + ")";
+    }, ]);
+}
+deterministicgc(true);
+startgc(9469, "shrinking");
+offThreadCompileScript("");
--- a/js/src/jsapi-tests/testGCGrayMarking.cpp
+++ b/js/src/jsapi-tests/testGCGrayMarking.cpp
@@ -1,57 +1,85 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 * vim: set ts=8 sts=4 et sw=4 tw=99:
 */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
+#include "jsweakmap.h"
+
 #include "gc/Heap.h"
 #include "gc/Zone.h"
 
 #include "jsapi-tests/tests.h"
 
 using namespace js;
 using namespace js::gc;
 
+namespace JS {
+
+template <>
+struct DeletePolicy<js::ObjectWeakMap> : public js::GCManagedDeletePolicy<js::ObjectWeakMap>
+{};
+
+template <>
+struct MapTypeToRootKind<js::ObjectWeakMap*> {
+    static const JS::RootKind kind = JS::RootKind::Traceable;
+};
+
+template <>
+struct GCPolicy<js::ObjectWeakMap*> {
+    static void trace(JSTracer* trc, js::ObjectWeakMap** tp, const char* name) {
+        (*tp)->trace(trc);
+    }
+};
+
+} // namespace JS
+
+
 class AutoNoAnalysisForTest
 {
   public:
     AutoNoAnalysisForTest() {}
 } JS_HAZ_GC_SUPPRESSED;
 
 BEGIN_TEST(testGCGrayMarking)
 {
     AutoNoAnalysisForTest disableAnalysis;
 
     CHECK(InitGlobals());
     JSAutoCompartment ac(cx, global1);
 
     InitGrayRootTracer();
 
-    bool ok = TestMarking() && TestWeakMaps() && TestCCWs();
+    bool ok =
+        TestMarking() &&
+        TestWeakMaps() &&
+        TestUnassociatedWeakMaps() &&
+        TestWatchpoints() &&
+        TestCCWs();
 
     global1 = nullptr;
     global2 = nullptr;
     RemoveGrayRootTracer();
 
     return ok;
 }
 
 bool
 TestMarking()
 {
-    JSObject* sameTarget = AllocTargetObject();
+    JSObject* sameTarget = AllocPlainObject();
     CHECK(sameTarget);
 
     JSObject* sameSource = AllocSameCompartmentSourceObject(sameTarget);
     CHECK(sameSource);
 
-    JSObject* crossTarget = AllocTargetObject();
+    JSObject* crossTarget = AllocPlainObject();
     CHECK(crossTarget);
 
     JSObject* crossSource = GetCrossCompartmentWrapper(crossTarget);
     CHECK(crossSource);
 
     // Test GC with black roots marks objects black.
 
     JS::RootedObject blackRoot1(cx, sameSource);
@@ -85,18 +113,18 @@ TestMarking()
 
     CHECK(IsMarkedGray(sameSource));
     CHECK(IsMarkedGray(crossSource));
     CHECK(IsMarkedGray(sameTarget));
     CHECK(IsMarkedGray(crossTarget));
 
     // Test ExposeToActiveJS marks gray objects black.
 
-    ExposeGCThingToActiveJS(JS::GCCellPtr(sameSource));
-    ExposeGCThingToActiveJS(JS::GCCellPtr(crossSource));
+    JS::ExposeObjectToActiveJS(sameSource);
+    JS::ExposeObjectToActiveJS(crossSource);
     CHECK(IsMarkedBlack(sameSource));
     CHECK(IsMarkedBlack(crossSource));
     CHECK(IsMarkedBlack(sameTarget));
     CHECK(IsMarkedBlack(crossTarget));
 
     // Test a zone GC with black roots marks gray object in other zone black.
 
     JS_GC(cx);
@@ -105,29 +133,34 @@ TestMarking()
     CHECK(IsMarkedGray(crossTarget));
 
     blackRoot1 = crossSource;
     CHECK(ZoneGC(crossSource->zone()));
 
     CHECK(IsMarkedBlack(crossSource));
     CHECK(IsMarkedBlack(crossTarget));
 
+    blackRoot1 = nullptr;
+    blackRoot2 = nullptr;
+    grayRoots.grayRoot1 = nullptr;
+    grayRoots.grayRoot2 = nullptr;
+
     return true;
 }
 
 bool
 TestWeakMaps()
 {
     JSObject* weakMap = JS::NewWeakMapObject(cx);
     CHECK(weakMap);
 
     JSObject* key = AllocWeakmapKeyObject();
     CHECK(key);
 
-    JSObject* value = AllocWeakmapKeyObject();
+    JSObject* value = AllocPlainObject();
     CHECK(value);
 
     {
         JS::RootedObject rootedMap(cx, weakMap);
         JS::RootedObject rootedKey(cx, key);
         JS::RootedValue rootedValue(cx, ObjectValue(*value));
         CHECK(SetWeakMapEntry(cx, rootedMap, rootedKey, rootedValue));
     }
@@ -271,23 +304,186 @@ TestWeakMaps()
     blackRoot2 = nullptr;
     grayRoots.grayRoot1 = weakMap;
     grayRoots.grayRoot2 = key;
     JS_GC(cx);
     CHECK(IsMarkedGray(key));
     CHECK(IsMarkedGray(weakMap));
     CHECK(IsMarkedGray(value));
 
+    blackRoot1 = nullptr;
+    blackRoot2 = nullptr;
+    grayRoots.grayRoot1 = nullptr;
+    grayRoots.grayRoot2 = nullptr;
+
+    return true;
+}
+
+bool
+TestUnassociatedWeakMaps()
+{
+    // Make a weakmap that's not associated with a JSObject.
+    auto weakMap = cx->make_unique<ObjectWeakMap>(cx);
+    CHECK(weakMap);
+    CHECK(weakMap->init());
+
+    // Make sure this gets traced during GC.
+    Rooted<ObjectWeakMap*> rootMap(cx, weakMap.get());
+
+    JSObject* key = AllocWeakmapKeyObject();
+    CHECK(key);
+
+    JSObject* value = AllocPlainObject();
+    CHECK(value);
+
+    CHECK(weakMap->add(cx, key, value));
+
+    // Test the value of a weakmap entry is marked gray by GC if the
+    // key is marked gray.
+
+    grayRoots.grayRoot1 = key;
+    JS_GC(cx);
+    CHECK(IsMarkedGray(key));
+    CHECK(IsMarkedGray(value));
+
+    // Test the value of a weakmap entry is marked gray by GC if the key is marked gray.
+
+    grayRoots.grayRoot1 = key;
+    grayRoots.grayRoot2 = nullptr;
+    JS_GC(cx);
+    CHECK(IsMarkedGray(key));
+    CHECK(IsMarkedGray(value));
+
+    // Test the value of a weakmap entry is marked black by GC if the key is
+    // marked black.
+
+    JS::RootedObject blackRoot(cx);
+    blackRoot = key;
+    grayRoots.grayRoot1 = nullptr;
+    grayRoots.grayRoot2 = nullptr;
+    JS_GC(cx);
+    CHECK(IsMarkedBlack(key));
+    CHECK(IsMarkedBlack(value));
+
+    // Test that a weakmap key is marked gray if it has a gray delegate.
+
+    JSObject* delegate = AllocDelegateForKey(key);
+    blackRoot = nullptr;
+    grayRoots.grayRoot1 = delegate;
+    grayRoots.grayRoot2 = nullptr;
+    JS_GC(cx);
+    CHECK(IsMarkedGray(delegate));
+    CHECK(IsMarkedGray(key));
+    CHECK(IsMarkedGray(value));
+
+    // Test that a weakmap key is marked black if it has a black delegate.
+
+    blackRoot = delegate;
+    grayRoots.grayRoot1 = nullptr;
+    grayRoots.grayRoot2 = nullptr;
+    JS_GC(cx);
+    CHECK(IsMarkedBlack(delegate));
+    CHECK(IsMarkedBlack(key));
+    CHECK(IsMarkedBlack(value));
+
+    blackRoot = delegate;
+    grayRoots.grayRoot1 = key;
+    grayRoots.grayRoot2 = nullptr;
+    JS_GC(cx);
+    CHECK(IsMarkedBlack(delegate));
+    CHECK(IsMarkedBlack(key));
+    CHECK(IsMarkedBlack(value));
+
+    // Test what happens if there is a delegate but it is not marked for both
+    // black and gray cases.
+
+    delegate = nullptr;
+    blackRoot = key;
+    grayRoots.grayRoot1 = nullptr;
+    grayRoots.grayRoot2 = nullptr;
+    JS_GC(cx);
+    CHECK(IsMarkedBlack(key));
+    CHECK(IsMarkedBlack(value));
+
+    CHECK(AllocDelegateForKey(key));
+    blackRoot = nullptr;
+    grayRoots.grayRoot1 = key;
+    grayRoots.grayRoot2 = nullptr;
+    JS_GC(cx);
+    CHECK(IsMarkedGray(key));
+    CHECK(IsMarkedGray(value));
+
+    blackRoot = nullptr;
+    grayRoots.grayRoot1 = nullptr;
+    grayRoots.grayRoot2 = nullptr;
+
+    return true;
+}
+
+bool
+TestWatchpoints()
+{
+    JSObject* watched = AllocPlainObject();
+    CHECK(watched);
+
+    JSObject* closure = AllocPlainObject();
+    CHECK(closure);
+
+    {
+        RootedObject obj(cx, watched);
+        RootedObject callable(cx, closure);
+        RootedId id(cx, INT_TO_JSID(0));
+        CHECK(JS_DefinePropertyById(cx, obj, id, JS::TrueHandleValue, 0));
+        CHECK(js::WatchGuts(cx, obj, id, callable));
+    }
+
+    // Test that a watchpoint marks the callable black if the watched object is
+    // black.
+
+    RootedObject blackRoot(cx, watched);
+    grayRoots.grayRoot1 = nullptr;
+    JS_GC(cx);
+    CHECK(IsMarkedBlack(watched));
+    CHECK(IsMarkedBlack(closure));
+
+    // Test that a watchpoint marks the callable gray if the watched object is
+    // gray.
+
+    blackRoot = nullptr;
+    grayRoots.grayRoot1 = watched;
+    JS_GC(cx);
+    CHECK(IsMarkedGray(watched));
+    CHECK(IsMarkedGray(closure));
+
+    // Test that ExposeToActiveJS *doesn't* unmark through watchpoints.  We
+    // could make this work, but it's currently handled by the CC fixup.
+
+    CHECK(IsMarkedGray(watched));
+    CHECK(IsMarkedGray(closure));
+    JS::ExposeObjectToActiveJS(watched);
+    CHECK(IsMarkedBlack(watched));
+    CHECK(IsMarkedGray(closure));
+
+    {
+        RootedObject obj(cx, watched);
+        RootedId id(cx, INT_TO_JSID(0));
+        CHECK(js::UnwatchGuts(cx, obj, id));
+    }
+
+    blackRoot = nullptr;
+    grayRoots.grayRoot1 = nullptr;
+    grayRoots.grayRoot2 = nullptr;
+
     return true;
 }
 
 bool
 TestCCWs()
 {
-    RootedObject target(cx, AllocTargetObject());
+    RootedObject target(cx, AllocPlainObject());
     CHECK(target);
 
     // Test getting a new wrapper doesn't return a gray wrapper.
 
     JSObject* wrapper = GetCrossCompartmentWrapper(target);
     CHECK(wrapper);
     CHECK(!IsMarkedGray(wrapper));
 
@@ -318,16 +514,17 @@ TestCCWs()
     CHECK(!IsMarkedBlack(wrapper));
     CHECK(wrapper->zone()->isGCMarkingBlack());
 
     CHECK(GetCrossCompartmentWrapper(target) == wrapper);
     CHECK(IsMarkedBlack(wrapper));
 
     JS::FinishIncrementalGC(cx, JS::gcreason::API);
 
+    target = nullptr;
     grayRoots.grayRoot1 = nullptr;
     grayRoots.grayRoot2 = nullptr;
 
     return true;
 }
 
 JS::PersistentRootedObject global1;
 JS::PersistentRootedObject global2;
@@ -372,17 +569,17 @@ TraceGrayRoots(JSTracer* trc, void* data
     auto grayRoots = static_cast<GrayRoots*>(data);
     if (grayRoots->grayRoot1)
         UnsafeTraceManuallyBarrieredEdge(trc, &grayRoots->grayRoot1, "gray root 1");
     if (grayRoots->grayRoot2)
         UnsafeTraceManuallyBarrieredEdge(trc, &grayRoots->grayRoot2, "gray root 2");
 }
 
 JSObject*
-AllocTargetObject()
+AllocPlainObject()
 {
     JS::RootedObject obj(cx, JS_NewPlainObject(cx));
     EvictNursery();
 
     MOZ_ASSERT(obj->compartment() == global1->compartment());
     return obj;
 }
 
--- a/js/src/jsapi.cpp
+++ b/js/src/jsapi.cpp
@@ -921,21 +921,18 @@ JS_TransplantObject(JSContext* cx, Handl
     if (origobj->compartment() != destination) {
         RootedObject newIdentityWrapper(cx, newIdentity);
         AutoCompartment ac(cx, origobj);
         if (!JS_WrapObject(cx, &newIdentityWrapper))
             MOZ_CRASH();
         MOZ_ASSERT(Wrapper::wrappedObject(newIdentityWrapper) == newIdentity);
         if (!JSObject::swap(cx, origobj, newIdentityWrapper))
             MOZ_CRASH();
-        if (!origobj->compartment()->putWrapperMaybeUpdate(cx, CrossCompartmentKey(newIdentity),
-                                                           origv))
-        {
+        if (!origobj->compartment()->putWrapper(cx, CrossCompartmentKey(newIdentity), origv))
             MOZ_CRASH();
-        }
     }
 
     // The new identity object might be one of several things. Return it to avoid
     // ambiguity.
     return newIdentity;
 }
 
 /*
--- a/js/src/jscompartment.cpp
+++ b/js/src/jscompartment.cpp
@@ -246,33 +246,18 @@ JSCompartment::checkWrapperMapAfterMovin
 
         WrapperMap::Ptr ptr = crossCompartmentWrappers.lookup(e.front().key());
         MOZ_RELEASE_ASSERT(ptr.found() && &*ptr == &e.front());
     }
 }
 #endif
 
 bool
-JSCompartment::putNewWrapper(JSContext* cx, const CrossCompartmentKey& wrapped,
-                             const js::Value& wrapper)
-{
-    MOZ_ASSERT(wrapped.is<JSString*>() == wrapper.isString());
-    MOZ_ASSERT_IF(!wrapped.is<JSString*>(), wrapper.isObject());
-
-    if (!crossCompartmentWrappers.putNew(wrapped, wrapper)) {
-        ReportOutOfMemory(cx);
-        return false;
-    }
-
-    return true;
-}
-
-bool
-JSCompartment::putWrapperMaybeUpdate(JSContext* cx, const CrossCompartmentKey& wrapped,
-                                     const js::Value& wrapper)
+JSCompartment::putWrapper(JSContext* cx, const CrossCompartmentKey& wrapped,
+                          const js::Value& wrapper)
 {
     MOZ_ASSERT(wrapped.is<JSString*>() == wrapper.isString());
     MOZ_ASSERT_IF(!wrapped.is<JSString*>(), wrapper.isObject());
 
     if (!crossCompartmentWrappers.put(wrapped, wrapper)) {
         ReportOutOfMemory(cx);
         return false;
     }
@@ -353,17 +338,17 @@ JSCompartment::wrap(JSContext* cx, Mutab
         strp.set(p->value().get().toString());
         return true;
     }
 
     /* No dice. Make a copy, and cache it. */
     JSString* copy = CopyStringPure(cx, str);
     if (!copy)
         return false;
-    if (!putNewWrapper(cx, CrossCompartmentKey(key), StringValue(copy)))
+    if (!putWrapper(cx, CrossCompartmentKey(key), StringValue(copy)))
         return false;
 
     strp.set(copy);
     return true;
 }
 
 bool
 JSCompartment::getNonWrapperObjectForCurrentCompartment(JSContext* cx, MutableHandleObject obj)
@@ -443,17 +428,17 @@ JSCompartment::getOrCreateWrapper(JSCont
     RootedObject wrapper(cx, wrap(cx, existing, obj));
     if (!wrapper)
         return false;
 
     // We maintain the invariant that the key in the cross-compartment wrapper
     // map is always directly wrapped by the value.
     MOZ_ASSERT(Wrapper::wrappedObject(wrapper) == &key.get().toObject());
 
-    if (!putNewWrapper(cx, CrossCompartmentKey(key), ObjectValue(*wrapper))) {
+    if (!putWrapper(cx, CrossCompartmentKey(key), ObjectValue(*wrapper))) {
         // Enforce the invariant that all cross-compartment wrapper object are
         // in the map by nuking the wrapper if we couldn't add it.
         // Unfortunately it's possible for the wrapper to still be marked if we
         // took this path, for example if the object metadata callback stashes a
         // reference to it.
         if (wrapper->is<CrossCompartmentWrapperObject>())
             NukeCrossCompartmentWrapper(cx, wrapper);
         return false;
--- a/js/src/jscompartment.h
+++ b/js/src/jscompartment.h
@@ -474,16 +474,19 @@ struct JSCompartment
 
   private:
     const js::AllocationMetadataBuilder *allocationMetadataBuilder;
 
     js::SavedStacks              savedStacks_;
 
     js::WrapperMap               crossCompartmentWrappers;
 
+    using CCKeyVector = mozilla::Vector<js::CrossCompartmentKey, 0, js::SystemAllocPolicy>;
+    CCKeyVector                  nurseryCCKeys;
+
     // The global environment record's [[VarNames]] list that contains all
     // names declared using FunctionDeclaration, GeneratorDeclaration, and
     // VariableDeclaration declarations in global code in this compartment.
     // Names are only removed from this list by a |delete IdentifierReference|
     // that successfully removes that global property.
     JS::GCHashSet<JSAtom*,
                   js::DefaultHasher<JSAtom*>,
                   js::SystemAllocPolicy> varNames_;
@@ -637,20 +640,18 @@ struct JSCompartment
     MOZ_MUST_USE inline bool wrap(JSContext* cx, JS::MutableHandleValue vp);
 
     MOZ_MUST_USE bool wrap(JSContext* cx, js::MutableHandleString strp);
     MOZ_MUST_USE bool wrap(JSContext* cx, JS::MutableHandleObject obj);
     MOZ_MUST_USE bool wrap(JSContext* cx, JS::MutableHandle<js::PropertyDescriptor> desc);
     MOZ_MUST_USE bool wrap(JSContext* cx, JS::MutableHandle<JS::GCVector<JS::Value>> vec);
     MOZ_MUST_USE bool rewrap(JSContext* cx, JS::MutableHandleObject obj, JS::HandleObject existing);
 
-    MOZ_MUST_USE bool putNewWrapper(JSContext* cx, const js::CrossCompartmentKey& wrapped,
-                                    const js::Value& wrapper);
-    MOZ_MUST_USE bool putWrapperMaybeUpdate(JSContext* cx, const js::CrossCompartmentKey& wrapped,
-                                            const js::Value& wrapper);
+    MOZ_MUST_USE bool putWrapper(JSContext* cx, const js::CrossCompartmentKey& wrapped,
+                                 const js::Value& wrapper);
 
     js::WrapperMap::Ptr lookupWrapper(const js::Value& wrapped) const {
         return crossCompartmentWrappers.lookup(js::CrossCompartmentKey(wrapped));
     }
 
     void removeWrapper(js::WrapperMap::Ptr p) {
         crossCompartmentWrappers.remove(p);
     }
--- a/js/src/jsgc.cpp
+++ b/js/src/jsgc.cpp
@@ -6321,26 +6321,31 @@ GCRuntime::gcCycle(bool nonincrementalBy
 
     return IncrementalResult::Ok;
 }
 
 #ifdef JS_GC_ZEAL
 static bool
 IsDeterministicGCReason(JS::gcreason::Reason reason)
 {
-    if (reason > JS::gcreason::DEBUG_GC &&
-        reason != JS::gcreason::CC_FORCED && reason != JS::gcreason::SHUTDOWN_CC)
-    {
+    switch (reason) {
+      case JS::gcreason::API:
+      case JS::gcreason::DESTROY_RUNTIME:
+      case JS::gcreason::LAST_DITCH:
+      case JS::gcreason::TOO_MUCH_MALLOC:
+      case JS::gcreason::ALLOC_TRIGGER:
+      case JS::gcreason::DEBUG_GC:
+      case JS::gcreason::CC_FORCED:
+      case JS::gcreason::SHUTDOWN_CC:
+      case JS::gcreason::ABORT_GC:
+        return true;
+
+      default:
         return false;
     }
-
-    if (reason == JS::gcreason::EAGER_ALLOC_TRIGGER)
-        return false;
-
-    return true;
 }
 #endif
 
 gcstats::ZoneGCStats
 GCRuntime::scanZonesBeforeGC()
 {
     gcstats::ZoneGCStats zoneStats;
     for (ZonesIter zone(rt, WithAtoms); !zone.done(); zone.next()) {
--- a/js/src/jsobj.cpp
+++ b/js/src/jsobj.cpp
@@ -2862,17 +2862,17 @@ js::WatchGuts(JSContext* cx, JS::HandleO
 
 bool
 js::UnwatchGuts(JSContext* cx, JS::HandleObject origObj, JS::HandleId id)
 {
     // Looking in the map for an unsupported object will never hit, so we don't
     // need to check for nativeness or watchable-ness here.
     RootedObject obj(cx, ToWindowIfWindowProxy(origObj));
     if (WatchpointMap* wpmap = cx->compartment()->watchpointMap)
-        wpmap->unwatch(obj, id, nullptr, nullptr);
+        wpmap->unwatch(obj, id);
     return true;
 }
 
 bool
 js::WatchProperty(JSContext* cx, HandleObject obj, HandleId id, HandleObject callable)
 {
     if (WatchOp op = obj->getOpsWatch())
         return op(cx, obj, id, callable);
--- a/js/src/jswatchpoint.cpp
+++ b/js/src/jswatchpoint.cpp
@@ -76,30 +76,20 @@ WatchpointMap::watch(JSContext* cx, Hand
      * For generational GC, we don't need to post-barrier writes to the
      * hashtable here because we mark all watchpoints as part of root marking in
      * markAll().
      */
     return true;
 }
 
 void
-WatchpointMap::unwatch(JSObject* obj, jsid id,
-                       JSWatchPointHandler* handlerp, JSObject** closurep)
+WatchpointMap::unwatch(JSObject* obj, jsid id)
 {
-    if (Map::Ptr p = map.lookup(WatchKey(obj, id))) {
-        if (handlerp)
-            *handlerp = p->value().handler;
-        if (closurep) {
-            // Read barrier to prevent an incorrectly gray closure from escaping the
-            // watchpoint. See the comment before UnmarkGrayChildren in gc/Marking.cpp
-            JS::ExposeObjectToActiveJS(p->value().closure);
-            *closurep = p->value().closure;
-        }
+    if (Map::Ptr p = map.lookup(WatchKey(obj, id)))
         map.remove(p);
-    }
 }
 
 void
 WatchpointMap::unwatchObject(JSObject* obj)
 {
     for (Map::Enum e(map); !e.empty(); e.popFront()) {
         Map::Entry& entry = e.front();
         if (entry.key().object == obj)
--- a/js/src/jswatchpoint.h
+++ b/js/src/jswatchpoint.h
@@ -62,18 +62,17 @@ struct WatchKeyHasher
 
 class WatchpointMap {
   public:
     typedef HashMap<WatchKey, Watchpoint, WatchKeyHasher, SystemAllocPolicy> Map;
 
     bool init();
     bool watch(JSContext* cx, HandleObject obj, HandleId id,
                JSWatchPointHandler handler, HandleObject closure);
-    void unwatch(JSObject* obj, jsid id,
-                 JSWatchPointHandler* handlerp, JSObject** closurep);
+    void unwatch(JSObject* obj, jsid id);
     void unwatchObject(JSObject* obj);
     void clear();
 
     bool triggerWatchpoint(JSContext* cx, HandleObject obj, HandleId id, MutableHandleValue vp);
 
     bool markIteratively(GCMarker* marker);
     void trace(JSTracer* trc);
 
--- a/js/src/jsweakmap.h
+++ b/js/src/jsweakmap.h
@@ -397,16 +397,18 @@ class ObjectValueMap : public WeakMap<He
 class ObjectWeakMap
 {
     ObjectValueMap map;
 
   public:
     explicit ObjectWeakMap(JSContext* cx);
     bool init();
 
+    JS::Zone* zone() const { return map.zone(); }
+
     JSObject* lookup(const JSObject* obj);
     bool add(JSContext* cx, JSObject* obj, JSObject* target);
     void clear();
 
     void trace(JSTracer* trc);
     size_t sizeOfExcludingThis(mozilla::MallocSizeOf mallocSizeOf);
     size_t sizeOfIncludingThis(mozilla::MallocSizeOf mallocSizeOf) {
         return mallocSizeOf(this) + sizeOfExcludingThis(mallocSizeOf);
--- a/js/src/proxy/CrossCompartmentWrapper.cpp
+++ b/js/src/proxy/CrossCompartmentWrapper.cpp
@@ -615,21 +615,18 @@ js::RemapWrapper(JSContext* cx, JSObject
 
     // Before swapping, this wrapper came out of wrap(), which enforces the
     // invariant that the wrapper in the map points directly to the key.
     MOZ_ASSERT(Wrapper::wrappedObject(wobj) == newTarget);
 
     // Update the entry in the compartment's wrapper map to point to the old
     // wrapper, which has now been updated (via reuse or swap).
     MOZ_ASSERT(wobj->is<WrapperObject>());
-    if (!wcompartment->putWrapperMaybeUpdate(cx, CrossCompartmentKey(newTarget),
-                                             ObjectValue(*wobj)))
-    {
+    if (!wcompartment->putWrapper(cx, CrossCompartmentKey(newTarget), ObjectValue(*wobj)))
         MOZ_CRASH();
-    }
 }
 
 // Remap all cross-compartment wrappers pointing to |oldTarget| to point to
 // |newTarget|. All wrappers are recomputed.
 JS_FRIEND_API(bool)
 js::RemapAllWrappersForObject(JSContext* cx, JSObject* oldTargetArg,
                               JSObject* newTargetArg)
 {
--- a/js/src/vm/Debugger.cpp
+++ b/js/src/vm/Debugger.cpp
@@ -1133,17 +1133,17 @@ Debugger::wrapEnvironment(JSContext* cx,
             return false;
 
         if (!p.add(cx, environments, env, envobj)) {
             NukeDebuggerWrapper(envobj);
             return false;
         }
 
         CrossCompartmentKey key(object, env, CrossCompartmentKey::DebuggerEnvironment);
-        if (!object->compartment()->putNewWrapper(cx, key, ObjectValue(*envobj))) {
+        if (!object->compartment()->putWrapper(cx, key, ObjectValue(*envobj))) {
             NukeDebuggerWrapper(envobj);
             environments.remove(env);
             return false;
         }
 
         result.set(envobj);
     }
 
@@ -1220,17 +1220,17 @@ Debugger::wrapDebuggeeObject(JSContext* 
 
         if (!p.add(cx, objects, obj, dobj)) {
             NukeDebuggerWrapper(dobj);
             return false;
         }
 
         if (obj->compartment() != object->compartment()) {
             CrossCompartmentKey key(object, obj, CrossCompartmentKey::DebuggerObject);
-            if (!object->compartment()->putNewWrapper(cx, key, ObjectValue(*dobj))) {
+            if (!object->compartment()->putWrapper(cx, key, ObjectValue(*dobj))) {
                 NukeDebuggerWrapper(dobj);
                 objects.remove(obj);
                 ReportOutOfMemory(cx);
                 return false;
             }
         }
 
         result.set(dobj);
@@ -5515,17 +5515,17 @@ Debugger::wrapVariantReferent(JSContext*
         if (!wrapper)
             return nullptr;
 
         if (!p.add(cx, map, untaggedReferent, wrapper)) {
             NukeDebuggerWrapper(wrapper);
             return nullptr;
         }
 
-        if (!object->compartment()->putNewWrapper(cx, key, ObjectValue(*wrapper))) {
+        if (!object->compartment()->putWrapper(cx, key, ObjectValue(*wrapper))) {
             NukeDebuggerWrapper(wrapper);
             map.remove(untaggedReferent);
             ReportOutOfMemory(cx);
             return nullptr;
         }
 
     }
 
--- a/layout/base/nsBidiPresUtils.cpp
+++ b/layout/base/nsBidiPresUtils.cpp
@@ -128,29 +128,39 @@ GetBidiControl(nsStyleContext* aStyleCon
 
 struct MOZ_STACK_CLASS BidiParagraphData
 {
   nsAutoString        mBuffer;
   AutoTArray<char16_t, 16> mEmbeddingStack;
   AutoTArray<nsIFrame*, 16> mLogicalFrames;
   AutoTArray<nsLineBox*, 16> mLinePerFrame;
   nsDataHashtable<nsISupportsHashKey, int32_t> mContentToFrameIndex;
+  // Cached presentation context for the frames we're processing.
+  nsPresContext*      mPresContext;
   bool                mIsVisual;
   nsBidiLevel         mParaLevel;
   nsIContent*         mPrevContent;
   nsBidi              mBidiEngine;
   nsIFrame*           mPrevFrame;
+#ifdef DEBUG
+  // Only used for NOISY debug output.
+  nsBlockFrame*       mCurrentBlock;
+#endif
 
-  void Init(nsBlockFrame *aBlockFrame)
+  void Init(nsBlockFrame* aBlockFrame)
   {
     mPrevContent = nullptr;
+#ifdef DEBUG
+    mCurrentBlock = aBlockFrame;
+#endif
 
     mParaLevel = nsBidiPresUtils::BidiLevelFromStyle(aBlockFrame->StyleContext());
 
-    mIsVisual = aBlockFrame->PresContext()->IsVisualMode();
+    mPresContext = aBlockFrame->PresContext();
+    mIsVisual = mPresContext->IsVisualMode();
     if (mIsVisual) {
       /**
        * Drill up in content to detect whether this is an element that needs to
        * be rendered with logical order even on visual pages.
        *
        * We always use logical order on form controls, firstly so that text
        * entry will be in logical order, but also because visual pages were
        * written with the assumption that even if the browser had no support
@@ -337,17 +347,17 @@ struct MOZ_STACK_CLASS BidiParagraphData
   {
     // Advance aLine to the line containing aFrame
     nsIFrame* child = aFrame;
     nsIFrame* parent = nsLayoutUtils::GetParentOrPlaceholderFor(child);
     while (parent && !nsLayoutUtils::GetAsBlock(parent)) {
       child = parent;
       parent = nsLayoutUtils::GetParentOrPlaceholderFor(child);
     }
-    NS_ASSERTION (parent, "aFrame is not a descendent of aBlockFrame");
+    NS_ASSERTION (parent, "aFrame is not a descendent of a block frame");
     while (!IsFrameInCurrentLine(aLineIter, aPrevFrame, child)) {
 #ifdef DEBUG
       bool hasNext =
 #endif
         aLineIter->Next();
       NS_ASSERTION(hasNext, "Can't find frame in lines!");
       aPrevFrame = nullptr;
     }
@@ -686,36 +696,40 @@ nsBidiPresUtils::Resolve(nsBlockFrame* a
   // unicode-bidi:plaintext on a block element is handled by block frame
   // via using nsIFrame::GetWritingMode(nsIFrame*).
   char16_t ch = GetBidiOverride(aBlockFrame->StyleContext());
   if (ch != 0) {
     bpd.PushBidiControl(ch);
   }
   for (nsBlockFrame* block = aBlockFrame; block;
        block = static_cast<nsBlockFrame*>(block->GetNextContinuation())) {
+#ifdef DEBUG
+    bpd.mCurrentBlock = block;
+#endif
     block->RemoveStateBits(NS_BLOCK_NEEDS_BIDI_RESOLUTION);
-    nsBlockInFlowLineIterator lineIter(block, block->LinesBegin());
+    nsBlockInFlowLineIterator it(block, block->LinesBegin());
     bpd.mPrevFrame = nullptr;
-    TraverseFrames(aBlockFrame, &lineIter, block->PrincipalChildList().FirstChild(), &bpd);
-    // XXX what about overflow lines?
+    TraverseFrames(&it, block->PrincipalChildList().FirstChild(), &bpd);
+    nsBlockFrame::FrameLines* overflowLines = block->GetOverflowLines();
+    if (overflowLines) {
+      nsBlockInFlowLineIterator it(block, overflowLines->mLines.begin(), true);
+      TraverseFrames(&it, block->PrincipalChildList().FirstChild(), &bpd);
+    }
   }
 
   if (ch != 0) {
     bpd.PopBidiControl(ch);
   }
 
-  return ResolveParagraph(aBlockFrame, &bpd);
+  return ResolveParagraph(&bpd);
 }
 
 nsresult
-nsBidiPresUtils::ResolveParagraph(nsBlockFrame* aBlockFrame,
-                                  BidiParagraphData* aBpd)
+nsBidiPresUtils::ResolveParagraph(BidiParagraphData* aBpd)
 {
-  nsPresContext *presContext = aBlockFrame->PresContext();
-
   if (aBpd->BufferLength() < 1) {
     return NS_OK;
   }
   aBpd->mBuffer.ReplaceChar(kSeparators, kSpace);
 
   int32_t runCount;
 
   nsresult rv = aBpd->SetPara();
@@ -733,26 +747,26 @@ nsBidiPresUtils::ResolveParagraph(nsBloc
   int32_t     frameIndex     = -1;  // index to the frames in mLogicalFrames
   int32_t     frameCount     = aBpd->FrameCount();
   int32_t     contentOffset  = 0;   // offset of current frame in its content node
   bool        isTextFrame    = false;
   nsIFrame*   frame = nullptr;
   nsIContent* content = nullptr;
   int32_t     contentTextLength = 0;
 
-  FramePropertyTable *propTable = presContext->PropertyTable();
+  FramePropertyTable* propTable = aBpd->mPresContext->PropertyTable();
   nsLineBox* currentLine = nullptr;
   
 #ifdef DEBUG
 #ifdef NOISY_BIDI
-  printf("Before Resolve(), aBlockFrame=0x%p, mBuffer='%s', frameCount=%d, runCount=%d\n",
-         (void*)aBlockFrame, NS_ConvertUTF16toUTF8(aBpd->mBuffer).get(), frameCount, runCount);
+  printf("Before Resolve(), mCurrentBlock=%p, mBuffer='%s', frameCount=%d, runCount=%d\n",
+         (void*)aBpd->mCurrentBlock, NS_ConvertUTF16toUTF8(aBpd->mBuffer).get(), frameCount, runCount);
 #ifdef REALLY_NOISY_BIDI
   printf(" block frame tree=:\n");
-  aBlockFrame->List(stdout, 0);
+  aBpd->mCurrentBlock->List(stdout, 0);
 #endif
 #endif
 #endif
 
   if (runCount == 1 && frameCount == 1 &&
       aBpd->GetDirection() == NSBIDI_LTR && aBpd->GetParaLevel() == 0) {
     // We have a single left-to-right frame in a left-to-right paragraph,
     // without bidi isolation from the surrounding text.
@@ -971,27 +985,26 @@ nsBidiPresUtils::ResolveParagraph(nsBloc
         JoinInlineAncestors(frame);
       }
     }
   } // for
 
 #ifdef DEBUG
 #ifdef REALLY_NOISY_BIDI
   printf("---\nAfter Resolve(), frameTree =:\n");
-  aBlockFrame->List(stdout, 0);
+  aBpd->mCurrentBlock->List(stdout, 0);
   printf("===\n");
 #endif
 #endif
 
   return rv;
 }
 
 void
-nsBidiPresUtils::TraverseFrames(nsBlockFrame*              aBlockFrame,
-                                nsBlockInFlowLineIterator* aLineIter,
+nsBidiPresUtils::TraverseFrames(nsBlockInFlowLineIterator* aLineIter,
                                 nsIFrame*                  aCurrentFrame,
                                 BidiParagraphData*         aBpd)
 {
   if (!aCurrentFrame)
     return;
 
 #ifdef DEBUG
   nsBlockFrame* initialLineContainer = aLineIter->GetContainer();
@@ -1148,17 +1161,17 @@ nsBidiPresUtils::TraverseFrames(nsBlockF
                 if (!next) {
                   // If the frame has no next in flow, create one.
                   CreateContinuation(frame, &next, true);
                   createdContinuation = true;
                 }
                 // Mark the line before the newline as dirty.
                 aBpd->GetLineForFrameAt(aBpd->FrameCount() - 1)->MarkDirty();
               }
-              ResolveParagraphWithinBlock(aBlockFrame, aBpd);
+              ResolveParagraphWithinBlock(aBpd);
 
               if (!nextSibling && !createdContinuation) {
                 break;
               } else if (next) {
                 frame = next;
                 aBpd->AppendFrame(frame, aLineIter);
                 // Mark the line after the newline as dirty.
                 aBpd->GetLineForFrameAt(aBpd->FrameCount() - 1)->MarkDirty();
@@ -1173,37 +1186,37 @@ nsBidiPresUtils::TraverseFrames(nsBlockF
               }
 
             } while (next);
           }
         }
       } else if (nsGkAtoms::brFrame == frameType) {
         // break frame -- append line separator
         aBpd->AppendUnichar(kLineSeparator);
-        ResolveParagraphWithinBlock(aBlockFrame, aBpd);
+        ResolveParagraphWithinBlock(aBpd);
       } else { 
         // other frame type -- see the Unicode Bidi Algorithm:
         // "...inline objects (such as graphics) are treated as if they are ...
         // U+FFFC"
         // <wbr>, however, is treated as U+200B ZERO WIDTH SPACE. See
         // http://dev.w3.org/html5/spec/Overview.html#phrasing-content-1
         aBpd->AppendUnichar(content->IsHTMLElement(nsGkAtoms::wbr) ?
                             kZWSP : kObjectSubstitute);
         if (!frame->IsInlineOutside()) {
           // if it is not inline, end the paragraph
-          ResolveParagraphWithinBlock(aBlockFrame, aBpd);
+          ResolveParagraphWithinBlock(aBpd);
         }
       }
     } else {
       // For a non-leaf frame, recurse into TraverseFrames
       nsIFrame* kid = frame->PrincipalChildList().FirstChild();
       MOZ_ASSERT(!frame->GetChildList(nsIFrame::kOverflowList).FirstChild(),
                  "should have drained the overflow list above");
       if (kid) {
-        TraverseFrames(aBlockFrame, aLineIter, kid, aBpd);
+        TraverseFrames(aLineIter, kid, aBpd);
       }
     }
 
     // If the element is attributed by dir, indicate direction pop (add PDF frame)
     if (isLastFrame) {
       // Add a dummy frame pointer representing a bidi control code after the
       // last frame of an element specifying embedding or override
       if (overrideChar != 0) {
@@ -1215,21 +1228,20 @@ nsBidiPresUtils::TraverseFrames(nsBlockF
     }
     childFrame = nextSibling;
   } while (childFrame);
 
   MOZ_ASSERT(initialLineContainer == aLineIter->GetContainer());
 }
 
 void
-nsBidiPresUtils::ResolveParagraphWithinBlock(nsBlockFrame* aBlockFrame,
-                                             BidiParagraphData* aBpd)
+nsBidiPresUtils::ResolveParagraphWithinBlock(BidiParagraphData* aBpd)
 {
   aBpd->ClearBidiControls();
-  ResolveParagraph(aBlockFrame, aBpd);
+  ResolveParagraph(aBpd);
   aBpd->ResetData();
 }
 
 /* static */ nscoord
 nsBidiPresUtils::ReorderFrames(nsIFrame* aFirstFrameOnLine,
                                int32_t aNumFramesOnLine,
                                WritingMode aLineWM,
                                const nsSize& aContainerSize,
--- a/layout/base/nsBidiPresUtils.h
+++ b/layout/base/nsBidiPresUtils.h
@@ -149,20 +149,18 @@ public:
    * Make Bidi engine calculate the embedding levels of the frames that are
    * descendants of a given block frame.
    *
    * @param aBlockFrame          The block frame
    *
    *  @lina 06/18/2000
    */
   static nsresult Resolve(nsBlockFrame* aBlockFrame);
-  static nsresult ResolveParagraph(nsBlockFrame* aBlockFrame,
-                                   BidiParagraphData* aBpd);
-  static void ResolveParagraphWithinBlock(nsBlockFrame* aBlockFrame,
-                                          BidiParagraphData* aBpd);
+  static nsresult ResolveParagraph(BidiParagraphData* aBpd);
+  static void ResolveParagraphWithinBlock(BidiParagraphData* aBpd);
 
   /**
    * Reorder this line using Bidi engine.
    * Update frame array, following the new visual sequence.
    *
    * @return total inline size
    * 
    * @lina 05/02/2000
@@ -392,18 +390,17 @@ private:
   /**
    * Traverse the child frames of the block element and:
    *  Set up an array of the frames in logical order
    *  Create a string containing the text content of all the frames
    *  If we encounter content that requires us to split the element into more
    *  than one paragraph for bidi resolution, resolve the paragraph up to that
    *  point.
    */
-  static void TraverseFrames(nsBlockFrame*              aBlockFrame,
-                             nsBlockInFlowLineIterator* aLineIter,
+  static void TraverseFrames(nsBlockInFlowLineIterator* aLineIter,
                              nsIFrame*                  aCurrentFrame,
                              BidiParagraphData*         aBpd);
 
   /**
    * Position ruby content frames (ruby base/text frame).
    * Called from RepositionRubyFrame.
    */
   static void RepositionRubyContentFrame(
--- a/layout/base/nsCSSFrameConstructor.cpp
+++ b/layout/base/nsCSSFrameConstructor.cpp
@@ -10873,19 +10873,23 @@ nsCSSFrameConstructor::ProcessChildren(n
   // containing blocks as needed, so callers don't have to do it...
 
   bool haveFirstLetterStyle = false, haveFirstLineStyle = false;
   if (aAllowBlockStyles) {
     ShouldHaveSpecialBlockStyle(aContent, aStyleContext, &haveFirstLetterStyle,
                                 &haveFirstLineStyle);
   }
 
+  const bool isFlexOrGridContainer = ::IsFlexOrGridContainer(aFrame);
   // The logic here needs to match the logic in GetFloatContainingBlock()
+  // (Since we already have isFlexOrGridContainer, we check that eagerly instead
+  // of letting ShouldSuppressFloatingOfDescendants look it up redundantly.)
   nsFrameConstructorSaveState floatSaveState;
-  if (ShouldSuppressFloatingOfDescendants(aFrame)) {
+  if (isFlexOrGridContainer ||
+      ShouldSuppressFloatingOfDescendants(aFrame)) {
     aState.PushFloatContainingBlock(nullptr, floatSaveState);
   } else if (aFrame->IsFloatContainingBlock()) {
     aState.PushFloatContainingBlock(aFrame, floatSaveState);
   }
 
   nsFrameConstructorState::PendingBindingAutoPusher pusher(aState,
                                                            aPendingBinding);
 
@@ -10930,16 +10934,24 @@ nsCSSFrameConstructor::ProcessChildren(n
                                  itemsToConstruct);
     }
 
     const bool addChildItems = MOZ_LIKELY(mCurrentDepth < kMaxDepth);
     if (!addChildItems) {
       NS_WARNING("ProcessChildren max depth exceeded");
     }
 
+    // Don't blockify 'display' in ApplyStyleFixups unless aFrame really is
+    // a flex/grid container frame, not just has display:flex/grid.
+    Maybe<TreeMatchContext::AutoParentDisplayBasedStyleFixupSkipper>
+      parentDisplayBasedStyleFixupSkipper;
+    if (!isFlexOrGridContainer) {
+      parentDisplayBasedStyleFixupSkipper.emplace(aState.mTreeMatchContext);
+    }
+
     InsertionPoint insertion(aFrame, nullptr);
     FlattenedChildIterator iter(aContent);
     for (nsIContent* child = iter.GetNextChild(); child; child = iter.GetNextChild()) {
       // Get the parent of the content and check if it is a XBL children element
       // (if the content is a children element then parent != aContent because the
       // FlattenedChildIterator will transitively iterate through <xbl:children>
       // for default content). Push the children element as an ancestor here because
       // it does not have a frame and would not otherwise be pushed as an ancestor.
--- a/layout/generic/nsBlockFrame.cpp
+++ b/layout/generic/nsBlockFrame.cpp
@@ -1158,46 +1158,46 @@ nsBlockFrame::Reflow(nsPresContext*     
   // overflowArea.VisualOverflow().y/yMost invariant, and we may even
   // delete the line with the line cursor.
   ClearLineCursor();
 
   if (IsFrameTreeTooDeep(*reflowInput, aMetrics, aStatus)) {
     return;
   }
 
+#ifdef DEBUG
+  // Between when we drain pushed floats and when we complete reflow,
+  // we're allowed to have multiple continuations of the same float on
+  // our floats list, since a first-in-flow might get pushed to a later
+  // continuation of its containing block.  But it's not permitted
+  // outside that time.
+  nsLayoutUtils::AssertNoDuplicateContinuations(this, mFloats);
+#endif
+
+  // ALWAYS drain overflow. We never want to leave the previnflow's
+  // overflow lines hanging around; block reflow depends on the
+  // overflow line lists being cleared out between reflow passes.
+  DrainOverflowLines();
+
   bool blockStartMarginRoot, blockEndMarginRoot;
   IsMarginRoot(&blockStartMarginRoot, &blockEndMarginRoot);
 
   // Cache the consumed height in the block reflow state so that we don't have
   // to continually recompute it.
   BlockReflowInput state(*reflowInput, aPresContext, this,
                            blockStartMarginRoot, blockEndMarginRoot,
                            needFloatManager, consumedBSize);
 
   if (GetStateBits() & NS_BLOCK_NEEDS_BIDI_RESOLUTION)
     static_cast<nsBlockFrame*>(FirstContinuation())->ResolveBidi();
 
   if (RenumberList()) {
     AddStateBits(NS_FRAME_HAS_DIRTY_CHILDREN);
   }
 
-#ifdef DEBUG
-  // Between when we drain pushed floats and when we complete reflow,
-  // we're allowed to have multiple continuations of the same float on
-  // our floats list, since a first-in-flow might get pushed to a later
-  // continuation of its containing block.  But it's not permitted
-  // outside that time.
-  nsLayoutUtils::AssertNoDuplicateContinuations(this, mFloats);
-#endif
-
-  // ALWAYS drain overflow. We never want to leave the previnflow's
-  // overflow lines hanging around; block reflow depends on the
-  // overflow line lists being cleared out between reflow passes.
-  DrainOverflowLines();
-
   // Handle paginated overflow (see nsContainerFrame.h)
   nsOverflowAreas ocBounds;
   nsReflowStatus ocStatus = NS_FRAME_COMPLETE;
   if (GetPrevInFlow()) {
     ReflowOverflowContainerChildren(aPresContext, *reflowInput, ocBounds, 0,
                                     ocStatus);
   }
 
--- a/layout/generic/nsBlockFrame.h
+++ b/layout/generic/nsBlockFrame.h
@@ -1014,17 +1014,19 @@ public:
   /**
    * Returns false if there are no more lines. After this has returned false,
    * don't call any methods on this object again.
    */
   bool Prev();
 
 private:
   friend class nsBlockFrame;
+  friend class nsBidiPresUtils;
   // XXX nsBlockFrame uses this internally in one place.  Try to remove it.
+  // XXX uhm, and nsBidiPresUtils::Resolve too.
   nsBlockInFlowLineIterator(nsBlockFrame* aFrame, LineIterator aLine, bool aInOverflow);
 
   nsBlockFrame* mFrame;
   LineIterator mLine;
   nsLineList* mLineList;  // the line list mLine is in
 
   /**
    * Moves iterator to next valid line reachable from the current block.
new file mode 100644
--- /dev/null
+++ b/layout/reftests/forms/legend/1339287-ref.html
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML>
+<!--
+     Any copyright is dedicated to the Public Domain.
+     http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html><head>
+  <meta charset="utf-8">
+  <title>Testcase for bug 1339287</title>
+  <style type="text/css">
+
+html,body {
+  color:black; background-color:white; font:16px/1 monospace; padding:0; margin:0;
+}
+
+fieldset { border:1px solid black; }  /* solid border is less likely to cause AA issues */
+
+  </style>
+</head>
+<body>
+
+  <fieldset>
+    <legend style="display:inline-flex">
+      Headline Instructions
+    </legend>
+  </fieldset>
+
+  <fieldset>
+    <legend style="display:inline-grid">
+      Headline Instructions
+    </legend>
+  </fieldset>
+
+  <fieldset>
+    <legend style="display:flex">
+      Headline Instructions
+    </legend>
+  </fieldset>
+
+  <fieldset>
+    <legend style="display:grid">
+      Headline Instructions
+    </legend>
+  </fieldset>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/forms/legend/1339287.html
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML>
+<!--
+     Any copyright is dedicated to the Public Domain.
+     http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html><head>
+  <meta charset="utf-8">
+  <title>Testcase for bug 1339287</title>
+  <style type="text/css">
+
+html,body {
+  color:black; background-color:white; font:16px/1 monospace; padding:0; margin:0;
+}
+
+fieldset { border:1px solid black; }  /* solid border is less likely to cause AA issues */
+
+  </style>
+</head>
+<body>
+
+  <fieldset>
+    <legend style="display:inline-flex">
+      Headline 
+      <span>
+        Instructions
+       </span>
+    </legend>
+  </fieldset>
+
+  <fieldset>
+    <legend style="display:inline-grid">
+      Headline 
+      <span>
+        Instructions
+       </span>
+    </legend>
+  </fieldset>
+
+  <fieldset>
+    <legend style="display:flex">
+      Headline 
+      <span>
+        Instructions
+       </span>
+    </legend>
+  </fieldset>
+
+  <fieldset>
+    <legend style="display:grid">
+      Headline 
+      <span>
+        Instructions
+       </span>
+    </legend>
+  </fieldset>
+
+</body>
+</html>
--- a/layout/reftests/forms/legend/reftest.list
+++ b/layout/reftests/forms/legend/reftest.list
@@ -1,3 +1,4 @@
 == legend.html legend-ref.html
 fuzzy-if(skiaContent,1,7) pref(dom.webcomponents.enabled,true) == shadow-dom.html shadow-dom-ref.html
 == 1273433.html 1273433-ref.html
+== 1339287.html 1339287-ref.html
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -743,16 +743,19 @@ pref("gfx.downloadable_fonts.woff2.enabl
 
 // Whether OTS validation should be applied to OpenType Layout (OTL) tables
 #ifdef RELEASE_OR_BETA
 pref("gfx.downloadable_fonts.otl_validation", false);
 #else
 pref("gfx.downloadable_fonts.otl_validation", true);
 #endif
 
+// Whether to preserve OpenType variation tables in fonts (bypassing OTS)
+pref("gfx.downloadable_fonts.keep_variation_tables", false);
+
 #ifdef ANDROID
 pref("gfx.bundled_fonts.enabled", true);
 pref("gfx.bundled_fonts.force-enabled", false);
 #endif
 
 // Do we fire a notification about missing fonts, so the front-end can decide
 // whether to try and do something about it (e.g. download additional fonts)?
 pref("gfx.missing_fonts.notify", false);
deleted file mode 100644
--- a/testing/web-platform/meta/FileAPI/blob/Blob-close.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[Blob-close.html]
-  type: testharness
-  [Blob.close]
-    expected: FAIL
-
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/FileAPI/reading-data-section/filereader_abort.html.ini
@@ -0,0 +1,5 @@
+[filereader_abort.html]
+  type: testharness
+  [Aborting after read]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/IndexedDB/clone-before-keypath-eval.html.ini
@@ -0,0 +1,17 @@
+[clone-before-keypath-eval.html]
+  type: testharness
+  [Key generator and key path validity check operates on a clone]
+    expected: FAIL
+
+  [Failing key path validity check operates on a clone]
+    expected: FAIL
+
+  [Index key path evaluations operate on a clone]
+    expected: FAIL
+
+  [Store and index key path evaluations operate on the same clone]
+    expected: FAIL
+
+  [Cursor update checks and keypath evaluations operate on a clone]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/IndexedDB/idb-binary-key-detached.htm.ini
@@ -0,0 +1,8 @@
+[idb-binary-key-detached.htm]
+  type: testharness
+  [Detached ArrayBuffer]
+    expected: FAIL
+
+  [Detached TypedArray]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/IndexedDB/idb-binary-key-roundtrip.htm.ini
@@ -0,0 +1,47 @@
+[idb-binary-key-roundtrip.htm]
+  type: testharness
+  [Binary keys can be supplied using the view type Uint8Array]
+    expected: FAIL
+
+  [Binary keys can be supplied using the view type Uint8ClampedArray]
+    expected: FAIL
+
+  [Binary keys can be supplied using the view type Int8Array]
+    expected: FAIL
+
+  [Binary keys can be supplied using the view type Uint16Array]
+    expected: FAIL
+
+  [Binary keys can be supplied using the view type Int16Array]
+    expected: FAIL
+
+  [Binary keys can be supplied using the view type Uint32Array]
+    expected: FAIL
+
+  [Binary keys can be supplied using the view type Int32Array]
+    expected: FAIL
+
+  [Binary keys can be supplied using the view type Float32Array]
+    expected: FAIL
+
+  [Binary keys can be supplied using the view type Float64Array]
+    expected: FAIL
+
+  [ArrayBuffer can be used to supply a binary key]
+    expected: FAIL
+
+  [DataView can be used to supply a binary key]
+    expected: FAIL
+
+  [DataView with explicit offset can be used to supply a binary key]
+    expected: FAIL
+
+  [DataView with explicit offset and length can be used to supply a binary key]
+    expected: FAIL
+
+  [Uint8Array with explicit offset can be used to supply a binary key]
+    expected: FAIL
+
+  [Uint8Array with explicit offset and length can be used to supply a binary key]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/IndexedDB/idbcursor-update-exception-order.htm.ini
@@ -0,0 +1,2 @@
+[idbcursor-update-exception-order.htm]
+  disabled: if os == "win": https://bugzilla.mozilla.org/show_bug.cgi?id=1336639
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/IndexedDB/idbobjectstore-deleteIndex-exception-order.html.ini
@@ -0,0 +1,2 @@
+[idbobjectstore-deleteIndex-exception-order.html]
+  disabled: if os == "win": https://bugzilla.mozilla.org/show_bug.cgi?id=1336639
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/IndexedDB/idbrequest-onupgradeneeded.htm.ini
@@ -0,0 +1,3 @@
+[idbrequest-onupgradeneeded.htm]
+  type: testharness
+  expected: ERROR
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/IndexedDB/keypath-exceptions.htm.ini
@@ -0,0 +1,11 @@
+[keypath-exceptions.htm]
+  type: testharness
+  [Key path evaluation: Exceptions from non-enumerable getters]
+    expected: FAIL
+
+  [Key path evaluation: Exceptions from non-enumerable getters on prototype]
+    expected: FAIL
+
+  [Key path evaluation: Exceptions from enumerable getters on prototype]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/IndexedDB/keypath-special-identifiers.htm.ini
@@ -0,0 +1,5 @@
+[keypath-special-identifiers.htm]
+  type: testharness
+  [Type: String, identifier: length]
+    expected: FAIL
+
deleted file mode 100644
--- a/testing/web-platform/meta/IndexedDB/open-request-queue.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[open-request-queue.html]
-  type: testharness
-  [Opens and deletes are processed in order]
-    expected: FAIL
-
--- a/testing/web-platform/meta/IndexedDB/upgrade-transaction-lifecycle-backend-aborted.html.ini
+++ b/testing/web-platform/meta/IndexedDB/upgrade-transaction-lifecycle-backend-aborted.html.ini
@@ -1,9 +1,3 @@
 [upgrade-transaction-lifecycle-backend-aborted.html]
   type: testharness
   expected: ERROR
-  [in the abort event handler for a transaction aborted due to an unhandled request error]
-    expected: FAIL
-
-  [in a setTimeout(0) callback after the abort event is fired for a transaction aborted due to an unhandled request failure]
-    expected: NOTRUN
-
--- a/testing/web-platform/meta/IndexedDB/upgrade-transaction-lifecycle-user-aborted.html.ini
+++ b/testing/web-platform/meta/IndexedDB/upgrade-transaction-lifecycle-user-aborted.html.ini
@@ -1,5 +1,5 @@
 [upgrade-transaction-lifecycle-user-aborted.html]
   type: testharness
-  [synchronously after abort() is called]
+  [in a promise microtask after abort() is called, before the transaction abort event is fired]
     expected: FAIL
 
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -1670,16 +1670,52 @@
     ]
    ],
    "notifications/tag-same-manual.html": [
     [
      "/notifications/tag-same-manual.html",
      {}
     ]
    ],
+   "old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_autocomplete-manual.html": [
+    [
+     "/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_autocomplete-manual.html",
+     {}
+    ]
+   ],
+   "old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_list-manual.html": [
+    [
+     "/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_list-manual.html",
+     {}
+    ]
+   ],
+   "old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_valueasdate-manual.html": [
+    [
+     "/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_valueasdate-manual.html",
+     {}
+    ]
+   ],
+   "old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_valueasnumber-manual.html": [
+    [
+     "/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_valueasnumber-manual.html",
+     {}
+    ]
+   ],
+   "old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/select_length-manual.html": [
+    [
+     "/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/select_length-manual.html",
+     {}
+    ]
+   ],
+   "old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/select_selectedindex-manual.html": [
+    [
+     "/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/select_selectedindex-manual.html",
+     {}
+    ]
+   ],
    "old-tests/submission/Microsoft/dragdrop/dragdrop_000-manual.htm": [
     [
      "/old-tests/submission/Microsoft/dragdrop/dragdrop_000-manual.htm",
      {}
     ]
    ],
    "old-tests/submission/Microsoft/dragdrop/dragdrop_001-manual.htm": [
     [
@@ -2318,16 +2354,22 @@
     ]
    ],
    "pointerevents/pointerevent_touch-action-table-test_touch-manual.html": [
     [
      "/pointerevents/pointerevent_touch-action-table-test_touch-manual.html",
      {}
     ]
    ],
+   "pointerevents/pointerlock/pointerevent_movementxy-manual.html": [
+    [
+     "/pointerevents/pointerlock/pointerevent_movementxy-manual.html",
+     {}
+    ]
+   ],
    "pointerlock/movementX_Y_basic-manual.html": [
     [
      "/pointerlock/movementX_Y_basic-manual.html",
      {}
     ]
    ],
    "pointerlock/movementX_Y_no-jumps-manual.html": [
     [
@@ -2426,34 +2468,16 @@
     ]
    ],
    "presentation-api/controlling-ua/startNewPresentation_displaynotfound-manual.html": [
     [
      "/presentation-api/controlling-ua/startNewPresentation_displaynotfound-manual.html",
      {}
     ]
    ],
-   "presentation-api/controlling-ua/startNewPresentation_mixedcontent-manual.https.html": [
-    [
-     "/presentation-api/controlling-ua/startNewPresentation_mixedcontent-manual.https.html",
-     {}
-    ]
-   ],
-   "presentation-api/controlling-ua/startNewPresentation_mixedcontent_multiple-manual.https.html": [
-    [
-     "/presentation-api/controlling-ua/startNewPresentation_mixedcontent_multiple-manual.https.html",
-     {}
-    ]
-   ],
-   "presentation-api/controlling-ua/startNewPresentation_sandboxing_error-manual.html": [
-    [
-     "/presentation-api/controlling-ua/startNewPresentation_sandboxing_error-manual.html",
-     {}
-    ]
-   ],
    "presentation-api/controlling-ua/startNewPresentation_sandboxing_success-manual.html": [
     [
      "/presentation-api/controlling-ua/startNewPresentation_sandboxing_success-manual.html",
      {}
     ]
    ],
    "presentation-api/controlling-ua/startNewPresentation_success-manual.html": [
     [
@@ -2480,16 +2504,22 @@
     ]
    ],
    "selection/dir-manual.html": [
     [
      "/selection/dir-manual.html",
      {}
     ]
    ],
+   "service-workers/service-worker/fetch-event-within-sw-manual.html": [
+    [
+     "/service-workers/service-worker/fetch-event-within-sw-manual.html",
+     {}
+    ]
+   ],
    "svg/import/animate-dom-01-f-manual.svg": [
     [
      "/svg/import/animate-dom-01-f-manual.svg",
      {}
     ]
    ],
    "svg/import/animate-dom-02-f-manual.svg": [
     [
@@ -6238,16 +6268,64 @@
       [
        "/FileAPI/url/url_xmlhttprequest_img-ref.html",
        "=="
       ]
      ],
      {}
     ]
    ],
+   "assumptions/canvas-background.html": [
+    [
+     "/assumptions/canvas-background.html",
+     [
+      [
+       "/assumptions/canvas-background-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "assumptions/initial-color.html": [
+    [
+     "/assumptions/initial-color.html",
+     [
+      [
+       "/assumptions/initial-color-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "assumptions/medium-font-size.html": [
+    [
+     "/assumptions/medium-font-size.html",
+     [
+      [
+       "/assumptions/medium-font-size-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "assumptions/min-font-size.html": [
+    [
+     "/assumptions/min-font-size.html",
+     [
+      [
+       "/assumptions/min-font-size-ref.html",
+       "!="
+      ]
+     ],
+     {}
+    ]
+   ],
    "compat/webkit-text-fill-color-property-001a.html": [
     [
      "/compat/webkit-text-fill-color-property-001a.html",
      [
       [
        "/compat/webkit-text-fill-color-property-001-ref.html",
        "=="
       ]
@@ -7438,16 +7516,28 @@
       [
        "/html/editing/the-hidden-attribute/hidden-2-ref.svg",
        "=="
       ]
      ],
      {}
     ]
    ],
+   "html/rendering/bindings/the-button-element/button-type-menu-historical.html": [
+    [
+     "/html/rendering/bindings/the-button-element/button-type-menu-historical.html",
+     [
+      [
+       "/html/rendering/bindings/the-button-element/button-type-menu-historical-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "html/rendering/bindings/the-input-element-as-a-text-entry-widget/unrecognized-type-should-fallback-as-text-type.html": [
     [
      "/html/rendering/bindings/the-input-element-as-a-text-entry-widget/unrecognized-type-should-fallback-as-text-type.html",
      [
       [
        "/html/rendering/bindings/the-input-element-as-a-text-entry-widget/unrecognized-type-should-fallback-as-text-type-ref.html",
        "=="
       ]
@@ -8518,28 +8608,16 @@
       [
        "/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-ul-ref.html",
        "=="
       ]
      ],
      {}
     ]
    ],
-   "html/semantics/grouping-content/the-li-element/grouping-li-reftest-no-list-owner.html": [
-    [
-     "/html/semantics/grouping-content/the-li-element/grouping-li-reftest-no-list-owner.html",
-     [
-      [
-       "/html/semantics/grouping-content/the-li-element/grouping-li-reftest-no-list-owner-ref.html",
-       "=="
-      ]
-     ],
-     {}
-    ]
-   ],
    "html/semantics/grouping-content/the-li-element/grouping-li-reftest-not-being-rendered.html": [
     [
      "/html/semantics/grouping-content/the-li-element/grouping-li-reftest-not-being-rendered.html",
      [
       [
        "/html/semantics/grouping-content/the-li-element/grouping-li-reftest-not-being-rendered-ref.html",
        "=="
       ]
@@ -13891,16 +13969,21 @@
      {}
     ]
    ],
    "2dcontext/tools/LICENSE.txt": [
     [
      {}
     ]
    ],
+   "2dcontext/tools/OWNERS": [
+    [
+     {}
+    ]
+   ],
    "2dcontext/tools/build.sh": [
     [
      {}
     ]
    ],
    "2dcontext/tools/current-work-canvas.xhtml": [
     [
      {}
@@ -14021,21 +14104,36 @@
      {}
     ]
    ],
    "FileAPI/support/Blob.js": [
     [
      {}
     ]
    ],
+   "FileAPI/support/document-domain-setter.sub.html": [
+    [
+     {}
+    ]
+   ],
+   "FileAPI/support/incumbent.sub.html": [
+    [
+     {}
+    ]
+   ],
    "FileAPI/support/upload.txt": [
     [
      {}
     ]
    ],
+   "FileAPI/support/url-origin.html": [
+    [
+     {}
+    ]
+   ],
    "FileAPI/url/url_xmlhttprequest_img-ref.html": [
     [
      {}
     ]
    ],
    "IndexedDB/OWNERS": [
     [
      {}
@@ -17606,16 +17704,41 @@
      {}
     ]
    ],
    "app-uri/resources/icons/w3c-48.png": [
     [
      {}
     ]
    ],
+   "assumptions/OWNERS": [
+    [
+     {}
+    ]
+   ],
+   "assumptions/canvas-background-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "assumptions/initial-color-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "assumptions/medium-font-size-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "assumptions/min-font-size-ref.html": [
+    [
+     {}
+    ]
+   ],
    "auxclick/OWNERS": [
     [
      {}
     ]
    ],
    "battery-status/OWNERS": [
     [
      {}
@@ -41351,16 +41474,21 @@
      {}
     ]
    ],
    "cssom-view/iframe.html": [
     [
      {}
     ]
    ],
+   "cssom/stylesheet-same-origin.css": [
+    [
+     {}
+    ]
+   ],
    "custom-elements/OWNERS": [
     [
      {}
     ]
    ],
    "custom-elements/reactions/resources/reactions.js": [
     [
      {}
@@ -41371,92 +41499,287 @@
      {}
     ]
    ],
    "custom-elements/resources/empty-html-document.html": [
     [
      {}
     ]
    ],
+   "docs/.gitignore": [
+    [
+     {}
+    ]
+   ],
+   "docs/.ruby-version": [
+    [
+     {}
+    ]
+   ],
+   "docs/CNAME": [
+    [
+     {}
+    ]
+   ],
+   "docs/Gemfile": [
+    [
+     {}
+    ]
+   ],
    "docs/OWNERS": [
     [
      {}
     ]
    ],
-   "docs/configuration.md": [
-    [
-     {}
-    ]
-   ],
-   "docs/css-metadata.md": [
-    [
-     {}
-    ]
-   ],
-   "docs/css-naming.md": [
-    [
-     {}
-    ]
-   ],
-   "docs/css-user-styles.md": [
-    [
-     {}
-    ]
-   ],
-   "docs/github-101.md": [
-    [
-     {}
-    ]
-   ],
-   "docs/lint-tool.md": [
-    [
-     {}
-    ]
-   ],
-   "docs/manual-test.md": [
-    [
-     {}
-    ]
-   ],
-   "docs/reftests.md": [
-    [
-     {}
-    ]
-   ],
-   "docs/review-checklist.md": [
-    [
-     {}
-    ]
-   ],
-   "docs/review-process.md": [
-    [
-     {}
-    ]
-   ],
-   "docs/running_tests.md": [
-    [
-     {}
-    ]
-   ],
-   "docs/submission-process.md": [
-    [
-     {}
-    ]
-   ],
-   "docs/test-format-guidelines.md": [
-    [
-     {}
-    ]
-   ],
-   "docs/test-style-guidelines.md": [
-    [
-     {}
-    ]
-   ],
-   "docs/test-templates.md": [
+   "docs/_appendix/github-intro.md": [
+    [
+     {}
+    ]
+   ],
+   "docs/_appendix/index.md": [
+    [
+     {}
+    ]
+   ],
+   "docs/_appendix/test-templates.md": [
+    [
+     {}
+    ]
+   ],
+   "docs/_config.yml": [
+    [
+     {}
+    ]
+   ],
+   "docs/_includes/footer.html": [
+    [
+     {}
+    ]
+   ],
+   "docs/_includes/head.html": [
+    [
+     {}
+    ]
+   ],
+   "docs/_includes/header.html": [
+    [
+     {}
+    ]
+   ],
+   "docs/_includes/svg/octicons/LICENSE": [
+    [
+     {}
+    ]
+   ],
+   "docs/_includes/svg/octicons/git-pull-request.svg": [
+    [
+     {}
+    ]
+   ],
+   "docs/_includes/svg/octicons/package.svg": [
+    [
+     {}
+    ]
+   ],
+   "docs/_includes/svg/octicons/pencil.svg": [
+    [
+     {}
+    ]
+   ],
+   "docs/_includes/svg/octicons/tools.svg": [
+    [
+     {}
+    ]
+   ],
+   "docs/_includes/svg/triangle-right.svg": [
+    [
+     {}
+    ]
+   ],
+   "docs/_reviewing-tests/checklist.md": [
+    [
+     {}
+    ]
+   ],
+   "docs/_reviewing-tests/index.md": [
+    [
+     {}
+    ]
+   ],
+   "docs/_running-tests/index.md": [
+    [
+     {}
+    ]
+   ],
+   "docs/_writing-tests/ahem.md": [
+    [
+     {}
+    ]
+   ],
+   "docs/_writing-tests/assumptions.md": [
+    [
+     {}
+    ]
+   ],
+   "docs/_writing-tests/css-metadata.md": [
+    [
+     {}
+    ]
+   ],
+   "docs/_writing-tests/css-user-styles.md": [
+    [
+     {}
+    ]
+   ],
+   "docs/_writing-tests/general-guidelines.md": [
+    [
+     {}
+    ]
+   ],
+   "docs/_writing-tests/idlharness.html": [
+    [
+     {}
+    ]
+   ],
+   "docs/_writing-tests/index.md": [
+    [
+     {}
+    ]
+   ],
+   "docs/_writing-tests/lint-tool.md": [
+    [
+     {}
+    ]
+   ],
+   "docs/_writing-tests/manual.md": [
+    [
+     {}
+    ]
+   ],
+   "docs/_writing-tests/reftests.md": [
+    [
+     {}
+    ]
+   ],
+   "docs/_writing-tests/rendering.md": [
+    [
+     {}
+    ]
+   ],
+   "docs/_writing-tests/server-features.md": [
+    [
+     {}
+    ]
+   ],
+   "docs/_writing-tests/submission-process.md": [
+    [
+     {}
+    ]
+   ],
+   "docs/_writing-tests/testharness-api.html": [
+    [
+     {}
+    ]
+   ],
+   "docs/_writing-tests/testharness.md": [
+    [
+     {}
+    ]
+   ],
+   "docs/_writing-tests/visual.md": [
+    [
+     {}
+    ]
+   ],
+   "docs/assets/_reftest_graph_example.dot": [
+    [
+     {}
+    ]
+   ],
+   "docs/assets/commit-directly.png": [
+    [
+     {}
+    ]
+   ],
+   "docs/assets/commitbtn.png": [
+    [
+     {}
+    ]
+   ],
+   "docs/assets/createprlink.png": [
+    [
+     {}
+    ]
+   ],
+   "docs/assets/editbtn.png": [
+    [
+     {}
+    ]
+   ],
+   "docs/assets/files-changed.png": [
+    [
+     {}
+    ]
+   ],
+   "docs/assets/forkbtn.png": [
+    [
+     {}
+    ]
+   ],
+   "docs/assets/main.scss": [
+    [
+     {}
+    ]
+   ],
+   "docs/assets/menu.js": [
+    [
+     {}
+    ]
+   ],
+   "docs/assets/more-commits.png": [
+    [
+     {}
+    ]
+   ],
+   "docs/assets/pencil-icon.png": [
+    [
+     {}
+    ]
+   ],
+   "docs/assets/praccepteddelete.png": [
+    [
+     {}
+    ]
+   ],
+   "docs/assets/pullrequestbtn.png": [
+    [
+     {}
+    ]
+   ],
+   "docs/assets/pullrequestlink.png": [
+    [
+     {}
+    ]
+   ],
+   "docs/assets/reftest_graph_example.svg": [
+    [
+     {}
+    ]
+   ],
+   "docs/assets/sendpullrequest.png": [
+    [
+     {}
+    ]
+   ],
+   "docs/index.html": [
+    [
+     {}
+    ]
+   ],
+   "docs/introduction.md": [
     [
      {}
     ]
    ],
    "dom/OWNERS": [
     [
      {}
     ]
@@ -43356,16 +43679,21 @@
      {}
     ]
    ],
    "fonts/CanvasTest.ttf": [
     [
      {}
     ]
    ],
+   "fonts/OWNERS": [
+    [
+     {}
+    ]
+   ],
    "fonts/math/axisheight5000-verticalarrow14000.woff": [
     [
      {}
     ]
    ],
    "fonts/math/fraction-axisheight7000-rulethickness1000.woff": [
     [
      {}
@@ -43696,21 +44024,16 @@
      {}
     ]
    ],
    "fullscreen/OWNERS": [
     [
      {}
     ]
    ],
-   "fullscreen/api/blank.html": [
-    [
-     {}
-    ]
-   ],
    "fullscreen/trusted-click.js": [
     [
      {}
     ]
    ],
    "gamepad/OWNERS": [
     [
      {}
@@ -43886,21 +44209,16 @@
      {}
     ]
    ],
    "html/browsers/browsing-the-web/history-traversal/001-2.html": [
     [
      {}
     ]
    ],
-   "html/browsers/browsing-the-web/history-traversal/MANIFEST": [
-    [
-     {}
-    ]
-   ],
    "html/browsers/browsing-the-web/history-traversal/browsing_context_name-0.html": [
     [
      {}
     ]
    ],
    "html/browsers/browsing-the-web/history-traversal/browsing_context_name-1.html": [
     [
      {}
@@ -43916,16 +44234,21 @@
      {}
     ]
    ],
    "html/browsers/browsing-the-web/history-traversal/browsing_context_name-4.html": [
     [
      {}
     ]
    ],
+   "html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin-0.html": [
+    [
+     {}
+    ]
+   ],
    "html/browsers/browsing-the-web/history-traversal/contains.json": [
     [
      {}
     ]
    ],
    "html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resources/blank1.html": [
     [
      {}
@@ -44021,21 +44344,16 @@
      {}
     ]
    ],
    "html/browsers/browsing-the-web/navigating-across-documents/004-3.html": [
     [
      {}
     ]
    ],
-   "html/browsers/browsing-the-web/navigating-across-documents/MANIFEST": [
-    [
-     {}
-    ]
-   ],
    "html/browsers/browsing-the-web/navigating-across-documents/blank.html": [
     [
      {}
     ]
    ],
    "html/browsers/browsing-the-web/navigating-across-documents/child_navigates_parent_location-1.html": [
     [
      {}
@@ -44076,16 +44394,36 @@
      {}
     ]
    ],
    "html/browsers/browsing-the-web/navigating-across-documents/href.html": [
     [
      {}
     ]
    ],
+   "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-1.html": [
+    [
+     {}
+    ]
+   ],
+   "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-2.html": [
+    [
+     {}
+    ]
+   ],
+   "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-1.html": [
+    [
+     {}
+    ]
+   ],
+   "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-2.html": [
+    [
+     {}
+    ]
+   ],
    "html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_data_url-1.html": [
     [
      {}
     ]
    ],
    "html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin-1.html": [
     [
      {}
@@ -44141,36 +44479,31 @@
      {}
     ]
    ],
    "html/browsers/browsing-the-web/scroll-to-fragid/.gitkeep": [
     [
      {}
     ]
    ],
-   "html/browsers/browsing-the-web/scroll-to-fragid/MANIFEST": [
-    [
-     {}
-    ]
-   ],
    "html/browsers/browsing-the-web/unloading-documents/.gitkeep": [
     [
      {}
     ]
    ],
-   "html/browsers/browsing-the-web/unloading-documents/MANIFEST": [
-    [
-     {}
-    ]
-   ],
    "html/browsers/browsing-the-web/unloading-documents/base.html": [
     [
      {}
     ]
    ],
+   "html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling-1.html": [
+    [
+     {}
+    ]
+   ],
    "html/browsers/browsing-the-web/unloading-documents/beforeunload-on-history-back-1.html": [
     [
      {}
     ]
    ],
    "html/browsers/browsing-the-web/unloading-documents/beforeunload-on-navigation-of-parent-1.html": [
     [
      {}
@@ -44211,21 +44544,16 @@
      {}
     ]
    ],
    "html/browsers/browsing-the-web/unloading-documents/prompt/002-1.html": [
     [
      {}
     ]
    ],
-   "html/browsers/browsing-the-web/unloading-documents/prompt/MANIFEST": [
-    [
-     {}
-    ]
-   ],
    "html/browsers/browsing-the-web/unloading-documents/prompt/manual-001.html": [
     [
      {}
     ]
    ],
    "html/browsers/browsing-the-web/unloading-documents/prompt/manual-002.html": [
     [
      {}
@@ -44381,21 +44709,16 @@
      {}
     ]
    ],
    "html/browsers/browsing-the-web/unloading-documents/unload/009-1.html": [
     [
      {}
     ]
    ],
-   "html/browsers/browsing-the-web/unloading-documents/unload/MANIFEST": [
-    [
-     {}
-    ]
-   ],
    "html/browsers/browsing-the-web/unloading-documents/unload/manual-001-1.html": [
     [
      {}
     ]
    ],
    "html/browsers/browsing-the-web/unloading-documents/unload/manual-001.html": [
     [
      {}
@@ -45131,21 +45454,16 @@
      {}
     ]
    ],
    "html/browsers/windows/browsing-context-names/002-1.html": [
     [
      {}
     ]
    ],
-   "html/browsers/windows/browsing-context-names/MANIFEST": [
-    [
-     {}
-    ]
-   ],
    "html/browsers/windows/browsing-context-names/existing.html": [
     [
      {}
     ]
    ],
    "html/browsers/windows/browsing-context-names/message.html": [
     [
      {}
@@ -45176,21 +45494,16 @@
      {}
     ]
    ],
    "html/browsers/windows/nested-browsing-contexts/.gitkeep": [
     [
      {}
     ]
    ],
-   "html/browsers/windows/nested-browsing-contexts/MANIFEST": [
-    [
-     {}
-    ]
-   ],
    "html/browsers/windows/nested-browsing-contexts/contains.json": [
     [
      {}
     ]
    ],
    "html/browsers/windows/nested-browsing-contexts/test.html": [
     [
      {}
@@ -45361,16 +45674,21 @@
      {}
     ]
    ],
    "html/dom/dynamic-markup-insertion/document-write/013.js": [
     [
      {}
     ]
    ],
+   "html/dom/dynamic-markup-insertion/document-write/empty.html": [
+    [
+     {}
+    ]
+   ],
    "html/dom/dynamic-markup-insertion/document-write/iframe_005.js": [
     [
      {}
     ]
    ],
    "html/dom/dynamic-markup-insertion/document-write/nested-document-write-1.html": [
     [
      {}
@@ -50981,17 +51299,17 @@
      {}
     ]
    ],
    "html/rendering/bindings/introduction-9/.gitkeep": [
     [
      {}
     ]
    ],
-   "html/rendering/bindings/the-button-element-0/.gitkeep": [
+   "html/rendering/bindings/the-button-element/button-type-menu-historical-ref.html": [
     [
      {}
     ]
    ],
    "html/rendering/bindings/the-details-element-0/.gitkeep": [
     [
      {}
     ]
@@ -51031,21 +51349,16 @@
      {}
     ]
    ],
    "html/rendering/bindings/the-input-element-as-domain-specific-widgets/.gitkeep": [
     [
      {}
     ]
    ],
-   "html/rendering/bindings/the-keygen-element-0/.gitkeep": [
-    [
-     {}
-    ]
-   ],
    "html/rendering/bindings/the-marquee-element/.gitkeep": [
     [
      {}
     ]
    ],
    "html/rendering/bindings/the-meter-element-0/.gitkeep": [
     [
      {}
@@ -52281,16 +52594,26 @@
      {}
     ]
    ],
    "html/semantics/forms/form-submission-0/contains.json": [
     [
      {}
     ]
    ],
+   "html/semantics/forms/form-submission-0/form-data-set-usv-form.html": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/forms/form-submission-0/form-echo.py": [
+    [
+     {}
+    ]
+   ],
    "html/semantics/forms/introduction-1/.gitkeep": [
     [
      {}
     ]
    ],
    "html/semantics/forms/introduction-1/contains.json": [
     [
      {}
@@ -52361,21 +52684,16 @@
      {}
     ]
    ],
    "html/semantics/forms/the-input-element/image01-ref.html": [
     [
      {}
     ]
    ],
-   "html/semantics/forms/the-keygen-element/.gitkeep": [
-    [
-     {}
-    ]
-   ],
    "html/semantics/forms/the-label-element/.gitkeep": [
     [
      {}
     ]
    ],
    "html/semantics/forms/the-legend-element/.gitkeep": [
     [
      {}
@@ -52516,21 +52834,16 @@
      {}
     ]
    ],
    "html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-ul-ref.html": [
     [
      {}
     ]
    ],
-   "html/semantics/grouping-content/the-li-element/grouping-li-reftest-no-list-owner-ref.html": [
-    [
-     {}
-    ]
-   ],
    "html/semantics/grouping-content/the-li-element/grouping-li-reftest-not-being-rendered-ref.html": [
     [
      {}
     ]
    ],
    "html/semantics/grouping-content/the-ol-element/grouping-ol-rev-reftest-001-ref.html": [
     [
      {}
@@ -52696,16 +53009,21 @@
      {}
     ]
    ],
    "html/semantics/links/linktypes/alternate-css-ref.html": [
     [
      {}
     ]
    ],
+   "html/semantics/links/linktypes/alternate-import.css": [
+    [
+     {}
+    ]
+   ],
    "html/semantics/links/linktypes/alternate.css": [
     [
      {}
     ]
    ],
    "html/semantics/links/linktypes/contains.json": [
     [
      {}
@@ -53386,16 +53704,21 @@
      {}
     ]
    ],
    "html/syntax/.gitkeep": [
     [
      {}
     ]
    ],
+   "html/syntax/OWNERS": [
+    [
+     {}
+    ]
+   ],
    "html/syntax/html-element-list.js": [
     [
      {}
     ]
    ],
    "html/syntax/parsing-html-fragments/.gitkeep": [
     [
      {}
@@ -53631,16 +53954,21 @@
      {}
     ]
    ],
    "html/the-xhtml-syntax/writing-xhtml-documents/.gitkeep": [
     [
      {}
     ]
    ],
+   "html/tools/OWNERS": [
+    [
+     {}
+    ]
+   ],
    "html/tools/build.sh": [
     [
      {}
     ]
    ],
    "html/tools/html5lib_test.xml": [
     [
      {}
@@ -53661,16 +53989,21 @@
      {}
     ]
    ],
    "html/webappapis/atob/.gitkeep": [
     [
      {}
     ]
    ],
+   "html/webappapis/dynamic-markup-insertion/opening-the-input-stream/resources/set-document-domain.html": [
+    [
+     {}
+    ]
+   ],
    "html/webappapis/idle-callbacks/resources/post_name_on_load.html": [
     [
      {}
     ]
    ],
    "html/webappapis/scripting/.gitkeep": [
     [
      {}
@@ -53756,16 +54089,26 @@
      {}
     ]
    ],
    "html/webappapis/scripting/processing-model-2/support/undefined-variable.js": [
     [
      {}
     ]
    ],
+   "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/support/promise-access-control.py": [
+    [
+     {}
+    ]
+   ],
+   "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/support/promise-rejection-events.js": [
+    [
+     {}
+    ]
+   ],
    "html/webappapis/system-state-and-capabilities/.gitkeep": [
     [
      {}
     ]
    ],
    "html/webappapis/system-state-and-capabilities/the-external-interface/.gitkeep": [
     [
      {}
@@ -54306,16 +54649,21 @@
      {}
     ]
    ],
    "mathml/tools/xHeight.py": [
     [
      {}
     ]
    ],
+   "media-capabilities/README.md": [
+    [
+     {}
+    ]
+   ],
    "media-source/OWNERS": [
     [
      {}
     ]
    ],
    "media-source/import_tests.sh": [
     [
      {}
@@ -54641,16 +54989,21 @@
      {}
     ]
    ],
    "mediacapture-streams/OWNERS": [
     [
      {}
     ]
    ],
+   "mediasession/README.md": [
+    [
+     {}
+    ]
+   ],
    "microdata/conformance-requirements/.gitkeep": [
     [
      {}
     ]
    ],
    "microdata/converting-html-to-other-formats/.gitkeep": [
     [
      {}
@@ -55471,16 +55824,21 @@
      {}
     ]
    ],
    "notifications/resources/shownotification-sw.js": [
     [
      {}
     ]
    ],
+   "offscreen-canvas/tools/OWNERS": [
+    [
+     {}
+    ]
+   ],
    "offscreen-canvas/tools/build.sh": [
     [
      {}
     ]
    ],
    "offscreen-canvas/tools/gentest.py": [
     [
      {}
@@ -56711,37 +57069,42 @@
      {}
     ]
    ],
    "pointerevents/pointerevent_support.js": [
     [
      {}
     ]
    ],
+   "pointerevents/pointerlock/resources/pointerevent_movementxy-iframe.html": [
+    [
+     {}
+    ]
+   ],
    "pointerevents/resources/pointerevent_attributes_hoverable_pointers-iframe.html": [
     [
      {}
     ]
    ],
    "pointerevents/resources/pointerevent_pointerId_scope-iframe.html": [
     [
      {}
     ]
    ],
    "pointerlock/OWNERS": [
     [
      {}
     ]
    ],
-   "preload/link_header_preload.html.headers": [
-    [
-     {}
-    ]
-   ],
-   "preload/link_header_preload_delay_onload.html.headers": [
+   "preload/link-header-preload-delay-onload.html.headers": [
+    [
+     {}
+    ]
+   ],
+   "preload/link-header-preload.html.headers": [
     [
      {}
     ]
    ],
    "preload/resources/dummy.css": [
     [
      {}
     ]
@@ -56761,16 +57124,21 @@
      {}
     ]
    ],
    "preload/resources/fetch-destination-worker.js": [
     [
      {}
     ]
    ],
+   "preload/resources/preload_helper.js": [
+    [
+     {}
+    ]
+   ],
    "preload/resources/square.png": [
     [
      {}
     ]
    ],
    "presentation-api/OWNERS": [
     [
      {}
@@ -59421,16 +59789,21 @@
      {}
     ]
    ],
    "referrer-policy/unsafe-url/http-rp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html.headers": [
     [
      {}
     ]
    ],
+   "remote-playback/README.md": [
+    [
+     {}
+    ]
+   ],
    "resource-timing/OWNERS": [
     [
      {}
     ]
    ],
    "resource-timing/SyntheticResponse.py": [
     [
      {}
@@ -59741,16 +60114,51 @@
      {}
     ]
    ],
    "service-workers/service-worker/ServiceWorkerGlobalScope/resources/update-worker.py": [
     [
      {}
     ]
    ],
+   "service-workers/service-worker/multi-globals/current/current.https.html": [
+    [
+     {}
+    ]
+   ],
+   "service-workers/service-worker/multi-globals/current/test-sw.js": [
+    [
+     {}
+    ]
+   ],
+   "service-workers/service-worker/multi-globals/incumbent/incumbent.https.html": [
+    [
+     {}
+    ]
+   ],
+   "service-workers/service-worker/multi-globals/incumbent/test-sw.js": [
+    [
+     {}
+    ]
+   ],
+   "service-workers/service-worker/multi-globals/relevant/relevant.https.html": [
+    [
+     {}
+    ]
+   ],
+   "service-workers/service-worker/multi-globals/relevant/test-sw.js": [
+    [
+     {}
+    ]
+   ],
+   "service-workers/service-worker/multi-globals/test-sw.js": [
+    [
+     {}
+    ]
+   ],
    "service-workers/service-worker/resources/404.py": [
     [
      {}
     ]
    ],
    "service-workers/service-worker/resources/appcache-ordering.install.html": [
     [
      {}
@@ -59951,16 +60359,21 @@
      {}
     ]
    ],
    "service-workers/service-worker/resources/fetch-event-test-worker.js": [
     [
      {}
     ]
    ],
+   "service-workers/service-worker/resources/fetch-event-within-sw-worker.js": [
+    [
+     {}
+    ]
+   ],
    "service-workers/service-worker/resources/fetch-header-visibility-iframe.html": [
     [
      {}
     ]
    ],
    "service-workers/service-worker/resources/fetch-mixed-content-iframe-inscope-to-inscope.html": [
     [
      {}
@@ -60051,31 +60464,71 @@
      {}
     ]
    ],
    "service-workers/service-worker/resources/fetch-waits-for-activate-worker.js": [
     [
      {}
     ]
    ],
+   "service-workers/service-worker/resources/foreign-fetch-cors-worker.js": [
+    [
+     {}
+    ]
+   ],
+   "service-workers/service-worker/resources/foreign-fetch-event-worker.js": [
+    [
+     {}
+    ]
+   ],
+   "service-workers/service-worker/resources/foreign-fetch-helper-iframe.html": [
+    [
+     {}
+    ]
+   ],
+   "service-workers/service-worker/resources/foreign-fetch-helper-script.js": [
+    [
+     {}
+    ]
+   ],
+   "service-workers/service-worker/resources/foreign-fetch-helper-worker.js": [
+    [
+     {}
+    ]
+   ],
+   "service-workers/service-worker/resources/foreign-fetch-helpers.js": [
+    [
+     {}
+    ]
+   ],
+   "service-workers/service-worker/resources/foreign-fetch-worker.js": [
+    [
+     {}
+    ]
+   ],
    "service-workers/service-worker/resources/frame-for-getregistrations.html": [
     [
      {}
     ]
    ],
    "service-workers/service-worker/resources/indexeddb-worker.js": [
     [
      {}
     ]
    ],
    "service-workers/service-worker/resources/install-event-type-worker.js": [
     [
      {}
     ]
    ],
+   "service-workers/service-worker/resources/install-worker-helper.html": [
+    [
+     {}
+    ]
+   ],
    "service-workers/service-worker/resources/interfaces-worker.sub.js": [
     [
      {}
     ]
    ],
    "service-workers/service-worker/resources/interfaces.js": [
     [
      {}
@@ -60106,16 +60559,21 @@
      {}
     ]
    ],
    "service-workers/service-worker/resources/invalid-header-worker.js": [
     [
      {}
     ]
    ],
+   "service-workers/service-worker/resources/link-header.py": [
+    [
+     {}
+    ]
+   ],
    "service-workers/service-worker/resources/load_worker.js": [
     [
      {}
     ]
    ],
    "service-workers/service-worker/resources/loaded.html": [
     [
      {}
@@ -60161,16 +60619,21 @@
      {}
     ]
    ],
    "service-workers/service-worker/resources/navigation-redirect-worker.js": [
     [
      {}
     ]
    ],
+   "service-workers/service-worker/resources/notification_icon.py": [
+    [
+     {}
+    ]
+   ],
    "service-workers/service-worker/resources/onactivate-throw-error-from-nested-event-worker.js": [
     [
      {}
     ]
    ],
    "service-workers/service-worker/resources/onactivate-throw-error-then-cancel-worker.js": [
     [
      {}
@@ -60261,26 +60724,36 @@
      {}
     ]
    ],
    "service-workers/service-worker/resources/register-closed-window-iframe.html": [
     [
      {}
     ]
    ],
+   "service-workers/service-worker/resources/registration-tests.js": [
+    [
+     {}
+    ]
+   ],
    "service-workers/service-worker/resources/registration-worker.js": [
     [
      {}
     ]
    ],
    "service-workers/service-worker/resources/reject-install-worker.js": [
     [
      {}
     ]
    ],
+   "service-workers/service-worker/resources/reply-to-message.html": [
+    [
+     {}
+    ]
+   ],
    "service-workers/service-worker/resources/request-end-to-end-worker.js": [
     [
      {}
     ]
    ],
    "service-workers/service-worker/resources/request-headers.py": [
     [
      {}
@@ -60606,16 +61079,21 @@
      {}
     ]
    ],
    "streams/readable-streams/count-queuing-strategy-integration.js": [
     [
      {}
     ]
    ],
+   "streams/readable-streams/floating-point-total-queue-size.js": [
+    [
+     {}
+    ]
+   ],
    "streams/readable-streams/garbage-collection.js": [
     [
      {}
     ]
    ],
    "streams/readable-streams/general.js": [
     [
      {}
@@ -60651,21 +61129,16 @@
      {}
     ]
    ],
    "streams/resources/rs-utils.js": [
     [
      {}
     ]
    ],
-   "streams/resources/test-initializer.js": [
-    [
-     {}
-    ]
-   ],
    "streams/resources/test-utils.js": [
     [
      {}
     ]
    ],
    "streams/writable-streams/aborting.js": [
     [
      {}
@@ -60701,16 +61174,21 @@
      {}
     ]
    ],
    "streams/writable-streams/count-queuing-strategy.js": [
     [
      {}
     ]
    ],
+   "streams/writable-streams/floating-point-total-queue-size.js": [
+    [
+     {}
+    ]
+   ],
    "streams/writable-streams/general.js": [
     [
      {}
     ]
    ],
    "streams/writable-streams/start.js": [
     [
      {}
@@ -61721,16 +62199,21 @@
      {}
     ]
    ],
    "webauthn/OWNERS": [
     [
      {}
     ]
    ],
+   "webauthn/helpers.js": [
+    [
+     {}
+    ]
+   ],
    "webauthn/interfaces.idl": [
     [
      {}
     ]
    ],
    "webdriver/OWNERS": [
     [
      {}
@@ -61746,16 +62229,21 @@
      {}
     ]
    ],
    "webdriver/support/keys.py": [
     [
      {}
     ]
    ],
+   "webdriver/util/__init__.py": [
+    [
+     {}
+    ]
+   ],
    "webgl/OWNERS": [
     [
      {}
     ]
    ],
    "webgl/common.js": [
     [
      {}
@@ -70051,16 +70539,21 @@
      {}
     ]
    ],
    "webgl/tools/unit.patch": [
     [
      {}
     ]
    ],
+   "webmessaging/MessageEvent-trusted-worker.js": [
+    [
+     {}
+    ]
+   ],
    "webmessaging/OWNERS": [
     [
      {}
     ]
    ],
    "webmessaging/README.md": [
     [
      {}
@@ -72416,16 +72909,21 @@
      {}
     ]
    ],
    "workers/support/ImportScriptsNetworkErr.js": [
     [
      {}
     ]
    ],
+   "workers/support/ImportScriptsNosniffErr.js": [
+    [
+     {}
+    ]
+   ],
    "workers/support/Timer.js": [
     [
      {}
     ]
    ],
    "workers/support/WorkerBasic.js": [
     [
      {}
@@ -72456,16 +72954,21 @@
      {}
     ]
    ],
    "workers/support/WorkerText.txt": [
     [
      {}
     ]
    ],
+   "workers/support/nosiniff-error-worker.py": [
+    [
+     {}
+    ]
+   ],
    "workers/support/sandboxed-tests.html": [
     [
      {}
     ]
    ]
   },
   "testharness": {
    "2dcontext/compositing/2d.composite.canvas.copy.html": [
@@ -77131,22 +77634,16 @@
     ]
    ],
    "FileAPI/blob/Blob-XHR-revoke.html": [
     [
      "/FileAPI/blob/Blob-XHR-revoke.html",
      {}
     ]
    ],
-   "FileAPI/blob/Blob-close.html": [
-    [
-     "/FileAPI/blob/Blob-close.html",
-     {}
-    ]
-   ],
    "FileAPI/blob/Blob-constructor.html": [
     [
      "/FileAPI/blob/Blob-constructor.html",
      {}
     ]
    ],
    "FileAPI/blob/Blob-in-worker.worker.js": [
     [
@@ -77263,16 +77760,34 @@
     ]
    ],
    "FileAPI/reading-data-section/filereader_result.html": [
     [
      "/FileAPI/reading-data-section/filereader_result.html",
      {}
     ]
    ],
+   "FileAPI/url/blob-url-in-sandboxed-iframe.html": [
+    [
+     "/FileAPI/url/blob-url-in-sandboxed-iframe.html",
+     {}
+    ]
+   ],
+   "FileAPI/url/multi-global-origin-serialization.sub.html": [
+    [
+     "/FileAPI/url/multi-global-origin-serialization.sub.html",
+     {}
+    ]
+   ],
+   "FileAPI/url/origin.sub.html": [
+    [
+     "/FileAPI/url/origin.sub.html",
+     {}
+    ]
+   ],
    "FileAPI/url/url_createobjecturl_blob.html": [
     [
      "/FileAPI/url/url_createobjecturl_blob.html",
      {}
     ]
    ],
    "FileAPI/url/url_xmlhttprequest.html": [
     [
@@ -77281,40 +77796,72 @@
     ]
    ],
    "IndexedDB/abort-in-initial-upgradeneeded.html": [
     [
      "/IndexedDB/abort-in-initial-upgradeneeded.html",
      {}
     ]
    ],
+   "IndexedDB/bindings-inject-key.html": [
+    [
+     "/IndexedDB/bindings-inject-key.html",
+     {}
+    ]
+   ],
+   "IndexedDB/clone-before-keypath-eval.html": [
+    [
+     "/IndexedDB/clone-before-keypath-eval.html",
+     {}
+    ]
+   ],
    "IndexedDB/close-in-upgradeneeded.html": [
     [
      "/IndexedDB/close-in-upgradeneeded.html",
      {}
     ]
    ],
    "IndexedDB/cursor-overloads.htm": [
     [
      "/IndexedDB/cursor-overloads.htm",
      {}
     ]
    ],
+   "IndexedDB/delete-request-queue.html": [
+    [
+     "/IndexedDB/delete-request-queue.html",
+     {}
+    ]
+   ],
    "IndexedDB/error-attributes.html": [
     [
      "/IndexedDB/error-attributes.html",
      {}
     ]
    ],
    "IndexedDB/historical.html": [
     [
      "/IndexedDB/historical.html",
      {}
     ]
    ],
+   "IndexedDB/idb-binary-key-detached.htm": [
+    [
+     "/IndexedDB/idb-binary-key-detached.htm",
+     {}
+    ]
+   ],
+   "IndexedDB/idb-binary-key-roundtrip.htm": [
+    [
+     "/IndexedDB/idb-binary-key-roundtrip.htm",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
    "IndexedDB/idb_binary_key_conversion.htm": [
     [
      "/IndexedDB/idb_binary_key_conversion.htm",
      {}
     ]
    ],
    "IndexedDB/idb_webworkers.htm": [
     [
@@ -78741,16 +79288,24 @@
     ]
    ],
    "IndexedDB/idbobjectstore_getAllKeys.html": [
     [
      "/IndexedDB/idbobjectstore_getAllKeys.html",
      {}
     ]
    ],
+   "IndexedDB/idbobjectstore_getKey.html": [
+    [
+     "/IndexedDB/idbobjectstore_getKey.html",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
    "IndexedDB/idbobjectstore_index.htm": [
     [
      "/IndexedDB/idbobjectstore_index.htm",
      {}
     ]
    ],
    "IndexedDB/idbobjectstore_openCursor.htm": [
     [
@@ -78861,16 +79416,22 @@
     ]
    ],
    "IndexedDB/idbobjectstore_put9.htm": [
     [
      "/IndexedDB/idbobjectstore_put9.htm",
      {}
     ]
    ],
+   "IndexedDB/idbrequest-onupgradeneeded.htm": [
+    [
+     "/IndexedDB/idbrequest-onupgradeneeded.htm",
+     {}
+    ]
+   ],
    "IndexedDB/idbrequest_error.html": [
     [
      "/IndexedDB/idbrequest_error.html",
      {}
     ]
    ],
    "IndexedDB/idbrequest_result.html": [
     [
@@ -78927,16 +79488,24 @@
     ]
    ],
    "IndexedDB/interfaces.worker.js": [
     [
      "/IndexedDB/interfaces.worker.html",
      {}
     ]
    ],
+   "IndexedDB/key-conversion-exceptions.htm": [
+    [
+     "/IndexedDB/key-conversion-exceptions.htm",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
    "IndexedDB/key_invalid.htm": [
     [
      "/IndexedDB/key_invalid.htm",
      {}
     ]
    ],
    "IndexedDB/key_valid.html": [
     [
@@ -78965,16 +79534,28 @@
     ]
    ],
    "IndexedDB/keyorder.htm": [
     [
      "/IndexedDB/keyorder.htm",
      {}
     ]
    ],
+   "IndexedDB/keypath-exceptions.htm": [
+    [
+     "/IndexedDB/keypath-exceptions.htm",
+     {}
+    ]
+   ],
+   "IndexedDB/keypath-special-identifiers.htm": [
+    [
+     "/IndexedDB/keypath-special-identifiers.htm",
+     {}
+    ]
+   ],
    "IndexedDB/keypath.htm": [
     [
      "/IndexedDB/keypath.htm",
      {}
     ]
    ],
    "IndexedDB/keypath_invalid.htm": [
     [
@@ -81137,16 +81718,22 @@
     ]
    ],
    "app-uri/appURI_test.html": [
     [
      "/app-uri/appURI_test.html",
      {}
     ]
    ],
+   "assumptions/html-elements.html": [
+    [
+     "/assumptions/html-elements.html",
+     {}
+    ]
+   ],
    "battery-status/battery-interface-idlharness.html": [
     [
      "/battery-status/battery-interface-idlharness.html",
      {}
     ]
    ],
    "battery-status/battery-promise-iframe.html": [
     [
@@ -82699,16 +83286,22 @@
     ]
    ],
    "cssom-view/elementsFromPoint.html": [
     [
      "/cssom-view/elementsFromPoint.html",
      {}
     ]
    ],
+   "cssom-view/historical.html": [
+    [
+     "/cssom-view/historical.html",
+     {}
+    ]
+   ],
    "cssom-view/mouseEvent.html": [
     [
      "/cssom-view/mouseEvent.html",
      {}
     ]
    ],
    "cssom-view/negativeMargins.html": [
     [
@@ -82723,16 +83316,28 @@
     ]
    ],
    "cssom-view/scrollingElement.html": [
     [
      "/cssom-view/scrollingElement.html",
      {}
     ]
    ],
+   "cssom/CSS.html": [
+    [
+     "/cssom/CSS.html",
+     {}
+    ]
+   ],
+   "cssom/CSSKeyframeRule.html": [
+    [
+     "/cssom/CSSKeyframeRule.html",
+     {}
+    ]
+   ],
    "cssom/CSSKeyframesRule.html": [
     [
      "/cssom/CSSKeyframesRule.html",
      {}
     ]
    ],
    "cssom/CSSNamespaceRule.html": [
     [
@@ -82765,16 +83370,28 @@
     ]
    ],
    "cssom/StyleSheetList.html": [
     [
      "/cssom/StyleSheetList.html",
      {}
     ]
    ],
+   "cssom/historical.html": [
+    [
+     "/cssom/historical.html",
+     {}
+    ]
+   ],
+   "cssom/overflow-serialization.html": [
+    [
+     "/cssom/overflow-serialization.html",
+     {}
+    ]
+   ],
    "cssom/serialization-CSSDeclaration-with-important.html": [
     [
      "/cssom/serialization-CSSDeclaration-with-important.html",
      {}
     ]
    ],
    "cssom/serialize-values.html": [
     [
@@ -82783,16 +83400,22 @@
     ]
    ],
    "cssom/shorthand-serialization.html": [
     [
      "/cssom/shorthand-serialization.html",
      {}
     ]
    ],
+   "cssom/stylesheet-same-origin.sub.html": [
+    [
+     "/cssom/stylesheet-same-origin.sub.html",
+     {}
+    ]
+   ],
    "custom-elements/CustomElementRegistry.html": [
     [
      "/custom-elements/CustomElementRegistry.html",
      {}
     ]
    ],
    "custom-elements/Document-createElement.html": [
     [
@@ -83299,16 +83922,22 @@
     ]
    ],
    "dom/events/EventListener-incumbent-global-2.sub.html": [
     [
      "/dom/events/EventListener-incumbent-global-2.sub.html",
      {}
     ]
    ],
+   "dom/events/EventListener-invoke-legacy.html": [
+    [
+     "/dom/events/EventListener-invoke-legacy.html",
+     {}
+    ]
+   ],
    "dom/events/EventListenerOptions-capture.html": [
     [
      "/dom/events/EventListenerOptions-capture.html",
      {}
     ]
    ],
    "dom/events/EventTarget-addEventListener.html": [
     [
@@ -83329,22 +83958,16 @@
     ]
    ],
    "dom/events/EventTarget-removeEventListener.html": [
     [
      "/dom/events/EventTarget-removeEventListener.html",
      {}
     ]
    ],
-   "dom/events/ProgressEvent.html": [
-    [
-     "/dom/events/ProgressEvent.html",
-     {}
-    ]
-   ],
    "dom/historical.html": [
     [
      "/dom/historical.html",
      {}
     ]
    ],
    "dom/interface-objects.html": [
     [
@@ -84953,16 +85576,22 @@
     ]
    ],
    "domxpath/evaluator-constructor.html": [
     [
      "/domxpath/evaluator-constructor.html",
      {}
     ]
    ],
+   "domxpath/interfaces.html": [
+    [
+     "/domxpath/interfaces.html",
+     {}
+    ]
+   ],
    "domxpath/xml_xpath_runner.html": [
     [
      "/domxpath/xml_xpath_runner.html",
      {}
     ]
    ],
    "editing/event.html": [
     [
@@ -86085,16 +86714,22 @@
     ]
    ],
    "eventsource/eventsource-onmessage-realm.htm": [
     [
      "/eventsource/eventsource-onmessage-realm.htm",
      {}
     ]
    ],
+   "eventsource/eventsource-onmessage-trusted.htm": [
+    [
+     "/eventsource/eventsource-onmessage-trusted.htm",
+     {}
+    ]
+   ],
    "eventsource/eventsource-onmessage.htm": [
     [
      "/eventsource/eventsource-onmessage.htm",
      {}
     ]
    ],
    "eventsource/eventsource-onopen.htm": [
     [
@@ -87343,16 +87978,22 @@
     ]
    ],
    "hr-time/test_cross_frame_start.html": [
     [
      "/hr-time/test_cross_frame_start.html",
      {}
     ]
    ],
+   "hr-time/window-worker-time-origin.html": [
+    [
+     "/hr-time/window-worker-time-origin.html",
+     {}
+    ]
+   ],
    "html-imports/document/document-method-changes.html": [
     [
      "/html-imports/document/document-method-changes.html",
      {}
     ]
    ],
    "html-imports/fetching/already-in-import-map.html": [
     [
@@ -87605,16 +88246,28 @@
     ]
    ],
    "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling.html": [
     [
      "/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling.html",
      {}
     ]
    ],
+   "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit.html": [
+    [
+     "/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit.html",
+     {}
+    ]
+   ],
+   "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html": [
+    [
+     "/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html",
+     {}
+    ]
+   ],
    "html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_data_url.html": [
     [
      "/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_data_url.html",
      {}
     ]
    ],
    "html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html": [
     [
@@ -87765,16 +88418,22 @@
     ]
    ],
    "html/browsers/browsing-the-web/unloading-documents/005.html": [
     [
      "/html/browsers/browsing-the-web/unloading-documents/005.html",
      {}
     ]
    ],
+   "html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html": [
+    [
+     "/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html",
+     {}
+    ]
+   ],
    "html/browsers/browsing-the-web/unloading-documents/beforeunload-on-history-back.html": [
     [
      "/html/browsers/browsing-the-web/unloading-documents/beforeunload-on-history-back.html",
      {}
     ]
    ],
    "html/browsers/browsing-the-web/unloading-documents/beforeunload-on-navigation-of-parent.html": [
     [
@@ -88421,24 +89080,16 @@
     ]
    ],
    "html/browsers/offline/manifest_url_check.html": [
     [
      "/html/browsers/offline/manifest_url_check.html",
      {}
     ]
    ],
-   "html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html": [
-    [
-     "/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html",
-     {
-      "timeout": "long"
-     }
-    ]
-   ],
    "html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html": [
     [
      "/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html",
      {
       "timeout": "long"
      }
     ]
    ],
@@ -89467,16 +90118,22 @@
     ]
    ],
    "html/dom/dynamic-markup-insertion/document-write/script_013.html": [
     [
      "/html/dom/dynamic-markup-insertion/document-write/script_013.html",
      {}
     ]
    ],
+   "html/dom/dynamic-markup-insertion/document-write/write-active-document.html": [
+    [
+     "/html/dom/dynamic-markup-insertion/document-write/write-active-document.html",
+     {}
+    ]
+   ],
    "html/dom/dynamic-markup-insertion/document-writeln/document.writeln-01.xhtml": [
     [
      "/html/dom/dynamic-markup-insertion/document-writeln/document.writeln-01.xhtml",
      {}
     ]
    ],
    "html/dom/dynamic-markup-insertion/document-writeln/document.writeln-02.html": [
     [
@@ -91575,16 +92232,22 @@
     ]
    ],
    "html/semantics/embedded-content/the-area-element/area-coords.html": [
     [
      "/html/semantics/embedded-content/the-area-element/area-coords.html",
      {}
     ]
    ],
+   "html/semantics/embedded-content/the-area-element/area-download-click.html": [
+    [
+     "/html/semantics/embedded-content/the-area-element/area-download-click.html",
+     {}
+    ]
+   ],
    "html/semantics/embedded-content/the-area-element/area-processing.html": [
     [
      "/html/semantics/embedded-content/the-area-element/area-processing.html",
      {}
     ]
    ],
    "html/semantics/embedded-content/the-area-element/area-shape.html": [
     [
@@ -92325,16 +92988,22 @@
     ]
    ],
    "html/semantics/embedded-content/the-iframe-element/iframe-load-event.html": [
     [
      "/html/semantics/embedded-content/the-iframe-element/iframe-load-event.html",
      {}
     ]
    ],
+   "html/semantics/embedded-content/the-iframe-element/iframe-synchronously-discard.html": [
+    [
+     "/html/semantics/embedded-content/the-iframe-element/iframe-synchronously-discard.html",
+     {}
+    ]
+   ],
    "html/semantics/embedded-content/the-iframe-element/iframe_javascript_url_01.htm": [
     [
      "/html/semantics/embedded-content/the-iframe-element/iframe_javascript_url_01.htm",
      {}
     ]
    ],
    "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_script.html": [
     [
@@ -92451,16 +93120,22 @@
     ]
    ],
    "html/semantics/embedded-content/the-img-element/nonexistent-image.html": [
     [
      "/html/semantics/embedded-content/the-img-element/nonexistent-image.html",
      {}
     ]
    ],
+   "html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter.html": [
+    [
+     "/html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter.html",
+     {}
+    ]
+   ],
    "html/semantics/embedded-content/the-img-element/relevant-mutations.html": [
     [
      "/html/semantics/embedded-content/the-img-element/relevant-mutations.html",
      {}
     ]
    ],
    "html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html": [
     [
@@ -92687,16 +93362,22 @@
     ]
    ],
    "html/semantics/forms/form-control-infrastructure/form.html": [
     [
      "/html/semantics/forms/form-control-infrastructure/form.html",
      {}
     ]
    ],
+   "html/semantics/forms/form-submission-0/form-data-set-usv.html": [
+    [
+     "/html/semantics/forms/form-submission-0/form-data-set-usv.html",
+     {}
+    ]
+   ],
    "html/semantics/forms/form-submission-0/getactionurl.html": [
     [
      "/html/semantics/forms/form-submission-0/getactionurl.html",
      {}
     ]
    ],
    "html/semantics/forms/form-submission-0/submit-entity-body.html": [
     [
@@ -92787,16 +93468,22 @@
     ]
    ],
    "html/semantics/forms/the-button-element/button-events.html": [
     [
      "/html/semantics/forms/the-button-element/button-events.html",
      {}
     ]
    ],
+   "html/semantics/forms/the-button-element/button-menu-historical.html": [
+    [
+     "/html/semantics/forms/the-button-element/button-menu-historical.html",
+     {}
+    ]
+   ],
    "html/semantics/forms/the-button-element/button-validation.html": [
     [
      "/html/semantics/forms/the-button-element/button-validation.html",
      {}
     ]
    ],
    "html/semantics/forms/the-datalist-element/datalistoptions.html": [
     [
@@ -94011,16 +94698,22 @@
     ]
    ],
    "html/semantics/text-level-semantics/historical.html": [
     [
      "/html/semantics/text-level-semantics/historical.html",
      {}
     ]
    ],
+   "html/semantics/text-level-semantics/the-a-element/a-download-click.html": [
+    [
+     "/html/semantics/text-level-semantics/the-a-element/a-download-click.html",
+     {}
+    ]
+   ],
    "html/semantics/text-level-semantics/the-a-element/a-stringifier.html": [
     [
      "/html/semantics/text-level-semantics/the-a-element/a-stringifier.html",
      {}
     ]
    ],
    "html/semantics/text-level-semantics/the-a-element/a.text-getter-01.html": [
     [
@@ -95417,16 +96110,28 @@
     ]
    ],
    "html/webappapis/atob/base64.html": [
     [
      "/html/webappapis/atob/base64.html",
      {}
     ]
    ],
+   "html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-basic.html": [
+    [
+     "/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-basic.html",
+     {}
+    ]
+   ],
+   "html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-same-origin-domain.sub.html": [
+    [
+     "/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-same-origin-domain.sub.html",
+     {}
+    ]
+   ],
    "html/webappapis/idle-callbacks/basic.html": [
     [
      "/html/webappapis/idle-callbacks/basic.html",
      {}
     ]
    ],
    "html/webappapis/idle-callbacks/callback-exception.html": [
     [
@@ -95501,16 +96206,22 @@
     ]
    ],
    "html/webappapis/scripting/event-loops/task_microtask_ordering.html": [
     [
      "/html/webappapis/scripting/event-loops/task_microtask_ordering.html",
      {}
     ]
    ],
+   "html/webappapis/scripting/events/body-exposed-window-event-handlers.html": [
+    [
+     "/html/webappapis/scripting/events/body-exposed-window-event-handlers.html",
+     {}
+    ]
+   ],
    "html/webappapis/scripting/events/body-onload.html": [
     [
      "/html/webappapis/scripting/events/body-onload.html",
      {}
     ]
    ],
    "html/webappapis/scripting/events/event-handler-attributes-body-window.html": [
     [
@@ -95747,16 +96458,70 @@
     ]
    ],
    "html/webappapis/scripting/processing-model-2/runtime-error.html": [
     [
      "/html/webappapis/scripting/processing-model-2/runtime-error.html",
      {}
     ]
    ],
+   "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/allow-crossorigin.html": [
+    [
+     "/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/allow-crossorigin.html",
+     {}
+    ]
+   ],
+   "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/disallow-crossorigin.html": [
+    [
+     "/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/disallow-crossorigin.html",
+     {}
+    ]
+   ],
+   "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-event-constructor.html": [
+    [
+     "/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-event-constructor.html",
+     {}
+    ]
+   ],
+   "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-attached-in-event.html": [
+    [
+     "/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-attached-in-event.html",
+     {}
+    ]
+   ],
+   "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-onerror.html": [
+    [
+     "/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-onerror.html",
+     {}
+    ]
+   ],
+   "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.dedicatedworker.html": [
+    [
+     "/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.dedicatedworker.html",
+     {}
+    ]
+   ],
+   "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html": [
+    [
+     "/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html",
+     {}
+    ]
+   ],
+   "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html": [
+    [
+     "/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html",
+     {}
+    ]
+   ],
+   "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.sharedworker.html": [
+    [
+     "/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.sharedworker.html",
+     {}
+    ]
+   ],
    "html/webappapis/scripting/processing-model-2/window-onerror-parse-error.html": [
     [
      "/html/webappapis/scripting/processing-model-2/window-onerror-parse-error.html",
      {}
     ]
    ],
    "html/webappapis/scripting/processing-model-2/window-onerror-runtime-error-throw.html": [
     [
@@ -96203,16 +96968,28 @@
     ]
    ],
    "mathml/relations/html5-tree/unique-identifier-2.html": [
     [
      "/mathml/relations/html5-tree/unique-identifier-2.html",
      {}
     ]
    ],
+   "media-capabilities/idlharness.html": [
+    [
+     "/media-capabilities/idlharness.html",
+     {}
+    ]
+   ],
+   "media-capabilities/query.html": [
+    [
+     "/media-capabilities/query.html",
+     {}
+    ]
+   ],
    "media-source/SourceBuffer-abort-readyState.html": [
     [
      "/media-source/SourceBuffer-abort-readyState.html",
      {
       "timeout": "long"
      }
     ]
    ],
@@ -96713,16 +97490,40 @@
     ]
    ],
    "mediacapture-streams/MediaStreamTrackEvent-constructor.https.html": [
     [
      "/mediacapture-streams/MediaStreamTrackEvent-constructor.https.html",
      {}
     ]
    ],
+   "mediasession/idlharness.html": [
+    [
+     "/mediasession/idlharness.html",
+     {}
+    ]
+   ],
+   "mediasession/mediametadata.html": [
+    [
+     "/mediasession/mediametadata.html",
+     {}
+    ]
+   ],
+   "mediasession/playbackstate.html": [
+    [
+     "/mediasession/playbackstate.html",
+     {}
+    ]
+   ],
+   "mediasession/setactionhandler.html": [
+    [
+     "/mediasession/setactionhandler.html",
+     {}
+    ]
+   ],
    "mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/keep-scheme-redirect/allowed.https.html": [
     [
      "/mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/keep-scheme-redirect/allowed.https.html",
      {}
     ]
    ],
    "mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/no-redirect/allowed.https.html": [
     [
@@ -107369,52 +108170,16 @@
     ]
    ],
    "offscreen-canvas/transformations/2d.transformation.translate.nonfinite.worker.js": [
     [
      "/offscreen-canvas/transformations/2d.transformation.translate.nonfinite.worker.html",
      {}
     ]
    ],
-   "old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_autocomplete.html": [
-    [
-     "/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_autocomplete.html",
-     {}
-    ]
-   ],
-   "old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_list.html": [
-    [
-     "/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_list.html",
-     {}
-    ]
-   ],
-   "old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_valueasdate.html": [
-    [
-     "/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_valueasdate.html",
-     {}
-    ]
-   ],
-   "old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_valueasnumber.html": [
-    [
-     "/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_valueasnumber.html",
-     {}
-    ]
-   ],
-   "old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/select_length.html": [
-    [
-     "/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/select_length.html",
-     {}
-    ]
-   ],
-   "old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/select_selectedindex.html": [
-    [
-     "/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/select_selectedindex.html",
-     {}
-    ]
-   ],
    "old-tests/submission/Infraware/Forms/contents/Forms/button_checkvalidity.html": [
     [
      "/old-tests/submission/Infraware/Forms/contents/Forms/button_checkvalidity.html",
      {}
     ]
    ],
    "old-tests/submission/Infraware/Forms/contents/Forms/button_labels.html": [
     [
@@ -107573,28 +108338,16 @@
     ]
    ],
    "old-tests/submission/Infraware/Forms/contents/Forms/input_willvalidate.html": [
     [
      "/old-tests/submission/Infraware/Forms/contents/Forms/input_willvalidate.html",
      {}
     ]
    ],
-   "old-tests/submission/Infraware/Forms/contents/Forms/keygen_checkvalidity.html": [
-    [
-     "/old-tests/submission/Infraware/Forms/contents/Forms/keygen_checkvalidity.html",
-     {}
-    ]
-   ],
-   "old-tests/submission/Infraware/Forms/contents/Forms/keygen_labels.html": [
-    [
-     "/old-tests/submission/Infraware/Forms/contents/Forms/keygen_labels.html",
-     {}
-    ]
-   ],
    "old-tests/submission/Microsoft/history/history_000.htm": [
     [
      "/old-tests/submission/Microsoft/history/history_000.htm",
      {}
     ]
    ],
    "old-tests/submission/Microsoft/sandbox/sandbox_001.htm": [
     [
@@ -108313,22 +109066,16 @@
     ]
    ],
    "old-tests/submission/Opera/script_scheduling/097.html": [
     [
      "/old-tests/submission/Opera/script_scheduling/097.html",
      {}
     ]
    ],
-   "old-tests/submission/Opera/script_scheduling/098.html": [
-    [
-     "/old-tests/submission/Opera/script_scheduling/098.html",
-     {}
-    ]
-   ],
    "old-tests/submission/Opera/script_scheduling/099.html": [
     [
      "/old-tests/submission/Opera/script_scheduling/099.html",
      {}
     ]
    ],
    "old-tests/submission/Opera/script_scheduling/100.html": [
     [
@@ -108853,97 +109600,97 @@
     ]
    ],
    "pointerlock/idlharness.html": [
     [
      "/pointerlock/idlharness.html",
      {}
     ]
    ],
-   "preload/avoid_delaying_onload_link_preload.html": [
-    [
-     "/preload/avoid_delaying_onload_link_preload.html",
-     {}
-    ]
-   ],
-   "preload/delaying_onload_link_preload_after_discovery.html": [
-    [
-     "/preload/delaying_onload_link_preload_after_discovery.html",
-     {}
-    ]
-   ],
-   "preload/download_resources.html": [
-    [
-     "/preload/download_resources.html",
-     {}
-    ]
-   ],
-   "preload/dynamic_adding_preload.html": [
-    [
-     "/preload/dynamic_adding_preload.html",
-     {}
-    ]
-   ],
-   "preload/fetch_destination.https.html": [
-    [
-     "/preload/fetch_destination.https.html",
-     {}
-    ]
-   ],
-   "preload/link_header_preload.html": [
-    [
-     "/preload/link_header_preload.html",
-     {}
-    ]
-   ],
-   "preload/link_header_preload_delay_onload.html": [
-    [
-     "/preload/link_header_preload_delay_onload.html",
-     {}
-    ]
-   ],
-   "preload/onerror_event.html": [
-    [
-     "/preload/onerror_event.html",
-     {}
-    ]
-   ],
-   "preload/onload_event.html": [
-    [
-     "/preload/onload_event.html",
+   "preload/avoid-delaying-onload-link-preload.html": [
+    [
+     "/preload/avoid-delaying-onload-link-preload.html",
+     {}
+    ]
+   ],
+   "preload/delaying-onload-link-preload-after-discovery.html": [
+    [
+     "/preload/delaying-onload-link-preload-after-discovery.html",
+     {}
+    ]
+   ],
+   "preload/download-resources.html": [
+    [
+     "/preload/download-resources.html",
+     {}
+    ]
+   ],
+   "preload/dynamic-adding-preload.html": [
+    [
+     "/preload/dynamic-adding-preload.html",
+     {}
+    ]
+   ],
+   "preload/fetch-destination.https.html": [
+    [
+     "/preload/fetch-destination.https.html",
+     {}
+    ]
+   ],
+   "preload/link-header-preload-delay-onload.html": [
+    [
+     "/preload/link-header-preload-delay-onload.html",
+     {}
+    ]
+   ],
+   "preload/link-header-preload.html": [
+    [
+     "/preload/link-header-preload.html",
+     {}
+    ]
+   ],
+   "preload/onerror-event.html": [
+    [
+     "/preload/onerror-event.html",
+     {}
+    ]
+   ],
+   "preload/onload-event.html": [
+    [
+     "/preload/onload-event.html",
      {}
     ]
    ],
    "preload/preload-csp.sub.html": [
     [
      "/preload/preload-csp.sub.html",
      {}
     ]
    ],
    "preload/preload-default-csp.sub.html": [
     [
      "/preload/preload-default-csp.sub.html",
      {}
     ]
    ],
-   "preload/preload_with_type.html": [
-    [
-     "/preload/preload_with_type.html",
-     {}
-    ]
-   ],
-   "preload/single_download_late_used_preload.html": [
-    [
-     "/preload/single_download_late_used_preload.html",
-     {}
-    ]
-   ],
-   "preload/single_download_preload.html": [
-    [
-     "/preload/single_download_preload.html",
+   "preload/preload-with-type.html": [
+    [
+     "/preload/preload-with-type.html",
+     {}
+    ]
+   ],
+   "preload/single-download-late-used-preload.html": [
+    [
+     "/preload/single-download-late-used-preload.html",
+     {}
+    ]
+   ],
+   "preload/single-download-preload.html": [
+    [
+     "/preload/single-download-preload.html",
      {}
     ]
    ],
    "presentation-api/controlling-ua/PresentationRequest_error.html": [
     [
      "/presentation-api/controlling-ua/PresentationRequest_error.html",
      {}
     ]
@@ -108955,70 +109702,58 @@
     ]
    ],
    "presentation-api/controlling-ua/PresentationRequest_mixedcontent_multiple.https.html": [
     [
      "/presentation-api/controlling-ua/PresentationRequest_mixedcontent_multiple.https.html",
      {}
     ]
    ],
+   "presentation-api/controlling-ua/PresentationRequest_sandboxing_error.html": [
+    [
+     "/presentation-api/controlling-ua/PresentationRequest_sandboxing_error.html",
+     {}
+    ]
+   ],
+   "presentation-api/controlling-ua/PresentationRequest_sandboxing_success.html": [
+    [
+     "/presentation-api/controlling-ua/PresentationRequest_sandboxing_success.html",
+     {}
+    ]
+   ],
    "presentation-api/controlling-ua/PresentationRequest_success.html": [
     [
      "/presentation-api/controlling-ua/PresentationRequest_success.html",
      {}
     ]
    ],
    "presentation-api/controlling-ua/getAvailability.html": [
     [
      "/presentation-api/controlling-ua/getAvailability.html",
      {}
     ]
    ],
-   "presentation-api/controlling-ua/getAvailability_mixedcontent.https.html": [
-    [
-     "/presentation-api/controlling-ua/getAvailability_mixedcontent.https.html",
-     {}
-    ]
-   ],
-   "presentation-api/controlling-ua/getAvailability_sandboxing_error.html": [
-    [
-     "/presentation-api/controlling-ua/getAvailability_sandboxing_error.html",
-     {}
-    ]
-   ],
    "presentation-api/controlling-ua/getAvailability_sandboxing_success.html": [
     [
      "/presentation-api/controlling-ua/getAvailability_sandboxing_success.html",
      {}
     ]
    ],
    "presentation-api/controlling-ua/idlharness.html": [
     [
      "/presentation-api/controlling-ua/idlharness.html",
      {}
     ]
    ],
-   "presentation-api/controlling-ua/reconnectToPresentation_mixedcontent.https.html": [
-    [
-     "/presentation-api/controlling-ua/reconnectToPresentation_mixedcontent.https.html",
-     {}
-    ]
-   ],
    "presentation-api/controlling-ua/reconnectToPresentation_notfound_error.html": [
     [
      "/presentation-api/controlling-ua/reconnectToPresentation_notfound_error.html",
      {}
     ]
    ],
-   "presentation-api/controlling-ua/reconnectToPresentation_sandboxing_error.html": [
-    [
-     "/presentation-api/controlling-ua/reconnectToPresentation_sandboxing_error.html",
-     {}
-    ]
-   ],
    "presentation-api/controlling-ua/reconnectToPresentation_sandboxing_success.html": [
     [
      "/presentation-api/controlling-ua/reconnectToPresentation_sandboxing_success.html",
      {}
     ]
    ],
    "presentation-api/controlling-ua/startNewPresentation_error.html": [
     [
@@ -109119,16 +109854,22 @@
     ]
    ],
    "quirks-mode/unitless-length.html": [
     [
      "/quirks-mode/unitless-length.html",
      {}
     ]
    ],
+   "referrer-policy/generic/sandboxed-iframe-with-opaque-origin.html": [
+    [
+     "/referrer-policy/generic/sandboxed-iframe-with-opaque-origin.html",
+     {}
+    ]
+   ],
    "referrer-policy/generic/subresource-test/area-navigate.html": [
     [
      "/referrer-policy/generic/subresource-test/area-navigate.html",
      {}
     ]
    ],
    "referrer-policy/generic/subresource-test/attr-referrer-invalid-value.html": [
     [
@@ -117099,16 +117840,46 @@
     ]
    ],
    "referrer-policy/unset-referrer-policy/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html": [
     [
      "/referrer-policy/unset-referrer-policy/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html",
      {}
     ]
    ],
+   "remote-playback/cancel-watch-availability.html": [
+    [
+     "/remote-playback/cancel-watch-availability.html",
+     {}
+    ]
+   ],
+   "remote-playback/disable-remote-playback-cancel-watch-availability-throws.html": [
+    [
+     "/remote-playback/disable-remote-playback-cancel-watch-availability-throws.html",
+     {}
+    ]
+   ],
+   "remote-playback/disable-remote-playback-prompt-throws.html": [
+    [
+     "/remote-playback/disable-remote-playback-prompt-throws.html",
+     {}
+    ]
+   ],
+   "remote-playback/disable-remote-playback-watch-availability-throws.html": [
+    [
+     "/remote-playback/disable-remote-playback-watch-availability-throws.html",
+     {}
+    ]
+   ],
+   "remote-playback/watch-availability-initial-callback.html": [
+    [
+     "/remote-playback/watch-availability-initial-callback.html",
+     {}
+    ]
+   ],
    "resource-timing/idlharness.html": [
     [
      "/resource-timing/idlharness.html",
      {}
     ]
    ],
    "resource-timing/resource-timing.html": [
     [
@@ -117351,48 +118122,32 @@
    "selection/addRange-56.html": [
     [
      "/selection/addRange-56.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "selection/addRange.html": [
-    [
-     "/selection/addRange.html",
-     {
-      "timeout": "long"
-     }
-    ]
-   ],
    "selection/collapse-00.html": [
     [
      "/selection/collapse-00.html",
      {
       "timeout": "long"
      }
     ]
    ],
    "selection/collapse-30.html": [
     [
      "/selection/collapse-30.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "selection/collapse.html": [
-    [
-     "/selection/collapse.html",
-     {
-      "timeout": "long"
-     }
-    ]
-   ],
    "selection/collapseToStartEnd.html": [
     [
      "/selection/collapseToStartEnd.html",
      {}
     ]
    ],
    "selection/deleteFromDocument.html": [
     [
@@ -117419,24 +118174,16 @@
    "selection/extend-40.html": [
     [
      "/selection/extend-40.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "selection/extend.html": [
-    [
-     "/selection/extend.html",
-     {
-      "timeout": "long"
-     }
-    ]
-   ],
    "selection/getRangeAt.html": [
     [
      "/selection/getRangeAt.html",
      {}
     ]
    ],
    "selection/getSelection.html": [
     [
@@ -117460,17 +118207,19 @@
     [
      "/selection/removeAllRanges.html",
      {}
     ]
    ],
    "selection/selectAllChildren.html": [
     [
      "/selection/selectAllChildren.html",
-     {}
+     {
+      "timeout": "long"
+     }
     ]
    ],
    "selection/setBaseAndExtent.html": [
     [
      "/selection/setBaseAndExtent.html",
      {}
     ]
    ],
@@ -117895,16 +118644,22 @@
     ]
    ],
    "service-workers/service-worker/fetch-event-respond-with-stops-propagation.https.html": [
     [
      "/service-workers/service-worker/fetch-event-respond-with-stops-propagation.https.html",
      {}
     ]
    ],
+   "service-workers/service-worker/fetch-event-within-sw.html": [
+    [
+     "/service-workers/service-worker/fetch-event-within-sw.html",
+     {}
+    ]
+   ],
    "service-workers/service-worker/fetch-event.https.html": [
     [
      "/service-workers/service-worker/fetch-event.https.html",
      {}
     ]
    ],
    "service-workers/service-worker/fetch-frame-resource.https.html": [
     [
@@ -117989,16 +118744,40 @@
    "service-workers/service-worker/fetch-waits-for-activate.https.html": [
     [
      "/service-workers/service-worker/fetch-waits-for-activate.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
+   "service-workers/service-worker/foreign-fetch-basics.https.html": [
+    [
+     "/service-workers/service-worker/foreign-fetch-basics.https.html",
+     {}
+    ]
+   ],
+   "service-workers/service-worker/foreign-fetch-cors.https.html": [
+    [
+     "/service-workers/service-worker/foreign-fetch-cors.https.html",
+     {}
+    ]
+   ],
+   "service-workers/service-worker/foreign-fetch-event.https.html": [
+    [
+     "/service-workers/service-worker/foreign-fetch-event.https.html",
+     {}
+    ]
+   ],
+   "service-workers/service-worker/foreign-fetch-workers.https.html": [
+    [
+     "/service-workers/service-worker/foreign-fetch-workers.https.html",
+     {}
+    ]
+   ],
    "service-workers/service-worker/getregistration.https.html": [
     [
      "/service-workers/service-worker/getregistration.https.html",
      {}
     ]
    ],
    "service-workers/service-worker/getregistrations.https.html": [
     [
@@ -118037,16 +118816,22 @@
     ]
    ],
    "service-workers/service-worker/invalid-header.https.html": [
     [
      "/service-workers/service-worker/invalid-header.https.html",
      {}
     ]
    ],
+   "service-workers/service-worker/multi-globals/url-parsing.https.html": [
+    [
+     "/service-workers/service-worker/multi-globals/url-parsing.https.html",
+     {}
+    ]
+   ],
    "service-workers/service-worker/multiple-register.https.html": [
     [
      "/service-workers/service-worker/multiple-register.https.html",
      {}
     ]
    ],
    "service-workers/service-worker/multiple-update.https.html": [
     [
@@ -118123,16 +118908,28 @@
     ]
    ],
    "service-workers/service-worker/register-default-scope.https.html": [
     [
      "/service-workers/service-worker/register-default-scope.https.html",
      {}
     ]
    ],
+   "service-workers/service-worker/register-link-element.https.html": [
+    [
+     "/service-workers/service-worker/register-link-element.https.html",
+     {}
+    ]
+   ],
+   "service-workers/service-worker/register-link-header.https.html": [
+    [
+     "/service-workers/service-worker/register-link-header.https.html",
+     {}
+    ]
+   ],
    "service-workers/service-worker/register-same-scope-different-script-url.https.html": [
     [
      "/service-workers/service-worker/register-same-scope-different-script-url.https.html",
      {}
     ]
    ],
    "service-workers/service-worker/register-wait-forever-in-install-worker.https.html": [
     [
@@ -118837,22 +119634,16 @@
     ]
    ],
    "streams/byte-length-queuing-strategy.html": [
     [
      "/streams/byte-length-queuing-strategy.html",
      {}
     ]
    ],
-   "streams/byte-length-queuing-strategy.https.html": [
-    [
-     "/streams/byte-length-queuing-strategy.https.html",
-     {}
-    ]
-   ],
    "streams/byte-length-queuing-strategy.serviceworker.https.html": [
     [
      "/streams/byte-length-queuing-strategy.serviceworker.https.html",
      {}
     ]
    ],
    "streams/byte-length-queuing-strategy.sharedworker.html": [
     [
@@ -118867,22 +119658,16 @@
     ]
    ],
    "streams/count-queuing-strategy.html": [
     [
      "/streams/count-queuing-strategy.html",
      {}
     ]
    ],
-   "streams/count-queuing-strategy.https.html": [
-    [
-     "/streams/count-queuing-strategy.https.html",
-     {}
-    ]
-   ],
    "streams/count-queuing-strategy.serviceworker.https.html": [
     [
      "/streams/count-queuing-strategy.serviceworker.https.html",
      {}
     ]
    ],
    "streams/count-queuing-strategy.sharedworker.html": [
     [
@@ -119137,22 +119922,16 @@
     ]
    ],
    "streams/readable-streams/bad-strategies.html": [
     [
      "/streams/readable-streams/bad-strategies.html",
      {}
     ]
    ],
-   "streams/readable-streams/bad-strategies.https.html": [
-    [
-     "/streams/readable-streams/bad-strategies.https.html",
-     {}
-    ]
-   ],
    "streams/readable-streams/bad-strategies.serviceworker.https.html": [
     [
      "/streams/readable-streams/bad-strategies.serviceworker.https.html",
      {}
     ]
    ],
    "streams/readable-streams/bad-strategies.sharedworker.html": [
     [
@@ -119167,22 +119946,16 @@
     ]
    ],
    "streams/readable-streams/bad-underlying-sources.html": [
     [
      "/streams/readable-streams/bad-underlying-sources.html",
      {}
     ]
    ],
-   "streams/readable-streams/bad-underlying-sources.https.html": [
-    [
-     "/streams/readable-streams/bad-underlying-sources.https.html",
-     {}
-    ]
-   ],
    "streams/readable-streams/bad-underlying-sources.serviceworker.https.html": [
     [
      "/streams/readable-streams/bad-underlying-sources.serviceworker.https.html",
      {}
     ]
    ],
    "streams/readable-streams/bad-underlying-sources.sharedworker.html": [
     [
@@ -119197,22 +119970,16 @@
     ]
    ],
    "streams/readable-streams/brand-checks.html": [
     [
      "/streams/readable-streams/brand-checks.html",
      {}
     ]
    ],
-   "streams/readable-streams/brand-checks.https.html": [
-    [
-     "/streams/readable-streams/brand-checks.https.html",
-     {}
-    ]
-   ],
    "streams/readable-streams/brand-checks.serviceworker.https.html": [
     [
      "/streams/readable-streams/brand-checks.serviceworker.https.html",
      {}
     ]
    ],
    "streams/readable-streams/brand-checks.sharedworker.html": [
     [
@@ -119227,22 +119994,16 @@
     ]
    ],
    "streams/readable-streams/cancel.html": [
     [
      "/streams/readable-streams/cancel.html",
      {}
     ]
    ],
-   "streams/readable-streams/cancel.https.html": [
-    [
-     "/streams/readable-streams/cancel.https.html",
-     {}
-    ]
-   ],
    "streams/readable-streams/cancel.serviceworker.https.html": [
     [
      "/streams/readable-streams/cancel.serviceworker.https.html",
      {}
     ]
    ],
    "streams/readable-streams/cancel.sharedworker.html": [
     [
@@ -119257,52 +120018,64 @@
     ]
    ],
    "streams/readable-streams/count-queuing-strategy-integration.html": [
     [
      "/streams/readable-streams/count-queuing-strategy-integration.html",
      {}
     ]
    ],
-   "streams/readable-streams/count-queuing-strategy-integration.https.html": [
-    [
-     "/streams/readable-streams/count-queuing-strategy-integration.https.html",
-     {}
-    ]
-   ],
    "streams/readable-streams/count-queuing-strategy-integration.serviceworker.https.html": [
     [
      "/streams/readable-streams/count-queuing-strategy-integration.serviceworker.https.html",
      {}
     ]
    ],
    "streams/readable-streams/count-queuing-strategy-integration.sharedworker.html": [
     [
      "/streams/readable-streams/count-queuing-strategy-integration.sharedworker.html",
      {}
     ]
    ],
+   "streams/readable-streams/floating-point-total-queue-size.dedicatedworker.html": [
+    [
+     "/streams/readable-streams/floating-point-total-queue-size.dedicatedworker.html",
+     {}
+    ]
+   ],
+   "streams/readable-streams/floating-point-total-queue-size.html": [
+    [
+     "/streams/readable-streams/floating-point-total-queue-size.html",
+     {}
+    ]
+   ],
+   "streams/readable-streams/floating-point-total-queue-size.serviceworker.https.html": [
+    [
+     "/streams/readable-streams/floating-point-total-queue-size.serviceworker.https.html",
+     {}
+    ]
+   ],
+   "streams/readable-streams/floating-point-total-queue-size.sharedworker.html": [
+    [
+     "/streams/readable-streams/floating-point-total-queue-size.sharedworker.html",
+     {}
+    ]
+   ],
    "streams/readable-streams/garbage-collection.dedicatedworker.html": [
     [
      "/streams/readable-streams/garbage-collection.dedicatedworker.html",
      {}
     ]
    ],
    "streams/readable-streams/garbage-collection.html": [
     [
      "/streams/readable-streams/garbage-collection.html",
      {}
     ]
    ],
-   "streams/readable-streams/garbage-collection.https.html": [
-    [
-     "/streams/readable-streams/garbage-collection.https.html",
-     {}
-    ]
-   ],
    "streams/readable-streams/garbage-collection.serviceworker.https.html": [
     [
      "/streams/readable-streams/garbage-collection.serviceworker.https.html",
      {}
     ]
    ],
    "streams/readable-streams/garbage-collection.sharedworker.html": [
     [
@@ -119317,22 +120090,16 @@
     ]
    ],
    "streams/readable-streams/general.html": [
     [
      "/streams/readable-streams/general.html",
      {}
     ]
    ],
-   "streams/readable-streams/general.https.html": [
-    [
-     "/streams/readable-streams/general.https.html",
-     {}
-    ]
-   ],
    "streams/readable-streams/general.serviceworker.https.html": [
     [
      "/streams/readable-streams/general.serviceworker.https.html",
      {}
     ]
    ],
    "streams/readable-streams/general.sharedworker.html": [
     [
@@ -119347,22 +120114,16 @@
     ]
    ],
    "streams/readable-streams/pipe-through.html": [
     [
      "/streams/readable-streams/pipe-through.html",
      {}
     ]
    ],
-   "streams/readable-streams/pipe-through.https.html": [
-    [
-     "/streams/readable-streams/pipe-through.https.html",
-     {}
-    ]
-   ],
    "streams/readable-streams/pipe-through.serviceworker.https.html": [
     [
      "/streams/readable-streams/pipe-through.serviceworker.https.html",
      {}
     ]
    ],
    "streams/readable-streams/pipe-through.sharedworker.html": [
     [
@@ -119377,22 +120138,16 @@
     ]
    ],
    "streams/readable-streams/readable-stream-reader.html": [
     [
      "/streams/readable-streams/readable-stream-reader.html",
      {}
     ]
    ],
-   "streams/readable-streams/readable-stream-reader.https.html": [
-    [
-     "/streams/readable-streams/readable-stream-reader.https.html",
-     {}
-    ]
-   ],
    "streams/readable-streams/readable-stream-reader.serviceworker.https.html": [
     [
      "/streams/readable-streams/readable-stream-reader.serviceworker.https.html",
      {}
     ]
    ],
    "streams/readable-streams/readable-stream-reader.sharedworker.html": [
     [
@@ -119407,22 +120162,16 @@
     ]
    ],
    "streams/readable-streams/tee.html": [
     [
      "/streams/readable-streams/tee.html",
      {}
     ]
    ],
-   "streams/readable-streams/tee.https.html": [
-    [
-     "/streams/readable-streams/tee.https.html",
-     {}
-    ]
-   ],
    "streams/readable-streams/tee.serviceworker.https.html": [
     [
      "/streams/readable-streams/tee.serviceworker.https.html",
      {}
     ]
    ],
    "streams/readable-streams/tee.sharedworker.html": [
     [
@@ -119437,22 +120186,16 @@
     ]
    ],
    "streams/readable-streams/templated.html": [
     [
      "/streams/readable-streams/templated.html",
      {}
     ]
    ],
-   "streams/readable-streams/templated.https.html": [
-    [
-     "/streams/readable-streams/templated.https.html",
-     {}
-    ]
-   ],
    "streams/readable-streams/templated.serviceworker.https.html": [
     [
      "/streams/readable-streams/templated.serviceworker.https.html",
      {}
     ]
    ],
    "streams/readable-streams/templated.sharedworker.html": [
     [
@@ -119647,16 +120390,40 @@
     ]
    ],
    "streams/writable-streams/count-queuing-strategy.sharedworker.html": [
     [
      "/streams/writable-streams/count-queuing-strategy.sharedworker.html",
      {}
     ]
    ],
+   "streams/writable-streams/floating-point-total-queue-size.dedicatedworker.html": [
+    [
+     "/streams/writable-streams/floating-point-total-queue-size.dedicatedworker.html",
+     {}
+    ]
+   ],
+   "streams/writable-streams/floating-point-total-queue-size.html": [
+    [
+     "/streams/writable-streams/floating-point-total-queue-size.html",
+     {}
+    ]
+   ],
+   "streams/writable-streams/floating-point-total-queue-size.serviceworker.https.html": [
+    [
+     "/streams/writable-streams/floating-point-total-queue-size.serviceworker.https.html",
+     {}
+    ]
+   ],
+   "streams/writable-streams/floating-point-total-queue-size.sharedworker.html": [
+    [
+     "/streams/writable-streams/floating-point-total-queue-size.sharedworker.html",
+     {}
+    ]
+   ],
    "streams/writable-streams/general.dedicatedworker.html": [
     [
      "/streams/writable-streams/general.dedicatedworker.html",
      {}
     ]
    ],
    "streams/writable-streams/general.html": [
     [
@@ -119971,16 +120738,22 @@
     ]
    ],
    "url/url-setters.html": [
     [
      "/url/url-setters.html",
      {}
     ]
    ],
+   "url/url-tojson.html": [
+    [
+     "/url/url-tojson.html",
+     {}
+    ]
+   ],
    "url/urlencoded-parser.html": [
     [
      "/url/urlencoded-parser.html",
      {}
     ]
    ],
    "url/urlsearchparams-append.html": [
     [
@@ -120139,22 +120912,16 @@
     ]
    ],
    "vibration/silent-ignore.html": [
     [
      "/vibration/silent-ignore.html",
      {}
     ]
    ],
-   "vr/idlharness.html": [
-    [
-     "/vr/idlharness.html",
-     {}
-    ]
-   ],
    "web-animations/animation-model/animation-types/addition-per-property.html": [
     [
      "/web-animations/animation-model/animation-types/addition-per-property.html",
      {}
     ]
    ],
    "web-animations/animation-model/animation-types/discrete-animation.html": [
     [
@@ -120223,16 +120990,22 @@
     ]
    ],
    "web-animations/interfaces/Animatable/animate.html": [
     [
      "/web-animations/interfaces/Animatable/animate.html",
      {}
     ]
    ],
+   "web-animations/interfaces/Animatable/getAnimations.html": [
+    [
+     "/web-animations/interfaces/Animatable/getAnimations.html",
+     {}
+    ]
+   ],
    "web-animations/interfaces/Animation/cancel.html": [
     [
      "/web-animations/interfaces/Animation/cancel.html",
      {}
     ]
    ],
    "web-animations/interfaces/Animation/constructor.html": [
     [
@@ -120649,16 +121422,34 @@
     ]
    ],
    "webauthn/interfaces.https.html": [
     [
      "/webauthn/interfaces.https.html",
      {}
     ]
    ],
+   "webauthn/makecredential-badargs-accountinformation.https.html": [
+    [
+     "/webauthn/makecredential-badargs-accountinformation.https.html",
+     {}
+    ]
+   ],
+   "webauthn/makecredential-badargs-attestationchallenge.https.html": [
+    [
+     "/webauthn/makecredential-badargs-attestationchallenge.https.html",
+     {}
+    ]
+   ],
+   "webauthn/makecredential-badargs-cryptoparameters.https.html": [
+    [
+     "/webauthn/makecredential-badargs-cryptoparameters.https.html",
+     {}
+    ]
+   ],
    "webdriver/interface.html": [
     [
      "/webdriver/interface.html",
      {}
     ]
    ],
    "webgl/bufferSubData.html": [
     [
@@ -124795,16 +125586,22 @@
     ]
    ],
    "webmessaging/Channel_postMessage_target_source.htm": [
     [
      "/webmessaging/Channel_postMessage_target_source.htm",
      {}
     ]
    ],
+   "webmessaging/MessageEvent-trusted.html": [
+    [
+     "/webmessaging/MessageEvent-trusted.html",
+     {}
+    ]
+   ],
    "webmessaging/MessageEvent.html": [
     [
      "/webmessaging/MessageEvent.html",
      {}
     ]
    ],
    "webmessaging/MessageEvent_properties.htm": [
     [
@@ -125365,70 +126162,40 @@
     ]
    ],
    "webrtc/simplecall.html": [
     [
      "/webrtc/simplecall.html",
      {}
     ]
    ],
-   "websockets/Close-0.htm": [
-    [
-     "/websockets/Close-0.htm",
-     {}
-    ]
-   ],
    "websockets/Close-1000-reason.htm": [
     [
      "/websockets/Close-1000-reason.htm",
      {}
     ]
    ],
    "websockets/Close-1000.htm": [
     [
      "/websockets/Close-1000.htm",
      {}
     ]
    ],
-   "websockets/Close-NaN.htm": [
-    [
-     "/websockets/Close-NaN.htm",
-     {}
-    ]
-   ],
    "websockets/Close-Reason-124Bytes.htm": [
     [
      "/websockets/Close-Reason-124Bytes.htm",
      {}
     ]
    ],
-   "websockets/Close-clamp.htm": [
-    [
-     "/websockets/Close-clamp.htm",
-     {}
-    ]
-   ],
-   "websockets/Close-null.htm": [
-    [
-     "/websockets/Close-null.htm",
-     {}
-    ]
-   ],
    "websockets/Close-reason-unpaired-surrogates.htm": [
     [
      "/websockets/Close-reason-unpaired-surrogates.htm",
      {}
     ]
    ],
-   "websockets/Close-string.htm": [
-    [
-     "/websockets/Close-string.htm",
-     {}
-    ]
-   ],
    "websockets/Close-undefined.htm": [
     [
      "/websockets/Close-undefined.htm",
      {}
     ]
    ],
    "websockets/Create-Secure-blocked-port.htm": [
     [
@@ -125557,22 +126324,16 @@
     ]
    ],
    "websockets/Create-wrong-scheme.htm": [
     [
      "/websockets/Create-wrong-scheme.htm",
      {}
     ]
    ],
-   "websockets/Secure-Close-0.htm": [
-    [
-     "/websockets/Secure-Close-0.htm",
-     {}
-    ]
-   ],
    "websockets/Secure-Close-1000-reason.htm": [
     [
      "/websockets/Secure-Close-1000-reason.htm",
      {}
     ]
    ],
    "websockets/Secure-Close-1000-verify-code.htm": [
     [
@@ -125617,40 +126378,28 @@
     ]
    ],
    "websockets/Secure-Close-4999-reason.htm": [
     [
      "/websockets/Secure-Close-4999-reason.htm",
      {}
     ]
    ],
-   "websockets/Secure-Close-NaN.htm": [
-    [
-     "/websockets/Secure-Close-NaN.htm",
-     {}
-    ]
-   ],
    "websockets/Secure-Close-Reason-124Bytes.htm": [
     [
      "/websockets/Secure-Close-Reason-124Bytes.htm",
      {}
     ]
    ],
    "websockets/Secure-Close-Reason-Unpaired-surrogates.htm": [
     [
      "/websockets/Secure-Close-Reason-Unpaired-surrogates.htm",
      {}
     ]
    ],
-   "websockets/Secure-Close-null.htm": [
-    [
-     "/websockets/Secure-Close-null.htm",
-     {}
-    ]
-   ],
    "websockets/Secure-Close-onlyReason.htm": [
     [
      "/websockets/Secure-Close-onlyReason.htm",
      {}
     ]
    ],
    "websockets/Secure-Close-readyState-Closed.htm": [
     [
@@ -125665,22 +126414,16 @@
     ]
    ],
    "websockets/Secure-Close-server-initiated-close.htm": [
     [
      "/websockets/Secure-Close-server-initiated-close.htm",
      {}
     ]
    ],
-   "websockets/Secure-Close-string.htm": [
-    [
-     "/websockets/Secure-Close-string.htm",
-     {}
-    ]
-   ],
    "websockets/Secure-Close-undefined.htm": [
     [
      "/websockets/Secure-Close-undefined.htm",
      {}
     ]
    ],
    "websockets/Secure-Send-65K-data.htm": [
     [
@@ -125911,16 +126654,26 @@
     ]
    ],
    "websockets/binaryType-wrong-value.htm": [
     [
      "/websockets/binaryType-wrong-value.htm",
      {}
     ]
    ],
+   "websockets/close-invalid.any.js": [
+    [
+     "/websockets/close-invalid.any.html",
+     {}
+    ],
+    [
+     "/websockets/close-invalid.any.worker.html",
+     {}
+    ]
+   ],
    "websockets/closing-handshake/002.html": [
     [
      "/websockets/closing-handshake/002.html",
      {}
     ],
     [
      "/websockets/closing-handshake/002.html?wss",
      {}
@@ -127509,16 +128262,22 @@
     ]
    ],
    "workers/WorkerGlobalScope_importScripts_NetworkErr.htm": [
     [
      "/workers/WorkerGlobalScope_importScripts_NetworkErr.htm",
      {}
     ]
    ],
+   "workers/WorkerGlobalScope_importScripts_NosniffErr.htm": [
+    [
+     "/workers/WorkerGlobalScope_importScripts_NosniffErr.htm",
+     {}
+    ]
+   ],
    "workers/WorkerGlobalScope_setInterval.htm": [
     [
      "/workers/WorkerGlobalScope_setInterval.htm",
      {}
     ]
    ],
    "workers/WorkerGlobalScope_setTimeout.htm": [
     [
@@ -127671,16 +128430,22 @@
     ]
    ],
    "workers/Worker_ErrorEvent_type.htm": [
     [
      "/workers/Worker_ErrorEvent_type.htm",
      {}
     ]
    ],
+   "workers/Worker_NosniffErr.htm": [
+    [
+     "/workers/Worker_NosniffErr.htm",
+     {}
+    ]
+   ],
    "workers/Worker_basic.htm": [
     [
      "/workers/Worker_basic.htm",
      {}
     ]
    ],
    "workers/Worker_cross_origin_security_err.htm": [
     [
@@ -128513,89 +129278,107 @@
   },
   "wdspec": {
    "webdriver/actions.py": [
     [
      "/webdriver/actions.py",
      {}
     ]
    ],
+   "webdriver/conftest.py": [
+    [
+     "/webdriver/conftest.py",
+     {}
+    ]
+   ],
    "webdriver/contexts.py": [
     [
      "/webdriver/contexts.py",
      {}
     ]
    ],
    "webdriver/navigation.py": [
     [
      "/webdriver/navigation.py",
      {}
     ]
+   ],
+   "webdriver/util/cleanup.py": [
+    [
+     "/webdriver/util/cleanup.py",
+     {}
+    ]
+   ],
+   "webdriver/util/http_request.py": [
+    [
+     "/webdriver/util/http_request.py",
+     {}
+    ]
    ]
   }
  },
  "paths": {
   "./.gitignore": [
-   "6eeebaf1c2eccd764becdfc9bfe6136c742e305b",
+   "bfa8422ef9849af857cdbddbe8044c2179953f6d",
    "support"
   ],
   "./.gitmodules": [
    "3deb86ca08a0d6a80a8e897355ba7213dfb6e5bc",
    "support"
   ],
   "./.travis.yml": [
-   "24f9efd0ce057f0d0e31e892079f1b2a62e5fa3b",
+   "68037c26bd4a4c0c1500dd6628ce1d95840c5bb9",
    "support"
   ],
   "./CONTRIBUTING.md": [
    "7e7cfde5c27d2a72c3d755e2eadc040c1dfbe6e1",
    "support"
   ],
   "./LICENSE": [
    "cfedb92777a36954d6e285461bf224cb6d2b5407",
    "support"
   ],
   "./LICENSE.md": [
    "89af73c41d456ee93bd40921e96414c1908fc48c",
    "support"
   ],
   "./README.md": [
-   "930f9755157d0a3da03b6a6f67c3ba12c05b22c4",
+   "f7f7d6a2bc0bc23e1c5fa3e812f710dc29ed6711",
    "support"
   ],
   "./check_stability.py": [
-   "123a9ec2d29e8ed4acc18a04e07c1514ca490e91",
+   "0a0ea60b590564b4099d05d82131da247ee63c33",
    "support"
   ],
   "./ci_built_diff.sh": [
    "1488986c7b100ff2b65b0abb3555806084f0a2bb",
    "support"
   ],
   "./ci_lint.sh": [
    "ba3b37d8d18ea579f99157bec6c8d865d68f4a3b",
    "support"
   ],
   "./ci_stability.sh": [
-   "e54dcedb8311ca70296a7ff034aa8ac7ab7df8d2",
+   "2d54d770ed8439a93e98961b3105b3248684744d",
    "support"
   ],
   "./config.default.json": [
    "26f2c0e4aced7e1787adacb36e11c3cbf44bbd48",
    "support"
   ],
   "./diff-manifest.py": [
    "94689a9853ab8d0ddcd85b2a8db4b6f2c9045b4a",
    "support"
   ],
   "./lint": [
    "c40fe0907c52a1dd8c20222cf931cf7ae911993b",
    "support"
   ],
   "./lint.whitelist": [
-   "f4b4b40498a69618f44a02315c527b998f94152c",
+   "b5adce161e0046da73010c1b3a832479922deb56",
    "support"
   ],
   "./manifest": [
    "a6fa6f29100b87d7bfb47672d91002d880e14c1e",
    "support"
   ],
   "./serve": [
    "aa28dcfdd87f967544e051978bbccf9f3ce9c097",
@@ -128605,17 +129388,17 @@
    "0efa39b1f26f86d73f2fce4f9e46003d62057b41",
    "support"
   ],
   "./server-side.md": [
    "c51b17fbac2a2e3121dc74f7badbd2873ce92f61",
    "support"
   ],
   "./test_keys_wdspec.html": [
-   "4f7487e013de733271eba9f783de863155552c29",
+   "13e6f15dcfe080bff5f3b3cbaf9b9f679915aca3",
    "support"
   ],
   "./update-built-tests.sh": [
    "75ea35a5ce9d8e3e32e8d0c336dc12e04691d16a",
    "support"
   ],
   "2dcontext/2x2.png": [
    "c67d3f646e86413722833d2308a9bfc793a916bf",
@@ -128653,25 +129436,25 @@
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "2dcontext/compositing/2d.composite.canvas.copy.html": [
    "9ad464e17e36026a958f448949439a71204b7c77",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.canvas.copy.png": [
-   "2a69d0459a5af842c9356de2d56046f2daa0dae4",
+   "7b1ab3daf1fc996078db6c4813df3ded1d1483d3",
    "support"
   ],
   "2dcontext/compositing/2d.composite.canvas.destination-atop.html": [
    "cc6ccbbe0aa4b7d058788d1c7533136b7bf28c60",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.canvas.destination-atop.png": [
-   "13b8feece41545050a8117b75ace5693dd55f95f",
+   "f949a4c8507eba193ca8fe830c80136085502e32",
    "support"
   ],
   "2dcontext/compositing/2d.composite.canvas.destination-in.html": [
    "fbd0d75f02ed5b8b1c3f19de390e52cf7a972bbe",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.canvas.destination-in.png": [
    "dcdfd760def6436f1af087dda48810bd3af6bdc1",
@@ -128685,25 +129468,25 @@
    "7dd259b8a17b79849a982837a4b0d611255cb42e",
    "support"
   ],
   "2dcontext/compositing/2d.composite.canvas.destination-over.html": [
    "cc8e8e22db426f58eecb66e66d81eff0ba26dce9",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.canvas.destination-over.png": [
-   "2f79c7d97839f3a57ee9d4e13817507d505c6982",
+   "ad099186c5e7e359c747bf5fc7512ecd027a5f8b",
    "support"
   ],
   "2dcontext/compositing/2d.composite.canvas.lighter.html": [
    "f4f549a922664ec40d9c5a55f5d5965f94752d88",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.canvas.lighter.png": [
-   "62da20d3bb971ad31ccf6771bca1f81243d8bd30",
+   "77b18063c03a2f143c6c4c625cf39ec65b116f79",
    "support"
   ],
   "2dcontext/compositing/2d.composite.canvas.source-atop.html": [
    "9198e1a1517d82b129fbc06459aa3ee34aecf747",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.canvas.source-atop.png": [
    "9c399b3d552dad81f8711139e500f346ab8e08cd",
@@ -128725,17 +129508,17 @@
    "9d938dd9dc239f5b3b32618ea1f669858a7ca78e",
    "support"
   ],
   "2dcontext/compositing/2d.composite.canvas.source-over.html": [
    "3db85a9055c20fe5009ad772460292d9a4528ce7",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.canvas.source-over.png": [
-   "c4a72d4669080d9deecfaa12a342ec0fd21372ba",
+   "2d7853de1ba8917e2e38f480379cb613eb4f952a",
    "support"
   ],
   "2dcontext/compositing/2d.composite.canvas.xor.html": [
    "9682b23223f0a20a266ea1efb8771089f414b5ae",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.canvas.xor.png": [
    "9c399b3d552dad81f8711139e500f346ab8e08cd",
@@ -128821,25 +129604,25 @@
    "554c239fca642ad09c64a83700179b0cf639011c",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.copy.html": [
    "99bf21c8416cf7cdb73546f40e0227afa421b82f",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.copy.png": [
-   "2a69d0459a5af842c9356de2d56046f2daa0dae4",
+   "7b1ab3daf1fc996078db6c4813df3ded1d1483d3",
    "support"
   ],
   "2dcontext/compositing/2d.composite.image.destination-atop.html": [
    "e4c5c1f871501b75c0b09150ebb925ae61097da4",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.destination-atop.png": [
-   "13b8feece41545050a8117b75ace5693dd55f95f",
+   "f949a4c8507eba193ca8fe830c80136085502e32",
    "support"
   ],
   "2dcontext/compositing/2d.composite.image.destination-in.html": [
    "6600b819ebd2682387f951d20a3ef03df75f890d",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.destination-in.png": [
    "dcdfd760def6436f1af087dda48810bd3af6bdc1",
@@ -128853,25 +129636,25 @@
    "7dd259b8a17b79849a982837a4b0d611255cb42e",
    "support"
   ],
   "2dcontext/compositing/2d.composite.image.destination-over.html": [
    "9bff97153ac6dc5fe3d9ab71c62fd3b1b94bec06",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.destination-over.png": [
-   "2f79c7d97839f3a57ee9d4e13817507d505c6982",
+   "ad099186c5e7e359c747bf5fc7512ecd027a5f8b",
    "support"
   ],
   "2dcontext/compositing/2d.composite.image.lighter.html": [
    "c18c35e04c9c2b018075ba751b3768fbc92d97c6",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.lighter.png": [
-   "62da20d3bb971ad31ccf6771bca1f81243d8bd30",
+   "77b18063c03a2f143c6c4c625cf39ec65b116f79",
    "support"
   ],
   "2dcontext/compositing/2d.composite.image.source-atop.html": [
    "befcdb9875c9a07bda4528a1a18d05b734664f47",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.source-atop.png": [
    "9c399b3d552dad81f8711139e500f346ab8e08cd",
@@ -128893,17 +129676,17 @@
    "9d938dd9dc239f5b3b32618ea1f669858a7ca78e",
    "support"
   ],
   "2dcontext/compositing/2d.composite.image.source-over.html": [
    "77b12cfc3d07f9c3f36cdc8bd35c64f352135e97",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.source-over.png": [
-   "c4a72d4669080d9deecfaa12a342ec0fd21372ba",
+   "2d7853de1ba8917e2e38f480379cb613eb4f952a",
    "support"
   ],
   "2dcontext/compositing/2d.composite.image.xor.html": [
    "3d5a5be53cbb03cf04a0be3569326c31ac6b1519",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.xor.png": [
    "9c399b3d552dad81f8711139e500f346ab8e08cd",
@@ -129033,25 +129816,25 @@
    "6b549fa40955b0232d58c857ee9506a255009838",
    "support"
   ],
   "2dcontext/compositing/2d.composite.transparent.copy.html": [
    "f3a067ee793b8b21eec037dcc418b5a60e3f9693",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.transparent.copy.png": [
-   "789cab82be3759bba36afea8b275b6f3fec45d2d",
+   "f35d154e2c30250325e8f2a421b84d355836a6c8",
    "support"
   ],
   "2dcontext/compositing/2d.composite.transparent.destination-atop.html": [
    "fbc48d0ee0a333b16fce6be8ca5454dba6110c89",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.transparent.destination-atop.png": [
-   "09b561010fd7cbf25935e85071efd589c9291787",
+   "b639f668950f4a4a69ea88346614afc236143fd5",
    "support"
   ],
   "2dcontext/compositing/2d.composite.transparent.destination-in.html": [
    "3b8fd5969f4d5643e4eebb9a43b1f10921347d4e",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.transparent.destination-in.png": [
    "c65f76cf15096caa3dc50a4cc4e00a7fdc7a1ee3",
@@ -129065,25 +129848,25 @@
    "aa768613ab0bb11369999edd7020efd8e271d5db",
    "support"
   ],
   "2dcontext/compositing/2d.composite.transparent.destination-over.html": [
    "3d3074b4040b48abf01599587d8246faf3dc917f",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.transparent.destination-over.png": [
-   "a8d217aa81b9f5254c15a5f4c4d7957bfb0beca7",
+   "caa7a9df45baff17e713ec9548fb33216834b24c",
    "support"
   ],
   "2dcontext/compositing/2d.composite.transparent.lighter.html": [
    "0f610263119d23e7e2fb36a534e67b3f8ec66671",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.transparent.lighter.png": [
-   "f12ee30df2c3fc94ab806918474df71ae14de8b5",
+   "78aa676bde65004a7b36c975d3207b2f6afac2bc",
    "support"
   ],
   "2dcontext/compositing/2d.composite.transparent.source-atop.html": [
    "ef751ede7b863edabcadf5cbc6ff8045fd8a0cb5",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.transparent.source-atop.png": [
    "af0b85cfa745a3d2e8aa5400126687935413e3ca",
@@ -129105,17 +129888,17 @@
    "598faa75171e8bc484c7acf60e92d42a5e8dec13",
    "support"
   ],
   "2dcontext/compositing/2d.composite.transparent.source-over.html": [
    "ae5dbcd3de103d6a2163bb0146990926aaf3a38b",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.transparent.source-over.png": [
-   "56554a72d5de4dc7687da1be7fae3f41ccaa065c",
+   "422fad851e57524a1c50c9496438f461ca26fb7b",
    "support"
   ],
   "2dcontext/compositing/2d.composite.transparent.xor.html": [
    "16d6399c6e278fc3d9c32129e6218ef88218f268",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.transparent.xor.png": [
    "af0b85cfa745a3d2e8aa5400126687935413e3ca",
@@ -129873,17 +130656,17 @@
    "9d5e23f4846574a412e6de9606eac09ee3c7f2e6",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.basic-manual.html": [
    "0a3695459801573d94b7fb66b07f3820603a0fb5",
    "manual"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.basic.png": [
-   "d2a0a4316134a7d4a42ecd02a4ea9357d57e3e53",
+   "e7ae6b6469dba0b7f61034a73fc0adace34390ac",
    "support"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html": [
    "893a574099ecd166107a48251f11416103e3e829",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html": [
    "3464362d6b0896d7d81fc2cb91bd469588daf54d",
@@ -129893,17 +130676,17 @@
    "fd68d89a591ab316b549f663737b1088899d0026",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large-manual.html": [
    "962ffd10d06c7ea5db49835bd4c55eadeaf0d510",
    "manual"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large.png": [
-   "d2a0a4316134a7d4a42ecd02a4ea9357d57e3e53",
+   "e7ae6b6469dba0b7f61034a73fc0adace34390ac",
    "support"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.negative.html": [
    "6a2420fa3dbd0191ea80aa92ca6806985c87f106",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.small.html": [
    "ed9633195f8ce7c2ef90d057e14df8bae0fa17e6",
@@ -129913,17 +130696,17 @@
    "5c62b11e888d2f22ea4d31c814bdad1b2d972f8a",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.rtl-manual.html": [
    "eb8062d79c78375c32717e242415fa0b21f0a0ac",
    "manual"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.rtl.png": [
-   "d2a0a4316134a7d4a42ecd02a4ea9357d57e3e53",
+   "e7ae6b6469dba0b7f61034a73fc0adace34390ac",
    "support"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.html": [
    "d4020ca72465357ce7f24788549eede8aba5dca0",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.html": [
    "a537e6800184cb00c7deedf232f7412ed4f561ac",
@@ -129949,17 +130732,17 @@
    "79ef1ef3208006d95ac96c2a06a3a7ac50d4911b",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.basic-manual.html": [
    "5db5e418d2b68ec4ba654f341005b9f64904c532",
    "manual"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.basic.png": [
-   "ae5c852cb2ad7100f7a4b0790e56f3df790853f1",
+   "cf46b201ea120aa743901321a9ed7b1fcab24cef",
    "support"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html": [
    "05bd36a8a2ca914bceb6762c16230de0519ebb47",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.basic.html": [
    "8f60b3c7832bcfeb26bf30c023c5784b9ccb24fd",
@@ -130817,69 +131600,69 @@
    "2cfa100e21779bc5acc48eca4d020179076bb66c",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html": [
    "a192d3d0312f1edb62a90a2fb4942d4a256d1a17",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.alpha.png": [
-   "c7664aadd8d4a1aa65ac1860fff9b8129eb61d48",
+   "c83f9e1141fae6636d976e574d479655ce52f64f",
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colour.html": [
    "5891143bdd1477206a6eef2e8458dee89412e9c2",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colour.png": [
-   "c7664aadd8d4a1aa65ac1860fff9b8129eb61d48",
+   "c83f9e1141fae6636d976e574d479655ce52f64f",
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html": [
    "0f4bea068edafcc565f7cf16f5a06d61ec6210dd",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.png": [
-   "7722c844b07aaf249564db55f4efbfea011e4907",
+   "ff05fb603271ed2de83f2138c86416eed57427b1",
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html": [
    "1109166d9cd6bc486c472f12b7934963f1d53748",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.multiple.png": [
-   "788a2fdd4a1fe702bf35d1148a2543c260b490e4",
+   "361fa9553831ea5fa44a00daa6ee7dff73d89b03",
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.outside.html": [
    "d5e59f55912b46faa959e6b0d5bd50bda62295da",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html": [
    "87f4ffbcc720072667c9cfffda9e7265167823c2",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap.png": [
-   "aaeee5906430dfc4722e48fb7c71db153d1dee3a",
+   "0febb3f0aad291c3b0f591239a9bce40aa34fc13",
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html": [
    "de9454bcd245244c57b0d40dba5b185c7246f06e",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.solid.html": [
    "0f4f8c90cf468d86d84fb745f5516ba71fe5ea79",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html": [
    "1ae27adde40aea5763e2e4d0d2b92f9ab38c4793",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.vertical.png": [
-   "f90b6e00d515e630b978c5228164987d9a94a90b",
+   "eb0fa9331ca699b352a94665e7eb347d3a0865d8",
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html": [
    "007dfba560eebb56ef71eec470b47c517f4882ad",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html": [
    "95a56a08b6053520675344e0e311983c17e137c3",
@@ -132269,17 +133052,17 @@
    "b32532a9f6a564bf8c34c37c0b4277f11b3a8f39",
    "support"
   ],
   "2dcontext/shadows/2d.shadow.blur.low-manual.html": [
    "612202bbbb3c196d96394dd8601d0fbd6204eed9",
    "manual"
   ],
   "2dcontext/shadows/2d.shadow.blur.low.png": [
-   "1313ef16b26e395eee8eff2cebe045419ff2e5fb",
+   "cca8edfbb172fbe135b83dcf4dfeef4c7043b9b7",
    "support"
   ],
   "2dcontext/shadows/2d.shadow.canvas.alpha.html": [
    "8e463b11c7f011d1c05cc13390c807b1aff924e4",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.canvas.alpha.png": [
    "4f90134ef2997a8683e9d215134fa97c23e06b3c",
@@ -132680,50 +133463,54 @@
   "2dcontext/the-canvas-state/canvas_state_restore_001.htm": [
    "8d427c1edbd200cdc77a28945eba7a6a766b2104",
    "reftest"
   ],
   "2dcontext/tools/LICENSE.txt": [
    "f0866a8c60bf7016987deeb329da99d619eee4f1",
    "support"
   ],
+  "2dcontext/tools/OWNERS": [
+   "946f23f945163bf9f9da080291b21473f6e1cbd0",
+   "support"
+  ],
   "2dcontext/tools/build.sh": [
    "e4f65db6a439972ed7a83f4cc2c9bae792ec2d27",
    "support"
   ],
   "2dcontext/tools/current-work-canvas.xhtml": [
    "891246c4dfe34f9b43b5e642b058072c4d664817",
    "support"
   ],
   "2dcontext/tools/gentest.py": [
    "49951605ab640deeb16f2b0aebf2396237fc727e",
    "support"
   ],
   "2dcontext/tools/gentestutils.py": [
-   "0bdbe6cc511b7d3d6ace5b7ccd23df4aaf04987b",
+   "9219d4911c668a1bbe314a66c5d09261bb64ea0a",
    "support"
   ],
   "2dcontext/tools/name2dir.yaml": [
-   "afde5cca8dee4892328d62eb764f13de663ef6fb",
+   "1333578a501fec686bc7ed22edf4cc8e7203ae13",
    "support"
   ],
   "2dcontext/tools/spec.yaml": [
    "4405a99f9fa29069670a1fb8aaef5e1c89ac33d0",
    "support"
   ],
   "2dcontext/tools/specextract.py": [
    "c6c58223012640480eb1e7d0b9ce4c343cafdb7c",
    "support"
   ],
   "2dcontext/tools/templates.yaml": [
    "343f3ef053fadbb9e6a841d0244a737065f9e208",
    "support"
   ],
   "2dcontext/tools/tests.yaml": [
-   "a29d387c30d03037b7f21de22f25ba0483451c34",
+   "8d5dfd4ca705fa4051b2fd0e6d12bd963a2a2330",
    "support"
   ],
   "2dcontext/tools/tests2d.yaml": [
    "27ced01c0dedc4d96f0ba378314baed5efada42d",
    "support"
   ],
   "2dcontext/tools/tests2dtext.yaml": [
    "150647743aed4aefe5c74fb7c4b6cb17150b83c4",
@@ -132877,35 +133664,31 @@
    "004de6eeaee89aadbd2f3c505de986f96d33a0e4",
    "testharness"
   ],
   "FileAPI/FileReader/support/file_test1.txt": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "FileAPI/FileReader/test_errors-manual.html": [
-   "2a759d5fb38eedf6103310167926a153cec7851f",
+   "d45d56f402dafa90a4705f0f2d667525ac60a238",
    "manual"
   ],
   "FileAPI/FileReaderSync.worker.js": [
    "19741fbd0498bf9135408ceb6128221cbeb4e2f3",
    "testharness"
   ],
   "FileAPI/OWNERS": [
    "c5a5b1077046205e35f17c55fbd1a321afc33c1d",
    "support"
   ],
   "FileAPI/blob/Blob-XHR-revoke.html": [
    "3db9200582a45806ecfae1d0f10bbd6f934de448",
    "testharness"
   ],
-  "FileAPI/blob/Blob-close.html": [
-   "15511e35a4717b7743e0a56d996d1ef3ce1ad946",
-   "testharness"
-  ],
   "FileAPI/blob/Blob-constructor.html": [
    "fc5f5ef1deff60ceb2e2db86b511cdc03f19072f",
    "testharness"
   ],
   "FileAPI/blob/Blob-in-worker.worker.js": [
    "44cf8b06af70ba951889f75c28221583be57dce0",
    "testharness"
   ],
@@ -132945,29 +133728,29 @@
    "24ba1757871636bea9cd26a48d97f86c494584ba",
    "support"
   ],
   "FileAPI/filelist-section/support/upload.zip": [
    "fa1e9bd48a2e1f5fe91e6f9b3aa401b4ccf15dfa",
    "support"
   ],
   "FileAPI/historical.html": [
-   "6f411640cdbd67dfa11c8d04067ddbbfd24a1f79",
+   "81ca35372343646dc700b7b903c01ac4650f0b21",
    "testharness"
   ],
   "FileAPI/idlharness-manual.html": [
-   "292d4dd40351e501b7bd8ec6d95f70b4ea810686",
+   "df5170b0704955d185dfd7e3e3c44516cdc4292a",
    "manual"
   ],
   "FileAPI/idlharness.html": [
    "80280c78fd64daf52b994e96418b989aa61f2fd4",
    "testharness"
   ],
   "FileAPI/idlharness.idl": [
-   "10a36a1d69430ba6c958f58643ab70440702c796",
+   "2a12d457a38d00109c0f6423bf3e3f16fcc700c9",
    "support"
   ],
   "FileAPI/idlharness.worker.js": [
    "3cb4879c7504d1152cd7c032f24b2a56c0670646",
    "testharness"
   ],
   "FileAPI/progress-manual.html": [
    "72850fdd8164131b2236c62b083972b41c49bec9",
@@ -132977,21 +133760,21 @@
    "082f6b8887bba9b627509babbe251d4fb0f8e7fe",
    "testharness"
   ],
   "FileAPI/reading-data-section/FileReader-event-handler-attributes.html": [
    "731cd4da7efee1b1625c6af395e14276dee82484",
    "testharness"
   ],
   "FileAPI/reading-data-section/FileReader-multiple-reads.html": [
-   "8ff4ca7492de72b1764365a302fd74356b8ced21",
+   "32bad4f4ea2ac1104fa2828ef7370a2fdee11a5a",
    "testharness"
   ],
   "FileAPI/reading-data-section/filereader_abort.html": [
-   "24891122dd1a2aea40bfa59a2e19431c449122a9",
+   "b1a3335d10f661aee31df179e5e81d2071b38edd",
    "testharness"
   ],
   "FileAPI/reading-data-section/filereader_error.html": [
    "3011a34b0ffc1794271e1e6a24a7b0eecaee402a",
    "testharness"
   ],
   "FileAPI/reading-data-section/filereader_file-manual.html": [
    "64c1f1aeb161aaaa024a8fe67a1b88d1699d92b3",
@@ -133024,26 +133807,50 @@
   "FileAPI/reading-data-section/support/blue-100x100.png": [
    "1bcaa828ad999e460ccd91046f7095aa1a9f3312",
    "support"
   ],
   "FileAPI/support/Blob.js": [
    "a06e828e4a420e90fcc3971bd37aef0af6f2210b",
    "support"
   ],
+  "FileAPI/support/document-domain-setter.sub.html": [
+   "c05b818b341e8ae4ecd65da8d17aff0365a3387b",
+   "support"
+  ],
+  "FileAPI/support/incumbent.sub.html": [
+   "36ccc5cb2de09589d02430b1c0582280d3240f32",
+   "support"
+  ],
   "FileAPI/support/upload.txt": [
    "f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0",
    "support"
   ],
+  "FileAPI/support/url-origin.html": [
+   "18972f4ed024eb5e1494ac466426ae32b3f5525f",
+   "support"
+  ],
+  "FileAPI/url/blob-url-in-sandboxed-iframe.html": [
+   "59188b2e679f56d5eb7ea01428ce06ff0068111a",
+   "testharness"
+  ],
+  "FileAPI/url/multi-global-origin-serialization.sub.html": [
+   "7b3cc737b53e7d7dadc3848fca7e7456e59a8635",
+   "testharness"
+  ],
+  "FileAPI/url/origin.sub.html": [
+   "427ede39094dacc910250495bc39ae5ad5826279",
+   "testharness"
+  ],
   "FileAPI/url/url_createobjecturl_blob.html": [
-   "636d9016655cfbdec08cc02ddbf0ca7f35b6e539",
+   "bfd9cbe17c74e7b181156c47228beb694d8375af",
    "testharness"
   ],
   "FileAPI/url/url_createobjecturl_file-manual.html": [
-   "aa932c8e6ed7834fa4eaee1abe06d866d74e2e58",
+   "c2a3b3968e1349ae1c4c9bc98b5eb1aa251ea32c",
    "manual"
   ],
   "FileAPI/url/url_createobjecturl_file_img-manual.html": [
    "8b8c7324f9978c31cac34f0049d02417f47bf7f7",
    "manual"
   ],
   "FileAPI/url/url_xmlhttprequest.html": [
    "bb1311c54b236f9c731d31b48323690fce4759bc",
@@ -133053,43 +133860,63 @@
    "3003064bfdf750dc93d84cd4333fd5df6a125320",
    "support"
   ],
   "FileAPI/url/url_xmlhttprequest_img.html": [
    "ce325c9fcefab1864c9943d7d1dcc77c1d22390f",
    "reftest"
   ],
   "IndexedDB/OWNERS": [
-   "f8ccb76fdf825d1d127cf019875d63d522b634a9",
+   "d9c15a957c1c4e4d011f1d9b81b3d2531927b66f",
    "support"
   ],
   "IndexedDB/README.md": [
    "fb36fa93165978667176adeba74f97a90e871ff2",
    "support"
   ],
   "IndexedDB/abort-in-initial-upgradeneeded.html": [
    "efc9c2476e812f1bb378665f397f71c590439006",
    "testharness"
   ],
+  "IndexedDB/bindings-inject-key.html": [
+   "95f44900d9565baf718be23bafd33e48e6f4fc52",
+   "testharness"
+  ],
+  "IndexedDB/clone-before-keypath-eval.html": [
+   "9191c591c5c820c0e6c91c21ba339b98ffc42b5a",
+   "testharness"
+  ],
   "IndexedDB/close-in-upgradeneeded.html": [
    "949f5e8a429a7524c9a68ef0d19baf04dadbd84a",
    "testharness"
   ],
   "IndexedDB/cursor-overloads.htm": [
    "c12f2d91554335699409b338fa266bae845ab7d8",
    "testharness"
   ],
+  "IndexedDB/delete-request-queue.html": [
+   "5853acfff17be4a78da906dfb5065a6e89ea9fba",
+   "testharness"
+  ],
   "IndexedDB/error-attributes.html": [
    "3e69684b6dc5e23508ced8c7a033a389f6e135b6",
    "testharness"
   ],
   "IndexedDB/historical.html": [
    "0c4584e1b021a286445a2a9d3388ff011a1b933e",
    "testharness"
   ],
+  "IndexedDB/idb-binary-key-detached.htm": [
+   "e7ed8b831bce3a06d21d629cd0112480dfc0f6a5",
+   "testharness"
+  ],
+  "IndexedDB/idb-binary-key-roundtrip.htm": [
+   "587b7c783d77450a2c9c1cc09ccaf530e6e5d363",
+   "testharness"
+  ],
   "IndexedDB/idb_binary_key_conversion.htm": [
    "7af8d37d63bbef60a973082f7b9fde99d5dcfca6",
    "testharness"
   ],
   "IndexedDB/idb_webworkers.htm": [
    "e57fd8321a437f3b6082c5d75025ad63bd007450",
    "testharness"
   ],
@@ -133621,25 +134448,25 @@
    "7d6028c0810f8cab7572c448a04c3e246bf1ec5a",
    "testharness"
   ],
   "IndexedDB/idbindex-query-exception-order.html": [
    "08dee6a9b0edf24801c3841c720a57f7f3de510e",
    "testharness"
   ],
   "IndexedDB/idbindex-rename-abort.html": [
-   "b737557faba60b13b5dcd3e874d301645e5a4fa1",
+   "34f3b979e4af1095209ea630d193193244fe954a",
    "testharness"
   ],
   "IndexedDB/idbindex-rename-errors.html": [
-   "6bd67155d5f1ea95c54b8fba1ce91e2ef6c36ce0",
+   "02ac21604cd8f664be9118117e6604df2498c00b",
    "testharness"
   ],
   "IndexedDB/idbindex-rename.html": [
-   "ad9484bd58d86e9be89b3e36a0c690ad1a5f4a40",
+   "9d994ad6a23181b113947e5714ddbe3592619540",
    "testharness"
   ],
   "IndexedDB/idbindex_count.htm": [
    "2e44015e473ef424160ebef828a4e1925cf1b480",
    "testharness"
   ],
   "IndexedDB/idbindex_count2.htm": [
    "524c2f3c84dda64cad5d77e394a3a6f4b15ef058",
@@ -133753,17 +134580,17 @@
    "6c3a429dc6e0886ad58eebf0573de744106e58b4",
    "testharness"
   ],
   "IndexedDB/idbindex_openKeyCursor4.htm": [
    "0f4cb1db8680bc95ee77fb5424aeaf7c83b94f4f",
    "testharness"
   ],
   "IndexedDB/idbkeyrange-includes.htm": [
-   "fffdcf4d0bb1d9de1b9f65b62784bb39dd280250",
+   "7599b7440c8cfc5cbd8f2586487035eced554530",
    "testharness"
   ],
   "IndexedDB/idbkeyrange.htm": [
    "fa0e70c7033ae97b7484f19183f1bfff569e951e",
    "testharness"
   ],
   "IndexedDB/idbkeyrange_incorrect.htm": [
    "ecdfe47233f46edb270f7e57fe2ddf2c56377254",
@@ -133793,25 +134620,25 @@
    "6c2fe5ac83765f679fd2572d4ad0d7d30466480d",
    "testharness"
   ],
   "IndexedDB/idbobjectstore-query-exception-order.html": [
    "91e12b5c824638c4f46892364ca3572bf5f28cea",
    "testharness"
   ],
   "IndexedDB/idbobjectstore-rename-abort.html": [
-   "4e250473bf7a32a7046a60759d8028d43c1003a5",
+   "fd0531cf37106187811583999f8cf548f37e5a8a",
    "testharness"
   ],
   "IndexedDB/idbobjectstore-rename-errors.html": [
-   "e4ef62dd83d336dee9d3296434bea0f4d7aead28",
+   "51a7a415410fd2206e2d6cc05d6aecbf99ca4eb1",
    "testharness"
   ],
   "IndexedDB/idbobjectstore-rename-store.html": [
-   "09312738fb92f6a2ad7f6f9af4796ae39269e8ba",
+   "7b276a866c669890d42b47a66ad5111e32e3d1f9",
    "testharness"
   ],
   "IndexedDB/idbobjectstore_add.htm": [
    "16fd0c2c08c7392e28c0fd7fa3f9e5a4207eb320",
    "testharness"
   ],
   "IndexedDB/idbobjectstore_add10.htm": [
    "f249b9b47a6b09421076a9abb576f94860015847",
@@ -134028,16 +134855,20 @@
   "IndexedDB/idbobjectstore_getAll.html": [
    "c9387cbe39891986a41d494b64e640f3db28704f",
    "testharness"
   ],
   "IndexedDB/idbobjectstore_getAllKeys.html": [
    "bfb992f18be3cea8e6febebc22b2a524bfc8cb3a",
    "testharness"
   ],
+  "IndexedDB/idbobjectstore_getKey.html": [
+   "76906dde291ad82b93070aef7b1fcecae80adfff",
+   "testharness"
+  ],
   "IndexedDB/idbobjectstore_index.htm": [
    "c5393ba4c130c0591156914ffcdb63f1f61a54a0",
    "testharness"
   ],
   "IndexedDB/idbobjectstore_openCursor.htm": [
    "ab5ccdc2cf5db0104ac37d6204f026739df0b9b7",
    "testharness"
   ],
@@ -134108,16 +134939,20 @@
   "IndexedDB/idbobjectstore_put8.htm": [
    "42d7fcc6e8616d9d7e04c4ed445292b5075c23c4",
    "testharness"
   ],
   "IndexedDB/idbobjectstore_put9.htm": [
    "027649c8e5f43764ff8151ea706f1776c48ffa98",
    "testharness"
   ],
+  "IndexedDB/idbrequest-onupgradeneeded.htm": [
+   "b3b93705a62981706d810ebddaf73f4bee6d1612",
+   "testharness"
+  ],
   "IndexedDB/idbrequest_error.html": [
    "8867b70eb4471fc35de29d9acfedd362a83a0646",
    "testharness"
   ],
   "IndexedDB/idbrequest_result.html": [
    "3b6d79f577fa4869e801bbc493225beb5f70dbec",
    "testharness"
   ],
@@ -134137,17 +134972,17 @@
    "6782ef9ea959a94548c8841d8f4083261f64b302",
    "testharness"
   ],
   "IndexedDB/idbtransaction_objectStoreNames.html": [
    "3a2bb014fe738ebcafc87e449002feec25ae86f6",
    "testharness"
   ],
   "IndexedDB/idbversionchangeevent.htm": [
-   "0db27a811017a52b05dd669f99b2accdeecb5c0d",
+   "1c84321376076ef84257aaa6d05306c005484f2d",
    "testharness"
   ],
   "IndexedDB/idbworker.js": [
    "03e244d70d286d726bf0a227bc36ef1b4d8bcc72",
    "support"
   ],
   "IndexedDB/index_sort_order.htm": [
    "251a828d333bdd3face9d20a2a28ddf0c0ffeb49",
@@ -134160,16 +134995,20 @@
   "IndexedDB/interfaces.idl": [
    "0386e2b5923f9532549bfeeabc37dcc3528e3c78",
    "support"
   ],
   "IndexedDB/interfaces.worker.js": [
    "7edbb0cce85708e4b578ceae18a833fd623cd976",
    "testharness"
   ],
+  "IndexedDB/key-conversion-exceptions.htm": [
+   "aed58068ec48e3fd682a195bd5b0ea3f87c5a0e7",
+   "testharness"
+  ],
   "IndexedDB/key_invalid.htm": [
    "8c0257c4231c413dde10c6f541f17f57634bff1c",
    "testharness"
   ],
   "IndexedDB/key_valid.html": [
    "85d0f455f5116e0754bf29fe6ba5052e7a7563a7",
    "testharness"
   ],
@@ -134184,16 +135023,24 @@
   "IndexedDB/keygenerator.htm": [
    "09e5f9b3a2b10cbe2a757f6e96cc384c874f0d68",
    "testharness"
   ],
   "IndexedDB/keyorder.htm": [
    "5418ba477143b61dd8e02a691ee90b3c49726e83",
    "testharness"
   ],
+  "IndexedDB/keypath-exceptions.htm": [
+   "24d150a9bddd39dd51821e01ddac4f45bdd04e91",
+   "testharness"
+  ],
+  "IndexedDB/keypath-special-identifiers.htm": [
+   "588026e7e95192b98b594e77fafe67495d5cd481",
+   "testharness"
+  ],
   "IndexedDB/keypath.htm": [
    "a21b6eecc56a924bdf017d9053be2f0eecd25eeb",
    "testharness"
   ],
   "IndexedDB/keypath_invalid.htm": [
    "d5ac98199a0ab7a4e05c88d9480613d9d34f4181",
    "testharness"
   ],
@@ -134201,17 +135048,17 @@
    "ef0680b2623521388e23654b5428cbfb553b4ee8",
    "testharness"
   ],
   "IndexedDB/list_ordering.htm": [
    "64544e2f7700d28590e791e54447a59d167d3813",
    "testharness"
   ],
   "IndexedDB/name-scopes.html": [
-   "c65da9b47474814b6ce73b1c56999fcd857328cf",
+   "d08882dc03b23cedaf1369c76937c95fec69df1e",
    "testharness"
   ],
   "IndexedDB/objectstore_keyorder.htm": [
    "dda6c0ad4832b2a48980efdcb0efdae995c43fdd",
    "testharness"
   ],
   "IndexedDB/open-request-queue.html": [
    "cc9a2dbc7a7e8fcbbf2cb42d3049b561997eb353",
@@ -134221,37 +135068,37 @@
    "9c486babd57c2d14bb251d5bba202b3dbd6c802d",
    "testharness"
   ],
   "IndexedDB/string-list-ordering.htm": [
    "20306634fccb6192cdfb6cf62cc97d94c64a5faa",
    "testharness"
   ],
   "IndexedDB/support-promises.js": [
-   "c72263743e6983048484776cabc12f47c069bebf",
+   "174d4db1b6634baeca46c80be43552f9da81ce07",
    "support"
   ],
   "IndexedDB/support.js": [
-   "3f2f3bd905485efe94cf7c406bef4fa20a13ab83",
+   "a236eaf6599ad94f26166144a7afe21fafcc5770",
    "support"
   ],
   "IndexedDB/transaction-abort-generator-revert.html": [
-   "0600438661bc79654f948f68d513830f61e955bd",
+   "8c0e83267f7ce862052c1354077430acc1f6f79d",
    "testharness"
   ],
   "IndexedDB/transaction-abort-index-metadata-revert.html": [
-   "c71b147260579c8452d662119eea306bce23c2b9",
+   "07a6e888f303a42e66f2afaa98c9941e08ce2aa2",
    "testharness"
   ],
   "IndexedDB/transaction-abort-multiple-metadata-revert.html": [
-   "42b891d307970370d9a055fa8147f0a775bd724d",
+   "204ed174a936fe4a91c36e00559845287ae31748",
    "testharness"
   ],
   "IndexedDB/transaction-abort-object-store-metadata-revert.html": [
-   "7429b06deefd4b51a9136c6abca083cdc5ad47a9",
+   "c0ee1602c5884af9fdf98d21a88721573257d0d2",
    "testharness"
   ],
   "IndexedDB/transaction-create_in_versionchange.htm": [
    "a0237aa82de84dd351a4854a55075fbfbaba3c2e",
    "testharness"
   ],
   "IndexedDB/transaction-lifetime-blocked.htm": [
    "2b97fa14d13e5ea212dc51b728bcc469557248f2",
@@ -134337,17 +135184,17 @@
    "766a7184da406918e9dc6718125975a59d3d5d36",
    "support"
   ],
   "WebCryptoAPI/derive_bits_keys/pbkdf2.js": [
    "f881616857e5f523338f338ffcbded34f1c6b9e9",
    "support"
   ],
   "WebCryptoAPI/derive_bits_keys/pbkdf2.worker.js": [
-   "83d62b7743fda35a661c32d401a4d7b30f339d67",
+   "1149c335951baa52b7d1ad3192292fb46176d491",
    "testharness"
   ],
   "WebCryptoAPI/derive_bits_keys/pbkdf2_vectors.js": [
    "0a073cb726ad239110545eb3cecada2a0ce5daf7",
    "support"
   ],
   "WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html": [
    "eb82990143fa33de7b62cdacd2db566512d74d44",
@@ -134437,101 +135284,101 @@
    "61db89f7b21982628428d274dd238ad0f56a3c6d",
    "support"
   ],
   "WebCryptoAPI/generateKey/failures.worker.js": [
    "248df758c6a92939799690abfd991fe888f90257",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/failures_AES-CBC.worker.js": [
-   "d6fa86648057cd6c3c7a16eba98f45244197319f",
+   "d462df4da1958c1a7a923f4f6f8d74fc7e20f2bb",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/failures_AES-CTR.worker.js": [
-   "ab7f2ba54a748bae8a4a140f46ccc20780353d5f",
+   "b745bb807622e053d8e5b2ad8f77ebdd1a5caa05",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/failures_AES-GCM.worker.js": [
-   "f8aacd9d79410624b1999a45564c69af3466ffac",
+   "c65c0c81ea710e071df9bbb36796c65c09023b2f",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/failures_AES-KW.worker.js": [
-   "e72aa236b033fa76ccd33edfd8411b9a1f2bd272",
+   "aba136c70512155f57879d90e8387f468cd08eb0",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/failures_ECDH.worker.js": [
-   "976a021c2ce5a083a046fdcdb6088c696130595b",
+   "24ad2f00216f7dfbf0488e7fe0096877b7126093",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/failures_ECDSA.worker.js": [
-   "0f0b6719b036e43083dc77068ea0a5231108fcbd",
+   "1fcde344bd6f05a1aec5ba568f5d6d7ede8c1b8c",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/failures_HMAC.worker.js": [
-   "16743f9eb56631e053e50e9dd89070e98723bd2b",
+   "0c8d20aff7988acd571156f83be3825c6078686a",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/failures_RSA-OAEP.worker.js": [
-   "f34fcef4e64a1ca4a130bb22ebf3107a8ca4ca3a",
+   "06527a268ef2e009517230aae7e0c027ab94377b",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/failures_RSA-PSS.worker.js": [
-   "49758547f9280105ee0bdac277b5526488bcd5ad",
+   "76553f02e30a990b521d51b3a13447459b5360ab",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.worker.js": [
-   "9ac208b2925a18667c9e3ffd3e00259501cea0b6",
+   "f1b875ecbe690db60e4e0706ed35f25cbd996d85",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/successes.js": [
    "a048156c0d724a735093a6f1209c8fed8281ffd1",
    "support"
   ],
   "WebCryptoAPI/generateKey/successes.worker.js": [
    "03f20782f7615881757c5febe211383e7ef19ebf",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/successes_AES-CBC.worker.js": [
-   "27a8c93446fc610cf55059353b2c787d9748eecf",
+   "c7f1d0c5e7ecf28cfc052c56739aaa3bc949ffca",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/successes_AES-CTR.worker.js": [
-   "f52b04f57b81717fcdd5e9e677fe6fe945297bca",
+   "4b388cfe97d99300e7f9c4514140e3b030ba4553",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/successes_AES-GCM.worker.js": [
-   "60ff4559f17d02f5b244a7ce810ec5de2bc4e5cf",
+   "5502fcb3da8257d28e3c49d1d391e3f6dfd3c022",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/successes_AES-KW.worker.js": [
-   "4520550fffad645f85c929df536982bd51cf0900",
+   "19c0af9024a49ce6e1b2c884c0806960686509e0",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/successes_ECDH.worker.js": [
-   "8b095c98ab1cd647cbecd16c55fc1c87f86e4e77",
+   "751da81c9530a7dc5c31b02ed7c6e3dab8d997b4",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/successes_ECDSA.worker.js": [
-   "6a911194905bc7269233d6b969f093779552050f",
+   "900abdfba6c8a142d0cea1af9c1f6417bf05eb25",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/successes_HMAC.worker.js": [
-   "1f9b1ae76578b772ae13f65e5c71a5c2095061e4",
+   "90bdffb8858c79694521cb9a831bc658b2c72834",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/successes_RSA-OAEP.worker.js": [
-   "3db92c1b97f9bfc6585270dc5c9fed93b8d97006",
+   "e74fcd1eaa98078c3f1bb6c16fbf82a754397d4b",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/successes_RSA-PSS.worker.js": [
-   "7968a7aea4f3e63f8ccbff8631e908af6ffd1e0a",
+   "bccff0d804b1d06ae9b183ebc38c72b3031c7f8a",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.worker.js": [
-   "e7321d8fedf6d0a8528550ce1b831b397f38b929",
+   "b9e9790245742b8eeb4af7679cc0144710380c07",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/test_aes-cbc.html": [
    "9c92564d0b64784bded21d3c337da125da1c0225",
    "testharness"
   ],
   "WebCryptoAPI/generateKey/test_aes-ctr.html": [
    "3804433a5bd2c382c8bd9afbd1b41792d9f927c1",
@@ -134737,33 +135584,33 @@
    "408e1a081caa23f7e717128e94eb5cfeae9bac30",
    "testharness"
   ],
   "WebCryptoAPI/test_getRandomValues.html": [
    "f1a6a67b56df8b4519e07db1c62feb9d054329d8",
    "testharness"
   ],
   "WebCryptoAPI/tools/generate.py": [
-   "e1afdc5d786a16f2534ae9ebb1002b34c87e6b89",
+   "e7b1269e1b432d017256eb200540c7fabeadff25",
    "support"
   ],
   "WebCryptoAPI/util/helpers.js": [
    "6bf895ea91bfc92cb346f96af777bc9b8a0af0ee",
    "support"
   ],
   "WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html": [
    "2f0070bafc5079f3b70dd8da567fde0ea6bfb113",
    "testharness"
   ],
   "WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.js": [
    "963ed1da346e78fce5217210cd1608b88bea1172",
    "support"
   ],
   "WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.js": [
-   "ee0eabaee48007e121e6e6383c98a51e632bd539",
+   "901c6df896c5f9bccd2e680fbd6fc56afce8d364",
    "testharness"
   ],
   "WebIDL/current-realm.html": [
    "167c7c1f53ae2bf457f6b3f917f0ef988c585c7c",
    "testharness"
   ],
   "WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.html": [
    "9ae0ceb48cac77c8470b114576ab17c2e7c1a88c",
@@ -135253,17 +136100,17 @@
    "8953ddec68595a9c35bdfea142f08821fcee37cc",
    "testharness"
   ],
   "XMLHttpRequest/abort-after-timeout.htm": [
    "94f5d2977bf839d65aaad3b9fb85002904d4b468",
    "testharness"
   ],
   "XMLHttpRequest/abort-during-done.htm": [
-   "fad51bd12ede9c42c6e375d8c61e6506bca91cbf",
+   "abea0c69c4b402e5291d4fc289386d5c7fb7dd41",
    "testharness"
   ],
   "XMLHttpRequest/abort-during-open.htm": [
    "bc528083ac09ef3666eb07d294bc2b48dc142791",
    "testharness"
   ],
   "XMLHttpRequest/abort-during-open.js": [
    "557a48afec8b4fb0611b9c995d3fe21c0ce04b66",
@@ -136101,17 +136948,17 @@
    "d58081367020f7f25474505781348596a6673d7f",
    "testharness"
   ],
   "XMLHttpRequest/send-redirect-post-upload.htm": [
    "f3167bd94f790f17c8a22e11a8f89bdf68e1bd48",
    "testharness"
   ],
   "XMLHttpRequest/send-redirect-to-cors.htm": [
-   "09f887ea4861b884fa25ccd1649760c556a1070a",
+   "21eb5548823b66d9719a15a437da13b25b7caebd",
    "testharness"
   ],
   "XMLHttpRequest/send-redirect-to-non-cors.htm": [
    "a6500b376465aa51b21f08a7f72a2f30e6058d30",
    "testharness"
   ],
   "XMLHttpRequest/send-redirect.htm": [
    "b430be84a453581d997856413ce14967108c75b4",
@@ -136201,17 +137048,17 @@
    "fbaad967df5e7e1e825dd803476176d49d51b154",
    "testharness"
   ],
   "XMLHttpRequest/setrequestheader-bogus-name.htm": [
    "6bcba2aeef3276a57ee03d41e24fe2c29ca94050",
    "testharness"
   ],
   "XMLHttpRequest/setrequestheader-bogus-value.htm": [
-   "b5577adc6174e63ec9340a8b9bb05da7918d4ad3",
+   "74ea5a08ea9a5185ee20fda78b34f6b3d4d6485b",
    "testharness"
   ],
   "XMLHttpRequest/setrequestheader-case-insensitive.htm": [
    "801b89d6115090d9b9a7aefc6831c83793625b8e",
    "testharness"
   ],
   "XMLHttpRequest/setrequestheader-content-type.htm": [
    "c70186e3b8c82571c293e5f326125d4c945686d9",
@@ -138440,16 +139287,56 @@
   "app-uri/resources/icons/w3c-16.png": [
    "5413eb642995b8c7ff8977e6548a7895fdd27366",
    "support"
   ],
   "app-uri/resources/icons/w3c-48.png": [
    "53c2735980b4d1b4ea30f47d79ac353df0242028",
    "support"
   ],
+  "assumptions/OWNERS": [
+   "946f23f945163bf9f9da080291b21473f6e1cbd0",
+   "support"
+  ],
+  "assumptions/canvas-background-ref.html": [
+   "0868a5443b1aacb8fd95327bc7c71d071158b0f1",
+   "support"
+  ],
+  "assumptions/canvas-background.html": [
+   "2f1a763d3e15a27a9220b1f084847f33092003d0",
+   "reftest"
+  ],
+  "assumptions/html-elements.html": [
+   "dacd5dc7e1d723046d5e9eea0a0eb8046d501fca",
+   "testharness"
+  ],
+  "assumptions/initial-color-ref.html": [
+   "23bd9bc50c23f6bdbe2c63bbd652a28e1a222586",
+   "support"
+  ],
+  "assumptions/initial-color.html": [
+   "14b5a61881546831e2b2733ae9592b2f932f86c4",
+   "reftest"
+  ],
+  "assumptions/medium-font-size-ref.html": [
+   "49f1b97b20c6ef7b0452e078fcfc56d8f3c14f77",
+   "support"
+  ],
+  "assumptions/medium-font-size.html": [
+   "011f54dc11a955ac173621651c67b2282d046dd9",
+   "reftest"
+  ],
+  "assumptions/min-font-size-ref.html": [
+   "5a0be668075cd811b2dc28267210c4cfdd692397",
+   "support"
+  ],
+  "assumptions/min-font-size.html": [
+   "df47a9a9342da260175776c3406856be096d0012",
+   "reftest"
+  ],
   "auxclick/OWNERS": [
    "314d421a5544db277664bb55bd04b87e9ed2fdba",
    "support"
   ],
   "auxclick/auxclick_event-manual.html": [
    "464073435190f51b2725653a0a0589e10f136d2d",
    "manual"
   ],
@@ -138501,17 +139388,17 @@
    "3c203529afca2f6b2a075eb8a42bf2206e4f16af",
    "support"
   ],
   "battery-status/support-window-open.html": [
    "61b61d09a21daee964e0ebd26f7bdfdd1964c8ae",
    "support"
   ],
   "bluetooth/bluetooth-helpers.js": [
-   "f071d5f76a960d7a973402cbfdcd6f664812fd34",
+   "9794b578f1c5c08126fc10653e4beed1f1721d0c",
    "support"
   ],
   "clear-site-data/navigation.html": [
    "daf340429ca71997c7d9c6021354522f0285c4d1",
    "testharness"
   ],
   "clear-site-data/support/echo-clear-site-data.py": [
    "d8768caed378b9a3eadeb7a566bcd099f6c2e9de",
@@ -138521,17 +139408,17 @@
    "6980ed5592440f13bccbd83afdf6c6aa0b55e2f2",
    "support"
   ],
   "clipboard/OWNERS": [
    "7c5c92bcb47be9151914d709e2b792a122f07a6e",
    "support"
   ],
   "common/OWNERS": [
-   "2b7563c023ca23579b7d9a2077b3bdb5ed135bcb",
+   "13fbb201f77b9929d7f5693b70855c9b68abc70b",
    "support"
   ],
   "common/blank.html": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "common/canvas-frame.css": [
    "785ccd1f9e4b4eee437eeff66305b2b4041266dd",
@@ -138569,17 +139456,17 @@
    "22fd0012458685b4bce13e5f15cc650726482f26",
    "support"
   ],
   "common/form-submission.py": [
    "079aedef390e883d1a1815238f7a04c058dfb9bf",
    "support"
   ],
   "common/get-host-info.sub.js": [
-   "4feb5667d2093736391c71b8f0224f6d868c8cf4",
+   "4175d0fff3555e25a646b0673a082fefdc113fe0",
    "support"
   ],
   "common/large.py": [
    "19d0b8d5fec34f080c37f1b1b837ea0c2401ad82",
    "support"
   ],
   "common/media.js": [
    "a575b8135e6ddb1501fc2a082d7544ee86011b7d",
@@ -155833,17 +156720,17 @@
    "427fc348874e490fa9a785cce60daa9156d362fc",
    "support"
   ],
   "conformance-checkers/index.html": [
    "7a82e657e375abbdd2794ae24db859c4bda7cd08",
    "support"
   ],
   "conformance-checkers/messages.json": [
-   "831294480b6ce3bc5f288103e28b4324ed0d9b76",
+   "1380ef4cc50cadf8037f93b103086ecb586afaee",
    "support"
   ],
   "conformance-checkers/tools/build-svg-tests.py": [
    "c2f1870dda4e824567a52ee564719a21d908830a",
    "support"
   ],
   "conformance-checkers/tools/dl.py": [
    "67826b1450474d20b4fedb00521e790bea0f7abd",
@@ -158397,17 +159284,17 @@
    "2d60b86d8beaa5b3329c804949c7ee0d51d929c3",
    "testharness"
   ],
   "cookies/secure/set-from-wss.https.sub.html": [
    "31461ac108fe717b074a41e14c12d9b83c064f85",
    "testharness"
   ],
   "cors/OWNERS": [
-   "f8c35b43c4ff3f30aaa3fc741bd7563c9f82f9cf",
+   "2382fc6be978e09377d8abdb79b3ec7e56689612",
    "support"
   ],
   "cors/allow-headers.htm": [
    "7152e6c95f03ce5bec3fb85473ea800b949ca935",
    "testharness"
   ],
   "cors/basic.htm": [
    "dcbed5341e5cad48abb660e354129a0fade1199a",
@@ -158532,16 +159419,20 @@
   "cssom-view/elementScroll.html": [
    "5471dca08aae9d446c487d40853957e9290677f3",
    "testharness"
   ],
   "cssom-view/elementsFromPoint.html": [
    "d7d35ebb7041d1a0b67d01a51ab125eee5a8e7b2",
    "testharness"
   ],
+  "cssom-view/historical.html": [
+   "1d88b7050e61c06aae97c42251401e1d6acb7f06",
+   "testharness"
+  ],
   "cssom-view/iframe.html": [
    "81c8e70138fc30d0954d9de692ee396310586c7f",
    "support"
   ],
   "cssom-view/mouseEvent.html": [
    "d64c45f021a5c6db7b65575288a91e28a25a2982",
    "testharness"
   ],
@@ -158552,16 +159443,24 @@
   "cssom-view/scrolling-no-browsing-context.html": [
    "1b504d68ded5e70043da04e89b77342585144f4b",
    "testharness"
   ],
   "cssom-view/scrollingElement.html": [
    "e3bc7ab9a646c1275e5dab9394df97d72ef8a42e",
    "testharness"
   ],
+  "cssom/CSS.html": [
+   "2c55d573bbd90f5ca3e564131ae697b547e4a43c",
+   "testharness"
+  ],
+  "cssom/CSSKeyframeRule.html": [
+   "0351ebe1e975932c7a79a0888e001e2afb41242b",
+   "testharness"
+  ],
   "cssom/CSSKeyframesRule.html": [
    "3efb8e5cef257a0b433192742d526709357b24c7",
    "testharness"
   ],
   "cssom/CSSNamespaceRule.html": [
    "701b19bdfa480a5e0997492094657e32ae11ea48",
    "testharness"
   ],
@@ -158580,26 +159479,42 @@
   "cssom/MediaList.html": [
    "21d9e43514fb3a7fbf8933429242dc544224ef24",
    "testharness"
   ],
   "cssom/StyleSheetList.html": [
    "3a0e6f64f70f863d679e537c4bfb76aaa0d3598a",
    "testharness"
   ],
+  "cssom/historical.html": [
+   "2c78218b89efb9bdf60cf708920be142051347c7",
+   "testharness"
+  ],
+  "cssom/overflow-serialization.html": [
+   "199039706289f577652b968706fc1251398acd1c",
+   "testharness"
+  ],
   "cssom/serialization-CSSDeclaration-with-important.html": [
    "ecc8b95fb2d71cacee271f4fea2fc16f35cdba57",
    "testharness"
   ],
   "cssom/serialize-values.html": [
    "329fe02cb9e54b1a24a8f9dedcfcf5c0f61c7f24",
    "testharness"
   ],
   "cssom/shorthand-serialization.html": [
-   "5c2502af87c24f0a4e05ec65ef9289a96ad6e72d",
+   "bd514834dbd48c267c16a4329af6fec7f6cbc081",
+   "testharness"
+  ],
+  "cssom/stylesheet-same-origin.css": [
+   "268fb9a72d33b3d18bbb82aaaac48bb15c89a88e",
+   "support"
+  ],
+  "cssom/stylesheet-same-origin.sub.html": [
+   "719c525b1af3b6b46dfeeb0627034d799bab50b5",
    "testharness"
   ],
   "custom-elements/CustomElementRegistry.html": [
    "d1661ab1734f7d1a252030aeac7e9842a7a4cb3b",
    "testharness"
   ],
   "custom-elements/Document-createElement.html": [
    "d9582ab3867b02e98da9b0da8e3398303d1833ab",
@@ -158685,17 +159600,17 @@
    "90995dda943b6fa08e16f99afc2948b63c3cb4b9",
    "testharness"
   ],
   "custom-elements/reactions/DOMStringMap.html": [
    "ad0b3fd9ec6ac895c2abd6685e23bc92b60f0733",
    "testharness"
   ],
   "custom-elements/reactions/DOMTokenList.html": [
-   "9540fa3ee34ab1fd4b79eeb822e0b297ce13019f",
+   "7482fa56e7f4d95cfe8b8f337a9b5e63a83a6e9d",
    "testharness"
   ],
   "custom-elements/reactions/Document.html": [
    "ab7d3d84305f1261e41a76d08296950fd3e5a483",
    "testharness"
   ],
   "custom-elements/reactions/Element.html": [
    "687eef15800b087216cd102bfb280a97e34e3686",
@@ -158792,78 +159707,234 @@
   "custom-elements/upgrading/upgrading-enqueue-reactions.html": [
    "322d77285d9cb280298c28c16e4d4310993e5b08",
    "testharness"
   ],
   "custom-elements/upgrading/upgrading-parser-created-element.html": [
    "2ec52a6baa7490478ec61e72bf89b2ec09d453b5",
    "testharness"
   ],
+  "docs/.gitignore": [
+   "e74984773578df84decce0bfd0db831220a2b008",
+   "support"
+  ],
+  "docs/.ruby-version": [
+   "6a53a60564f3c6b4956718496467be313e77067d",
+   "support"
+  ],
+  "docs/CNAME": [
+   "107ba21d88f427ac417717e9082a26f2c024afb8",
+   "support"
+  ],
+  "docs/Gemfile": [
+   "aeebae31cec9dcf7a29f11858f6e67e03366e876",
+   "support"
+  ],
   "docs/OWNERS": [
-   "7041582513b6075de0f00e4f1e8cfb7f82d50696",
-   "support"
-  ],
-  "docs/configuration.md": [
-   "374af514ce3a2115695c8ddd01f06a8a7a3ff6ca",
-   "support"
-  ],
-  "docs/css-metadata.md": [
-   "0cbaadb4304de1a8da62f8b4c0250cf9892c4421",
-   "support"
-  ],
-  "docs/css-naming.md": [
-   "4a188b3ea9901fbaf5161b5475fd2faad4d0e847",
-   "support"
-  ],
-  "docs/css-user-styles.md": [
-   "a66da98c2249852ee09397615fe6baa1cd1ba5e0",
-   "support"
-  ],
-  "docs/github-101.md": [
-   "1831752f01fb5046357ac618d2d987cadc0b7c15",
-   "support"
-  ],
-  "docs/lint-tool.md": [
-   "495810d6843c5cb4089806cb0c003c0484725661",
-   "support"
-  ],
-  "docs/manual-test.md": [
-   "69b5db5e6a34a558fec9499bc17c17632f5d1ac7",
-   "support"
-  ],
-  "docs/reftests.md": [
-   "5962fa836245887f85e72f286da5f89cceeef0ed",
-   "support"
-  ],
-  "docs/review-checklist.md": [
-   "e7b7ec5f225b59a9f4bbefc49e5844571e3bf8b0",
-   "support"
-  ],
-  "docs/review-process.md": [
-   "8a2e976bdee040770c9be83545f5bd57eab568e3",
-   "support"
-  ],
-  "docs/running_tests.md": [
-   "df41c1d242dc418e06f3d442994e5ea3884a825b",
-   "support"
-  ],
-  "docs/submission-process.md": [
-   "5615ed91292109ee62e28427a940b4bdfe98be68",
-   "support"
-  ],
-  "docs/test-format-guidelines.md": [
-   "c3cbe125e713eec060171a4dbf940f9557bdae92",
-   "support"
-  ],
-  "docs/test-style-guidelines.md": [
-   "c80b13887a6b913880bb768cebdf744ae54dcf04",
-   "support"
-  ],
-  "docs/test-templates.md": [
-   "15bf60a5bc7b044a867e4dc3dd9b7b9d6d0de885",
+   "78ba9cafd318b9c08381bde3275eac6899987888",
+   "support"
+  ],
+  "docs/_appendix/github-intro.md": [
+   "afa22cb6d3764b184a04cb2e8df4bfb1768bfb19",
+   "support"
+  ],
+  "docs/_appendix/index.md": [
+   "eb9d13a352bcecf35ce0e78f593eecac33f858cd",
+   "support"
+  ],
+  "docs/_appendix/test-templates.md": [
+   "7dd354e2935ae85d867a069eac4a1ca4225d4140",
+   "support"
+  ],
+  "docs/_config.yml": [
+   "55b531a735fbcfb21fab226717b140ba4b3f5486",
+   "support"
+  ],
+  "docs/_includes/footer.html": [
+   "da39a3ee5e6b4b0d3255bfef95601890afd80709",
+   "support"
+  ],
+  "docs/_includes/head.html": [
+   "cf56bf94617badf479be3946ed1026f501623c6e",
+   "support"
+  ],
+  "docs/_includes/header.html": [
+   "e0306c4de5f406a7b5198d6d729ea1e14c2d91cf",
+   "support"
+  ],
+  "docs/_includes/svg/octicons/LICENSE": [
+   "b575eaf3c174e2406fca94f232f1a6048b905878",
+   "support"
+  ],
+  "docs/_includes/svg/octicons/git-pull-request.svg": [
+   "24da0c5d055b4b75290f1debdbeecac2d14334ef",
+   "support"
+  ],
+  "docs/_includes/svg/octicons/package.svg": [
+   "a8d1b8e66489b67c027b40891db67cd6e2844715",
+   "support"
+  ],
+  "docs/_includes/svg/octicons/pencil.svg": [
+   "ace6ea5f1addcd42c843aa5a6f11f1ed85e5de53",
+   "support"
+  ],
+  "docs/_includes/svg/octicons/tools.svg": [
+   "d9eae8adc1d2bd34a51177d4de466b6ea777eb3d",
+   "support"
+  ],
+  "docs/_includes/svg/triangle-right.svg": [
+   "9a22b3a576af7f6058284ad46448e54d4615c6c4",
+   "support"
+  ],
+  "docs/_reviewing-tests/checklist.md": [
+   "c3f14eb28a73ec65fe80396c89fe94cd49a698ed",
+   "support"
+  ],
+  "docs/_reviewing-tests/index.md": [
+   "e1b4b49cbd7ea1fd703c7ab3814deee0669e9336",
+   "support"
+  ],
+  "docs/_running-tests/index.md": [
+   "8c996a7b797bec83c579f5fd643fdfca32a30cc6",
+   "support"
+  ],
+  "docs/_writing-tests/ahem.md": [
+   "f3c2b3315367f25f4b29900a4ff37c7b82979e19",
+   "support"
+  ],
+  "docs/_writing-tests/assumptions.md": [
+   "8bb7a1cda9084f179e1373b8600d597d1072c08c",
+   "support"
+  ],
+  "docs/_writing-tests/css-metadata.md": [
+   "64bee512bd4382925d6b87ab60e3756110fe30f2",
+   "support"
+  ],
+  "docs/_writing-tests/css-user-styles.md": [
+   "05dbc66f5b2a1a590432d4669753d16b9d2b5da2",
+   "support"
+  ],
+  "docs/_writing-tests/general-guidelines.md": [
+   "99ef5a8156c526e22e0e06c0f5ccfc2b3176e7e7",
+   "support"
+  ],
+  "docs/_writing-tests/idlharness.html": [
+   "2d127308c9dbb03c3e4a69964511b5e1a0e12030",
+   "support"
+  ],
+  "docs/_writing-tests/index.md": [
+   "0001b10cca68edee0d438bc99fea3b7599f7666f",
+   "support"
+  ],
+  "docs/_writing-tests/lint-tool.md": [
+   "76bb45b6385e589efcfadd523dac8babd07b16d6",
+   "support"
+  ],
+  "docs/_writing-tests/manual.md": [
+   "2c2ba2b257c7705a5b1f98f259fc0bc5df4bce17",
+   "support"
+  ],
+  "docs/_writing-tests/reftests.md": [
+   "19c5c75eb5d2a09f8ba61f94900f4e80a2d6b1bf",
+   "support"
+  ],
+  "docs/_writing-tests/rendering.md": [
+   "ec1533df5a1bc5a13b9ceaac1265c0784ccd0a27",
+   "support"
+  ],
+  "docs/_writing-tests/server-features.md": [
+   "b99519a3280770fb339c31237f1d90fa523e3644",
+   "support"
+  ],
+  "docs/_writing-tests/submission-process.md": [
+   "62747b6d0328445778050f3e4d6ec46dbdc3a18c",
+   "support"
+  ],
+  "docs/_writing-tests/testharness-api.html": [
+   "fad99e6c6946066568e605a8ac6de7e2e49ac148",
+   "support"
+  ],
+  "docs/_writing-tests/testharness.md": [
+   "6f48119051f5d4a31f104244db92a93714e9e3d0",
+   "support"
+  ],
+  "docs/_writing-tests/visual.md": [
+   "43ab66e46d0a59851c3ad9d11cc0e2d5dd3ca8c5",
+   "support"
+  ],
+  "docs/assets/_reftest_graph_example.dot": [
+   "5fb97d276ed847bc271376dc6c068f57c067d790",
+   "support"
+  ],
+  "docs/assets/commit-directly.png": [
+   "87969530ca6be9e6892b922a43d273ecf380cff0",
+   "support"
+  ],
+  "docs/assets/commitbtn.png": [
+   "1a754511eee4e6a7e9866e5783f12b4d3a4b9c42",
+   "support"
+  ],
+  "docs/assets/createprlink.png": [
+   "703e82b7e934f8f71ffe649bd885e6801efd7be8",
+   "support"
+  ],
+  "docs/assets/editbtn.png": [
+   "ba920e057883a03b25311d2825b62574aac30798",
+   "support"
+  ],
+  "docs/assets/files-changed.png": [
+   "b905e6ddabf65b1ab0019b8d94d4a9264e8d025d",
+   "support"
+  ],
+  "docs/assets/forkbtn.png": [
+   "429836f3ca93ff4896eb5d942a09e7eafad1fb02",
+   "support"
+  ],
+  "docs/assets/main.scss": [
+   "76e880eca5a3480076a4863d10caceb77eba376e",
+   "support"
+  ],
+  "docs/assets/menu.js": [
+   "68fae1bc00fd7a2e3651035e6daffdd8193183e0",
+   "support"
+  ],
+  "docs/assets/more-commits.png": [
+   "26227b779d2fe0ad84c27911c4a744e0a0f01ce2",
+   "support"
+  ],
+  "docs/assets/pencil-icon.png": [
+   "a5c1df9b9c744ec4a61e9e390ae81fab25573562",
+   "support"
+  ],
+  "docs/assets/praccepteddelete.png": [
+   "6adf9e6d9aad3f65fd25c7e5cfc2d3f6395beeab",
+   "support"
+  ],
+  "docs/assets/pullrequestbtn.png": [
+   "41213000ac1fb6ab53c6a1199744ecde452eef55",
+   "support"
+  ],
+  "docs/assets/pullrequestlink.png": [
+   "9fa2614865eb9fb6a396a453d749ef2b37114842",
+   "support"
+  ],
+  "docs/assets/reftest_graph_example.svg": [
+   "eae9457e309f47c0236944ab2d778f2fbc32f158",
+   "support"
+  ],
+  "docs/assets/sendpullrequest.png": [
+   "8a28f329253f3293cd8798d53672bd5a85c260ce",
+   "support"
+  ],
+  "docs/index.html": [
+   "72abc390909e003dfcd08d1b1148928406936f15",
+   "support"
+  ],
+  "docs/introduction.md": [
+   "2b572bb672d9b50151d984485360e2060ab29806",
    "support"
   ],
   "dom/OWNERS": [
    "ad654a78484621e32a76a4f3af5d225e802d6036",
    "support"
   ],
   "dom/collections/HTMLCollection-as-proto-length-get-throws.html": [
    "487f3991b116ceb503352ed025961282a8761e95",
@@ -159040,16 +160111,20 @@
   "dom/events/EventListener-incumbent-global-subframe-2.sub.html": [
    "a53b3bd5909771c800c5d3e874fd83ae77f0efeb",
    "support"
   ],
   "dom/events/EventListener-incumbent-global-subsubframe.sub.html": [
    "35ffc948502021b3367ae759b5f5ac362fd7acaa",
    "support"
   ],
+  "dom/events/EventListener-invoke-legacy.html": [
+   "5c047e994f2bcb971918b42760c70cea7176abcb",
+   "testharness"
+  ],
   "dom/events/EventListenerOptions-capture.html": [
    "cebd60a18add5403d4f0bd68e88e05daacfd241a",
    "testharness"
   ],
   "dom/events/EventTarget-addEventListener.html": [
    "85dea0178b16b5c3e8ddbfa9a8b4bd8424bc0a3d",
    "testharness"
   ],
@@ -159060,20 +160135,16 @@
   "dom/events/EventTarget-dispatchEvent.html": [
    "614ce0dd74b5f2c41096cb4eee829cce9a436bb2",
    "testharness"
   ],
   "dom/events/EventTarget-removeEventListener.html": [
    "8d195a4490df833fdd71388d9e8cc6e38d50cbd8",
    "testharness"
   ],
-  "dom/events/ProgressEvent.html": [
-   "30fc510ed8f122c4b03492bfcabf3ed5886e18d2",
-   "testharness"
-  ],
   "dom/historical.html": [
    "1cbb05f47017bfb409e9c7e93bcac61c0d7582d6",
    "testharness"
   ],
   "dom/interface-objects.html": [
    "144554e0a9d53cdbb2c1f01d3dc169010db693b3",
    "testharness"
   ],
@@ -159085,17 +160156,17 @@
    "17630a28cb89baf746841d8cd9d61370b6183f63",
    "testharness"
   ],
   "dom/lists/DOMTokenList-coverage-for-attributes.html": [
    "6c23a5f1c45aaa6e0e0c821986094ae491fdae43",
    "testharness"
   ],
   "dom/lists/DOMTokenList-iteration.html": [
-   "e108a00aeb545f3e912f662047fc5ccb94d90cd9",
+   "9f57e9de064ac0ed809eaac749c5f2f167bebe65",
    "testharness"
   ],
   "dom/lists/DOMTokenList-stringifier.html": [
    "3c9cd1075d790e38086b53bd0b204680d26745d8",
    "testharness"
   ],
   "dom/lists/DOMTokenList-value.html": [
    "0bede0dd94315dc5788d04e539d35005be411255",
@@ -159157,17 +160228,17 @@
    "8a41979f83f6beb8074681b4b8838cd2b1fc9756",
    "support"
   ],
   "dom/nodes/Comment-constructor.html": [
    "c2882d5007a804e5c0f9ecf307b0367d1ff49aef",
    "testharness"
   ],
   "dom/nodes/DOMImplementation-createDocument.html": [
-   "bcf609bb6fa12bf7b8b82afbc1866652afe0253a",
+   "b03938e18d60802ba8ba3c0c7e8fd7714dd72768",
    "testharness"
   ],
   "dom/nodes/DOMImplementation-createDocumentType.html": [
    "09a9749b83780791c66d8695023165cd544ec23c",
    "testharness"
   ],
   "dom/nodes/DOMImplementation-createHTMLDocument.html": [
    "90be3c69aaccfa46c4ac0e2eb04921f19999f1dd",
@@ -159489,21 +160560,21 @@
    "bd4172f0f1c13601f8989a1079f4e279055a4a24",
    "testharness"
   ],
   "dom/nodes/Document-createElement.html": [
    "e3c4288a4ad551c7b3f269b48a5a734207b39766",
    "testharness"
   ],
   "dom/nodes/Document-createElementNS.html": [
-   "2495d79aaf322aeedf3135960ea33a6e1a913a29",
+   "6a08de4ca3515d9e59043642c0654dc9a8fc310e",
    "testharness"
   ],
   "dom/nodes/Document-createElementNS.js": [
-   "1047cfa1e428b3e60bd230a663dd0dcbd88ecd01",
+   "9b6cf141da4b259fd2a032d47082b70ccfe4a59b",
    "support"
   ],
   "dom/nodes/Document-createEvent.html": [
    "b8e12f05755aa745198b9ee826b30bfbc783d02a",
    "testharness"
   ],
   "dom/nodes/Document-createEvent.js": [
    "7b702d744e0524c8dc49ed93d29f5f3148b36293",
@@ -159853,17 +160924,17 @@
    "d8662495fb3858aba3eff7da9ccc937a79d225e4",
    "testharness"
   ],
   "dom/nodes/Node-isEqualNode.html": [
    "5ec2245e6386914869f0c1fb0e2527d2ebf0b92f",
    "testharness"
   ],
   "dom/nodes/Node-isSameNode.html": [
-   "d6e50aaee5d996fd4ba651724ae24ea1df817f57",
+   "4d2530ef5f322041d04b8d6ca91d873d24b768ef",
    "testharness"
   ],
   "dom/nodes/Node-lookupNamespaceURI.html": [
    "a1ca60e17a13b72b9546e82ed9eb4ceb24060dff",
    "testharness"
   ],
   "dom/nodes/Node-lookupPrefix.xhtml": [
    "7f8e90b463acc8c7e2553fd3326238072bc5d424",
@@ -159909,17 +160980,17 @@
    "d6a001e448e242ac6ee69307a496c72f7f61e8d0",
    "testharness"
   ],
   "dom/nodes/Node-textContent.html": [
    "1a2b771be41a1ccb3af93f763d68c2df4007722a",
    "testharness"
   ],
   "dom/nodes/NodeList-Iterable.html": [
-   "400fd40433167da7c467d505a75bcd6a51208ffc",
+   "5f5ff52322f53a282b7b1cf37f452f58c274de92",
    "testharness"
   ],
   "dom/nodes/ParentNode-append.html": [
    "b296c6d2500ff9c3a7d3ec6deefbbafd428cd2f2",
    "testharness"
   ],
   "dom/nodes/ParentNode-prepend.html": [
    "2b746fc8edbbce6c2ac50d5d8c4200bfd29035e9",
@@ -160257,17 +161328,17 @@
    "12572e308272e555bc8f4f25063e373081f53fab",
    "testharness"
   ],
   "dom/ranges/Range-mutations.js": [
    "2d4ba0455d5fc7407dce75a0bfdfa61c50e4ef71",
    "support"
   ],
   "dom/ranges/Range-selectNode.html": [
-   "5d6e75b9ee7692bfac16bf2aba99c0b62c3f1e0e",
+   "5e13a6aeaa11750bafcdac4a5845b6e1dd772238",
    "testharness"
   ],
   "dom/ranges/Range-set.html": [
    "7716387037a6794b6bd84b850ee4e98d390cbde7",
    "testharness"
   ],
   "dom/ranges/Range-stringifier.html": [
    "e899f6f79cf57b491260a967ad93ce0b9b32c6fa",
@@ -160397,17 +161468,17 @@
    "da58846d7ccfd175f043332a58c73feab9394e63",
    "support"
   ],
   "domparsing/XMLSerializer-serializeToString.html": [
    "f981058d771b4e6a0936e9f496527fe6177b2479",
    "testharness"
   ],
   "domparsing/createContextualFragment.html": [
-   "8bef29fbcd55de439592e184559054651dfaf63e",
+   "e3d576cab516b137b3c758f4ab7528303a28744a",
    "testharness"
   ],
   "domparsing/innerhtml-01.xhtml": [
    "a8db52434a64ea628f168583c5bef0557c79254a",
    "testharness"
   ],
   "domparsing/innerhtml-03.xhtml": [
    "a68a81825d4f7e0c69a85b224a1a3de5d86a3599",
@@ -160472,16 +161543,20 @@
   "domxpath/OWNERS": [
    "a4e24143c2ef4b9a8fe64a0a07bd30594025f90e",
    "support"
   ],
   "domxpath/evaluator-constructor.html": [
    "4842d40e22e25ee72536946d785a3cd03bc6a11d",
    "testharness"
   ],
+  "domxpath/interfaces.html": [
+   "6848bd27f62d93fa527684c5625a42f4dc6470c2",
+   "testharness"
+  ],
   "domxpath/xml_xpath_runner.html": [
    "63bb2439149f9fafbfeea5e17028823496f02fd2",
    "testharness"
   ],
   "domxpath/xml_xpath_tests.xml": [
    "daef25b99b0e26c6bf726cb2efb8f903337746dd",
    "support"
   ],
@@ -160913,17 +161988,17 @@
    "c9305f447d904cbc1931666ec419f995346afee2",
    "testharness"
   ],
   "encoding/textdecoder-ignorebom.html": [
    "6ed76e3d1b164c16aa2a1162c39250195af42c92",
    "testharness"
   ],
   "encoding/textdecoder-labels.html": [
-   "c2b81d49c84e519b2c0b58dd42f405ef9f084693",
+   "9b1dd122e3f42ad192bed72be377a278cc487830",
    "testharness"
   ],
   "encoding/textdecoder-streaming.html": [
    "b20e902062c9e6612920e176e2856a7081eb72ef",
    "testharness"
   ],
   "encoding/textdecoder-utf16-surrogates.html": [
    "b38d339610e7bc19d000d545243508a6eb01725d",
@@ -161801,17 +162876,17 @@
    "feae3eeffefd5f026e3c75f9e6e7386bb4d4b081",
    "support"
   ],
   "encrypted-media/util/utils.js": [
    "17c7a7646bd10a09035bfbc48f6a29c033b44bda",
    "support"
   ],
   "eventsource/OWNERS": [
-   "61c7c5e28715e9b5fb8e9130d2ddd9f6cfc5af0c",
+   "1aadbf7304bd0c8d072dd36a4440bfa240bee7dc",
    "support"
   ],
   "eventsource/README.md": [
    "7ffbbf36f58487deadfc6ee31d7b12488a8b6daf",
    "support"
   ],
   "eventsource/dedicated-worker/eventsource-close.htm": [
    "700107771158b22fa280f30a5a52d1aac617ff6e",
@@ -161884,16 +162959,20 @@
   "eventsource/eventsource-onmessage-realm-support.htm": [
    "c6cb7f6b619c7e06150d7a52d7fb5db032398b52",
    "support"
   ],
   "eventsource/eventsource-onmessage-realm.htm": [
    "5b6b6a404b32e6feeda50994e847a51e8d05f37e",
    "testharness"
   ],
+  "eventsource/eventsource-onmessage-trusted.htm": [
+   "2e1db82bd52328761053868053e64b891c329a99",
+   "testharness"
+  ],
   "eventsource/eventsource-onmessage.htm": [
    "df7317125e36f62825d915f0bc156b24e1f473a9",
    "testharness"
   ],
   "eventsource/eventsource-onopen.htm": [
    "ca18dac3866e9614a16c847f2bfb19f06c22378c",
    "testharness"
   ],
@@ -161993,17 +163072,17 @@
    "260577b0b2013eea1e2b163ca70a73fdc6258439",
    "testharness"
   ],
   "eventsource/format-utf-8.htm": [
    "150899caa81465d6ee79b0f190225e477e852944",
    "testharness"
   ],
   "eventsource/interfaces.html": [
-   "d20b18bb35430de568a5654db994667936e0828d",
+   "7c6142901b523241a7d4f37924b5ac23ca326dd3",
    "testharness"
   ],
   "eventsource/request-accept.htm": [
    "ef5b92a2396e77beca045e84933e7b1481cb6eb5",
    "testharness"
   ],
   "eventsource/request-cache-control.htm": [
    "9ef66188bb2413f0eb175abc85a99b1a044a63e7",
@@ -162241,17 +163320,17 @@
    "6d017418f5fef7ee2750180676294cf7770368b7",
    "testharness"
   ],
   "fetch/api/basic/request-upload.html": [
    "c0bb59ee5b15fac13b838912918b4c5ee6838136",
    "testharness"
   ],
   "fetch/api/basic/request-upload.js": [
-   "4a99c447f2c3f56e3173aa48ba748123e4de86dd",
+   "459c38158cb1a724e3ce5445f9d88249bf69ff2f",
    "support"
   ],
   "fetch/api/basic/response-url-worker.html": [
    "3d615668cb0122600af10d80cac4a7ebfe051528",
    "testharness"
   ],
   "fetch/api/basic/response-url.html": [
    "9e7c61ac685654e355174c960ba2084d17ff7f2e",
@@ -162437,17 +163516,17 @@
    "327da1e6d9077f481c6bf7f6ab6bffd722ac14e2",
    "testharness"
   ],
   "fetch/api/cors/cors-preflight.html": [
    "7ce8eed02c9e52ccec0d35f1feced143debfa49c",
    "testharness"
   ],
   "fetch/api/cors/cors-preflight.js": [
-   "01b779fad8a4727b0b1e4de12857299c5904639a",
+   "b776129f6a316586691b1cba1cb6b63d0dda7539",
    "support"
   ],
   "fetch/api/cors/cors-redirect-credentials-worker.html": [
    "e076bad2844678ad9c8470c10a60ff2e89b2dea8",
    "testharness"
   ],
   "fetch/api/cors/cors-redirect-credentials.html": [
    "64d4b040e37e6d0617e8686f33624ba673a2eb20",
@@ -162509,17 +163588,17 @@
    "889c328c2677763c352ec9aa0264218e01a523d4",
    "testharness"
   ],
   "fetch/api/headers/header-values.html": [
    "c360fd3d220fc13b35e5858dd9c7ddb49256ae72",
    "testharness"
   ],
   "fetch/api/headers/headers-basic.html": [
-   "9bdcfe06301e94db7e3fea83b9474336e1a166c2",
+   "2eadcace244bb97aae5aee14657bf07f19df22aa",
    "testharness"
   ],
   "fetch/api/headers/headers-casing.html": [
    "c83fdd0119c17b30051ab437e66934dc22c8c420",
    "testharness"
   ],
   "fetch/api/headers/headers-combine.html": [
    "9aad3af9b8979037a1a5f2be709457c59ed480c6",
@@ -162613,17 +163692,17 @@
    "0ab191b8e4c349d47569a8d7cfeebec89711a0cb",
    "testharness"
   ],
   "fetch/api/policies/referrer-origin.html.headers": [
    "56b5f91097bb278ebc69345c0b56c65eb16cc3db",
    "support"
   ],
   "fetch/api/policies/referrer-origin.js": [
-   "7f4c10e14d44fa02c148cde2df26321d9fd3e6cb",
+   "368af4830da8fcd341ffb513b8c6c2c2bcfab3d9",
    "support"
   ],
   "fetch/api/policies/referrer-origin.js.headers": [
    "56b5f91097bb278ebc69345c0b56c65eb16cc3db",
    "support"
   ],
   "fetch/api/policies/referrer-unsafe-url-worker.html": [
    "70e7ec27a61ee68fb419213be149816ed618ce24",
@@ -162745,17 +163824,17 @@
    "6767e1cda17192ce38b6786a214d0631f4021a18",
    "testharness"
   ],
   "fetch/api/request/request-bad-port.html": [
    "1e4fbcdad22c78c6774c2496b70f6a3ede4a7c34",
    "testharness"
   ],
   "fetch/api/request/request-cache-default-conditional.html": [
-   "f0c955522ab61946185dd90a22b770f69ed71bfc",
+   "1248501140945b8ace6997b856b584fdac4a1d04",
    "testharness"
   ],
   "fetch/api/request/request-cache-default.html": [
    "8fb557ed59f9d2fc7b169333ea5a2af7f4d52051",
    "testharness"
   ],
   "fetch/api/request/request-cache-force-cache.html": [
    "290ddf79c62c0a753bc6d22e136f815662c00cc8",
@@ -162789,33 +163868,33 @@
    "04b50f51753109fbb6ea6290f927c3905527703c",
    "testharness"
   ],
   "fetch/api/request/request-consume.html": [
    "9525e1c130e6660020c5fedb434fa0efdf62db81",
    "testharness"
   ],
   "fetch/api/request/request-disturbed.html": [
-   "b030702e32e8dd27bd5172e29b1f798b5624855b",
+   "47a1771e5ce32b63cf4b378a87c5d53ee486c246",
    "testharness"
   ],
   "fetch/api/request/request-error.html": [
-   "5ee5b2591a8cfe0cbcdac1634204f9deb0095fe8",
+   "bfd03777a43be514a0839ab14f5206f486332fdb",
    "testharness"
   ],
   "fetch/api/request/request-headers.html": [
    "0a645876664c428f6ac8d170e991ccf257bb307e",
    "testharness"
   ],
   "fetch/api/request/request-idl.html": [
-   "896814c71b047f6abb7e48bb87743ab620fd09fa",
+   "56e19a129457bc9dcecf28fd472fd7ae608337ef",
    "testharness"
   ],
   "fetch/api/request/request-init-001.sub.html": [
-   "53cb16bd24b5447066d66791cc6028a3d4fc260e",
+   "096424b40f6a21e989a6a5d8684b29ee8cbb963e",
    "testharness"
   ],
   "fetch/api/request/request-init-002.html": [
    "e6647394acca551e354b27c16013ef713c8ba64e",
    "testharness"
   ],
   "fetch/api/request/request-init-003.sub.html": [
    "059edc7e857af7231abc1434f3dcebb35229f459",
@@ -162857,17 +163936,17 @@
    "c9ac2870a45253664da7de1aaf82626fdd1482bb",
    "support"
   ],
   "fetch/api/resources/method.py": [
    "9ad4c5907e6fa4d8c4bca085f637af92db0f38f3",
    "support"
   ],
   "fetch/api/resources/preflight.py": [
-   "d1edc07df29a348b9cb7ad7266d27beb42634725",
+   "59ac7dc62248865966c865afa0d3157189393a0b",
    "support"
   ],
   "fetch/api/resources/redirect.py": [
    "387c35bf1e576f00a10ce5abb4cc92e78da56845",
    "support"
   ],
   "fetch/api/resources/status.py": [
    "d521bae08fa1ee19e7bbf4301157703e567ad5c6",
@@ -162921,17 +164000,17 @@
    "936272bddf1a090267343fc7f8ab3669da98d27d",
    "testharness"
   ],
   "fetch/api/response/response-error.html": [
    "06489e75d56cbbdbfee903bea7e39c549310ba3e",
    "testharness"
   ],
   "fetch/api/response/response-idl.html": [
-   "470d5b43e33a003b51e38c7232ed5b437569df91",
+   "8bfb4518430e79ae80c219c229c0c695cc2f0421",
    "testharness"
   ],
   "fetch/api/response/response-init-001.html": [
    "e1d9ffd41e8ff0871b27ca7d33f088a124c09f4b",
    "testharness"
   ],
   "fetch/api/response/response-init-002.html": [
    "9806050696657f48e609bbc943ba15a78d6464d1",
@@ -163036,16 +164115,20 @@
   "fonts/CanvasTest.sfd": [
    "c8103241670f9b5d4e5ae9083bbf7ec0221afe3b",
    "support"
   ],
   "fonts/CanvasTest.ttf": [
    "10a7017b4caead6817aa08b25f14950e6402dd95",
    "support"
   ],
+  "fonts/OWNERS": [
+   "946f23f945163bf9f9da080291b21473f6e1cbd0",
+   "support"
+  ],
   "fonts/math/axisheight5000-verticalarrow14000.woff": [
    "5dbb41e35c4d0676c528c5be029ea90319fc200a",
    "support"
   ],
   "fonts/math/fraction-axisheight7000-rulethickness1000.woff": [
    "8e32cb4ec55c08a0d153ed8fb8498f66650b286c",
    "support"
   ],
@@ -163308,170 +164391,166 @@
   "fonts/math/xheight500.woff": [
    "a623011ca3ccb18a5a0568413f3d0c99b38321db",
    "support"
   ],
   "fullscreen/OWNERS": [
    "3203d8a2c2311d855f926425c6941dc4dd5f81ea",
    "support"
   ],
-  "fullscreen/api/blank.html": [
-   "fd575582a4ef049a3203a9440a173fed8e6b218d",
-   "support"
-  ],
   "fullscreen/api/document-exit-fullscreen-active-document.html": [
    "b4010cb68f5fa7f97e8d405e67977335e6a00795",
    "testharness"
   ],
   "fullscreen/api/document-exit-fullscreen-manual.html": [
-   "10e2ea8b211dd8262ad90bd018dbc7242b6e6955",
+   "673d72414fab3dbb677d21a05008d9014daf71bf",
    "manual"
   ],
   "fullscreen/api/document-exit-fullscreen-timing-manual.html": [
-   "86cb7308ffecde15bb8717fad128340e57f62ea5",
+   "fcac6966d40246ce9b62dd80233b9967c7d9c146",
    "manual"
   ],
   "fullscreen/api/document-exit-fullscreen-twice-manual.html": [
-   "49f34e3b689ae962674a6c93bf4862c2d9f556c1",
+   "9b6cda0c63e56720f1ab29ffca524384967d7a2f",
    "manual"
   ],
   "fullscreen/api/document-fullscreen-element-manual.html": [
-   "2f9dc4f97b5e48a8ed368ba91d85f0eee922c0ad",
+   "7026a680ddd3f0b3dfbfd75dccbcfb78b88b8ceb",
    "manual"
   ],
   "fullscreen/api/document-fullscreen-enabled-active-document.html": [
    "380e2bef1b6b4ec75dcf041f3ed0185a5805ae44",
    "testharness"
   ],
   "fullscreen/api/document-fullscreen-enabled.html": [
-   "8bf7d3bd5abeb5291bfbca105d13619492c08acf",
+   "dd76a7198bdc882285bbc01e8ee6379c52237350",
    "testharness"
   ],
   "fullscreen/api/document-onfullscreenchange-manual.html": [
-   "077201109f40506d6c05afa39571378001937863",
+   "1d9e6efc4bdf6e8d29b995167192fbc05933e72d",
    "manual"
   ],
   "fullscreen/api/document-onfullscreenerror.html": [
    "ed8836f302fffdaa407bf9bf7799effa17fb6823",
    "testharness"
   ],
   "fullscreen/api/element-ready-check-containing-iframe-manual.html": [
-   "98762221e06973203bc5495e1f7120b4cd614553",
+   "96f14dfff180ed3a78dd5df378c712800a8e1fd8",
    "manual"
   ],
   "fullscreen/api/element-ready-check-enabled-flag-not-set-manual.html": [
-   "c93d753a653eebf2956514aebc9c458da15003d8",
+   "ca0144cfc4bdb114c6fe22ebe5fe65eff9cfc1bd",
    "manual"
   ],
   "fullscreen/api/element-ready-check-fullscreen-element-sibling-manual.html": [
-   "c7ff5c9b4fd7e6a3beb7c0b7738b99ad41a99e29",
+   "f5cc0fa53fee66322cd535f2b0cf32b1ce1ab322",
    "manual"
   ],
   "fullscreen/api/element-ready-check-fullscreen-iframe-child-manual.html": [
-   "9f50d96385498deae63ca69d9baad7c2c9eb6531",
+   "1bb9738d3c30772eb2bd394bf1c9ef4a5a365061",
    "manual"
   ],
   "fullscreen/api/element-ready-check-iframe-child-manual.html": [
-   "05a70f46192b2da67977c4487594ce8def2cfd34",
+   "80bd222b0199b284ea5b554e2798860773d51ea2",
    "manual"
   ],
   "fullscreen/api/element-ready-check-not-in-document-manual.html": [
-   "c861f6720ce7a57030b2c00aabce0e45cb865340",
+   "a840821f2e75f14d43d385f79de359c37e529921",
    "manual"
   ],
   "fullscreen/api/element-request-fullscreen-and-exit-iframe-manual.html": [
-   "fb4e9db2df6804ebb960cce7e19f9937c29141c3",
+   "b09e6ee5ac5086094bd07cc4ebe431bd91b598bc",
    "manual"
   ],
   "fullscreen/api/element-request-fullscreen-and-move-manual.html": [
-   "7a306451d1c8cf9f0d31236958d4af3b813d11fc",
+   "29fb0d686ac510d169fbc10ca98eaed599f292df",
    "manual"
   ],
   "fullscreen/api/element-request-fullscreen-and-move-to-iframe-manual.html": [
-   "70ec375b00a69f34532b37691fe2f1f9e5e3bb27",
+   "412ea81c4697594c9cc63709ef29ea2abc3c10d7",
    "manual"
   ],
   "fullscreen/api/element-request-fullscreen-and-remove-iframe-manual.html": [
-   "3e695d538e9d9890d7d3ced556432d194a6e7f73",
+   "465cb3419b1f3e7b6b385722833e20f285fa864d",
    "manual"
   ],
   "fullscreen/api/element-request-fullscreen-and-remove-manual.html": [
-   "14f1d43be32700bf7f819770155dfc87a524f232",
+   "5153805ee2b098649ddced4ae8f22b37db6600bf",
    "manual"
   ],
   "fullscreen/api/element-request-fullscreen-manual.html": [
-   "125b2b5c24e8ab2d47566e03d4fb7045efe56a93",
+   "6b9c17d77529ea1b49d60317a72eda8cb79f0dd5",
    "manual"
   ],
   "fullscreen/api/element-request-fullscreen-non-top-manual.html": [
-   "c5394f9832f6459c0e7cbde940e228e3dc829792",
+   "c346255bb659b952d8d27b2ab136e7815c1161d9",
    "manual"
   ],
   "fullscreen/api/element-request-fullscreen-not-allowed.html": [
    "6ac16e4af17eaa3f16fa3cb04836fe28edb6016c",
    "testharness"
   ],
   "fullscreen/api/element-request-fullscreen-same-manual.html": [
-   "27c8b71944f80292d2d121436905c116ae04cd5a",
+   "10b6ff2c859c50516209735dd1bdc3ea4d24f330",
    "manual"
   ],
   "fullscreen/api/element-request-fullscreen-svg-rect-manual.html": [
-   "ec86eb3c1f6d6b169a095a7b8ef060756c9b0dda",
+   "c22355542ab46b4981dbca8c30b8e44da258998f",
    "manual"
   ],
   "fullscreen/api/element-request-fullscreen-svg-svg-manual.html": [
-   "771c33e3735c885ba3e8b2101da41b28fee6882f",
+   "907c13b799d1f726e397d2899452321b585cb444",
    "manual"
   ],
   "fullscreen/api/element-request-fullscreen-timing-manual.html": [
-   "d90997c0fc67751b6acc126c227c30048a9a0c86",
+   "e0af92a93669102ec578ac19e95e417ea17de924",
    "manual"
   ],
   "fullscreen/api/element-request-fullscreen-top-manual.html": [
-   "2f2b091297d3982adcd789fd8fc41cc3b7050dfc",
+   "53ad260cb1cd2951d7cacfbc73c2c49837c1ebd4",
    "manual"
   ],
   "fullscreen/api/element-request-fullscreen-twice-manual.html": [
-   "5dc78bc81e147d487fc0417c94409e717d74b281",
+   "b83f5d0212137f1b939e0f84e5ecd86dd06916b9",
    "manual"
   ],
   "fullscreen/api/element-request-fullscreen-two-elements-manual.html": [
-   "d71433083e190e396faad1fc8e66f7862d8732be",
+   "5b0ba87ee0372f798b7224dd54c6dfdce6ed9ce2",
    "manual"
   ],
   "fullscreen/api/element-request-fullscreen-two-iframes-manual.html": [
-   "1854d6e4fb7ce04cb2cee84b08cadad3f7f60b13",
+   "d3b6a2795bebb8f903b9491fd5f0a80f9aca02c9",
    "manual"
   ],
   "fullscreen/api/historical.html": [
    "9d9bec938f185b2461da4d00a5683ad5d07ee577",
    "testharness"
   ],
   "fullscreen/model/remove-child-manual.html": [
-   "1ecac152ff681f4bf00c062a33dcd93485257504",
+   "b1142930c6c972057213bd477cf116fcc9e7fc2a",
    "manual"
   ],
   "fullscreen/model/remove-first-manual.html": [
-   "0cc368474a30b0babfda3d0a9477f20086a0eafa",
+   "1314c7133a51ddfa76fd562775ec7fe40ceb0977",
    "manual"
   ],
   "fullscreen/model/remove-last-manual.html": [
-   "74479c72bd9099c9c790bc3dfeea56b5c64d08ed",
+   "322a0397f483ee04789ccca2bc242364212ec885",
    "manual"
   ],
   "fullscreen/model/remove-parent-manual.html": [
-   "7bc05eb1c63f03fde601438a5d97a7e028083fd0",
+   "895db7a5857479e83ce431b18e499df87e940690",
    "manual"
   ],
   "fullscreen/model/remove-single-manual.html": [
-   "52de156e6f435b039c29437665fc85061a2f5206",
+   "ddc429f4b1cd9f906ee934ec3bc20f6c17e32622",
    "manual"
   ],
   "fullscreen/trusted-click.js": [
-   "b4e82a760c0e959a2606ead1161b20a1cccaf3b4",
+   "e401e8e8bcd97446991398d6021a9bd712c923c5",
    "support"
   ],
   "gamepad/OWNERS": [
    "7ef5aa4880ca0d8c1d02e4c730d0c2317219d7e8",
    "support"
   ],
   "gamepad/events-manual.html": [
    "681164d632f32528a17a58325fd8c3f33ae6217b",
@@ -163577,31 +164656,35 @@
    "b89ada0b18149d7582d22c8971ea558f5971a96c",
    "testharness"
   ],
   "hr-time/basic.worker.js": [
    "eb69640c9494c235140aafe3d9a57bb26edb20bf",
    "testharness"
   ],
   "hr-time/idlharness.html": [
-   "3767c5eb13de996ea4c1538ee87a11be9431eb24",
+   "b56993b32650d40226e08beee147bc28c76cfa22",
    "testharness"
   ],
   "hr-time/monotonic-clock.html": [
    "8e8d3240236a50a4a38aba083e5e8c59383a4dcb",
    "testharness"
   ],
   "hr-time/resources/now_frame.html": [
    "031edb78f5ab21f51005fdb30a99a605669254ce",
    "support"
   ],
   "hr-time/test_cross_frame_start.html": [
    "289c39cd0c74f3ca28fe5087b75ef01135396594",
    "testharness"
   ],
+  "hr-time/window-worker-time-origin.html": [
+   "556079c9d81c55df55c69738384991d31cad2c77",
+   "testharness"
+  ],
   "html-imports/OWNERS": [
    "7fdd5401a03e385fee7d80b89e629ed89bb600de",
    "support"
   ],
   "html-imports/document/document-method-changes.html": [
    "8a90989d87713f746a4a9d4d0d8c4816ba2beab3",
    "testharness"
   ],
@@ -163825,17 +164908,17 @@
    "2e5050d4e1a58a14131809f1acdcd263729918ae",
    "testharness"
   ],
   "html-media-capture/support/upload.txt": [
    "1d229271928d3f9e2bb0375bd6ce5db6c6d348d9",
    "support"
   ],
   "html/OWNERS": [
-   "42ccbcd92825fcb6bf6efd11a2985f9cd90cdb08",
+   "debb42d43e47bd190e4bc9d6eb368cff803c67de",
    "support"
   ],
   "html/browsers/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "html/browsers/browsing-the-web/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
@@ -163856,20 +164939,16 @@
   "html/browsers/browsing-the-web/history-traversal/001-2.html": [
    "6ab295e142a89e006377cb22abed3c87f99fdcb0",
    "support"
   ],
   "html/browsers/browsing-the-web/history-traversal/001.html": [
    "d58a0434f7fdb7025532496da5e9b2db6679d600",
    "testharness"
   ],
-  "html/browsers/browsing-the-web/history-traversal/MANIFEST": [
-   "77f7e6de345d8645865225173f5d6f403a80dee3",
-   "support"
-  ],
   "html/browsers/browsing-the-web/history-traversal/PopStateEvent.html": [
    "2a7ed0827fc61af7b3bdd238577887aff1902ea7",
    "testharness"
   ],
   "html/browsers/browsing-the-web/history-traversal/browsing_context_name-0.html": [
    "059f6738127f25477f8c17dc3e79f2dc7ea64465",
    "support"
   ],
@@ -163888,26 +164967,30 @@
   "html/browsers/browsing-the-web/history-traversal/browsing_context_name-4.html": [
    "49574225da2bf97149ccb0c486c85f1e88cb8848",
    "support"
   ],
   "html/browsers/browsing-the-web/history-traversal/browsing_context_name.html": [
    "87d7d141b05200ad3db0660d9d8d8bdf7876ee4b",
    "testharness"
   ],
+  "html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin-0.html": [
+   "a0512a75c277b22bbbcd37692580c779334ab74b",
+   "support"
+  ],
   "html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin.html": [
-   "335497f240accd4eec21d8da8401ce2c31af492e",
+   "80ddf5ab19d6698340820c2fa4145d4aa6960459",
    "testharness"
   ],
   "html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin_2.html": [
-   "d0fb79d8beac15f3dc2ad8ad3d383b37ea1f108f",
+   "d1a0dcf7e544066d7d30454e9915fad22c6966dc",
    "testharness"
   ],
   "html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin_3.html": [
-   "b0a8dc155d7987398b4c333a29288d55fca19e79",
+   "7feaab2a60b39d697819571136463ce26936d3db",
    "testharness"
   ],
   "html/browsers/browsing-the-web/history-traversal/contains.json": [
    "f875c45ed23c6599aaa0f6dbbe71b56413c0a75f",
    "support"
   ],
   "html/browsers/browsing-the-web/history-traversal/events.html": [
    "3e58347f94b836d727fb524198c3aba9e806459e",
@@ -164088,20 +165171,16 @@
   "html/browsers/browsing-the-web/navigating-across-documents/014.html": [
    "a1c60d70e70da5f71e7f703bb5e5a3a24961a7cb",
    "testharness"
   ],
   "html/browsers/browsing-the-web/navigating-across-documents/015.html": [
    "c36313c07b7de95c8f3a72fa9952a3e3f719975f",
    "testharness"
   ],
-  "html/browsers/browsing-the-web/navigating-across-documents/MANIFEST": [
-   "afc8104d354fd806e92e5e3e57278795036b179d",
-   "support"
-  ],
   "html/browsers/browsing-the-web/navigating-across-documents/blank.html": [
    "448f6f9971f92c4b9b7b7a536be353793f6147d6",
    "support"
   ],
   "html/browsers/browsing-the-web/navigating-across-documents/child_navigates_parent_location-1.html": [
    "a1fb48481f13d419eadf1deb8cb0782eeb770e81",
    "support"
   ],
@@ -164152,30 +165231,54 @@
   "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-query-fragment-components.html": [
    "1278f37be250f761f84bf352ebff8ed4c8a04e96",
    "testharness"
   ],
   "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling.html": [
    "a30db313246ebd786edcc062aed486a954f6f27f",
    "testharness"
   ],
+  "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-1.html": [
+   "d0d0239f4fb20c10503820336f9d3dc2d8a42479",
+   "support"
+  ],
+  "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-2.html": [
+   "dbd6c49dea5841cfa77c4201d423efdb040ce554",
+   "support"
+  ],
+  "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit.html": [
+   "dd5bef9b7b09f01c2ef73b8d8e0d0dfb9e157ede",
+   "testharness"
+  ],
+  "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-1.html": [
+   "9afad1c6877099686e4e804352afe27bfd87413c",
+   "support"
+  ],
+  "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-2.html": [
+   "daeb676215a64b7bfd24c189af2c94f8e16ab1d3",
+   "support"
+  ],
+  "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html": [
+   "125c68ae2e3e83b4da17fd0ade6c3571b49eca0d",
+   "testharness"
+  ],
   "html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_data_url-1.html": [
    "1faff37879c39aa8b9957801b71c607610af37c9",
    "support"
   ],
   "html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_data_url.html": [
    "ccd4c27d6095ff88476047dc1511fc93efae089a",
    "testharness"
   ],
   "html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin-1.html": [
    "3a4b607d4e97b5b97bfa39584c73f4a97f9310bb",
    "support"
   ],
   "html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html": [
-   "439d821e0baaebe8034287f78c84450e9622746b",
+   "272d9e767599cd6215770cb9f6286c54458f3215",
    "testharness"
   ],
   "html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html": [
    "dc948f346289dc8ad33129a7794f823865e319e8",
    "testharness"
   ],
   "html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-src.html": [
    "7fba2cbd8b3eae3740b026282ef815d91b3aed44",
@@ -164205,21 +165308,21 @@
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "html/browsers/browsing-the-web/read-media/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "html/browsers/browsing-the-web/read-media/pageload-image.html": [
-   "ab8233f67d7c4b694243d60b435100cad19cae17",
+   "b6710a9c29c09b52db31c9379e933649982dfe09",
    "testharness"
   ],
   "html/browsers/browsing-the-web/read-media/pageload-video.html": [
-   "c3d7d9a9c75a0174a179b65c46a207910835387c",
+   "2d8749e1d5f585ba60ce0a20367d116d126df475",
    "testharness"
   ],
   "html/browsers/browsing-the-web/read-multipart-x-mixed-replace/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "html/browsers/browsing-the-web/read-plugin/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
@@ -164268,20 +165371,16 @@
   "html/browsers/browsing-the-web/scroll-to-fragid/006.html": [
    "dd47eb2418e99b8f96be88489bd4405a438aed12",
    "testharness"
   ],
   "html/browsers/browsing-the-web/scroll-to-fragid/007.html": [
    "7e24cd47a4ae882b40f7f8798a44faf05f034c3d",
    "testharness"
   ],
-  "html/browsers/browsing-the-web/scroll-to-fragid/MANIFEST": [
-   "f86e15c066d8f0c782746c8b00a84d08cca22f60",
-   "support"
-  ],
   "html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-percent-encoded.html": [
    "0af4162b8729fa5a8db73b24469fa91cc012fef8",
    "testharness"
   ],
   "html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-anchor-name.html": [
    "8de758988400b4b1acad6bb4c94069b4d0167c20",
    "testharness"
   ],
@@ -164312,24 +165411,28 @@
   "html/browsers/browsing-the-web/unloading-documents/004.html": [
    "d831d7904e07b8609a2fb3febc0df57f90ff2e1f",
    "testharness"
   ],
   "html/browsers/browsing-the-web/unloading-documents/005.html": [
    "0e70b1856103d4b635f133ae3a19865b4bbfb8c9",
    "testharness"
   ],
-  "html/browsers/browsing-the-web/unloading-documents/MANIFEST": [
-   "1bfc6e77691d63a79b5ab41c63ab69d1a600411d",
-   "support"
-  ],
   "html/browsers/browsing-the-web/unloading-documents/base.html": [
    "a1a1effc33aad51d006fce3f406edaf6c65bfc0a",
    "support"
   ],
+  "html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling-1.html": [
+   "a80c64c5fc7755e2f332e0383b13f5ef4af44f18",
+   "support"
+  ],
+  "html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html": [
+   "c98f22b2c05a3c6e3df1d90e88f5d59dd5f4cd86",
+   "testharness"
+  ],
   "html/browsers/browsing-the-web/unloading-documents/beforeunload-on-history-back-1.html": [
    "0d23c9bac35bfdcd967ad099f1b0b62f16ac7d60",
    "support"
   ],
   "html/browsers/browsing-the-web/unloading-documents/beforeunload-on-history-back.html": [
    "f461f01132d748ccdad9ec3a8a9a59d4e9200fe5",
    "testharness"
   ],
@@ -164388,20 +165491,16 @@
   "html/browsers/browsing-the-web/unloading-documents/prompt/002.html": [
    "6dce6121b72866381ca8b17eca7e1d45aefe93cf",
    "testharness"
   ],
   "html/browsers/browsing-the-web/unloading-documents/prompt/003.html": [
    "c37ad1ea3a1c8e389f6066c95c7b2745648e9e7e",
    "testharness"
   ],
-  "html/browsers/browsing-the-web/unloading-documents/prompt/MANIFEST": [
-   "21581330547a33c8ffc532d918f1f73f19e51a23",
-   "support"
-  ],
   "html/browsers/browsing-the-web/unloading-documents/prompt/manual-001.html": [
    "895580cf70904918397da755527c5dda3f227b8a",
    "support"
   ],
   "html/browsers/browsing-the-web/unloading-documents/prompt/manual-002.html": [
    "f802c5bfc04dbd572ab04d4bb80a19b23dd514dc",
    "support"
   ],
@@ -164556,20 +165655,16 @@
   "html/browsers/browsing-the-web/unloading-documents/unload/009-1.html": [
    "1961f6d8a60a5560e90130c68e840b9a95e72014",
    "support"
   ],
   "html/browsers/browsing-the-web/unloading-documents/unload/009.html": [
    "97d775ccd5a50fe561100794417c7c7eb97939e7",
    "testharness"
   ],
-  "html/browsers/browsing-the-web/unloading-documents/unload/MANIFEST": [
-   "8054c9fea0f79b5a190b5a299f62c72cc86eb931",
-   "support"
-  ],
   "html/browsers/browsing-the-web/unloading-documents/unload/manual-001-1.html": [
    "ff9aaf41f253012553868cc998e0b97ab6fe2970",
    "support"
   ],
   "html/browsers/browsing-the-web/unloading-documents/unload/manual-001.html": [
    "2a96f64ae79f1f1089ead1d0bae17b733540a8c5",
    "support"
   ],
@@ -165436,26 +166531,22 @@
   "html/browsers/offline/the-application-cache-selection-algorithm/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "html/browsers/origin/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
-  "html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html": [
-   "1b20d98e7bb5138ba4db9d74f3458f6fe9d090d2",
-   "testharness"
-  ],
   "html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html": [
    "604c6ee2bd78187a600dd28e03b60caf89580cfe",
    "testharness"
   ],
   "html/browsers/origin/cross-origin-objects/cross-origin-objects.html": [
-   "4397388c56189b03b7cf2fb195449fff6c895c81",
+   "4acb7047fa505deba20030e6ee83e9e4b55349a8",
    "testharness"
   ],
   "html/browsers/origin/cross-origin-objects/frame.html": [
    "dc9cd0af288e67202b3db551516613a2707201c5",
    "support"
   ],
   "html/browsers/origin/cross-origin-objects/win-documentdomain.sub.html": [
    "37d2be417bbc3b8473c2d4bfaa3b7a9973140ce9",
@@ -165812,20 +166903,16 @@
   "html/browsers/windows/browsing-context-names/002-1.html": [
    "f70339fff42414af8441fdf4be42151839989839",
    "support"
   ],
   "html/browsers/windows/browsing-context-names/002.html": [
    "ed586ee147452ba6cb8d90782b266807f8b7975e",
    "testharness"
   ],
-  "html/browsers/windows/browsing-context-names/MANIFEST": [
-   "1c482b955fabc947249be53f31407e947ff8a9c8",
-   "support"
-  ],
   "html/browsers/windows/browsing-context-names/browsing-context-choose-existing.html": [
    "381a1a09c09e8c43849a7b8f4d120507b2196aeb",
    "testharness"
   ],
   "html/browsers/windows/browsing-context-names/browsing-context-choose-parent.html": [
    "724ea5b3aebad434eca41f1c0893d914fdcc26f5",
    "testharness"
   ],
@@ -165868,20 +166955,16 @@
   "html/browsers/windows/groupings-of-browsing-contexts/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "html/browsers/windows/nested-browsing-contexts/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
-  "html/browsers/windows/nested-browsing-contexts/MANIFEST": [
-   "3ec731d9752fe6648d2ed4ad1d2254b0d0b7d0a8",
-   "support"
-  ],
   "html/browsers/windows/nested-browsing-contexts/contains.json": [
    "0f2e164f656015ba43e2b3471af67a5d16fb97ea",
    "support"
   ],
   "html/browsers/windows/nested-browsing-contexts/frameElement.html": [
    "bf11bfc2c614a24f099a002e04f528c8cd88bf65",
    "testharness"
   ],
@@ -166460,16 +167543,20 @@
   "html/dom/dynamic-markup-insertion/document-write/document.write-01.xhtml": [
    "3b309503bf8f002712eafba1d5e7a1f3f743d7e1",
    "testharness"
   ],
   "html/dom/dynamic-markup-insertion/document-write/document.write-02.html": [
    "f4c6db3136e0860d38fe21193a0012eb5e4842ef",
    "testharness"
   ],
+  "html/dom/dynamic-markup-insertion/document-write/empty.html": [
+   "b1149d9764ff4a9a7e8698f7a56ed003796d8582",
+   "support"
+  ],
   "html/dom/dynamic-markup-insertion/document-write/iframe_001.html": [
    "1c9c5a787612667df557c57cb1ec5e101a38dfab",
    "testharness"
   ],
   "html/dom/dynamic-markup-insertion/document-write/iframe_002.html": [
    "28e827f8b8b0c9af9dfa46dfb505920df72345d4",
    "testharness"
   ],
@@ -166572,16 +167659,20 @@
   "html/dom/dynamic-markup-insertion/document-write/script_012.html": [
    "833de0abb686ed91179cd8228e09e05a61817c42",
    "testharness"
   ],
   "html/dom/dynamic-markup-insertion/document-write/script_013.html": [
    "0c45797b8e51b33aa49148eff24e021b69c372d9",
    "testharness"
   ],
+  "html/dom/dynamic-markup-insertion/document-write/write-active-document.html": [
+   "66d780431c740841834f0af67d20d28ac5178d9b",
+   "testharness"
+  ],
   "html/dom/dynamic-markup-insertion/document-writeln/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "html/dom/dynamic-markup-insertion/document-writeln/document.writeln-01.xhtml": [
    "443e8d9d653feb514dfc3cb8a1b4cb204ef38820",
    "testharness"
   ],
@@ -166713,29 +167804,29 @@
    "a2a5acc9dfe53c7482eeaa4be3a4819238f8e120",
    "testharness"
   ],
   "html/dom/elements-embedded.js": [
    "e6a9921095e294494dd68c7defdba546ad0c81af",
    "support"
   ],
   "html/dom/elements-forms.js": [
-   "32a72219fa5b41843e5c9bc3e1c5286c95bd81e2",
+   "a8b9288119430a636870a095c7fc2de686808490",
    "support"
   ],
   "html/dom/elements-grouping.js": [
    "bfcba8c36c5f335f98097716685e15ecb2111ac3",
    "support"
   ],
   "html/dom/elements-metadata.js": [
    "bcd86ba6bbe3ce770091279ec4c3005b16dbc633",
    "support"
   ],
   "html/dom/elements-misc.js": [
-   "84dcfeb32d9063daadd8cf4092b502130fd9a7da",
+   "ec0bd7b81c0d0fe1c525380eafd2a04a0a0fb219",
    "support"
   ],
   "html/dom/elements-obsolete.js": [
    "fb3e79ce5681b0f20ed06b0d6878aa476e773faa",
    "support"
   ],
   "html/dom/elements-sections.js": [
    "c611c450215141a6ad885286d5293007c7c786aa",
@@ -167541,17 +168632,17 @@
    "a4f99553c0cdf1c1efab08c85b9e3211b42d5412",
    "support"
   ],
   "html/dom/interactions-with-xpath-and-xslt/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "html/dom/interfaces.html": [
-   "1af98e9283a240bca6b55b1453b18df3fb6d6099",
+   "1f34a3ba45166c0d0c14cebb7846408ec120b9f1",
    "testharness"
   ],
   "html/dom/interfaces.worker.js": [
    "9e91d411453d4fdbcead08ad9daccbe2d9d7a975",
    "testharness"
   ],
   "html/dom/new-harness.js": [
    "792d2215f2d53b7ccb8c66b270a61afeec43ef25",
@@ -167601,25 +168692,25 @@
    "c9949fea7e2a626c367835b8e45c7f8c26ad85a4",
    "testharness"
   ],
   "html/dom/reflection.js": [
    "7675f0b4e2b364d84cc878edf0608cf563267e6c",
    "support"
   ],
   "html/dom/resources/interfaces.idl": [
-   "ff2f4c38a4c67be041ce21c60c7591cea0017f60",
+   "4319380dff6b1b48a5a8b75efdf6819fc34542fb",
    "support"
   ],
   "html/dom/resources/self-origin-subframe.html": [
    "a94fee503c6ad28fdedf1f62fcd96465f7b88e71",
    "support"
   ],
   "html/dom/resources/untested-interfaces.idl": [
-   "d3a65dce1b6832b90a8318d121ac2f1e43decdfc",
+   "5aef136a29dace7a43fd70958428bba4304f4502",
    "support"
   ],
   "html/dom/self-origin.any.js": [
    "187b3657775b815f9360c01d2ddb358a53e1f920",
    "testharness"
   ],
   "html/dom/self-origin.sub.html": [
    "d821d4b41ac8517d345f86a9f8298f67284d1967",
@@ -171673,17 +172764,17 @@
    "bbfb3cfbf6a9f5cf7f48eb048f0f6a2047386e41",
    "testharness"
   ],
   "html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html": [
    "eeb932d95184b11190af6a2e8be2adccc5a84601",
    "testharness"
   ],
   "html/infrastructure/common-dom-interfaces/collections/htmlformcontrolscollection.html": [
-   "1820c5daf000c5ec6a406434f2e42edfff4ed3ad",
+   "d7e37f34db97de971957d5d206b59e7eb5ad9ea7",
    "testharness"
   ],
   "html/infrastructure/common-dom-interfaces/collections/htmloptionscollection.html": [
    "7fb66eb26e08b90dbc873ff18b8e26bfafdc4562",
    "testharness"
   ],
   "html/infrastructure/common-dom-interfaces/collections/radionodelist.html": [
    "9b620307a52b7bc084982b15b9bd2289339d8997",
@@ -171893,17 +172984,17 @@
    "ac4bab3d195d554570b3b035093a2750a4fdfa01",
    "support"
   ],
   "html/infrastructure/urls/resolving-urls/query-encoding/resources/page-using-manifest.py": [
    "349a5e8aec778ee6cabac210226a01f14be904e1",
    "support"
   ],
   "html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js": [
-   "2c11ad4796b370cbaeece47fa242ab4ffccfe387",
+   "2c408d03723d2b0fca4d15ec233f6b5143c93680",
    "support"
   ],
   "html/infrastructure/urls/resolving-urls/query-encoding/resources/resource.py": [
    "1fe80369b002489cec48913f0a59c8099cef6461",
    "support"
   ],
   "html/infrastructure/urls/resolving-urls/query-encoding/resources/stash.py": [
    "0d599936f6a0baf6d9cce8d3236c146a159f1add",
@@ -172156,19 +173247,23 @@
   "html/rendering/bindings/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "html/rendering/bindings/introduction-9/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
-  "html/rendering/bindings/the-button-element-0/.gitkeep": [
-   "da39a3ee5e6b4b0d3255bfef95601890afd80709",
-   "support"
+  "html/rendering/bindings/the-button-element/button-type-menu-historical-ref.html": [
+   "95f61bd62a89467229aac48744a2ccefd62e81c6",
+   "support"
+  ],
+  "html/rendering/bindings/the-button-element/button-type-menu-historical.html": [
+   "0e4bb72d2be50b4c08acdc23692d6187afb7c160",
+   "reftest"
   ],
   "html/rendering/bindings/the-details-element-0/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "html/rendering/bindings/the-input-element-as-a-button/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
@@ -172200,20 +173295,16 @@
   "html/rendering/bindings/the-input-element-as-a-text-entry-widget/unrecognized-type-should-fallback-as-text-type.html": [
    "6186a83ccdba01d4c5430f4afce7ae397427f0c5",
    "reftest"
   ],
   "html/rendering/bindings/the-input-element-as-domain-specific-widgets/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
-  "html/rendering/bindings/the-keygen-element-0/.gitkeep": [
-   "da39a3ee5e6b4b0d3255bfef95601890afd80709",
-   "support"
-  ],
   "html/rendering/bindings/the-marquee-element/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "html/rendering/bindings/the-meter-element-0/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
@@ -172777,17 +173868,17 @@
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "html/rendering/unstyled-xml-documents/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "html/resources/common.js": [
-   "b6d4631ff396a97cfd9b899c1fa348d01dee6ebd",
+   "6b4bdb2032fb40bf9ccdf6d827cfd367f34a78f9",
    "support"
   ],
   "html/semantics/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "html/semantics/common-idioms/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
@@ -173141,17 +174232,17 @@
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "html/semantics/embedded-content/image-maps/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "html/semantics/embedded-content/image-maps/contains.json": [
-   "84a50fbc155fe2844d837ce365a45e7d4bf646f2",
+   "12454ffe5ff971f78cd38232d04fdf6486db4994",
    "support"
   ],
   "html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference-test-data.html": [
    "28ef3ec0d689c3a10deee2f9c500ea6a10dfecf1",
    "support"
   ],
   "html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html": [
    "81e9d89988e89b3ee4c6913a346a8ac3f2a78ab3",
@@ -173193,17 +174284,17 @@
    "33bf062c202724a1ca7cd6db052614317acba1f8",
    "manual"
   ],
   "html/semantics/embedded-content/media-elements/contains.json": [
    "c4e395b396f7f8d9aac3e687d34c2df47dde5589",
    "support"
   ],
   "html/semantics/embedded-content/media-elements/error-codes/error.html": [
-   "80a97ad69a44933fdcd94a2faf6df3966d91d479",
+   "b13ed034ef354031000614c7f11a20d8fc17653a",
    "testharness"
   ],
   "html/semantics/embedded-content/media-elements/event_canplay.html": [
    "e68b3bfc3a4fb897b1435fc1d7ba4596c2efbfbe",
    "testharness"
   ],
   "html/semantics/embedded-content/media-elements/event_canplay_noautoplay.html": [
    "49202003dc7204d997b4dcee3a99ae9b9c77399f",
@@ -174012,16 +175103,20 @@
   "html/semantics/embedded-content/the-area-element/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "html/semantics/embedded-content/the-area-element/area-coords.html": [
    "88f44bcf9beb7329b001b1c1a56b7fb0c7363f1a",
    "testharness"
   ],
+  "html/semantics/embedded-content/the-area-element/area-download-click.html": [
+   "b3172223ac173b65870f5d061cc8600a67956e10",
+   "testharness"
+  ],
   "html/semantics/embedded-content/the-area-element/area-processing.html": [
    "52d24573a44e98a360212c80151227fc131754a8",
    "testharness"
   ],
   "html/semantics/embedded-content/the-area-element/area-shape.html": [
    "9ba83ac8f0b096877a3545c4570754e20d964637",
    "testharness"
   ],
@@ -174365,17 +175460,17 @@
    "841613b14f7c2823e14eca5d3da90f4512a26c72",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.trailingjunk.png": [
    "bcdbeae6ef68a9f10bac6d7f02fcf51e8cbabaae",
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.whitespace.html": [
-   "b55afde59c13fdb53c13c7fe4ffc540d4de86608",
+   "70f6750f7fcee9b8f4e91560411b670d9d5401e4",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.whitespace.png": [
    "bcdbeae6ef68a9f10bac6d7f02fcf51e8cbabaae",
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.zero.html": [
    "fc399d15b920ad2aeabdfb155f659a4813e3e817",
@@ -174509,17 +175604,17 @@
    "9e0cfdf719ec61ab394e86701a0c5807ee9c548d",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.trailingjunk.png": [
    "bcdbeae6ef68a9f10bac6d7f02fcf51e8cbabaae",
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.whitespace.html": [
-   "f5903e05fb7821e2ca386fe6235db2b24328e927",
+   "61d8273233d229e41b1bde68e45ca723f876e9bc",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.whitespace.png": [
    "bcdbeae6ef68a9f10bac6d7f02fcf51e8cbabaae",
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.zero.html": [
    "00dae14fc4d1bcfef4cbeff819f150c1a85b04ca",
@@ -174529,25 +175624,25 @@
    "4568e6c0760e0cacd17fa7f952e9854692285464",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.style.png": [
    "6b549fa40955b0232d58c857ee9506a255009838",
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/toBlob.jpeg.html": [
-   "d7e7c17c306c8e7dd60e2199255b20d6bc871f6e",
+   "6ac7096aa4c4db6206e212a6e229419d1f35bf2e",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toBlob.null.html": [
    "932034c2b0172b26a800aebaa5eb3a19e2034c93",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toBlob.png.html": [
-   "bfd114af336758effac1c29d202abd0775ab5b2e",
+   "cb8667e2238b2e5b8bb703436e1dc766ba8600ae",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.arguments.1.html": [
    "ba9b65715c0aaab297daae21aa0fd4e70c07c99e",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.arguments.2.html": [
    "d59ea56a6f56bf29a8db7336f78b3e2c5c5364d8",
@@ -174605,25 +175700,25 @@
    "732d5e60d769197f0e1ef7dd0d63e9952dc3becf",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.lowercase.unicode.html": [
    "9d979a9c23bb2b82756f10e1715dc26b25c8f150",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.nocontext.html": [
-   "fa14fe27ad62afe3588505ed637ede3d712351e3",
+   "84f878a6a44511e97b36fb579514dc5214a088c7",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.png.complexcolours.html": [
    "e259d37625dc27fc4098e511256c592870e1fcca",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.png.complexcolours.png": [
-   "952234035727b97c86f91fd25482de10e2916818",
+   "ed0d67d23e601762bdc3852c72145db298fda6f1",
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.png.html": [
    "a9967fe45349dec5064aef96e2b7ae44beb2634a",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.png.primarycolours.html": [
    "d235c02cc677fe7bdf80b963fb7ec5b7bd6f97f3",
@@ -174768,16 +175863,20 @@
   "html/semantics/embedded-content/the-iframe-element/iframe-append-to-child-document.html": [
    "a732337b181e924195a53b586a1cae849dc504ef",
    "testharness"
   ],
   "html/semantics/embedded-content/the-iframe-element/iframe-load-event.html": [
    "d45f7b847e30fe8e3c2e03ef838b55d11ef4592f",
    "testharness"
   ],
+  "html/semantics/embedded-content/the-iframe-element/iframe-synchronously-discard.html": [
+   "8f2c79784636cd93a2a40c89c5d8298d4e0b7ec8",
+   "testharness"
+  ],
   "html/semantics/embedded-content/the-iframe-element/iframe-with-base-ref.html": [
    "9e04580af238e0aea1f124e1748b0a008ddb8a0b",
    "support"
   ],
   "html/semantics/embedded-content/the-iframe-element/iframe-with-base.html": [
    "c1751a038772407342332b260a99b9a902a86be1",
    "reftest"
   ],
@@ -174932,16 +176031,20 @@
   "html/semantics/embedded-content/the-img-element/invalid-src.html": [
    "fb713f6068016a6315220716a858397a241eb7c3",
    "testharness"
   ],
   "html/semantics/embedded-content/the-img-element/nonexistent-image.html": [
    "ed3a4e8ec0ffe8411176c91de37e965f252534cd",
    "testharness"
   ],
+  "html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter.html": [
+   "3752b0f4f5b31ca0bf55b99a400dd8cd7a12b8a7",
+   "testharness"
+  ],
   "html/semantics/embedded-content/the-img-element/relevant-mutations.html": [
    "3b4171a783f97facca39bcc342df253597876412",
    "testharness"
   ],
   "html/semantics/embedded-content/the-img-element/resources/cat.jpg": [
    "d8bdb2208a32d2200afb173368c38826fede8476",
    "support"
   ],
@@ -174997,17 +176100,17 @@
    "3efc9442872199305ef71c7c29331ae465fb8395",
    "testharness"
   ],
   "html/semantics/embedded-content/the-object-element/object-attributes.html": [
    "d851a8ef7bf0dc9a2e64841db8c9002877cb3b50",
    "testharness"
   ],
   "html/semantics/embedded-content/the-object-element/object-events.html": [
-   "608ed62917c18d711e22d3f9c310f8e8491cd046",
+   "fcced7c858d527f7c0d4e792c683c21a68c2711b",
    "testharness"
   ],
   "html/semantics/embedded-content/the-object-element/object-fallback.html": [
    "7bb46b36376a1afd004cf0537bdedd975088b2f2",
    "testharness"
   ],
   "html/semantics/embedded-content/the-object-element/object-handler.html": [
    "bf051d12a045698b2f9c3870ad4236f65bb85f51",
@@ -175181,25 +176284,25 @@
    "f128b5d3dc54c5f1eedef09d817ee00bba1c9aea",
    "testharness"
   ],
   "html/semantics/forms/constraints/form-validation-validity-typeMismatch.html": [
    "f77270ff6c2e47d93aee22406576a0c5c4ccb45b",
    "testharness"
   ],
   "html/semantics/forms/constraints/form-validation-validity-valid.html": [
-   "3844f2ceccf4cca7dfc10667099aa1d23b7d6029",
+   "c6ddb5e16769a9bf2540b2a13c03d6a9cd24c688",
    "testharness"
   ],
   "html/semantics/forms/constraints/form-validation-validity-valueMissing.html": [
    "3a2f071252c7cd9d09c78db0277bb8482305476b",
    "testharness"
   ],
   "html/semantics/forms/constraints/form-validation-willValidate.html": [
-   "7aea32e4780bad32ab256d94feed464c864158af",
+   "cfdb71233ab64d4ce815f186fa334db67941451d",
    "testharness"